4.27.0
This commit is contained in:
parent
1b7a6223ac
commit
2c82b03f8d
@ -1024,7 +1024,7 @@ def handle_reply(envelope, msg: Message, rcpt_to: str) -> (bool, str):
|
|||||||
# reply_email must end with EMAIL_DOMAIN or a domain that can be used as reverse alias domain
|
# reply_email must end with EMAIL_DOMAIN or a domain that can be used as reverse alias domain
|
||||||
if not reply_email.endswith(EMAIL_DOMAIN):
|
if not reply_email.endswith(EMAIL_DOMAIN):
|
||||||
sl_domain: SLDomain = SLDomain.get_by(domain=reply_domain)
|
sl_domain: SLDomain = SLDomain.get_by(domain=reply_domain)
|
||||||
if sl_domain is None or not sl_domain.use_as_reverse_alias:
|
if sl_domain is None:
|
||||||
LOG.w(f"Reply email {reply_email} has wrong domain")
|
LOG.w(f"Reply email {reply_email} has wrong domain")
|
||||||
return False, status.E501
|
return False, status.E501
|
||||||
|
|
||||||
|
@ -256,17 +256,27 @@ new Vue({
|
|||||||
el: '#filter-app',
|
el: '#filter-app',
|
||||||
delimiters: ["[[", "]]"], // necessary to avoid conflict with jinja
|
delimiters: ["[[", "]]"], // necessary to avoid conflict with jinja
|
||||||
data: {
|
data: {
|
||||||
showFilter: false
|
showFilter: false,
|
||||||
|
showStats: false
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
async toggleFilter() {
|
async toggleFilter() {
|
||||||
let that = this;
|
let that = this;
|
||||||
that.showFilter = !that.showFilter;
|
that.showFilter = !that.showFilter;
|
||||||
store.set('showFilter', that.showFilter);
|
store.set('showFilter', that.showFilter);
|
||||||
|
},
|
||||||
|
|
||||||
|
async toggleStats() {
|
||||||
|
let that = this;
|
||||||
|
that.showStats = !that.showStats;
|
||||||
|
store.set('showStats', that.showStats);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async mounted() {
|
async mounted() {
|
||||||
if (store.get("showFilter"))
|
if (store.get("showFilter"))
|
||||||
this.showFilter = true;
|
this.showFilter = true;
|
||||||
|
|
||||||
|
if (store.get("showStats"))
|
||||||
|
this.showStats = true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -31,63 +31,11 @@
|
|||||||
{% block title %}Alias{% endblock %}
|
{% block title %}Alias{% endblock %}
|
||||||
{% block default_content %}
|
{% block default_content %}
|
||||||
|
|
||||||
<!-- Global Stats -->
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-12 col-md-6 col-lg-3">
|
|
||||||
<div class="card">
|
|
||||||
<div class="card-body">
|
|
||||||
<div class="d-flex align-items-center">
|
|
||||||
<div class="subheader">Aliases</div>
|
|
||||||
<div class="text-muted"
|
|
||||||
style="order: 2; margin-left: auto; font-size: .8rem">All time</div>
|
|
||||||
</div>
|
|
||||||
<div class="h1 m-0">{{ stats.nb_alias }}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-12 col-md-6 col-lg-3">
|
|
||||||
<div class="card">
|
|
||||||
<div class="card-body">
|
|
||||||
<div class="d-flex align-items-center">
|
|
||||||
<div class="subheader">Forwarded</div>
|
|
||||||
<div class="text-muted"
|
|
||||||
style="order: 2; margin-left: auto; font-size: .8rem">Last 14 days</div>
|
|
||||||
</div>
|
|
||||||
<div class="h1 m-0">{{ stats.nb_forward }}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-12 col-md-6 col-lg-3">
|
|
||||||
<div class="card">
|
|
||||||
<div class="card-body">
|
|
||||||
<div class="d-flex align-items-center">
|
|
||||||
<div class="subheader">Replies/Sent</div>
|
|
||||||
<div class="text-muted"
|
|
||||||
style="order: 2; margin-left: auto; font-size: .8rem">Last 14 days</div>
|
|
||||||
</div>
|
|
||||||
<div class="h1 m-0">{{ stats.nb_reply }}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-12 col-md-6 col-lg-3">
|
|
||||||
<div class="card">
|
|
||||||
<div class="card-body">
|
|
||||||
<div class="d-flex align-items-center">
|
|
||||||
<div class="subheader">Blocked</div>
|
|
||||||
<div class="text-muted"
|
|
||||||
style="order: 2; margin-left: auto; font-size: .8rem">Last 14 days</div>
|
|
||||||
</div>
|
|
||||||
<div class="h1 m-0">{{ stats.nb_block }}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- END Global Stats -->
|
|
||||||
<!-- Controls: buttons & search -->
|
<!-- Controls: buttons & search -->
|
||||||
<div id="filter-app">
|
<div id="filter-app">
|
||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
<div class="col d-flex">
|
<div class="col d-flex flex-wrap justify-content-between">
|
||||||
<div>
|
<div class="mb-1">
|
||||||
<div class="btn-group" role="group">
|
<div class="btn-group" role="group">
|
||||||
<form method="post">
|
<form method="post">
|
||||||
{{ csrf_form.csrf_token }}
|
{{ csrf_form.csrf_token }}
|
||||||
@ -141,17 +89,86 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-left: auto">
|
<div>
|
||||||
<div class="btn-group">
|
<div class="btn-group">
|
||||||
<a v-if="!showFilter"
|
<a @click="toggleStats()" class="btn btn-outline-secondary">
|
||||||
@click="toggleFilter()"
|
<span v-if="!showStats">
|
||||||
class="btn btn-outline-secondary">
|
<i class="fe fe-chevrons-down"></i>
|
||||||
<i class="fe fe-chevrons-down"></i> Filters
|
Show stats
|
||||||
|
</span>
|
||||||
|
<span v-else>
|
||||||
|
<i class="fe fe-chevrons-up"></i>
|
||||||
|
Hide stats
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="btn-group">
|
||||||
|
<a @click="toggleFilter()" class="btn btn-outline-secondary">
|
||||||
|
<span v-if="!showFilter">
|
||||||
|
<i class="fe fe-chevrons-down"></i>
|
||||||
|
Show filters
|
||||||
|
</span>
|
||||||
|
<span v-else>
|
||||||
|
<i class="fe fe-chevrons-up"></i>
|
||||||
|
Hide filters
|
||||||
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- Global Stats -->
|
||||||
|
<div class="row" v-if="showStats">
|
||||||
|
<div class="col-12 col-md-6 col-lg-3">
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body py-3">
|
||||||
|
<div class="d-flex align-items-center">
|
||||||
|
<div class="subheader">Aliases</div>
|
||||||
|
<div class="text-muted"
|
||||||
|
style="order: 2; margin-left: auto; font-size: .8rem">All time</div>
|
||||||
|
</div>
|
||||||
|
<div class="h1 m-0">{{ stats.nb_alias }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 col-md-6 col-lg-3">
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body py-3">
|
||||||
|
<div class="d-flex align-items-center">
|
||||||
|
<div class="subheader">Forwarded</div>
|
||||||
|
<div class="text-muted"
|
||||||
|
style="order: 2; margin-left: auto; font-size: .8rem">Last 14 days</div>
|
||||||
|
</div>
|
||||||
|
<div class="h1 m-0">{{ stats.nb_forward }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 col-md-6 col-lg-3">
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body py-3">
|
||||||
|
<div class="d-flex align-items-center">
|
||||||
|
<div class="subheader">Replies/Sent</div>
|
||||||
|
<div class="text-muted"
|
||||||
|
style="order: 2; margin-left: auto; font-size: .8rem">Last 14 days</div>
|
||||||
|
</div>
|
||||||
|
<div class="h1 m-0">{{ stats.nb_reply }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 col-md-6 col-lg-3">
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body py-3">
|
||||||
|
<div class="d-flex align-items-center">
|
||||||
|
<div class="subheader">Blocked</div>
|
||||||
|
<div class="text-muted"
|
||||||
|
style="order: 2; margin-left: auto; font-size: .8rem">Last 14 days</div>
|
||||||
|
</div>
|
||||||
|
<div class="h1 m-0">{{ stats.nb_block }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- END Global Stats -->
|
||||||
<div class="row mb-2" v-if="showFilter" id="filter-control">
|
<div class="row mb-2" v-if="showFilter" id="filter-control">
|
||||||
<!-- Filter Control -->
|
<!-- Filter Control -->
|
||||||
<div class="col d-flex">
|
<div class="col d-flex">
|
||||||
@ -223,11 +240,6 @@
|
|||||||
<a href="{{ url_for('dashboard.index') }}"
|
<a href="{{ url_for('dashboard.index') }}"
|
||||||
class="btn btn-outline-secondary">Reset</a>
|
class="btn btn-outline-secondary">Reset</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a v-if="showFilter"
|
|
||||||
@click="toggleFilter()"
|
|
||||||
class="btn btn-outline-secondary">
|
|
||||||
<i class="fe fe-chevrons-up"></i>
|
|
||||||
</a>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user