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 20
20
21
21
22
22
def 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 ()
26
24
27
25
28
26
get_new_mail .short_description = _ ('Get new mail' )
Original file line number Diff line number Diff line change 36
36
logger = logging .getLogger (__name__ )
37
37
38
38
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 ):
40
54
def get_queryset (self ):
41
55
return super ().get_queryset ().filter (
42
56
active = True ,
@@ -106,7 +120,7 @@ class Mailbox(models.Model):
106
120
null = True
107
121
)
108
122
109
- objects = models . Manager ()
123
+ objects = MailboxManager ()
110
124
active_mailboxes = ActiveMailboxManager ()
111
125
112
126
@property
Original file line number Diff line number Diff line change @@ -34,3 +34,13 @@ def test_get_new_mail_update_last_polling(self):
34
34
self .assertEqual (mailbox .last_polling , None )
35
35
list (mailbox .get_new_mail ())
36
36
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