New search bar to filter listing pages.

see #238
This commit is contained in:
Antoine Nguyen
2012-04-10 13:39:47 +02:00
parent 9239dc0447
commit ccbe47bc6a
8 changed files with 58 additions and 11 deletions
+4
View File
@@ -387,6 +387,10 @@ class Domain(DatesAware):
def mailbox_count(self):
return len(self.mailbox_set.all())
@property
def mbalias_count(self):
return len(self.alias_set.all())
def create_dir(self):
if parameters.get_admin("CREATE_DIRECTORIES") == "yes":
path = "%s/%s" % (parameters.get_admin("STORAGE_PATH"), self.name)
+1 -1
View File
@@ -16,7 +16,7 @@ class DomainsTable(tables.Table):
width="100px", align="center")
mboxes = tables.Column("mailbox_count", label=ugettext_noop("Mailboxes"),
width="100px", align="center")
mbaliases = tables.Column("mbalias_counter", label=ugettext_noop("Mailbox aliases"),
mbaliases = tables.Column("mbalias_count", label=ugettext_noop("Mailbox aliases"),
width="100px", align="center")
quota = tables.Column("quota", label=ugettext_noop("Quota"),
width="50px", align="center")
+22 -8
View File
@@ -30,11 +30,11 @@ def domains(request):
return HttpResponseRedirect(reverse(userprefs.views.preferences))
domains = request.user.get_domains()
for dom in domains:
dom.mbalias_counter = len(Alias.objects.filter(domain=dom.id))
return render_listing(request, "domains",
"admin/domains.html",
objects=domains)
squery = request.GET.get("searchquery", None)
if squery is not None:
domains = domains.filter(name__contains=squery)
return render_listing(request, "domains", "admin/domains.html",
objects=domains, squery=squery)
@login_required
@permission_required("auth.add_user")
@@ -250,14 +250,28 @@ def deldlist(request):
@user_passes_test(lambda u: u.has_perm("auth.add_user") or u.has_perm("admin.add_alias"))
def identities(request, tplname='admin/identities.html'):
accounts_list = []
for account in User.objects.all():
squery = request.GET.get("searchquery", None)
if squery:
accounts = User.objects.filter(username__contains=squery)
if squery.find('@') != -1:
local_part, domname = split_mailbox(squery)
mbaliases = Alias.objects.filter(address__contains=local_part,
domain__name__contains=domname)
else:
mbaliases = Alias.objects.filter(address__contains=squery)
else:
accounts = User.objects.all()
mbaliases = Alias.objects.all()
for account in accounts:
if request.user.can_access(account) or \
account.has_mailbox and request.user.can_access(account.mailbox_set.all()[0].domain):
accounts_list += [account]
for mbalias in Alias.objects.all():
for mbalias in mbaliases:
if len(mbalias.get_recipients()) >= 2:
accounts_list += [mbalias]
return render_listing(request, "identities", tplname, objects=accounts_list)
return render_listing(request, "identities", tplname,
objects=accounts_list, squery=squery)
@login_required
@permission_required("auth.add_user")
+10 -1
View File
@@ -8,7 +8,16 @@
question: gettext("Delete this domain?"),
checkboxes: {keepdir: gettext("Do not delete domain directory")}
});
$("#searchquery").focus(function() {
$(this).attr("value", "");
}).blur(function() {
var $this = $(this);
if ($this.attr("value") == "") {
$this.attr("value", gettext("Search"));
}
});
});
</script>
{% endblock %}
{% block leftcol %}<div class="well sidebar-nav">{% domains_menu "domains" user %}</div>{% endblock %}
{% block leftcol %}<div class="well sidebar-nav">{% include "admin/searchform.html" %}
{% domains_menu "domains" user %}</div>{% endblock %}
+1
View File
@@ -1,4 +1,5 @@
{% extends "twocols.html" %}
{% block html_head %}
<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}css/admin.css" />
<script type="text/javascript" src="{{ MEDIA_URL }}js/admin.js"></script>
{% endblock %}
+2 -1
View File
@@ -31,4 +31,5 @@ $(document).ready(function() {
});
</script>
{% endblock %}
{% block leftcol %}<div class="well sidebar-nav">{% identities_menu user %}</div>{% endblock %}
{% block leftcol %}<div class="well sidebar-nav">{% include "admin/searchform.html" %}
{% identities_menu user %}</div>{% endblock %}
+12
View File
@@ -3,6 +3,18 @@
{% block html_head %}
{{ block.super }}
<script type="text/javascript" src="{{ MEDIA_URL }}js/dynamic_input.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#searchquery").focus(function() {
$(this).attr("value", "");
}).blur(function() {
var $this = $(this);
if ($this.attr("value") == "") {
$this.attr("value", {% if squery %}"{{ squery }}"{% else %}gettext("Search"){% endif %});
}
});
});
</script>
{% endblock %}
{% block apparea %}
{{ table|safe }}
+6
View File
@@ -0,0 +1,6 @@
{% load i18n %}
<form id="searchform" class="form-search">
<input class="input-medium search-query" type="text"
value={% if squery %}"{{ squery }}"{% else %}"{% trans 'Search' %}"{% endif %}
id="searchquery" name="searchquery" />
</form>