diff --git a/modoboa/extensions/amavis/sql_connector.py b/modoboa/extensions/amavis/sql_connector.py
index a8d8b95c4..e21f90d49 100644
--- a/modoboa/extensions/amavis/sql_connector.py
+++ b/modoboa/extensions/amavis/sql_connector.py
@@ -90,7 +90,7 @@ class SQLconnector(object):
Filters: rs, rid, content
"""
- flt = Q(rs__in=[' ', 'V', 'R', 'p']) \
+ flt = Q(rs__in=[' ', 'V', 'R', 'p', 'S', 'H']) \
if self.navparams.get('viewrequests', '0') != '1' else Q(rs='p')
flt = self._apply_msgrcpt_filters(flt)
pattern = self.navparams.get("pattern", "")
@@ -168,6 +168,10 @@ class SQLconnector(object):
m["class"] = "unseen"
elif rs == 'R':
m["img_rstatus"] = static_url("pics/release.png")
+ elif rs == 'H':
+ m["img_rstatus"] = "icon-thumbs-up"
+ elif rs == 'S':
+ m["img_rstatus"] = "icon-thumbs-down"
elif rs == 'p':
m["class"] = "pending"
emails.append(m)
diff --git a/modoboa/extensions/amavis/sql_listing.py b/modoboa/extensions/amavis/sql_listing.py
index 97936b33b..c92c637ff 100644
--- a/modoboa/extensions/amavis/sql_listing.py
+++ b/modoboa/extensions/amavis/sql_listing.py
@@ -23,7 +23,7 @@ class Qtable(tables.Table):
"type", align="center", width="30px", sort_order="type", safe=True
)
rstatus = tables.ImgColumn(
- "rstatus", width='25px', sortable=False
+ "rstatus", width='25px', sortable=False, bootstrap=True
)
score = tables.Column(
"score", label=ugettext_lazy("Score"), limit=6,
diff --git a/modoboa/extensions/amavis/static/amavis/js/quarantine.js b/modoboa/extensions/amavis/static/amavis/js/quarantine.js
index 83f1bcb34..01be8aa71 100644
--- a/modoboa/extensions/amavis/static/amavis/js/quarantine.js
+++ b/modoboa/extensions/amavis/static/amavis/js/quarantine.js
@@ -407,6 +407,9 @@ Quarantine.prototype = {
},
action_cb: function(data) {
+ if (data.reload) {
+ this.navobj.update(true);
+ }
if (data.url) {
this.navobj.parse_string(data.url, true).update(true);
}
diff --git a/modoboa/extensions/amavis/views.py b/modoboa/extensions/amavis/views.py
index ec1c4003d..e50f55d94 100644
--- a/modoboa/extensions/amavis/views.py
+++ b/modoboa/extensions/amavis/views.py
@@ -304,6 +304,7 @@ def mark_messages(request, selection, mtype, recipient_db=None):
else saclient.learn_ham(rcpt, content)
if not result:
break
+ connector.set_msgrcpt_status(rcpt, mail_id, mtype[0].upper())
if saclient.error is None:
saclient.done()
message = ungettext("%(count)d message processed successfully",
@@ -312,7 +313,9 @@ def mark_messages(request, selection, mtype, recipient_db=None):
else:
message = saclient.error
status = 400 if saclient.error else 200
- return render_to_json_response({"message": message}, status=status)
+ return render_to_json_response({
+ "message": message, "reload": True
+ }, status=status)
@login_required
diff --git a/modoboa/lib/tables.py b/modoboa/lib/tables.py
index 3a0950652..0a9df9f89 100644
--- a/modoboa/lib/tables.py
+++ b/modoboa/lib/tables.py
@@ -89,6 +89,8 @@ class ImgColumn(Column):
return ""
def render(self, value):
+ if getattr(self, "bootstrap", False) and value.startswith("icon"):
+ return "" % value
if type(value) in [list, tuple]:
return "".join(["
" % i for i in value])
return "
" % value