コード例 #1
0
ファイル: admin.py プロジェクト: zsiciarz/django-reversion
 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
コード例 #2
0
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
コード例 #3
0
ファイル: revisions.py プロジェクト: bmarika/django-reversion
 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
コード例 #4
0
ファイル: revisions.py プロジェクト: snowman-st/edu-back
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
コード例 #5
0
 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