Agentur und Usereinzelansicht zur ADM hinzugefügt
This commit is contained in:
parent
98092af442
commit
781300d20f
|
|
@ -3,16 +3,12 @@
|
|||
{% load adm_tags %}
|
||||
{% getAgencyData agency as agdata %}
|
||||
<div class="content-section col-12">
|
||||
<h4>Einzelagenturansicht</h4>
|
||||
<h4>Agentur {{agency.name}}</h4>
|
||||
<hr>
|
||||
<h5>Daten der Agentur</h5>
|
||||
<table>
|
||||
<tr>
|
||||
<td style="min-width: 180px">Name</td>
|
||||
<td>{{agency.name}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Registriert am</td>
|
||||
<td style="min-width: 180px">Registriert am</td>
|
||||
<td>{{agency.registerdate|date:"d.m.Y"}}
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
@ -55,10 +51,54 @@ Es liegen keine Rechnungen vor.
|
|||
</table>
|
||||
{% endif %}
|
||||
<hr>
|
||||
<h5>Nutzerübersicht</h5>
|
||||
|
||||
|
||||
|
||||
<h5>Nutzerübersicht ({{agdata.0}})</h5>
|
||||
<table class="table table-hover" id="agdata" >
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Vorname</th>
|
||||
<th scope="col">Nachname</th>
|
||||
<th scope="col">Funktion</th>
|
||||
<th scope="col">Letzter Login</th>
|
||||
<th scope="col">Organ. Sichtbar</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody >
|
||||
{% for ele in users_of_agency %}
|
||||
<tr>
|
||||
<td><a href="{% url 'adm-user-single' ele.pk %}">{{ele.first_name}}</a></td>
|
||||
<td><a href="{% url 'adm-user-single' ele.pk %}">{{ele.last_name}}</a></td>
|
||||
<td>{{ele.profile.func|default:""}}</td>
|
||||
<td>{{ele.last_login|date:"d.m.Y, H:i"|default:""}}</td>
|
||||
<td>{% if ele.profile.visible %} Sichtbar {% else %} Nicht sichtbar {% endif %}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
<hr>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
$('#agdata').DataTable({
|
||||
"language": {
|
||||
"search" : "Suche",
|
||||
"info": "Zeige _START_ bis _END_ von _TOTAL_ Einträgen",
|
||||
"lengthMenu": "Zeige _MENU_ Einträge",
|
||||
"zeroRecords": "Nichts gefunden",
|
||||
"infoEmpty": "Keine Einträge",
|
||||
"paginate": {
|
||||
"first": "Erste",
|
||||
"last": "Letzte",
|
||||
"next": "Nächste",
|
||||
"previous": "Zurück"
|
||||
},
|
||||
},
|
||||
"pageLength": 50,
|
||||
"buttons" : {
|
||||
"className" : "btn-danger"
|
||||
}
|
||||
});
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -96,6 +96,17 @@
|
|||
<span>Agenturen</span></a>
|
||||
</li>
|
||||
|
||||
<!-- Nav Item - Dashboard -->
|
||||
{% if active_link == 'adm-users' %}
|
||||
<li class="nav-item active">
|
||||
{% else %}
|
||||
<li class="nav-item">
|
||||
{%endif%}
|
||||
<a class="nav-link" href="{% url 'adm-users' %}">
|
||||
<i class="fas fa-user"></i>
|
||||
<span>Benutzer</span></a>
|
||||
</li>
|
||||
|
||||
<hr class="sidebar-divider my-0">
|
||||
|
||||
<li class="nav-item">
|
||||
|
|
@ -169,7 +180,7 @@
|
|||
<button id="sidebarToggleTop" class="btn btn-link d-md-none rounded-circle mr-3" onclick="javascript:toggleSidebar()">
|
||||
<i class="fa fa-bars"></i>
|
||||
</button>
|
||||
|
||||
<b>Mitarbeiterbereich</b>
|
||||
<!-- Topbar Search -->
|
||||
<!-- <form class="d-none d-sm-inline-block form-inline mr-auto ml-md-3 my-2 my-md-0 mw-100 navbar-search">
|
||||
<div class="input-group">
|
||||
|
|
|
|||
|
|
@ -1,17 +1,40 @@
|
|||
{% extends "adm/adm_base.html" %}
|
||||
{% block content %}
|
||||
{% load adm_tags %}
|
||||
<div class="content-section col-12">
|
||||
<h4>Statistikdaten</h4>
|
||||
{% if statistik|length > 0 %}
|
||||
{% getlaststat as statistik_last %}
|
||||
<h4>Statistik vom {{statistik.0.staticdate|date:"d.m.Y"}} bis {{statistik_last.staticdate|date:"d.m.Y"}}
|
||||
</h4>
|
||||
{% else %}
|
||||
<h4>Statisk noch nicht begonnen </h4>
|
||||
{% endif %}
|
||||
<hr>
|
||||
<p>
|
||||
Anzahl Datensätze: {{statistik|length}}<br />
|
||||
</p>
|
||||
<div class="chart-container" style="">
|
||||
<canvas id="all_stats"></canvas>
|
||||
</div>
|
||||
<hr>
|
||||
<h5>Zahlenübersicht stand jetzt</h5>
|
||||
<table>
|
||||
<tr>
|
||||
<td style="min-width: 150px;">Agenturen</td>
|
||||
<td>{{agencycount}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Nutzer</td>
|
||||
<td>{{usercount}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Standards</td>
|
||||
<td>{{standardcount}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Chatnachrichten</td>
|
||||
<td>{{chatmessagescount}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
|
||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.1.6/Chart.bundle.min.js"></script>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,70 @@
|
|||
{% extends "adm/adm_base.html" %}
|
||||
{% block content %}
|
||||
{% load adm_tags %}
|
||||
<div class="content-section col-12">
|
||||
<h4>{{user.get_full_name}} aus {{user.profile.agency.name}}</h4>
|
||||
<hr>
|
||||
<table>
|
||||
<tr>
|
||||
<td style="min-width: 120px;">Name</td>
|
||||
<td>{{user.get_full_name}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>E-Mail</td>
|
||||
<td>{{user.email}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Letzter Login</td>
|
||||
<td>{{user.last_login|default:"-"}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr>
|
||||
<h5>Gruppenübersicht</h5>
|
||||
<small>Tabelle zeigt alle Gruppen, in denen der Nutzer ist.</small>
|
||||
<table class="table table-hover" id="users_groups" >
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Gruppenname</th>
|
||||
<th scope="col">Interner Name</th>
|
||||
<th scope="col">Löschschutz</th>
|
||||
<th scope="col">Administrativ</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody >
|
||||
{% for g in user.groups.all %}
|
||||
{% getAgencyGroupName g as aggdata %}
|
||||
<tr>
|
||||
<td>{{aggdata.agencygroupname}}</td>
|
||||
<td>{{g.name}}</td>
|
||||
<td>{% if aggdata.savefordel %} Ja {% else %} Nein {% endif %}</td>
|
||||
<td>{% if aggdata.is_admin %} Ja {% else %} Nein {% endif %}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
$('#users_groups').DataTable({
|
||||
"language": {
|
||||
"search" : "Suche",
|
||||
"info": "Zeige _START_ bis _END_ von _TOTAL_ Einträgen",
|
||||
"lengthMenu": "Zeige _MENU_ Einträge",
|
||||
"zeroRecords": "Nichts gefunden",
|
||||
"infoEmpty": "Keine Einträge",
|
||||
"paginate": {
|
||||
"first": "Erste",
|
||||
"last": "Letzte",
|
||||
"next": "Nächste",
|
||||
"previous": "Zurück"
|
||||
},
|
||||
},
|
||||
"pageLength": 50,
|
||||
"buttons" : {
|
||||
"className" : "btn-danger"
|
||||
}
|
||||
});
|
||||
})
|
||||
</script>
|
||||
</div>
|
||||
{% endblock content %}
|
||||
|
|
@ -1,26 +1,23 @@
|
|||
{% extends "adm/adm_base.html" %}
|
||||
{% block content %}
|
||||
{% load adm_tags %}
|
||||
<div class="content-section col-12">
|
||||
<h4>Statistikdaten</h4>
|
||||
<h4>Nutzerübersicht ({{users|length}})</h4>
|
||||
<hr>
|
||||
<table class="table table-hover" id="statistics" >
|
||||
<table class="table table-hover" id="all_users" >
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Datum</th>
|
||||
<th scope="col">Agenturen</th>
|
||||
<th scope="col">Benutzer</th>
|
||||
<th scope="col">Standards</th>
|
||||
<th scope="col">Chatnachrichten</th>
|
||||
<th scope="col">Name</th>
|
||||
<th scope="col">E-Mail</th>
|
||||
<th scope="col">Agentur</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody >
|
||||
{% for ele in statistik %}
|
||||
{% for ele in users %}
|
||||
<tr>
|
||||
<td>{{ele.staticdate|date:"d.m.Y"}}</td>
|
||||
<td>{{ele.agencys}}</td>
|
||||
<td>{{ele.users}}</td>
|
||||
<td>{{ele.standards}}</td>
|
||||
<td>{{ele.chatmessages}}</td>
|
||||
<td><a href="{% url 'adm-user-single' ele.pk %}">{{ele.get_full_name}}</a></td>
|
||||
<td>{{ele.email}}</td>
|
||||
<td>{{ele.profile.agency.name}}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
|
|
@ -28,7 +25,7 @@
|
|||
</div>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
$('#statistics').DataTable({
|
||||
$('#all_users').DataTable({
|
||||
"language": {
|
||||
"search" : "Suche",
|
||||
"info": "Zeige _START_ bis _END_ von _TOTAL_ Einträgen",
|
||||
Binary file not shown.
|
|
@ -9,6 +9,7 @@ from django.conf import settings
|
|||
from django.utils import timezone
|
||||
from datetime import date
|
||||
import datetime
|
||||
from adm.models import MainStatistic
|
||||
register = template.Library()
|
||||
|
||||
|
||||
|
|
@ -22,8 +23,17 @@ register = template.Library()
|
|||
@register.simple_tag
|
||||
def getAgencyData(ele):
|
||||
data = [0,1]
|
||||
|
||||
data[0] = len(User.objects.filter(profile__agency=ele))
|
||||
data[1] = len(Standards.objects.filter(agency=ele))
|
||||
|
||||
return data
|
||||
|
||||
# Gibt den letzten Statisk-Datensatz zurück
|
||||
@register.simple_tag
|
||||
def getlaststat():
|
||||
return MainStatistic.objects.all().order_by("-staticdate")[:1][0]
|
||||
|
||||
# Gibt die AgencyGroup anhand einer Gruppe zurück
|
||||
@register.simple_tag
|
||||
def getAgencyGroupName(group):
|
||||
return AgencyGroup.objects.get(group=group)
|
||||
|
||||
|
|
|
|||
|
|
@ -10,6 +10,9 @@ Permissions definiert in models.py bei USERS und dann hier vor die View geschrie
|
|||
urlpatterns = [
|
||||
path('', AdmMain.as_view(), name='adm-main'),
|
||||
path('ag/', AdmAgencys.as_view(), name="adm-agencys"),
|
||||
path('us/', AdmUsers.as_view(), name="adm-users"),
|
||||
path('agsingle/<int:agpk>', AdmAgencySingle.as_view(), name="adm-agency-single"),
|
||||
path('cron/<slug:code>', statisticCronJob, name="adm-cron")
|
||||
path('usersingle/<int:uspk>', AdmUserSingle.as_view(), name="adm-user-single"),
|
||||
path('cron/<slug:code>', statisticCronJob, name="adm-cron"),
|
||||
|
||||
]
|
||||
|
|
|
|||
46
adm/views.py
46
adm/views.py
|
|
@ -38,7 +38,12 @@ class AdmMain(TemplateView):
|
|||
context.update({'active_link' : "adm-statistic"})
|
||||
|
||||
context.update({'statistik' : MainStatistic.objects.all().order_by('staticdate')[:180] })
|
||||
|
||||
context.update({
|
||||
"agencycount" : len(Agency.objects.all()),
|
||||
"usercount" : len(User.objects.all().exclude(is_staff=True, is_superuser=True)),
|
||||
"standardcount" : len(Standards.objects.all()),
|
||||
"chatmessagescount" : len(ChatMessage.objects.all())
|
||||
})
|
||||
return context
|
||||
|
||||
'''
|
||||
|
|
@ -63,6 +68,26 @@ class AdmAgencys(TemplateView):
|
|||
|
||||
return context
|
||||
|
||||
|
||||
class AdmUsers(TemplateView):
|
||||
template_name = "adm/adm_users.html"
|
||||
|
||||
def dispatch(self, *args, **kwargs):
|
||||
if(checkForStuffUser(self.request)):
|
||||
return super().dispatch(*args, **kwargs)
|
||||
else:
|
||||
messages.warning(self.request, f'Sie benötigen einen Mitarbeiter-Account, um diese Seiten aufzurufen!')
|
||||
return redirect("login")
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context.update({'active_link' : "adm-users"})
|
||||
|
||||
context.update({'users' : User.objects.all().exclude(is_staff=True, is_superuser=True)})
|
||||
|
||||
return context
|
||||
|
||||
'''
|
||||
Einzelansicht der Agenturen
|
||||
'''
|
||||
|
|
@ -81,9 +106,26 @@ class AdmAgencySingle(TemplateView):
|
|||
context.update({'active_link' : "adm-agencys"})
|
||||
context.update({'agency' : Agency.objects.get(pk=kwargs['agpk'])})
|
||||
context.update({'bills' : AgencyBills.objects.filter(agency=Agency.objects.get(pk=kwargs['agpk'])).order_by('-billdate')[:3]})
|
||||
|
||||
context.update({'users_of_agency' : User.objects.filter(profile__agency=Agency.objects.get(pk=kwargs['agpk'])).order_by('-last_name')})
|
||||
return context
|
||||
|
||||
class AdmUserSingle(TemplateView):
|
||||
template_name = "adm/adm_user_single.html"
|
||||
|
||||
def dispatch(self, *args, **kwargs):
|
||||
if(checkForStuffUser(self.request)):
|
||||
return super().dispatch(*args, **kwargs)
|
||||
else:
|
||||
messages.warning(self.request, f'Sie benötigen einen Mitarbeiter-Account, um diese Seiten aufzurufen!')
|
||||
return redirect("login")
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
context.update({'active_link' : "adm-users"})
|
||||
context.update({'users' : User.objects.get(pk=kwargs['uspk'])})
|
||||
return context
|
||||
|
||||
|
||||
|
||||
# CRONJOB, um die Statistik zu füllen!
|
||||
def statisticCronJob(request, code):
|
||||
|
|
|
|||
Loading…
Reference in New Issue