Example #1
0
    def register(self, *args, **kwargs):
        """
        Register a crud.

        Two unordered arguments are accepted, at least one should be passed:
        - a model,
        - a crudbuilder class
        """

        assert len(args) <= 2, 'register takes at most 2 args'
        assert len(args) > 0, 'register takes at least 1 arg'

        model, crudbuilder = self.__class__.extract_args(*args)

        if not issubclass(model, models.Model):
            msg = "First argument should be Django Model"
            raise NotModelException(msg)

        key = self._model_key(model)

        if key in self:
            msg = "Key '{key}' has already been registered.".format(key=key)
            raise AlreadyRegistered(msg)

        self.__setitem__(key, crudbuilder)
        return crudbuilder
Example #2
0
    def __new__(cls, clsname, bases, attrs):
        newclass = super(MetaCrudRegister,
                         cls).__new__(cls, clsname, bases, attrs)

        if bases:
            if newclass.model:
                register(newclass.model, newclass)
            else:
                msg = "No model defined in {} class".format(newclass)
                raise NotModelException(msg)
        return newclass
    def construct_formset(self):
        """
        Returns an instance of the inline formset
        """
        if not self.inline_model or not self.parent_model:
            msg = "Parent and Inline models are required in {}".format(
                self.__class__.__name__)
            raise NotModelException(msg)

        return inlineformset_factory(self.parent_model, self.inline_model,
                                     **self.get_factory_kwargs())