# Buggy code
def messages_count(self, **kwargs):
    if self.count is None:
        filter = Q(chunk_ind=1)
        if self.mail_ids is not None:
            filter &= Q(mail__in=self.mail_ids)
        if self.filter:
            filter &= self.filter
        self.messages = Quarantine.objects.filter(filter).values(
            "mail__from_addr",
            "mail__msgrcpt__rid__email",
            "mail__subject",
            "mail__mail_id",
            "mail__time_num",
            "mail__msgrcpt__content",
            "mail__msgrcpt__bspam_level",
            "mail__msgrcpt__rs",
        )
        if "order" in kwargs:
            order = kwargs["order"]
            sign = ""
            if order[0] == "-":
                sign = "-"
                order = order[1:]
            order = self.order_translation_table[order]
            self.messages = self.messages.order_by(sign + order)

        self.count = len(self.messages)
    return self.count


# Traceback (IntegrityError)
Internal Server Error: /quarantine/process/
Traceback (most recent call last):
File "/srv/modoboa/python-virtualenv-modoboa-1.1.1/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 115, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "/srv/modoboa/python-virtualenv-modoboa-1.1.1/local/lib/python2.7/site-packages/django/contrib/auth/decorators.py", line 25, in _wrapped_view
return view_func(request, *args, **kwargs)
File "/srv/modoboa/python-virtualenv-modoboa-1.1.1/local/lib/python2.7/site-packages/modoboa/extensions/amavis/views.py", line 307, in process
return release(request, ids)
File "/srv/modoboa/python-virtualenv-modoboa-1.1.1/local/lib/python2.7/site-packages/modoboa/extensions/amavis/lib.py", line 30, in wrapped_f
return f(request, *args, **kwargs)
File "/srv/modoboa/python-virtualenv-modoboa-1.1.1/local/lib/python2.7/site-packages/modoboa/extensions/amavis/views.py", line 282, in release
rcpt.save()
File "/srv/modoboa/python-virtualenv-modoboa-1.1.1/local/lib/python2.7/site-packages/django/db/models/base.py", line 546, in save
force_update=force_update, update_fields=update_fields)
File "/srv/modoboa/python-virtualenv-modoboa-1.1.1/local/lib/python2.7/site-packages/django/db/models/base.py", line 626, in save_base
rows = manager.using(using).filter(pk=pk_val)._update(values)
File "/srv/modoboa/python-virtualenv-modoboa-1.1.1/local/lib/python2.7/site-packages/django/db/models/query.py", line 605, in _update
return query.get_compiler(self.db).execute_sql(None)
File "/srv/modoboa/python-virtualenv-modoboa-1.1.1/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 1020, in execute_sql
cursor = super(SQLUpdateCompiler, self).execute_sql(result_type)
File "/srv/modoboa/python-virtualenv-modoboa-1.1.1/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 846, in execute_sql
cursor.execute(sql, params)
File "/srv/modoboa/python-virtualenv-modoboa-1.1.1/local/lib/python2.7/site-packages/django/db/backends/util.py", line 41, in execute
return self.cursor.execute(sql, params)
File "/srv/modoboa/python-virtualenv-modoboa-1.1.1/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 122, in execute
six.reraise(utils.IntegrityError, utils.IntegrityError(*tuple(e.args)), sys.exc_info()[2])
File "/srv/modoboa/python-virtualenv-modoboa-1.1.1/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 120, in execute
return self.cursor.execute(query, args)
File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174, in execute
self.errorhandler(self, exc, value)
File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
raise errorclass, errorvalue
IntegrityError: (1062, "Duplicate entry '0-NTFOxSLhytYl-1' for key 'PRIMARY'")

# Fixed code
def messages_count(self, **kwargs):
    if self.count is None:
        filter = Q(chunk_ind=1)
        if self.mail_ids is not None:
            filter &= Q(mail__in=self.mail_ids)
        if self.filter:
            filter &= self.filter
        self.messages = Quarantine.objects.filter(filter).values(
            "mail__from_addr",
            "mail__msgrcpt__rid__email",
            "mail__subject",
            "mail__mail_id",
            "mail__time_num",
            "mail__msgrcpt__content",
            "mail__msgrcpt__bspam_level",
            "mail__msgrcpt__rs",
        )
        if "order" in kwargs:
            order = kwargs["order"]
            sign = ""
            if order[0] == "-":
                sign = "-"
                order = order[1:]
            order = self.order_translation_table[order]
            self.messages = self.messages.order_by(sign + order)

        self.count = self.messages.count()
    return self.count