Da die Gesamtzahl der Mitarbeiter 20 überschreitet, ist es schwierig zu erkennen, ob die Schichttabelle für Einrichtungen angezeigt wird, die nicht mit mir in Verbindung stehen. Daher habe ich sie korrigiert. Ich hatte große Probleme mit diesem Fix und stellte Qiita eine Frage und konnte sie implementieren: point_up:
schedule/views.py
from django.shortcuts import render, redirect, HttpResponseRedirect
from shisetsu.models import *
from accounts.models import *
from .models import *
import calendar
import datetime
from datetime import timedelta
from datetime import datetime as dt
from django.db.models import Sum, Q
from django.contrib.auth.models import User
from django.views.generic import FormView, UpdateView, ListView, CreateView, DetailView, DeleteView
from django.urls import reverse_lazy
from .forms import *
from dateutil.relativedelta import relativedelta
from django.contrib.auth.models import User
from django.contrib.auth.mixins import LoginRequiredMixin
# Create your views here.
def homeschedule(request):
from datetime import datetime
now = datetime.now()
return HttpResponseRedirect('/schedule/monthschedule/%s/%s/' % (now.year,now.month,)) #Automatisch zum Schichtbildschirm dieses Monats umleiten
def monthschedulefilterfunc(request,year_num,month_num,shisetsu_num):
#user_list = User.objects.all()
#profile_list = Profile.objects.select_related().values().order_by('hyoujijyun')
#Erhalten Sie Zugehörigkeitsinformationen vom angemeldeten Benutzer
current_user = request.user
UserShozoku_list = UserShozokuModel.objects.filter(user = current_user).values_list("shisetsu_name", flat=True)
UserShozoku_list = list(UserShozoku_list)
#Erhalten Sie dieselben Zugehörigkeitsinformationen wie der angemeldete Benutzer
Shzoku_list = UserShozokuModel.objects.filter(shisetsu_name__in = UserShozoku_list).values_list("user_id", flat=True).distinct()
user_list = User.objects.select_related().all().order_by("profile__hyoujijyun")
profile_list = Profile.objects.filter(user_id__in = Shzoku_list).select_related().values().order_by("hyoujijyun")
year, month, shisetsu = int(year_num), int(month_num), int(shisetsu_num)
shisetsu_object = Shisetsu.objects.filter(id = shisetsu)
shisetsu_all_object = Shisetsu.objects.all()
shift_object = Shift.objects.all()
object_list = Schedule.objects.filter(year = year, month = month).order_by('user', 'date')
month_total = Schedule.objects.select_related('User').filter(year = year, month = month).values("user").order_by("user").annotate(month_total_worktime = Sum("day_total_worktime"))
#Ermitteln Sie die Anzahl der Tage im Schichtbereich
enddate = datetime.date(year,month,20)
startdate = enddate + relativedelta(months=-1)
kaisu = enddate - startdate
kaisu = int(kaisu.days)
kikan = str(startdate) +"~"+ str(enddate)
#Machen Sie eine Liste von Daten und Tagen
hiduke = str(startdate)
date_format = "%Y-%m-%d"
hiduke = dt.strptime(hiduke, date_format)
weekdays = ["Mond","Feuer","Wasser","Holz","Geld","Boden","Tag"]
calender_object = []
youbi_object = []
for i in range(kaisu):
hiduke = hiduke + timedelta(days=1)
calender_object.append(hiduke)
youbi = weekdays[hiduke.weekday()]
youbi_object.append(youbi)
kaisu = str(kaisu)
context = {
'year': year,
'month': month,
'kikan': kikan,
'object_list': object_list,
'user_list': user_list,
'shift_object': shift_object,
'calender_object': calender_object,
'youbi_object': youbi_object,
'kaisu': kaisu,
'shisetsu_object': shisetsu_object,
'month_total' : month_total,
'profile_list' : profile_list,
'shisetsu_all_object' : shisetsu_all_object,
}
return render(request,'schedule/monthfilter.html', context)
def monthschedulefunc(request,year_num,month_num):
#Erhalten Sie Zugehörigkeitsinformationen vom angemeldeten Benutzer
current_user = request.user
UserShozoku_list = UserShozokuModel.objects.filter(user = current_user).values_list("shisetsu_name", flat=True)
UserShozoku_list = list(UserShozoku_list)
#Erhalten Sie dieselben Zugehörigkeitsinformationen wie der angemeldete Benutzer
Shzoku_list = UserShozokuModel.objects.filter(shisetsu_name__in = UserShozoku_list).values_list("user_id", flat=True).distinct()
user_list = User.objects.select_related().all().order_by("profile__hyoujijyun")
profile_list = Profile.objects.filter(user_id__in = Shzoku_list).select_related().values().order_by("hyoujijyun")
#Für die Anzeige der Einrichtungsschaltfläche erneut erforderlich
UserShozoku_list = UserShozokuModel.objects.filter(user = current_user)
year, month = int(year_num), int(month_num)
shisetsu_object = Shisetsu.objects.all()
shift_object = Shift.objects.all()
object_list = Schedule.objects.filter(year = year, month = month).order_by('user', 'date')
month_total = Schedule.objects.select_related('User').filter(year = year, month = month).values("user").order_by("user").annotate(month_total_worktime = Sum("day_total_worktime"))
#Ermitteln Sie die Anzahl der Tage im Schichtbereich
enddate = datetime.date(year,month,20)
startdate = enddate + relativedelta(months=-1)
kaisu = enddate - startdate
kaisu = int(kaisu.days)
kikan = str(startdate) +"~"+ str(enddate)
#Machen Sie eine Liste von Daten und Tagen
hiduke = str(startdate)
date_format = "%Y-%m-%d"
hiduke = dt.strptime(hiduke, date_format)
weekdays = ["Mond","Feuer","Wasser","Holz","Geld","Boden","Tag"]
calender_object = []
youbi_object = []
for i in range(kaisu):
hiduke = hiduke + timedelta(days=1)
calender_object.append(hiduke)
youbi = weekdays[hiduke.weekday()]
youbi_object.append(youbi)
kaisu = str(kaisu)
context = {
'year': year,
'month': month,
'kikan': kikan,
'object_list': object_list,
'user_list': user_list,
'shift_object': shift_object,
'calender_object': calender_object,
'youbi_object': youbi_object,
'kaisu': kaisu,
'shisetsu_object': shisetsu_object,
'month_total' : month_total,
'profile_list' : profile_list,
'UserShozoku_list':UserShozoku_list,
}
return render(request,'schedule/month.html', context)
def scheduleUpdatefunc(request,pk):
Schedule_list = Schedule.objects.get(pk = int(pk))
User_list = User.objects.get(username = Schedule_list.user)
shift_object = Shift.objects.all()
if request.method == 'POST':
form = ScheduleUpdateForm(data=request.POST)
year = Schedule_list.year
month = Schedule_list.month
#Aktualisieren Sie die Schaltflächenverarbeitung
if form.is_valid():
Schedule_list.shift_name_1 = form.cleaned_data['shift_name_1']
Schedule_list.shisetsu_name_1 = form.cleaned_data['shisetsu_name_1']
Schedule_list.shift_name_2 = form.cleaned_data['shift_name_2']
Schedule_list.shisetsu_name_2 = form.cleaned_data['shisetsu_name_2']
Schedule_list.shift_name_3 = form.cleaned_data['shift_name_3']
Schedule_list.shisetsu_name_3 = form.cleaned_data['shisetsu_name_3']
Schedule_list.shift_name_4 = form.cleaned_data['shift_name_4']
Schedule_list.shisetsu_name_4 = form.cleaned_data['shisetsu_name_4']
#Schaltfläche "Aktualisieren"
if "updatebutton" in request.POST:
Schedule_list.day_total_worktime = form.cleaned_data['day_total_worktime']
#Berechnen Sie aus der Umschalt- und Aktualisierungstaste
elif "sumupdatebutton" in request.POST:
#Berechnen Sie die tägliche Gesamtarbeitszeit aus Schichten
sum_work_time = 0
for shift in shift_object:
if str(form.cleaned_data['shift_name_1']) == str(shift.name):
sum_work_time = shift.wrok_time + sum_work_time
if str(form.cleaned_data['shift_name_2']) == str(shift.name):
sum_work_time = shift.wrok_time + sum_work_time
if str(form.cleaned_data['shift_name_3']) == str(shift.name):
sum_work_time = shift.wrok_time + sum_work_time
if str(form.cleaned_data['shift_name_4']) == str(shift.name):
sum_work_time = shift.wrok_time + sum_work_time
Schedule_list.day_total_worktime = sum_work_time
Schedule_list.save()
return HttpResponseRedirect('/schedule/monthschedule/%s/%s/' % (year,month,))
else:
item = {
"shift_name_1":Schedule_list.shift_name_1,
"shisetsu_name_1": Schedule_list.shisetsu_name_1,
"shift_name_2": Schedule_list.shift_name_2,
"shisetsu_name_2": Schedule_list.shisetsu_name_2,
"shift_name_3": Schedule_list.shift_name_3,
"shisetsu_name_3": Schedule_list.shisetsu_name_3,
"shift_name_4": Schedule_list.shift_name_4,
"shisetsu_name_4": Schedule_list.shisetsu_name_4,
"day_total_worktime": Schedule_list.day_total_worktime,
}
form = ScheduleUpdateForm(initial=item)
context = {
'form' : form,
'Schedule_list': Schedule_list,
'User_list': User_list,
'shift_object': shift_object,
}
return render(request,'schedule/update.html', context )
def schedulecreatefunc(request,year_num,month_num):
year, month = int(year_num), int(month_num)
#Löschen Sie alle Zeitpläne des Zieljahres und -monats
Schedule.objects.filter(year = year, month = month).delete()
#Ermitteln Sie die Anzahl der Tage im Schichtbereich
enddate = datetime.date(year,month,20)
startdate = enddate + relativedelta(months=-1)
#Extrahieren Sie die Hoffnung der Zielperiode aus der gewünschten Verschiebung
kiboushift_list = KibouShift.objects.filter(date__range=[startdate, enddate])
kiboushift_list = list(kiboushift_list)
shift_list = Shift.objects.all()
#Reflektieren Sie die gewünschte Verschiebung
for kibou in kiboushift_list:
sum_work_time = 0
for shift in shift_list:
if str(kibou.shift_name_1) == str(shift.name):
sum_work_time = shift.wrok_time + sum_work_time
if str(kibou.shift_name_2) == str(shift.name):
sum_work_time = shift.wrok_time + sum_work_time
if str(kibou.shift_name_3) == str(shift.name):
sum_work_time = shift.wrok_time + sum_work_time
if str(kibou.shift_name_4) == str(shift.name):
sum_work_time = shift.wrok_time + sum_work_time
new_object = Schedule(
user = kibou.user,
date = kibou.date,
year = year,
month = month,
shift_name_1 = kibou.shift_name_1,
shisetsu_name_1 = kibou.shisetsu_name_1,
shift_name_2 = kibou.shift_name_2,
shisetsu_name_2 = kibou.shisetsu_name_2,
shift_name_3 = kibou.shift_name_3,
shisetsu_name_3 = kibou.shisetsu_name_3,
shift_name_4 = kibou.shift_name_4,
shisetsu_name_4 = kibou.shisetsu_name_4,
day_total_worktime = sum_work_time,
)
new_object.save()
#Erstellen Sie eine andere als die gewünschte Schicht
user_list = User.objects.all()
#Ermitteln Sie die Anzahl der Tage im Schichtbereich
enddate = datetime.date(year,month,20)
startdate = enddate + relativedelta(months=-1)
kaisu = enddate - startdate
kaisu = int(kaisu.days)
#Im vergangenen Monat
if month != 1 :
zengetsu = month - 1
else:
zengetsu = 12
year = year - 1
#Prozess für jeden Benutzer
for user in user_list:
#base_Erstellt aus den Informationen, in denen die Schicht registriert ist
base_shift = BaseShift.objects.filter(user = user.id)
kongetsu_list = Schedule.objects.filter(year = year, month = month, user = user.id).order_by('date')
zengetsu_list = Schedule.objects.filter(year = year, month = zengetsu, user = user.id).order_by('date')
sakusei_date = startdate
shift_list = Shift.objects.all()
for new_shift in range(kaisu):
sakusei_date = sakusei_date + timedelta(days=1)
if kongetsu_list.filter(user = user.id, date = sakusei_date).exists():
print("ok")
else:
weekdays = ["Mond","Feuer","Wasser","Holz","Geld","Boden","Tag"]
youbi = weekdays[sakusei_date.weekday()]
#Holen Sie sich aus der Basisschicht und erhalten
if base_shift.filter(user = user.id ).exists():
for base in base_shift:
sum_work_time = 0
shift1 = None
shisetsu1 = None
shift2 = None
shisetsu2 = None
shift3 = None
shisetsu3 = None
shift4 = None
shisetsu4 = None
if youbi == "Mond":
for shift in shift_list:
if str(base.getsu_shift_name_1) == str(shift.name):
shift1 = base.getsu_shift_name_1
shisetsu1 = base.getsu_shisetsu_name_1
sum_work_time = shift.wrok_time + sum_work_time
if str(base.getsu_shift_name_2) == str(shift.name):
shift2 = base.getsu_shift_name_2
shisetsu2 = base.getsu_shisetsu_name_2
sum_work_time = shift.wrok_time + sum_work_time
if str(base.getsu_shift_name_3) == str(shift.name):
shift3 = base.getsu_shift_name_3
shisetsu3 = base.getsu_shisetsu_name_3
sum_work_time = shift.wrok_time + sum_work_time
if str(base.getsu_shift_name_4) == str(shift.name):
shift4 = base.getsu_shift_name_4
shisetsu4 = base.getsu_shisetsu_name_4
sum_work_time = shift.wrok_time + sum_work_time
elif youbi == "Feuer":
for shift in shift_list:
if str(base.ka_shift_name_1) == str(shift.name):
shift1 = base.ka_shift_name_1
shisetsu1 = base.ka_shisetsu_name_1
sum_work_time = shift.wrok_time + sum_work_time
if str(base.ka_shift_name_2) == str(shift.name):
shift2 = base.ka_shift_name_2
shisetsu2 = base.ka_shisetsu_name_2
sum_work_time = shift.wrok_time + sum_work_time
if str(base.ka_shift_name_3) == str(shift.name):
shift3 = base.ka_shift_name_3
shisetsu3 = base.ka_shisetsu_name_3
sum_work_time = shift.wrok_time + sum_work_time
if str(base.ka_shift_name_4) == str(shift.name):
shift4 = base.ka_shift_name_4
shisetsu4 = base.ka_shisetsu_name_4
sum_work_time = shift.wrok_time + sum_work_time
elif youbi == "Wasser":
for shift in shift_list:
if str(base.sui_shift_name_1) == str(shift.name):
shift1 = base.sui_shift_name_1
shisetsu1 = base.sui_shisetsu_name_1
sum_work_time = shift.wrok_time + sum_work_time
if str(base.sui_shift_name_2) == str(shift.name):
shift2 = base.sui_shift_name_2
shisetsu2 = base.sui_shisetsu_name_2
sum_work_time = shift.wrok_time + sum_work_time
if str(base.sui_shift_name_3) == str(shift.name):
shift3 = base.sui_shift_name_3
shisetsu3 = base.sui_shisetsu_name_3
sum_work_time = shift.wrok_time + sum_work_time
if str(base.sui_shift_name_4) == str(shift.name):
shift4 = base.sui_shift_name_4
shisetsu4 = base.sui_shisetsu_name_4
sum_work_time = shift.wrok_time + sum_work_time
elif youbi == "Holz":
for shift in shift_list:
if str(base.moku_shift_name_1) == str(shift.name):
shift1 = base.moku_shift_name_1
shisetsu1 = base.moku_shisetsu_name_1
sum_work_time = shift.wrok_time + sum_work_time
if str(base.moku_shift_name_2) == str(shift.name):
shift2 = base.moku_shift_name_2
shisetsu2 = base.moku_shisetsu_name_2
sum_work_time = shift.wrok_time + sum_work_time
if str(base.moku_shift_name_3) == str(shift.name):
shift3 = base.moku_shift_name_3
shisetsu3 = base.moku_shisetsu_name_3
sum_work_time = shift.wrok_time + sum_work_time
if str(base.moku_shift_name_4) == str(shift.name):
shift4 = base.moku_shift_name_4
shisetsu4 = base.moku_shisetsu_name_4
sum_work_time = shift.wrok_time + sum_work_time
elif youbi == "Geld":
for shift in shift_list:
if str(base.kin_shift_name_1) == str(shift.name):
shift1 = base.kin_shift_name_1
shisetsu1 = base.kin_shisetsu_name_1
sum_work_time = shift.wrok_time + sum_work_time
if str(base.kin_shift_name_2) == str(shift.name):
shift2 = base.kin_shift_name_2
shisetsu2 = base.kin_shisetsu_name_2
sum_work_time = shift.wrok_time + sum_work_time
if str(base.kin_shift_name_3) == str(shift.name):
shift3 = base.kin_shift_name_3
shisetsu3 = base.kin_shisetsu_name_3
sum_work_time = shift.wrok_time + sum_work_time
if str(base.kin_shift_name_4) == str(shift.name):
shift4 = base.kin_shift_name_4
shisetsu4 = base.kin_shisetsu_name_4
sum_work_time = shift.wrok_time + sum_work_time
elif youbi == "Boden":
for shift in shift_list:
if str(base.do_shift_name_1) == str(shift.name):
shift1 = base.do_shift_name_1
shisetsu1 = base.do_shisetsu_name_1
sum_work_time = shift.wrok_time + sum_work_time
if str(base.do_shift_name_2) == str(shift.name):
shift2 = base.do_shift_name_2
shisetsu2 = base.do_shisetsu_name_2
sum_work_time = shift.wrok_time + sum_work_time
if str(base.do_shift_name_3) == str(shift.name):
shift3 = base.do_shift_name_3
shisetsu3 = base.do_shisetsu_name_3
sum_work_time = shift.wrok_time + sum_work_time
if str(base.do_shift_name_4) == str(shift.name):
shift4 = base.do_shift_name_4
shisetsu4 = base.do_shisetsu_name_4
sum_work_time = shift.wrok_time + sum_work_time
if youbi == "Tag":
for shift in shift_list:
if str(base.nichi_shift_name_1) == str(shift.name):
shift1 = base.nichi_shift_name_1
shisetsu1 = base.nichi_shisetsu_name_1
sum_work_time = shift.wrok_time + sum_work_time
if str(base.nichi_shift_name_2) == str(shift.name):
shift2 = base.nichi_shift_name_2
shisetsu2 = base.nichi_shisetsu_name_2
sum_work_time = shift.wrok_time + sum_work_time
if str(base.nichi_shift_name_3) == str(shift.name):
shift3 = base.nichi_shift_name_3
shisetsu3 = base.nichi_shisetsu_name_3
sum_work_time = shift.wrok_time + sum_work_time
if str(base.nichi_shift_name_4) == str(shift.name):
shift4 = base.nichi_shift_name_4
shisetsu4 = base.nichi_shisetsu_name_4
sum_work_time = shift.wrok_time + sum_work_time
new_object=Schedule(
user = base.user,
date = sakusei_date,
year = year,
month = month,
shift_name_1 = shift1,
shisetsu_name_1 = shisetsu1,
shift_name_2 = shift2,
shisetsu_name_2 = shisetsu2,
shift_name_3 = shift3,
shisetsu_name_3 = shisetsu3,
shift_name_4 = shift4,
shisetsu_name_4 = shisetsu4,
day_total_worktime = sum_work_time,
)
new_object.save()
else:
hukushadate = sakusei_date + relativedelta(months=-1)
hukusha_list = zengetsu_list.filter(date = hukushadate, user = user.id)
if zengetsu_list.filter(date = hukushadate, user = user.id).exists():
for hukusha in hukusha_list:
#Berechnen Sie die tägliche Gesamtarbeitszeit aus Schichten
sum_work_time = 0
for shift in shift_list:
if str(hukusha.shift_name_1) == str(shift.name):
sum_work_time = shift.wrok_time + sum_work_time
if str(hukusha.shift_name_2) == str(shift.name):
sum_work_time = shift.wrok_time + sum_work_time
if str(hukusha.shift_name_3) == str(shift.name):
sum_work_time = shift.wrok_time + sum_work_time
if str(hukusha.shift_name_4) == str(shift.name):
sum_work_time = shift.wrok_time + sum_work_time
new_object=Schedule(
user = hukusha.user,
date = sakusei_date,
year = year,
month = month,
shift_name_1 = hukusha.shift_name_1,
shisetsu_name_1 = hukusha.shisetsu_name_1,
shift_name_2 = hukusha.shift_name_2,
shisetsu_name_2 = hukusha.shisetsu_name_2,
shift_name_3 = hukusha.shift_name_3,
shisetsu_name_3 = hukusha.shisetsu_name_3,
shift_name_4 = hukusha.shift_name_4,
shisetsu_name_4 = hukusha.shisetsu_name_4,
day_total_worktime = sum_work_time,
)
new_object.save()
else:
useradd = User.objects.get(id=user.id)
shiftadd = Shift.objects.get(id=2)
new_object=Schedule(
user = useradd,
date = sakusei_date,
year = year,
month = month,
shift_name_1 = shiftadd,
shisetsu_name_1 = None,
shift_name_2 = None,
shisetsu_name_2 = None,
shift_name_3 = None,
shisetsu_name_3 = None,
shift_name_4 = None,
shisetsu_name_4 = None,
day_total_worktime = 0,
)
new_object.save()
return HttpResponseRedirect('/schedule/monthschedule/%s/%s/' % (year,month,))
def kiboulistfunc(request):
current_user = request.user
if current_user.is_superuser == True: #Zeigen Sie für Superuser alles in der Liste an
KibouShift_list = KibouShift.objects.all().order_by('-date')
else: #Allgemeine Benutzer zeigen nur ihre eigenen Datensätze an.
KibouShift_list = KibouShift.objects.filter(user = current_user.id).order_by('-date')
User_list = User.objects.all()
shift_object = Shift.objects.all()
context = {
'KibouShift_list': KibouShift_list,
'User_list': User_list,
'shift_object': shift_object,
}
return render(request,'schedule/kiboushift/list.html', context )
class KibouCreate(CreateView):
template_name = 'schedule/kiboushift/create.html'
model = KibouShift
fields = ('user', 'date', 'shift_name_1', 'shisetsu_name_1', 'shift_name_2', 'shisetsu_name_2', 'shift_name_3', 'shisetsu_name_3', 'shift_name_4', 'shisetsu_name_4')
success_url = reverse_lazy('schedule:KibouList')
def kiboubCreate(request):
if request.method == 'POST':
if now.day > 5:
startdate = datetime.date(now.year,now.month,20)
if date < startdate:
raise ValidationError(
"Es ist ein Datum, das nicht eingegeben werden kann",
params={'value': value},
)
else:
startdate = datetime.date(now.year,now.month,20)
startdate = enddate + relativedelta(months=1)
if date < startdate:
raise ValidationError(
"Es ist ein Datum, das nicht eingegeben werden kann",
params={'value': value},
)
return date
class KibouUpdate(UpdateView):
template_name = 'schedule/kiboushift/update.html'
model = KibouShift
fields = ('user', 'date', 'shift_name_1', 'shisetsu_name_1', 'shift_name_2', 'shisetsu_name_2', 'shift_name_3', 'shisetsu_name_3', 'shift_name_4', 'shisetsu_name_4')
def date(self):
date = self.cleaned_date.get('date')
now = datetime.now()
print(now.date)
#Geben Sie erst nach dem 20. als 5. ein
if now.day > 5:
startdate = datetime.date(now.year,now.month,20)
if date < startdate:
raise ValidationError(
"Es ist ein Datum, das nicht eingegeben werden kann",
params={'value': value},
)
else:
startdate = datetime.date(now.year,now.month,20)
startdate = enddate + relativedelta(months=1)
if date < startdate:
raise ValidationError(
"Es ist ein Datum, das nicht eingegeben werden kann",
params={'value': value},
)
return date
success_url = reverse_lazy('schedule:KibouList')
class KibouDelete(DeleteView):
template_name = 'schedule/kiboushift/delete.html'
model = KibouShift
fields = ('user', 'date', 'shift_name_1', 'shisetsu_name_1', 'shift_name_2', 'shisetsu_name_2', 'shift_name_3', 'shisetsu_name_3', 'shift_name_4', 'shisetsu_name_4')
success_url = reverse_lazy('schedule:KibouList')
def dayschedulefunc(request,date):
profile_list = Profile.objects.select_related().values().order_by('hyoujijyun')
shisetsu_all_object = Shisetsu.objects.all()
date = str(date)
tdatetime = datetime.datetime.strptime(date, '%Y-%m-%d')
tdate = datetime.date(tdatetime.year, tdatetime.month, tdatetime.day)
object_list = Schedule.objects.select_related().filter(date = tdate)
shift_object = Shift.objects.all()
start_time = datetime.time(15, 00)
for object in object_list:
print(object.shift_name_1.start_time)
context = {
'profile_list': profile_list,
'shisetsu_all_object': shisetsu_all_object,
'object_list': object_list,
'shift_object':shift_object,
}
return render(request,'schedule/gant.html', context)
schedule/month.html
{% extends 'accounts/base.html' %}
{% load static %}
{% block customcss %}
<link rel="stylesheet" href="{% static 'schedule/month.css' %}">
{% endblock customcss %}
{% block header %}
<div class="header">
<div class="cole-md-1">
<a href="{% url 'schedule:KibouList' %}" class="btn-secondary btn active">Liste der gewünschten Schichten</a></p>
{% ifnotequal month 1 %}
<a href="{% url 'schedule:monthschedule' year month|add:'-1' %}" class="btn-info btn active">Im vergangenen Monat</a>
{% else %}
<a href="{% url 'schedule:monthschedule' year|add:'-1' 12 %}" class="btn-info btn active">Im vergangenen Monat</a>
{% endifnotequal %}
{% ifnotequal month 12 %}
<a href="{% url 'schedule:monthschedule' year month|add:'1' %}" class="btn-info btn active">Nächsten Monat</a>
{% else %}
<a href="{% url 'schedule:monthschedule' year|add:'1' 1 %}" class="btn-info btn active">Nächsten Monat</a>
{% endifnotequal %}
{% if perms.schedule.add_schedule %}<!--Behörde-->
<a href="{% url 'schedule:schedulecreate' year month %}" class="btn-info btn active">Schicht erstellen</a>
{% endif %}
</div>
<div class="cole-md-2">
{% for shift in shift_object %}
{% if shift.name != "Geschlossen" and shift.name != "Ja" %}
{{ shift.name }} : {{ shift.start_time | date:"G"}}~{{ shift.end_time | date:"G"}}
{% endif %}
{% endfor %}
</div>
<p>
<a href="{% url 'schedule:monthschedule' year month %}" button type="button" class="btn btn-outline-dark">alles</a>
{% for shisetsu in shisetsu_object %}
{% for UserShozoku in UserShozoku_list %}
{% if shisetsu.name|stringformat:"s" == UserShozoku.shisetsu_name|stringformat:"s" %}
<a href="{% url 'schedule:monthschedulefilter' year month shisetsu.pk %}" button type="button" class="btn btn-outline-dark" span style="background-color:{{ shisetsu.color }}">{{ shisetsu.name }}</span></a>
{% endif %}
{% endfor %}
{% endfor %}
</p>
</div>
{% endblock header %}
{% block content %}
<table class="table">
<thead>
<tr> <!--Datum-->
<th class ="fixed00" rowspan="2">{{ kikan }}</th>
{% for item in calender_object %}
<th class ="fixed01">{{ item.date | date:"d" }}</th>
{% endfor %}
<tr> <!--Tag-->
{% for item in youbi_object %}
<th class ="fixed02">{{ item }}</th>
{% endfor %}
</tr>
</thead>
<tbody>
{% for profile in profile_list %}
{% for staff in user_list %}
{% if profile.user_id == staff.id %}
<tr align="center">
<th class ="fixed03" >{{ staff.last_name }} {{ staff.first_name }}</th> <!--staff_ID-Element, das in js verwendet wird-->
{% for item in object_list %}
{% if item.user|stringformat:"s" == staff.username|stringformat:"s" %}<!--Wenn der Benutzername der gleiche ist-->
<td class="meisai">
{% if item.shift_name_1 != None %}
{% if item.shift_name_1|stringformat:"s" == "Ja" or item.shift_name_1|stringformat:"s" == "Geschlossen" %}
{{ item.shift_name_1 }}
{% else %}
{% for shisetsu in shisetsu_object %}
{% if item.shisetsu_name_1|stringformat:"s" == shisetsu.name|stringformat:"s" %}
<span style="background-color:{{ shisetsu.color }}">{{ item.shift_name_1 }}</span>
{% endif %}
{% endfor %}
{% endif %}
{% endif %}
{% if item.shift_name_2 != None %}
{% if item.shift_name_2|stringformat:"s" == "Ja" or item.shift_name_2|stringformat:"s" == "Geschlossen" %}
{{ item.shift_name_2 }}
{% else %}
{% for shisetsu in shisetsu_object %}
{% if item.shisetsu_name_2|stringformat:"s" == shisetsu.name|stringformat:"s" %}
<span style="background-color:{{ shisetsu.color }}">{{ item.shift_name_2 }}</span>
{% endif %}
{% endfor %}
{% endif %}
{% endif %}
{% if item.shift_name_3 != None %}
{% if item.shift_name_3|stringformat:"s" == "Ja" or item.shift_name_3|stringformat:"s" == "Geschlossen" %}
{{ item.shift_name_3 }}
{% else %}
{% for shisetsu in shisetsu_object %}
{% if item.shisetsu_name_3|stringformat:"s" == shisetsu.name|stringformat:"s" %}
<span style="background-color:{{ shisetsu.color }}">{{ item.shift_name_3 }}</span>
{% endif %}
{% endfor %}
{% endif %}
{% endif %}
{% if item.shift_name_4 != None %}
{% if item.shift_name_4|stringformat:"s" == "Ja" or item.shift_name_4|stringformat:"s" == "Geschlossen" %}
{{ item.shift_name_4 }}
{% else %}
{% for shisetsu in shisetsu_object %}
{% if item.shisetsu_name_4|stringformat:"s" == shisetsu.name|stringformat:"s" %}
<span style="background-color:{{ shisetsu.color }}">{{ item.shift_name_4 }}</span>
{% endif %}
{% endfor %}
{% endif %}
{% endif %}
{% endif %}
{% endfor %}
</td>
<tr align="center">
{% for month in month_total %}
{% if month.user == staff.id %}<!--Wenn der Benutzername der gleiche ist-->
<td class="fixed04"><b>{{ month.month_total_worktime }}</b></td>
{% endif %}
{% endfor %}
{% for item in object_list %}
{% if item.user|stringformat:"s" == staff.username|stringformat:"s" %}<!--Wenn der Benutzername der gleiche ist-->
{% if perms.schedule.add_schedule %}<!--Behörde-->
<td class="meisai" id="s{{ staff.id }}d{{ item.date }}">
<a href="{% url 'schedule:update' item.pk %}">{{ item.day_total_worktime }} </a>
</td>
{% else %}
<td class="meisai" id="s{{ staff.id }}d{{ item.date }}">
{{ item.day_total_worktime }}
</td>
{% endif %}
{% endif %}
{% endfor %}
</tr>
{% endif %}
{% endfor %}
{% endfor %}
</tbody>
</table>
</div>
</div>
{% endblock content %}
schedule/monthfileter.html
{% extends 'accounts/base.html' %}
{% load static %}
{% block customcss %}
<link rel="stylesheet" href="{% static 'schedule/month.css' %}">
{% endblock customcss %}
{% block header %}
<div class="header">
<div class="cole-md-1">
<a href="{% url 'schedule:KibouList' %}" class="btn-secondary btn active">Liste der gewünschten Schichten</a></p>
{% ifnotequal month 1 %}
<a href="{% url 'schedule:monthschedule' year month|add:'-1' %}" class="btn-info btn active">Im vergangenen Monat</a>
{% else %}
<a href="{% url 'schedule:monthschedule' year|add:'-1' 12 %}" class="btn-info btn active">Im vergangenen Monat</a>
{% endifnotequal %}
{% ifnotequal month 12 %}
<a href="{% url 'schedule:monthschedule' year month|add:'1' %}" class="btn-info btn active">Nächsten Monat</a>
{% else %}
<a href="{% url 'schedule:monthschedule' year|add:'1' 1 %}" class="btn-info btn active">Nächsten Monat</a>
{% endifnotequal %}
{% if perms.schedule.add_schedule %}<!--Behörde-->
<a href="{% url 'schedule:schedulecreate' year month %}" class="btn-info btn active">Schicht erstellen</a>
{% endif %}
</div>
<div class="cole-md-2">
{% for shift in shift_object %}
{% if shift.name != "Geschlossen" and shift.name != "Ja" %}
{{ shift.name }} : {{ shift.start_time | date:"G"}}~{{ shift.end_time | date:"G"}}
{% endif %}
{% endfor %}
</div>
<p>
<a href="{% url 'schedule:monthschedule' year month %}" button type="button" class="btn btn-outline-dark">alles</a>
{% for shisetsu in shisetsu_object %}
{% for UserShozoku in UserShozoku_list %}
{% if shisetsu.name|stringformat:"s" == UserShozoku.shisetsu_name|stringformat:"s" %}
<a href="{% url 'schedule:monthschedulefilter' year month shisetsu.pk %}" button type="button" class="btn btn-outline-dark" span style="background-color:{{ shisetsu.color }}">{{ shisetsu.name }}</span></a>
{% endif %}
{% endfor %}
{% endfor %}
</p>
</div>
{% endblock header %}
{% block content %}
<table class="table">
<thead>
<tr> <!--Datum-->
<th class ="fixed00" rowspan="2">{{ kikan }}</th>
{% for item in calender_object %}
<th class ="fixed01">{{ item.date | date:"d" }}</th>
{% endfor %}
<tr> <!--Tag-->
{% for item in youbi_object %}
<th class ="fixed02">{{ item }}</th>
{% endfor %}
</tr>
</thead>
<tbody>
{% for profile in profile_list %}
{% for staff in user_list %}
{% if profile.user_id == staff.id %}
<tr align="center">
<th class ="fixed03" >{{ staff.last_name }} {{ staff.first_name }}</th> <!--staff_ID-Element, das in js verwendet wird-->
{% for item in object_list %}
{% if item.user|stringformat:"s" == staff.username|stringformat:"s" %}<!--Wenn der Benutzername der gleiche ist-->
<td class="meisai">
{% if item.shift_name_1 != None %}
{% if item.shift_name_1|stringformat:"s" == "Ja" or item.shift_name_1|stringformat:"s" == "Geschlossen" %}
{{ item.shift_name_1 }}
{% else %}
{% for shisetsu in shisetsu_object %}
{% if item.shisetsu_name_1|stringformat:"s" == shisetsu.name|stringformat:"s" %}
<span style="background-color:{{ shisetsu.color }}">{{ item.shift_name_1 }}</span>
{% endif %}
{% endfor %}
{% endif %}
{% endif %}
{% if item.shift_name_2 != None %}
{% if item.shift_name_2|stringformat:"s" == "Ja" or item.shift_name_2|stringformat:"s" == "Geschlossen" %}
{{ item.shift_name_2 }}
{% else %}
{% for shisetsu in shisetsu_object %}
{% if item.shisetsu_name_2|stringformat:"s" == shisetsu.name|stringformat:"s" %}
<span style="background-color:{{ shisetsu.color }}">{{ item.shift_name_2 }}</span>
{% endif %}
{% endfor %}
{% endif %}
{% endif %}
{% if item.shift_name_3 != None %}
{% if item.shift_name_3|stringformat:"s" == "Ja" or item.shift_name_3|stringformat:"s" == "Geschlossen" %}
{{ item.shift_name_3 }}
{% else %}
{% for shisetsu in shisetsu_object %}
{% if item.shisetsu_name_3|stringformat:"s" == shisetsu.name|stringformat:"s" %}
<span style="background-color:{{ shisetsu.color }}">{{ item.shift_name_3 }}</span>
{% endif %}
{% endfor %}
{% endif %}
{% endif %}
{% if item.shift_name_4 != None %}
{% if item.shift_name_4|stringformat:"s" == "Ja" or item.shift_name_4|stringformat:"s" == "Geschlossen" %}
{{ item.shift_name_4 }}
{% else %}
{% for shisetsu in shisetsu_object %}
{% if item.shisetsu_name_4|stringformat:"s" == shisetsu.name|stringformat:"s" %}
<span style="background-color:{{ shisetsu.color }}">{{ item.shift_name_4 }}</span>
{% endif %}
{% endfor %}
{% endif %}
{% endif %}
{% endif %}
{% endfor %}
</td>
<tr align="center">
{% for month in month_total %}
{% if month.user == staff.id %}<!--Wenn der Benutzername der gleiche ist-->
<td class="fixed04"><b>{{ month.month_total_worktime }}</b></td>
{% endif %}
{% endfor %}
{% for item in object_list %}
{% if item.user|stringformat:"s" == staff.username|stringformat:"s" %}<!--Wenn der Benutzername der gleiche ist-->
{% if perms.schedule.add_schedule %}<!--Behörde-->
<td class="meisai" id="s{{ staff.id }}d{{ item.date }}">
<a href="{% url 'schedule:update' item.pk %}">{{ item.day_total_worktime }} </a>
</td>
{% else %}
<td class="meisai" id="s{{ staff.id }}d{{ item.date }}">
{{ item.day_total_worktime }}
</td>
{% endif %}
{% endif %}
{% endfor %}
</tr>
{% endif %}
{% endfor %}
{% endfor %}
</tbody>
</table>
</div>
{% endblock content %}
Wenn Sie zu einigen Einrichtungen gehören
Wenn Sie zu allen Einrichtungen gehören
Es hat ziemlich gut funktioniert (⌒∇⌒)
Was ich diesmal dachte, war, dass ich die Bedingungsspezifikation für die Datenextraktion überhaupt nicht verstand. Ich verstehe die SQL-Anweisung nicht, aber ich verstehe die Datenextraktion von Django nicht so gut, dass ich dachte, ich könnte die gewünschten Daten erhalten, indem ich sie mit SQL ausführe und die Daten extrahiere.
Ich kann keine gute Seite finden und werde wahrscheinlich gegen eine Wand stoßen, aber ich werde vorwärts gehen.
Recommended Posts