from . import base

from bson import ObjectId
from allura import model as M
from allura.lib import plugin, exceptions
from ming.orm import session

# Example usage:
# paster set-neighborhood-private development.ini <neighborhood_id> 1
class SetNeighborhoodPrivateCommand(base.Command):
    min_args=3
    max_args=3
    usage = '<ini file> <neighborhood_id> <private(1|0)>'
    summary = 'Set neighborhood private projects availability'
    parser = base.Command.standard_parser(verbose=True)

    def command(self):
        self.basic_setup()
        n_id = self.args[1]
        private_val = int(self.args[2])
        if private_val == 1:
            private_val = True
        else:
            private_val = False

        n = M.Neighborhood.query.get(name=n_id)
        if not n:
            n = M.Neighborhood.query.get(_id=ObjectId(n_id))

        if not n:
            raise exceptions.NoSuchNeighborhoodError("The neighborhood %s "\
                "could not be found in the database" % n_id)
        else:
            n.allow_private = private_val
            session(M.Neighborhood).flush()
