Étant donné que le nombre total d'employés dépasse 20, il sera difficile de voir si le tableau des équipes est affiché pour les installations qui ne sont pas liées à moi, alors je l'ai corrigé. J'ai eu beaucoup de problèmes avec ce correctif, j'ai posé une question à Qiita et j'ai pu l'implémenter: 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,)) #Rediriger automatiquement vers l'écran d'équipe de ce mois
def monthschedulefilterfunc(request,year_num,month_num,shisetsu_num):
#user_list = User.objects.all()
#profile_list = Profile.objects.select_related().values().order_by('hyoujijyun')
#Obtenir les informations d'affiliation de l'utilisateur connecté
current_user = request.user
UserShozoku_list = UserShozokuModel.objects.filter(user = current_user).values_list("shisetsu_name", flat=True)
UserShozoku_list = list(UserShozoku_list)
#Obtenez les mêmes informations d'affiliation que l'utilisateur connecté
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"))
#Obtenez le nombre de jours dans la plage de travail
enddate = datetime.date(year,month,20)
startdate = enddate + relativedelta(months=-1)
kaisu = enddate - startdate
kaisu = int(kaisu.days)
kikan = str(startdate) +"~"+ str(enddate)
#Faites une liste de dates et de jours
hiduke = str(startdate)
date_format = "%Y-%m-%d"
hiduke = dt.strptime(hiduke, date_format)
weekdays = ["Mois","Feu","eau","bois","Argent","sol","journée"]
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):
#Obtenir les informations d'affiliation de l'utilisateur connecté
current_user = request.user
UserShozoku_list = UserShozokuModel.objects.filter(user = current_user).values_list("shisetsu_name", flat=True)
UserShozoku_list = list(UserShozoku_list)
#Obtenez les mêmes informations d'affiliation que l'utilisateur connecté
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")
#Réacquis pour l'affichage des boutons d'installation
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"))
#Obtenez le nombre de jours dans la plage de travail
enddate = datetime.date(year,month,20)
startdate = enddate + relativedelta(months=-1)
kaisu = enddate - startdate
kaisu = int(kaisu.days)
kikan = str(startdate) +"~"+ str(enddate)
#Faites une liste de dates et de jours
hiduke = str(startdate)
date_format = "%Y-%m-%d"
hiduke = dt.strptime(hiduke, date_format)
weekdays = ["Mois","Feu","eau","bois","Argent","sol","journée"]
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
#Mettre à jour le traitement du bouton
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']
#Bouton de mise à jour
if "updatebutton" in request.POST:
Schedule_list.day_total_worktime = form.cleaned_data['day_total_worktime']
#Calculer à partir du bouton de décalage et de mise à jour
elif "sumupdatebutton" in request.POST:
#Calculer le nombre total d'heures de travail quotidiennes des quarts
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)
#Supprimer tous les horaires de l'année et du mois cibles
Schedule.objects.filter(year = year, month = month).delete()
#Obtenez le nombre de jours dans la plage de travail
enddate = datetime.date(year,month,20)
startdate = enddate + relativedelta(months=-1)
#Extraire l'espoir de la période cible du décalage souhaité
kiboushift_list = KibouShift.objects.filter(date__range=[startdate, enddate])
kiboushift_list = list(kiboushift_list)
shift_list = Shift.objects.all()
#Refléter le décalage souhaité
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()
#Créer une équipe autre que celle souhaitée
user_list = User.objects.all()
#Obtenez le nombre de jours dans la plage de travail
enddate = datetime.date(year,month,20)
startdate = enddate + relativedelta(months=-1)
kaisu = enddate - startdate
kaisu = int(kaisu.days)
#le mois dernier
if month != 1 :
zengetsu = month - 1
else:
zengetsu = 12
year = year - 1
#Processus pour chaque utilisateur
for user in user_list:
#base_Créé à partir des informations où le décalage est enregistré
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 = ["Mois","Feu","eau","bois","Argent","sol","journée"]
youbi = weekdays[sakusei_date.weekday()]
#Obtenez de l'équipe de base et obtenez
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 == "Mois":
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 == "Feu":
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 == "eau":
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 == "bois":
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 == "Argent":
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 == "sol":
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 == "journée":
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:
#Calculer le nombre total d'heures de travail quotidiennes des quarts
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: #Pour les super utilisateurs, tout afficher dans la liste
KibouShift_list = KibouShift.objects.all().order_by('-date')
else: #Les utilisateurs généraux affichent uniquement leurs propres enregistrements.
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(
"C'est une date qui ne peut pas être saisie",
params={'value': value},
)
else:
startdate = datetime.date(now.year,now.month,20)
startdate = enddate + relativedelta(months=1)
if date < startdate:
raise ValidationError(
"C'est une date qui ne peut pas être saisie",
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)
#Entrez seulement après le 20 au 5e
if now.day > 5:
startdate = datetime.date(now.year,now.month,20)
if date < startdate:
raise ValidationError(
"C'est une date qui ne peut pas être saisie",
params={'value': value},
)
else:
startdate = datetime.date(now.year,now.month,20)
startdate = enddate + relativedelta(months=1)
if date < startdate:
raise ValidationError(
"C'est une date qui ne peut pas être saisie",
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 des équipes souhaitées</a></p>
{% ifnotequal month 1 %}
<a href="{% url 'schedule:monthschedule' year month|add:'-1' %}" class="btn-info btn active">le mois dernier</a>
{% else %}
<a href="{% url 'schedule:monthschedule' year|add:'-1' 12 %}" class="btn-info btn active">le mois dernier</a>
{% endifnotequal %}
{% ifnotequal month 12 %}
<a href="{% url 'schedule:monthschedule' year month|add:'1' %}" class="btn-info btn active">Le mois prochain</a>
{% else %}
<a href="{% url 'schedule:monthschedule' year|add:'1' 1 %}" class="btn-info btn active">Le mois prochain</a>
{% endifnotequal %}
{% if perms.schedule.add_schedule %}<!--Autorité-->
<a href="{% url 'schedule:schedulecreate' year month %}" class="btn-info btn active">Créer un changement</a>
{% endif %}
</div>
<div class="cole-md-2">
{% for shift in shift_object %}
{% if shift.name != "Fermé" and shift.name != "Oui" %}
{{ 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">tout</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> <!--Date-->
<th class ="fixed00" rowspan="2">{{ kikan }}</th>
{% for item in calender_object %}
<th class ="fixed01">{{ item.date | date:"d" }}</th>
{% endfor %}
<tr> <!--journée-->
{% 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_Élément id utilisé dans js-->
{% for item in object_list %}
{% if item.user|stringformat:"s" == staff.username|stringformat:"s" %}<!--Si le nom d'utilisateur est le même-->
<td class="meisai">
{% if item.shift_name_1 != None %}
{% if item.shift_name_1|stringformat:"s" == "Oui" or item.shift_name_1|stringformat:"s" == "Fermé" %}
{{ 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" == "Oui" or item.shift_name_2|stringformat:"s" == "Fermé" %}
{{ 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" == "Oui" or item.shift_name_3|stringformat:"s" == "Fermé" %}
{{ 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" == "Oui" or item.shift_name_4|stringformat:"s" == "Fermé" %}
{{ 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 %}<!--Si le nom d'utilisateur est le même-->
<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" %}<!--Si le nom d'utilisateur est le même-->
{% if perms.schedule.add_schedule %}<!--Autorité-->
<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 des équipes souhaitées</a></p>
{% ifnotequal month 1 %}
<a href="{% url 'schedule:monthschedule' year month|add:'-1' %}" class="btn-info btn active">le mois dernier</a>
{% else %}
<a href="{% url 'schedule:monthschedule' year|add:'-1' 12 %}" class="btn-info btn active">le mois dernier</a>
{% endifnotequal %}
{% ifnotequal month 12 %}
<a href="{% url 'schedule:monthschedule' year month|add:'1' %}" class="btn-info btn active">Le mois prochain</a>
{% else %}
<a href="{% url 'schedule:monthschedule' year|add:'1' 1 %}" class="btn-info btn active">Le mois prochain</a>
{% endifnotequal %}
{% if perms.schedule.add_schedule %}<!--Autorité-->
<a href="{% url 'schedule:schedulecreate' year month %}" class="btn-info btn active">Créer un changement</a>
{% endif %}
</div>
<div class="cole-md-2">
{% for shift in shift_object %}
{% if shift.name != "Fermé" and shift.name != "Oui" %}
{{ 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">tout</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> <!--Date-->
<th class ="fixed00" rowspan="2">{{ kikan }}</th>
{% for item in calender_object %}
<th class ="fixed01">{{ item.date | date:"d" }}</th>
{% endfor %}
<tr> <!--journée-->
{% 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_Élément id utilisé dans js-->
{% for item in object_list %}
{% if item.user|stringformat:"s" == staff.username|stringformat:"s" %}<!--Si le nom d'utilisateur est le même-->
<td class="meisai">
{% if item.shift_name_1 != None %}
{% if item.shift_name_1|stringformat:"s" == "Oui" or item.shift_name_1|stringformat:"s" == "Fermé" %}
{{ 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" == "Oui" or item.shift_name_2|stringformat:"s" == "Fermé" %}
{{ 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" == "Oui" or item.shift_name_3|stringformat:"s" == "Fermé" %}
{{ 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" == "Oui" or item.shift_name_4|stringformat:"s" == "Fermé" %}
{{ 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 %}<!--Si le nom d'utilisateur est le même-->
<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" %}<!--Si le nom d'utilisateur est le même-->
{% if perms.schedule.add_schedule %}<!--Autorité-->
<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 %}
Si vous appartenez à certaines installations
Si vous appartenez à toutes les installations
Cela a plutôt bien fonctionné (⌒∇⌒)
Ce que je pensais cette fois, c'est que je ne comprenais pas du tout la spécification des conditions pour l'extraction de données. Je ne comprends pas l'instruction SQL, mais je ne comprends pas tellement l'extraction de données de Django que j'ai pensé que je pourrais obtenir les données que je voulais en l'exécutant avec SQL et en extrayant les données.
Je ne trouve pas de bon site et je risque de heurter un mur, mais je vais aller de l'avant.
Recommended Posts