From 984e8a5b2c39bd667dff7a76cbbec53f8a598f0d Mon Sep 17 00:00:00 2001 From: Michael Price Date: Fri, 2 Mar 2018 02:39:10 -0400 Subject: [PATCH] Silence deprecation warning about default manager for child models. Reorganize model according to Mayan's best practices. Signed-off-by: Michael Price --- mayan/apps/document_signatures/models.py | 3 + mayan/apps/sources/models.py | 84 ++++++++++++++---------- 2 files changed, 54 insertions(+), 33 deletions(-) diff --git a/mayan/apps/document_signatures/models.py b/mayan/apps/document_signatures/models.py index 6647d52f94..a2c10e8ccb 100644 --- a/mayan/apps/document_signatures/models.py +++ b/mayan/apps/document_signatures/models.py @@ -132,6 +132,9 @@ class DetachedSignature(SignatureBaseModel): verbose_name=_('Signature file') ) + # Don't inherit the SignatureBaseModel manager + objects = models.Manager() + class Meta: verbose_name = _('Document version detached signature') verbose_name_plural = _('Document version detached signatures') diff --git a/mayan/apps/sources/models.py b/mayan/apps/sources/models.py index 0b379aba79..6f71a40165 100644 --- a/mayan/apps/sources/models.py +++ b/mayan/apps/sources/models.py @@ -64,6 +64,11 @@ class Source(models.Model): objects = InheritanceManager() + class Meta: + ordering = ('label',) + verbose_name = _('Source') + verbose_name_plural = _('Sources') + @classmethod def class_fullname(cls): return force_text(dict(SOURCE_CHOICES).get(cls.source_type)) @@ -169,11 +174,6 @@ class Source(models.Model): pass # TODO: Should raise NotImplementedError? - class Meta: - ordering = ('label',) - verbose_name = _('Source') - verbose_name_plural = _('Sources') - class InteractiveSource(Source): objects = InheritanceManager() @@ -223,6 +223,8 @@ class SaneScanner(InteractiveSource): ), max_length=16, verbose_name=_('ADF mode') ) + objects = models.Manager() + class Meta: verbose_name = _('SANE Scanner') verbose_name_plural = _('SANE Scanners') @@ -329,6 +331,12 @@ class StagingFolderSource(InteractiveSource): verbose_name=_('Delete after upload') ) + objects = models.Manager() + + class Meta: + verbose_name = _('Staging folder') + verbose_name_plural = _('Staging folders') + def get_preview_size(self): dimensions = [] dimensions.append(force_text(self.preview_width)) @@ -374,10 +382,6 @@ class StagingFolderSource(InteractiveSource): _('Error deleting staging file; %s') % exception ) - class Meta: - verbose_name = _('Staging folder') - verbose_name_plural = _('Staging folders') - class WebFormSource(InteractiveSource): """ @@ -392,6 +396,12 @@ class WebFormSource(InteractiveSource): is_interactive = True source_type = SOURCE_CHOICE_WEB_FORM + objects = models.Manager() + + class Meta: + verbose_name = _('Web form') + verbose_name_plural = _('Web forms') + # TODO: unify uncompress as an InteractiveSource field uncompress = models.CharField( choices=SOURCE_INTERACTIVE_UNCOMPRESS_CHOICES, @@ -403,14 +413,12 @@ class WebFormSource(InteractiveSource): def get_upload_file_object(self, form_data): return SourceUploadedFile(source=self, file=form_data['file']) - class Meta: - verbose_name = _('Web form') - verbose_name_plural = _('Web forms') - class OutOfProcessSource(Source): is_interactive = False + objects = models.Manager() + class Meta: verbose_name = _('Out of process') verbose_name_plural = _('Out of process') @@ -435,6 +443,12 @@ class IntervalBaseModel(OutOfProcessSource): max_length=1, verbose_name=_('Uncompress') ) + objects = models.Manager() + + class Meta: + verbose_name = _('Interval source') + verbose_name_plural = _('Interval sources') + def _get_periodic_task_name(self, pk=None): return 'check_interval_source-%i' % (pk or self.pk) @@ -480,10 +494,6 @@ class IntervalBaseModel(OutOfProcessSource): super(IntervalBaseModel, self).delete(*args, **kwargs) self._delete_periodic_task(pk) - class Meta: - verbose_name = _('Interval source') - verbose_name_plural = _('Interval sources') - class EmailBaseModel(IntervalBaseModel): """ @@ -532,6 +542,12 @@ class EmailBaseModel(IntervalBaseModel): ), verbose_name=_('Store email body') ) + objects = models.Manager() + + class Meta: + verbose_name = _('Email source') + verbose_name_plural = _('Email sources') + def clean(self): if self.subject_metadata_type: if self.subject_metadata_type.pk not in self.document_type.metadata.values_list('metadata_type', flat=True): @@ -640,10 +656,6 @@ class EmailBaseModel(IntervalBaseModel): metadata_dictionary=metadata_dictionary ) - class Meta: - verbose_name = _('Email source') - verbose_name_plural = _('Email sources') - class POP3Email(EmailBaseModel): source_type = SOURCE_CHOICE_EMAIL_POP3 @@ -652,6 +664,12 @@ class POP3Email(EmailBaseModel): default=DEFAULT_POP3_TIMEOUT, verbose_name=_('Timeout') ) + objects = models.Manager() + + class Meta: + verbose_name = _('POP email') + verbose_name_plural = _('POP email') + def check_source(self): logger.debug('Starting POP3 email fetch') logger.debug('host: %s', self.host) @@ -685,10 +703,6 @@ class POP3Email(EmailBaseModel): mailbox.quit() - class Meta: - verbose_name = _('POP email') - verbose_name_plural = _('POP email') - class IMAPEmail(EmailBaseModel): source_type = SOURCE_CHOICE_EMAIL_IMAP @@ -699,6 +713,12 @@ class IMAPEmail(EmailBaseModel): max_length=64, verbose_name=_('Mailbox') ) + objects = models.Manager() + + class Meta: + verbose_name = _('IMAP email') + verbose_name_plural = _('IMAP email') + # http://www.doughellmann.com/PyMOTW/imaplib/ def check_source(self): logger.debug('Starting IMAP email fetch') @@ -730,10 +750,6 @@ class IMAPEmail(EmailBaseModel): mailbox.close() mailbox.logout() - class Meta: - verbose_name = _('IMAP email') - verbose_name_plural = _('IMAP email') - class WatchFolderSource(IntervalBaseModel): """ @@ -753,6 +769,12 @@ class WatchFolderSource(IntervalBaseModel): verbose_name=_('Folder path') ) + objects = models.Manager() + + class Meta: + verbose_name = _('Watch folder') + verbose_name_plural = _('Watch folders') + def check_source(self): # Force self.folder_path to unicode to avoid os.listdir returning # str for non-latin filenames, gh-issue #163 @@ -767,10 +789,6 @@ class WatchFolderSource(IntervalBaseModel): ) os.unlink(full_path) - class Meta: - verbose_name = _('Watch folder') - verbose_name_plural = _('Watch folders') - class SourceLog(models.Model): source = models.ForeignKey(