215 lines
6.2 KiB
Python
215 lines
6.2 KiB
Python
from django.views.generic import CreateView, ListView, UpdateView, DetailView, DeleteView, FormView, TemplateView
|
|
from django.contrib import messages
|
|
from django.shortcuts import render, redirect, reverse
|
|
from django.conf import settings
|
|
from django.http import HttpResponseRedirect,HttpResponse, JsonResponse
|
|
from .models import MainStatistic
|
|
from django.contrib.auth.models import User
|
|
from chat.models import ChatMessage
|
|
from users.models import Agency, AgencyBills, RegNotfallhilfe
|
|
from standards.models import Standards
|
|
import csv
|
|
from datetime import date
|
|
'''
|
|
Prüfung, ob angemeldeter User Mitarbeiterstatus hat. IMMER PER DISPATCH EINBAUEN!
|
|
'''
|
|
def checkForStuffUser(request):
|
|
if request.user.is_staff:
|
|
return True
|
|
else:
|
|
return False
|
|
|
|
'''
|
|
|
|
CSV mit Bestellungen herunterladen
|
|
|
|
'''
|
|
def getCSVRDOrders(request):
|
|
if(request.method == "GET"):
|
|
|
|
response = HttpResponse(content_type='text/csv')
|
|
|
|
today = date.today()
|
|
|
|
response['Content-Disposition'] = 'attachment; charset=UTF-8; filename="DA-Export_NF_Bestellungen_' + str(today.day) + '_'+ str(today.month)+'_'+ str(today.year)+'.csv"'
|
|
|
|
writer = csv.writer(response)
|
|
writer.writerow(['Datum', 'E-Mail', 'Name', 'Personalnummer', 'mitgliedsnummer', 'PLZ', 'Stadt', 'Strasse', 'Rabatt'])
|
|
orders = RegNotfallhilfe.objects.filter(wassend=False)
|
|
|
|
for order in orders:
|
|
rabatt = "NEIN"
|
|
if order.rabatt:
|
|
rabatt = "JA"
|
|
writer.writerow([str(order.orderdate),str(order.mail),str(order.name),str(order.persnumber),str(order.mitgliedsnummer),str(order.plz), str(order.stadt),str(order.street), rabatt ])
|
|
order.wassend = True
|
|
order.save()
|
|
return response
|
|
else:
|
|
pass
|
|
|
|
|
|
|
|
|
|
'''
|
|
Hauptansicht Statisik
|
|
'''
|
|
class AdmMain(TemplateView):
|
|
template_name = "adm/adm_main.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-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
|
|
|
|
'''
|
|
|
|
Gesatmübersicht aller Rechnungen
|
|
|
|
'''
|
|
class AdmBills(TemplateView):
|
|
|
|
template_name = "adm/adm_bills.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-bills"})
|
|
context.update({'bills' : AgencyBills.objects.all()})
|
|
return context
|
|
|
|
|
|
|
|
'''
|
|
Gesamtansicht der Agenturen
|
|
'''
|
|
class AdmAgencys(TemplateView):
|
|
template_name = "adm/adm_agencys.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-agencys"})
|
|
|
|
context.update({'agencys' : Agency.objects.all()})
|
|
|
|
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
|
|
'''
|
|
class AdmAgencySingle(TemplateView):
|
|
template_name = "adm/adm_agency_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-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({'userdata' : User.objects.get(pk=kwargs['uspk'])})
|
|
return context
|
|
|
|
|
|
|
|
# CRONJOB, um die Statistik zu füllen!
|
|
def statisticCronJob(request, code):
|
|
data = {}
|
|
if(code == settings.CRONAPIKEY_STATSTIC):
|
|
print("STATISTIC is running...")
|
|
newMainS = MainStatistic(agencys=len(Agency.objects.all()),users=len(User.objects.all().exclude(is_staff=True, is_superuser=True)),standards=len(Standards.objects.all()),chatmessages=len(ChatMessage.objects.all()))
|
|
newMainS.save()
|
|
data.update({"status" : "success"})
|
|
else:
|
|
print("API STATISTIC CODE FAILED")
|
|
data.update({"status" : "failed"})
|
|
return JsonResponse(data)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|