Le développement avance au même rythme qu'avant, mais je n'ai pas pu poster.
Cette fois, lors de l'enregistrement de quelque chose, j'essaierai de sélectionner uniquement le magasin auquel j'appartiens. Cela vous évite de sélectionner accidentellement un décalage souhaité lors de l'enregistrement d'un décalage souhaité même si vous appartenez uniquement à Pu-a-Pu.
Avant correction
Lorsque je l'ai recherché, j'ai pu y remédier en ajoutant forms.py et des vues.
views.py
def get_form_kwargs(self):
kwargs = super(KibouCreate, self).get_form_kwargs()
kwargs['user'] = self.request.user
return kwargs
Je n'ai pas saisi l'image parce que je le fais moi-même, mais quand j'obtiens les informations du formulaire, j'imagine que je vais transmettre mes propres informations, faire traiter le résultat par le formulaire et le renvoyer en Html. Je vais.
forms.py
class kibouCreateForm(forms.ModelForm):
class Meta:
shift_object = Shift.objects.all()
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')
widgets = {
'date': datetimepicker.DatePickerInput(
format='%Y-%m-%d',
options={
'locale': 'ja',
'dayViewHeaderFormat': 'AAAA année MMMM',
'ignoreReadonly': True,
'allowInputToggle': True,
}
),
}
def __init__(self, *args, **kwargs):
#Seule la liste d'affiliation peut être sélectionnée
user = kwargs.pop('user')
UserShozoku_list = UserShozokuModel.objects.filter(user = user.id).values_list("shisetsu_name", flat=True)
UserShozoku_list = list(UserShozoku_list)
super(kibouCreateForm, self).__init__(*args, **kwargs)
self.fields['shisetsu_name_1'].queryset = Shisetsu.objects.filter(id__in = UserShozoku_list).all()
self.fields['shisetsu_name_2'].queryset = Shisetsu.objects.filter(id__in = UserShozoku_list).all()
self.fields['shisetsu_name_3'].queryset = Shisetsu.objects.filter(id__in = UserShozoku_list).all()
self.fields['shisetsu_name_4'].queryset = Shisetsu.objects.filter(id__in = UserShozoku_list).all()
"""
Vérification des délais
"""
def clean_date(self):
dt_now = datetime.datetime.now()
dt_date = self.cleaned_data.get('date')
#Entrez seulement après le 20 au 5e
if dt_now.day > 5:
startdate = datetime.date(dt_now.year,dt_now.month,20) + relativedelta(months=1)
if dt_date < startdate:
raise forms.ValidationError(
"La date limite est passée, veuillez donc contacter l'administrateur.",
)
else:
startdate = datetime.date(dt_now.year,dt_now.month,20)
if dt_date < startdate:
raise forms.ValidationError(
"La date limite est passée, veuillez donc contacter l'administrateur.",
)
return self.cleaned_data.get('date')
def clean(self):
############
#revérifier
############
dt_user = self.cleaned_data.get('user')
dt_date = self.cleaned_data.get('date')
if KibouShift.objects.filter(user=dt_user, date=dt_date).count() > 0:
raise forms.ValidationError("Je ne peux pas m'inscrire car le quart de travail souhaité le même jour a déjà été enregistré. Corrigez cela, s'il-vous-plaît.")
dt_shift_name1 = self.cleaned_data.get('shift_name_1')
dt_shift_name2 = self.cleaned_data.get('shift_name_2')
dt_shift_name3 = self.cleaned_data.get('shift_name_3')
dt_shift_name4 = self.cleaned_data.get('shift_name_4')
dt_shisetsu_name_1 = self.cleaned_data.get('shisetsu_name_1')
dt_shisetsu_name_2 = self.cleaned_data.get('shisetsu_name_2')
dt_shisetsu_name_3 = self.cleaned_data.get('shisetsu_name_3')
dt_shisetsu_name_4 = self.cleaned_data.get('shisetsu_name_4')
#Si l'équipe est fermée, l'installation sera laissée vide
if str(dt_shift_name1) == "Fermé" or str(dt_shift_name1) == "Oui" or str(dt_shift_name1) == "ne pas":
if dt_shift_name2 != None or dt_shift_name3 != None or dt_shift_name4 != None or dt_shisetsu_name_1 != None or dt_shisetsu_name_2 != None or dt_shisetsu_name_3 != None or dt_shisetsu_name_4 != None:
raise forms.ValidationError("Aucune autre entrée n'est requise pour les équipes «vacances», «oui» et «non».")
ensuite
Ce n'est plus que l'établissement auquel j'appartiens.
En passant, je voudrais rendre la sélection des utilisateurs possible uniquement pour ceux qui ont la permission d'ajouter des horaires.
J'ai juste ajouté un peu. Même ainsi, je l'ai recherché pendant environ une heure et je l'ai implémenté (rires)
À l'origine, je pense qu'il est préférable de pouvoir sélectionner une installation pour chaque utilisateur sélectionné, mais il est nécessaire de concevoir comme l'implémenter avec javascript ou l'obtenir en appuyant sur un bouton.
Vous devez améliorer vos compétences à l'avenir.
forms.py
def __init__(self, *args, **kwargs):
#Seule la liste d'affiliation peut être sélectionnée
user = kwargs.pop('user')
UserShozoku_list = UserShozokuModel.objects.filter(user = user.id).values_list("shisetsu_name", flat=True)
UserShozoku_list = list(UserShozoku_list)
super(kibouCreateForm, self).__init__(*args, **kwargs)
self.fields['shisetsu_name_1'].queryset = Shisetsu.objects.filter(id__in = UserShozoku_list).all()
self.fields['shisetsu_name_2'].queryset = Shisetsu.objects.filter(id__in = UserShozoku_list).all()
self.fields['shisetsu_name_3'].queryset = Shisetsu.objects.filter(id__in = UserShozoku_list).all()
self.fields['shisetsu_name_4'].queryset = Shisetsu.objects.filter(id__in = UserShozoku_list).all()
#Il est préférable de changer pour chaque utilisateur sélectionné, mais il est nécessaire d'obtenir et de fonctionner avec un script ou un bouton Java
#Modifier la sélection de l'utilisateur si vous êtes autorisé à ajouter un horaire
permissions = Permission.objects.filter(user=user)
if user.has_perm('schedule.add_KibouShift'):
self.fields['user'].queryset = CustomUser.objects.all()
else:
self.fields['user'].queryset = CustomUser.objects.filter(username=user.username).all()
En passant, je l'ai changé en CustomUser au lieu de l'objet User préparé à l'origine. J'ai effacé la base de données et recommencé, donc les données sont devenues égales.