mirror of
https://github.com/simple-login/app.git
synced 2024-10-01 22:21:29 +02:00
Merge pull request #22 from simple-login/alias-dashboard
Alias dashboard
This commit is contained in:
commit
634861e279
@ -30,6 +30,8 @@ COLOR_LOG = "COLOR_LOG" in os.environ
|
|||||||
# Allow user to have 1 year of premium: set the expiration_date to 1 year more
|
# Allow user to have 1 year of premium: set the expiration_date to 1 year more
|
||||||
PROMO_CODE = "SIMPLEISBETTER"
|
PROMO_CODE = "SIMPLEISBETTER"
|
||||||
|
|
||||||
|
# Debug mode
|
||||||
|
DEBUG = os.environ["DEBUG"] if "DEBUG" in os.environ else False
|
||||||
# Server url
|
# Server url
|
||||||
URL = os.environ["URL"]
|
URL = os.environ["URL"]
|
||||||
print(">>> URL:", URL)
|
print(">>> URL:", URL)
|
||||||
|
@ -1,7 +1,68 @@
|
|||||||
{% extends 'default.html' %}
|
{% extends 'default.html' %}
|
||||||
|
|
||||||
{% set active_page = "dashboard" %}
|
{% set active_page = "dashboard" %}
|
||||||
|
{% block head %}
|
||||||
|
<style>
|
||||||
|
{# https://bootsnipp.com/snippets/rljEW#}
|
||||||
|
.card-counter{
|
||||||
|
box-shadow: 2px 2px 10px #DADADA;
|
||||||
|
margin: 5px;
|
||||||
|
padding: 20px 10px;
|
||||||
|
background-color: #fff;
|
||||||
|
height: 100px;
|
||||||
|
border-radius: 5px;
|
||||||
|
transition: .3s linear all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-counter:hover{
|
||||||
|
box-shadow: 4px 4px 20px #DADADA;
|
||||||
|
transition: .3s linear all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-counter.primary{
|
||||||
|
background-color: #007bff;
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-counter.danger{
|
||||||
|
background-color: #ef5350;
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-counter.success{
|
||||||
|
background-color: #66bb6a;
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-counter.info{
|
||||||
|
background-color: #26c6da;
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-counter i{
|
||||||
|
font-size: 5em;
|
||||||
|
opacity: 0.2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-counter .count-numbers{
|
||||||
|
position: absolute;
|
||||||
|
right: 35px;
|
||||||
|
top: 20px;
|
||||||
|
font-size: 32px;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-counter .count-name{
|
||||||
|
position: absolute;
|
||||||
|
right: 35px;
|
||||||
|
top: 65px;
|
||||||
|
text-transform: capitalize;
|
||||||
|
opacity: 0.5;
|
||||||
|
display: block;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
{% endblock %}
|
||||||
{% block title %}
|
{% block title %}
|
||||||
Alias Activity
|
Alias Activity
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
@ -12,7 +73,37 @@
|
|||||||
{{ alias }}
|
{{ alias }}
|
||||||
</h3>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-3">
|
||||||
|
<div class="card-counter primary">
|
||||||
|
<i class="fa fa-at"></i>
|
||||||
|
<span class="count-numbers">{{ total }}</span>
|
||||||
|
<span class="count-name">Email Handled</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-3">
|
||||||
|
<div class="card-counter primary">
|
||||||
|
<i class="fa fa-paper-plane"></i>
|
||||||
|
<span class="count-numbers">{{ email_forwarded }}</span>
|
||||||
|
<span class="count-name">Email Forwarded</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-3">
|
||||||
|
<div class="card-counter primary">
|
||||||
|
<i class="fa fa-reply"></i>
|
||||||
|
<span class="count-numbers">{{ email_replied }}</span>
|
||||||
|
<span class="count-name">Email Replied</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-3">
|
||||||
|
<div class="card-counter danger">
|
||||||
|
<i class="fa fa-ban"></i>
|
||||||
|
<span class="count-numbers">{{ email_blocked }}</span>
|
||||||
|
<span class="count-name">Email Blocked</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<h2 class="pt-4">Activities</h2>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
{% for log in logs %}
|
{% for log in logs %}
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
|
@ -38,6 +38,19 @@ def alias_log(alias, page_id):
|
|||||||
return redirect(url_for("dashboard.index"))
|
return redirect(url_for("dashboard.index"))
|
||||||
|
|
||||||
logs = get_alias_log(gen_email, page_id)
|
logs = get_alias_log(gen_email, page_id)
|
||||||
|
base = (
|
||||||
|
db.session.query(ForwardEmail, ForwardEmailLog)
|
||||||
|
.filter(ForwardEmail.id == ForwardEmailLog.forward_id)
|
||||||
|
.filter(ForwardEmail.gen_email_id == gen_email.id)
|
||||||
|
)
|
||||||
|
total = base.count()
|
||||||
|
email_forwarded = (
|
||||||
|
base.filter(ForwardEmailLog.is_reply == False)
|
||||||
|
.filter(ForwardEmailLog.blocked == False)
|
||||||
|
.count()
|
||||||
|
)
|
||||||
|
email_replied = base.filter(ForwardEmailLog.is_reply == True).count()
|
||||||
|
email_blocked = base.filter(ForwardEmailLog.blocked == True).count()
|
||||||
last_page = (
|
last_page = (
|
||||||
len(logs) < _LIMIT
|
len(logs) < _LIMIT
|
||||||
) # lightweight pagination without counting all objects
|
) # lightweight pagination without counting all objects
|
||||||
|
@ -18,6 +18,7 @@ from app.admin_model import SLModelView, SLAdminIndexView
|
|||||||
from app.api.base import api_bp
|
from app.api.base import api_bp
|
||||||
from app.auth.base import auth_bp
|
from app.auth.base import auth_bp
|
||||||
from app.config import (
|
from app.config import (
|
||||||
|
DEBUG,
|
||||||
DB_URI,
|
DB_URI,
|
||||||
FLASK_SECRET,
|
FLASK_SECRET,
|
||||||
SENTRY_DSN,
|
SENTRY_DSN,
|
||||||
@ -422,8 +423,6 @@ window.location.href = "/";
|
|||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
app = create_app()
|
app = create_app()
|
||||||
|
|
||||||
app.debug = True
|
|
||||||
|
|
||||||
# enable flask toolbar
|
# enable flask toolbar
|
||||||
# app.config["DEBUG_TB_PROFILER_ENABLED"] = True
|
# app.config["DEBUG_TB_PROFILER_ENABLED"] = True
|
||||||
# app.config["DEBUG_TB_INTERCEPT_REDIRECTS"] = False
|
# app.config["DEBUG_TB_INTERCEPT_REDIRECTS"] = False
|
||||||
|
Loading…
Reference in New Issue
Block a user