def register_draft_only(model_class, fields, follow, format): """ version of the reversion register function that only registers drafts and ignores public models """ revision_manager = reversion.revision if revision_manager.is_registered(model_class): raise RegistrationError( "%r has already been registered with Reversion." % model_class) # Ensure the parent model of proxy models is registered. if (model_class._meta.proxy and not revision_manager.is_registered( model_class._meta.parents.keys()[0])): raise RegistrationError( '%r is a proxy model, and its parent has not been registered with' 'Reversion.' % model_class) # Calculate serializable model fields. opts = model_class._meta local_fields = opts.local_fields + opts.local_many_to_many if fields is None: fields = [field.name for field in local_fields] fields = tuple(fields) # Register the generated registration information. follow = tuple(follow) registration_info = VersionAdapter(model_class) registration_info.fields = fields registration_info.follow = follow registration_info.format = format revision_manager._registered_models[model_class] = registration_info
def register_draft_only(model_class, fields, follow, format): """ version of the reversion register function that only registers drafts and ignores public models """ # FIXME: Remove this when integrating djangocms-reversion if revision_manager.is_registered(model_class): raise RegistrationError( "%r has already been registered with Reversion." % model_class) # Ensure the parent model of proxy models is registered. if (model_class._meta.proxy and not revision_manager.is_registered( list(model_class._meta.parents.keys())[0]) ): # turn KeysView into list raise RegistrationError( '%r is a proxy model, and its parent has not been registered with' 'Reversion.' % model_class) # Calculate serializable model fields. opts = model_class._meta local_fields = opts.local_fields + opts.local_many_to_many if fields is None: fields = [field.name for field in local_fields] fields = tuple(fields) # Register the generated registration information. follow = tuple(follow) try: registration_info = VersionAdapter( fields=fields, follow=follow, format=format, for_concrete_model=True, ignore_duplicates=False, ) except TypeError: registration_info = VersionAdapter(model_class) registration_info.fields = fields registration_info.follow = follow registration_info.format = format if hasattr(revision_manager, '_registration_key_for_model'): model_key = revision_manager._registration_key_for_model(model_class) else: model_key = model_class revision_manager._registered_models[model_key] = registration_info
def _autoregister(self, model, follow=None): """Registers a model with reversion, if required.""" if model._meta.proxy: raise RegistrationError("Proxy models cannot be used with django-reversion, register the parent class instead") if not self.revision_manager.is_registered(model): follow = follow or [] for parent_cls, field in model._meta.parents.items(): follow.append(field.name) self._autoregister(parent_cls) self.revision_manager.register(model, follow=follow, format=self.reversion_format)
def _autoregister(self, model, follow=None): """Registers a model with reversion, if required.""" if model._meta.proxy: raise RegistrationError( "{model} is a proxy model, and cannot be used with django-reversion, register the parent class ({model_parent}) instead." .format( # noqa model=model.__name__, model_parent=', '.join( [x.__name__ for x in model._meta.parents.keys()]))) if not self.revision_manager.is_registered(model): follow = follow or [] for parent_cls, field in model._meta.parents.items(): follow.append(field.name) self._autoregister(parent_cls) self.revision_manager.register(model, follow=follow, format=self.reversion_format)