File tree Expand file tree Collapse file tree 3 files changed +27
-5
lines changed Expand file tree Collapse file tree 3 files changed +27
-5
lines changed Original file line number Diff line number Diff line change 2020
2121
2222def get_new_mail (mailbox_admin , request , queryset ):
23- for mailbox in queryset .all ():
24- logger .debug ('Receiving mail for %s' % mailbox )
25- mailbox .get_new_mail ()
23+ queryset .get_new_mail ()
2624
2725
2826get_new_mail .short_description = _ ('Get new mail' )
Original file line number Diff line number Diff line change 3636logger = logging .getLogger (__name__ )
3737
3838
39- class ActiveMailboxManager (models .Manager ):
39+ class MailboxQuerySet (models .QuerySet ):
40+ def get_new_mail (self ):
41+ count = 0
42+ for mailbox in self .all ():
43+ logger .debug ('Receiving mail for %s' % mailbox )
44+ count += sum (1 for i in mailbox .get_new_mail ())
45+ logger .debug ('Received %d %s.' , count , 'mails' if count != 1 else 'mail' )
46+
47+
48+ class MailboxManager (models .Manager ):
49+ def get_queryset (self ):
50+ return MailboxQuerySet (self .model , using = self ._db )
51+
52+
53+ class ActiveMailboxManager (MailboxManager ):
4054 def get_queryset (self ):
4155 return super ().get_queryset ().filter (
4256 active = True ,
@@ -106,7 +120,7 @@ class Mailbox(models.Model):
106120 null = True
107121 )
108122
109- objects = models . Manager ()
123+ objects = MailboxManager ()
110124 active_mailboxes = ActiveMailboxManager ()
111125
112126 @property
Original file line number Diff line number Diff line change @@ -34,3 +34,13 @@ def test_get_new_mail_update_last_polling(self):
3434 self .assertEqual (mailbox .last_polling , None )
3535 list (mailbox .get_new_mail ())
3636 self .assertNotEqual (mailbox .last_polling , None )
37+
38+ def test_queryset_get_new_mail (self ):
39+ mailbox = Mailbox .objects .create (uri = "mbox://" + os .path .join (
40+ os .path .dirname (__file__ ),
41+ 'messages' ,
42+ 'generic_message.eml' ,
43+ ))
44+ Mailbox .objects .filter (pk = mailbox .pk ).get_new_mail ()
45+ mailbox .refresh_from_db ()
46+ self .assertNotEqual (mailbox .last_polling , None )
You can’t perform that action at this time.
0 commit comments