mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-18 05:51:26 +02:00
@@ -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
@@ -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
@@ -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")
|
||||
|
||||
@@ -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,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 %}
|
||||
|
||||
@@ -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 %}
|
||||
|
||||
@@ -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 }}
|
||||
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user