mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-18 05:51:26 +02:00
Added everything needed to get the spam score out of the database and be able to sort on it (or any other data presented to the user).
This commit is contained in:
@@ -19,10 +19,14 @@ class Qtable(tables.Table):
|
||||
type = tables.Column(
|
||||
"type", align="center", width="30px",
|
||||
)
|
||||
rstatus = tables.ImgColumn("rstatus", width='25px')
|
||||
from_ = tables.Column("from", label=ugettext_lazy("From"), limit=30)
|
||||
subject = tables.Column("subject", label=ugettext_lazy("Subject"), limit=40)
|
||||
time = tables.Column("date", label=ugettext_lazy("Date"))
|
||||
score = tables.Column("score", label=ugettext_lazy("Score"), limit=6,
|
||||
sort_order="score")
|
||||
rstatus = tables.ImgColumn("rstatus", width='25px', sortable=False)
|
||||
from_ = tables.Column("from", label=ugettext_lazy("From"), limit=30,
|
||||
sortable=False)
|
||||
subject = tables.Column("subject", label=ugettext_lazy("Subject"), limit=40,
|
||||
sortable=False)
|
||||
time = tables.Column("date", label=ugettext_lazy("Date"), sort_order="date")
|
||||
to = tables.Column("to", label=ugettext_lazy("To"), sortable=False)
|
||||
|
||||
cols_order = []
|
||||
@@ -32,14 +36,9 @@ class Qtable(tables.Table):
|
||||
|
||||
|
||||
class SQLconnector(MBconnector):
|
||||
orders = {
|
||||
"from": "mail__from_addr",
|
||||
"subject": "mail__subject",
|
||||
"date": "mail__time_num"
|
||||
}
|
||||
|
||||
def __init__(self, mail_ids=None, filter=None):
|
||||
self.count = None
|
||||
self.emails = None
|
||||
self.mail_ids = mail_ids
|
||||
self.filter = filter
|
||||
|
||||
@@ -50,36 +49,38 @@ class SQLconnector(MBconnector):
|
||||
filter &= Q(mail__in=self.mail_ids)
|
||||
if self.filter:
|
||||
filter &= self.filter
|
||||
self.messages = Quarantine.objects.filter(filter)
|
||||
messages = Quarantine.objects.filter(filter)
|
||||
self.emails = []
|
||||
for qm in messages:
|
||||
for rcpt in qm.mail.msgrcpt_set.all():
|
||||
m = {"from": qm.mail.from_addr,
|
||||
"to": rcpt.rid.email,
|
||||
"subject": qm.mail.subject,
|
||||
"mailid": qm.mail_id,
|
||||
"date": qm.mail.time_num,
|
||||
"type": rcpt.content,
|
||||
"score": rcpt.bspam_level}
|
||||
if rcpt.rs == '':
|
||||
m["class"] = "unseen"
|
||||
elif rcpt.rs == 'R':
|
||||
m["img_rstatus"] = static_url("pics/release.png")
|
||||
elif rcpt.rs == 'p':
|
||||
m["class"] = "pending"
|
||||
self.emails.append(m)
|
||||
|
||||
if "order" in kwargs:
|
||||
totranslate = kwargs["order"][1:]
|
||||
sign = kwargs["order"][:1]
|
||||
if sign == " ":
|
||||
sign = ""
|
||||
order = sign + self.orders[totranslate]
|
||||
self.messages = self.messages.order_by(order)
|
||||
self.count = self.messages.count()
|
||||
order = kwargs["order"]
|
||||
reverse = False
|
||||
if order[0] == "-":
|
||||
reverse = True
|
||||
order = order[1:]
|
||||
self.emails.sort(None, lambda x:x[order], reverse)
|
||||
|
||||
self.count = len(self.emails)
|
||||
return self.count
|
||||
|
||||
def fetch(self, start=None, stop=None, **kwargs):
|
||||
messages = self.messages[start - 1:stop]
|
||||
emails = []
|
||||
for qm in messages:
|
||||
for rcpt in qm.mail.msgrcpt_set.all():
|
||||
m = {"from": qm.mail.from_addr,
|
||||
"to": rcpt.rid.email,
|
||||
"subject": qm.mail.subject,
|
||||
"mailid": qm.mail_id,
|
||||
"date": qm.mail.time_num,
|
||||
"type": rcpt.content}
|
||||
if rcpt.rs == '':
|
||||
m["class"] = "unseen"
|
||||
elif rcpt.rs == 'R':
|
||||
m["img_rstatus"] = static_url("pics/release.png")
|
||||
elif rcpt.rs == 'p':
|
||||
m["class"] = "pending"
|
||||
emails.append(m)
|
||||
return emails
|
||||
return self.emails[start - 1:stop]
|
||||
|
||||
|
||||
class SQLWrapper(object):
|
||||
@@ -228,9 +229,9 @@ class SQLlisting(EmailListing):
|
||||
|
||||
def __init__(self, user, msgs, filter, **kwargs):
|
||||
if user.group == 'SimpleUsers':
|
||||
Qtable.cols_order = ['type', 'rstatus', 'from_', 'subject', 'time']
|
||||
Qtable.cols_order = ['type', 'score', 'rstatus', 'from_', 'subject', 'time']
|
||||
else:
|
||||
Qtable.cols_order = ['type', 'rstatus', 'to', 'from_', 'subject', 'time']
|
||||
Qtable.cols_order = ['type', 'score', 'rstatus', 'to', 'from_', 'subject', 'time']
|
||||
self.mbc = SQLconnector(msgs, filter)
|
||||
super(SQLlisting, self).__init__(**kwargs)
|
||||
self.show_listing_headers = True
|
||||
|
||||
Reference in New Issue
Block a user