def _reversion_introspect_inline_admin(self, inline): inline_model = None follow_field = None fk_name = None if issubclass(inline, GenericInlineModelAdmin): inline_model = inline.model ct_field = inline.ct_field fk_name = inline.ct_fk_field for field in self.model._meta.virtual_fields: if ( isinstance(field, GenericRelation) and remote_model(field) == inline_model and field.object_id_field_name == fk_name and field.content_type_field_name == ct_field ): follow_field = field.name break elif issubclass(inline, options.InlineModelAdmin): inline_model = inline.model fk_name = inline.fk_name if not fk_name: for field in inline_model._meta.get_fields(): if ( isinstance(field, (models.ForeignKey, models.OneToOneField)) and issubclass(self.model, remote_model(field)) ): fk_name = field.name break if fk_name and not remote_field(inline_model._meta.get_field(fk_name)).is_hidden(): field = inline_model._meta.get_field(fk_name) accessor = remote_field(field).get_accessor_name() follow_field = accessor return inline_model, follow_field
def _get_senders_and_signals(model): yield model, post_save, _post_save_receiver opts = model._meta.concrete_model._meta for field in opts.local_many_to_many: m2m_model = remote_field(field).through if isinstance(m2m_model, six.string_types): if "." not in m2m_model: m2m_model = "{app_label}.{m2m_model}".format( app_label=opts.app_label, m2m_model=m2m_model) yield m2m_model, m2m_changed, _m2m_changed_receiver
def get_fields_to_serialize(self): """Returns an iterable of field names to serialize in the version data.""" opts = self.model._meta.concrete_model._meta fields = self.fields or (field.name for field in opts.local_fields + opts.local_many_to_many) fields = (opts.get_field(field) for field in fields if not field in self.exclude) for field in fields: if remote_field(field): yield field.name else: yield field.attname
def _get_senders_and_signals(model): yield model, post_save, _post_save_receiver opts = model._meta.concrete_model._meta for field in opts.local_many_to_many: m2m_model = remote_field(field).through if isinstance(m2m_model, six.string_types): if "." not in m2m_model: m2m_model = "{app_label}.{m2m_model}".format( app_label=opts.app_label, m2m_model=m2m_model ) yield m2m_model, m2m_changed, _m2m_changed_receiver