Dans un premier temps, lorsque l'administrateur reçoit une notification du quart de travail souhaité, enregistrez-le et lors de l'exécution de la création du quart de travail une fois par mois, créez d'abord un horaire à partir du quart de travail souhaité, et s'il n'y a pas de quart de travail, changez le même jour du mois précédent. Je vais essayer de le mettre.
Tout d'abord, le décalage souhaité
schedule/models.py
class KibouShift(models.Model):
id = models.AutoField(verbose_name='ID d'équipe souhaité',primary_key=True)
user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='Nom de l'employé')
date = models.DateField(verbose_name='Date')
shift_name_1 = models.ForeignKey(Shift, verbose_name='1 nom d'équipe', related_name='kibou_shift_name1',on_delete=models.SET_NULL,null= True)
shisetsu_name_1 = models.ForeignKey(Shisetsu, verbose_name='1 établissement', related_name='kibou_shisetsu_name1',on_delete=models.SET_NULL,blank=True, null=True)
shift_name_2 = models.ForeignKey(Shift, verbose_name='2 nom d'équipe', related_name='kibou_shift_name2',on_delete=models.SET_NULL,blank=True, null=True)
shisetsu_name_2 = models.ForeignKey(Shisetsu, verbose_name='2 installations', related_name='kibou_shisetsu_name2',on_delete=models.SET_NULL,blank=True, null=True)
shift_name_3 = models.ForeignKey(Shift, verbose_name='3 nom d'équipe', related_name='kibou_shift_name3',on_delete=models.SET_NULL,blank=True, null=True)
shisetsu_name_3 = models.ForeignKey(Shisetsu, verbose_name='3 installations', related_name='kibou_shisetsu_name3',on_delete=models.SET_NULL,blank=True, null=True)
shift_name_4 = models.ForeignKey(Shift, verbose_name='4 nom d'équipe', related_name='kibou_shift_name4',on_delete=models.SET_NULL,blank=True, null=True)
shisetsu_name_4 = models.ForeignKey(Shisetsu, verbose_name='4 établissements', related_name='kibou_shisetsu_name4',on_delete=models.SET_NULL,blank=True, null=True)
class Meta:
unique_together = ('user', 'date')
schedule/admin.py
class KibouShiftAdmin(admin.ModelAdmin):
list_display = ('date', 'user')
ordering = [ "date" ]
admin.site.register(KibouShift, KibouShiftAdmin)
schedule/views.py
def kiboulistfunc(request):
KibouShift_list = KibouShift.objects.all().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')
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')
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')
schedule/kiboushift/base.html
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous">
{% block customcss %}
{% endblock customcss %}
<title>famille apparentée</title>
</head>
<body>
{% block header %}
{% endblock header %}
{% block content %}
{% endblock content %}
<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js" integrity="sha384-B4gt1jrGC7Jh4AgTPSdUtOBvfO8shuf57BaghqFfPlYxofvL8/KUEfYiJOMMV+rV" crossorigin="anonymous"></script>
</body>
</html>
schedule/kiboushifr/create.py
{% extends 'schedule/kiboushift/base.html' %}
{% block header %}
<div class="jumbotron jumbotron-fluid">
<div class="container">
<h1 class="display-4">Enregistrement de quart souhaité</h1>
<p class="lead"></p>
</div>
</div>
{% endblock header %}
{% block content %}
<form action="" method="POST">{% csrf_token %}
{{form.as_p}}
<p><input type="submit" value="Créer" class="btn-info btn active">
<a href="{% url 'schedule:KibouList' %}" class="btn-secondary btn active">Revenir</a></p>
</form>
{% endblock content %}
schedule/kiboushifr/delete.py
{% extends 'schedule/kiboushift/base.html' %}
{% block header %}
<div class="jumbotron jumbotron-fluid">
<div class="container">
<h1 class="display-4">Supprimer le quart de travail souhaité</h1>
<p class="lead"></p>
</div>
</div>
{% endblock header %}
{% block content %}
<form action="" method="POST">{% csrf_token %}
<p>Employé:{{ object.user }}</p>
<p>Date:{{ object.date }}</p>
<p>Nom de l'équipe:{{ object.shift_name_1|default:"" }}</p>
<p>Établissement:{{ object.shisetsu_name_1|default:"" }}</p>
<p>Nom de l'équipe:{{ object.shift_name_2|default:"" }}</p>
<p>Établissement:{{ object.shisetsu_name_2|default:"" }}</p>
<p>Nom de l'équipe:{{ object.shift_name_3|default:"" }}</p>
<p>Établissement:{{ object.shisetsu_name_3|default:"" }}</p>
<p>Nom de l'équipe:{{ object.shift_name_4|default:"" }}</p>
<p>Établissement:{{ object.shisetsu_name_4|default:"" }}</p>
<p><input type="submit" value="Effacer" class="btn-info btn active">
<a href="{% url 'schedule:KibouList' %}" class="btn-secondary btn active">Revenir</a></p>
</form>
{% endblock content %}
schedule/kiboushifr/delete.py
{% extends 'schedule/kiboushift/base.html' %}
{% block header %}
<div class="jumbotron jumbotron-fluid">
<div class="container">
<h1 class="display-6">Liste des équipes souhaitées</h1>
<p class="lead"></p>
<a href="{% url 'schedule:KibouCreate' %}" class="btn-info btn active">s'inscrire</a>
<a href="{% url 'schedule:homeschedule' %}" class="btn-info btn active">Table de décalage</a>
</div>
</div>
{% endblock header %}
{% block content %}
<table class="table table-striped table-bordered">
<div class='container'>
<thead>
<th>Date</th>
<th>Nom de l'employé</th>
<th>Changement d'espoir 1</th>
<th>Installation souhaitée 1</th>
<th>Changement d'espoir 2</th>
<th>Installation souhaitée 2</th>
<th>Changement d'espoir 3</th>
<th>Changement d'espoir 3</th>
<th>Changement d'espoir 4</th>
<th>Installation souhaitée 4</th>
</thead>
<tbody>
{% for item in KibouShift_list %}
{% for staff in User_list %}
{% if item.user|stringformat:"s" == staff.username|stringformat:"s" %}
<tr>
<td>
<a href="{% url 'schedule:KibouUpdate' item.pk %}" class="btn btn-info" role="button" aria-pressed="true">Réparer</a>
<a href="{% url 'schedule:kibouDelete' item.pk %}" class="btn btn-info" role="button" aria-pressed="true">Effacer</a>
{{ item.date }}
</td>
<td >{{ staff.last_name }} {{ staff.first_name }}</td>
<td >{{ item.shift_name_1|default:"" }} </td>
<td >{{ item.shisetsu_name_1|default:"" }}</td>
<td >{{ item.shift_name_2|default:"" }} </td>
<td >{{ item.shisetsu_name_2|default:"" }}</td>
<td >{{ item.shift_name_3|default:"" }} </td>
<td >{{ item.shisetsu_name_3|default:"" }}</td>
<td >{{ item.shift_name_4|default:"" }} </td>
<td >{{ item.shisetsu_name_4|default:"" }}</td>
</tr>
{% endif %}
{% endfor %}
{% endfor %}
</tbody>
</div>
</table>
{% endblock content %}
schedule/kiboushifr/update.py
{% extends 'schedule/kiboushift/base.html' %}
{% block header %}
{% endblock header %}
{% block content %}
<form action="" method="POST">{% csrf_token %}
<div class="Container">
{{ form.as_p }}
{% csrf_token %}
<p><input class="btn btn-primary" type="submit" value="mise à jour">
<a href="{% url 'schedule:KibouList' %}" class="btn-secondary btn active">Revenir</a></p>
{% for shift in shift_object %}
{% if shift.name != "Fermé" and shift.name != "Oui" %}
{{ shift.name }} : {{ shift.start_time }}~{{ shift.end_time }}
{% endif %}
{% endfor %}
</div>
</form>
{% endblock content %}
Ceci termine. Cliquez ici pour la liste
J'ai pu le faire pour le moment, mais en réalité, l'administrateur peut sélectionner une personne pour que la personne puisse s'inscrire, mais les utilisateurs généraux ne peuvent s'inscrire que pour eux-mêmes, je voulais afficher correctement le nom japonais, mais c'est plutôt bien Je n'y suis pas allé et j'ai pensé l'amener au point où cela pourrait fonctionner une fois, alors je l'ai interrompu!
Puisqu'il n'y a pas de partie titre au dessus de l'écran de correction, je vais le corriger ici
schedule/update.html
{% extends 'schedule/kiboushift/base.html' %}
{% block header %}
<div class="jumbotron jumbotron-fluid">
<div class="container">
<h1 class="display-4">Correction de décalage souhaitée</h1>
<p class="lead"></p>
</div>
</div>
{% endblock header %}
{% block content %}
<form action="" method="POST">{% csrf_token %}
<div class="Container">
{{ form.as_p }}
{% csrf_token %}
<p><input class="btn btn-primary" type="submit" value="mise à jour">
<a href="{% url 'schedule:KibouList' %}" class="btn-secondary btn active">Revenir</a></p>
{% for shift in shift_object %}
{% if shift.name != "Fermé" and shift.name != "Oui" %}
{{ shift.name }} : {{ shift.start_time }}~{{ shift.end_time }}
{% endif %}
{% endfor %}
</div>
</form>
{% endblock content %}
J'ai pu le réparer! Après cela, il est nécessaire d'ajouter une assistance à la saisie et une vérification des entrées. Je vais le mettre en œuvre à nouveau ici.
Ensuite, je voudrais implémenter la fonction pour créer un décalage à partir de la demande de décalage.
Recommended Posts