[PYTHON] Mise en œuvre d'une fonction non publiée dans la table de décalage Django Ajout d'un contrôle de la couleur d'arrière-plan pour le décalage souhaité

Quand j'ai vu la fonction de table de décalage, j'ai découvert qu'il a fallu beaucoup de temps depuis que l'administrateur a contacté les demandes de tout le monde via des lignes. Donc, je ne voulais pas publier le décalage au milieu de la création, j'ai donc implémenté les fonctions publiques et non publiées.

image.png

Si l'administrateur est en train de modifier, l'état est privé et le bouton de publication s'affiche.

Si vous ne disposez pas des privilèges d'administrateur image.png

Pas affichée.

Le contrôle peut être préférable d'utiliser le groupe d'utilisateurs, mais il décide s'il s'agit d'un super-utilisateur.

Décidons que le modèle a un drapeau et jugeons s'il est activé ou désactivé. J'ai pensé avoir une table lunaire, mais j'aimerais y réfléchir lorsque je repenserai la date limite et ainsi de suite.

Tout d'abord, je pense que rendre les gens heureux de l'utiliser accélérera l'acquisition de la technologie, alors je ferai de mon mieux pour la mettre en œuvre (⌒∇⌒)

python.suchedule.modell.py


class Schedule(models.Model):
    id = models.AutoField(verbose_name='ID de planification',primary_key=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='Nom de l'employé')
    date = models.DateField(verbose_name='Date')
    year = models.PositiveIntegerField(validators=[MinValueValidator(1),])
    month = models.PositiveIntegerField(validators=[MaxValueValidator(12),MinValueValidator(1),])
    shift_name_1 = models.ForeignKey(Shift, verbose_name='1 nom d'équipe', related_name='shift_name1',on_delete=models.SET_NULL,null= True)
    shisetsu_name_1 = models.ForeignKey(Shisetsu, verbose_name='1 établissement', related_name='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='shift_name2',on_delete=models.SET_NULL,blank=True, null=True)
    shisetsu_name_2 = models.ForeignKey(Shisetsu, verbose_name='2 installations', related_name='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='shift_name3',on_delete=models.SET_NULL,blank=True, null=True)
    shisetsu_name_3 = models.ForeignKey(Shisetsu, verbose_name='3 installations', related_name='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='shift_name4',on_delete=models.SET_NULL,blank=True, null=True)
    shisetsu_name_4 = models.ForeignKey(Shisetsu, verbose_name='4 établissements', related_name='shisetsu_name4',on_delete=models.SET_NULL,blank=True, null=True)
    day_total_worktime = models.IntegerField(verbose_name='Heures de travail quotidiennes', default=0)
    kibou_shift = models.BooleanField(verbose_name='Changement d'espoir',default=False)
    open_flag = models.BooleanField(verbose_name='Drapeau public',default=False)

    class Meta:
        unique_together = ('user', 'date')

python/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 %}
  </div>
        <!--Lien du bouton pour ouvrir le modal-->
        {% if perms.schedule.add_schedule %}<!--Autorité-->
            <button type="button" class="btn-info btn active" data-toggle="modal" data-target="#createModal">Créer un changement</button>
        {% endif %}
        <!--Confirmation de création-->
        <div class="modal fade" id="createModal" tabindex="-1" role="dialog" aria-labelledby="basicModal" aria-hidden="true">
            <div class="modal-dialog">
                <div class="modal-content">
                    <div class="modal-header">
                        <h4><class="modal-title" id="myModalLabel">écran de confirmation</h4></h4>
                    </div>
                    <div class="modal-body">
                        <label>Lorsque je crée une équipe, les données sont écrasées. Voulez-vous l'exécuter?</label>
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-default" data-dismiss="modal">proche</button>

                            <a href="{% url 'schedule:schedulecreate' year month %}" class="btn-info btn active">Créer un changement</a>
                       
                    </div>
                </div>
            </div>
        </div>

            <!--Lien du bouton pour ouvrir le modal-->
            {% if perms.schedule.add_schedule %}<!--Autorité-->
                {% if open_flag.open_flag == False %}
                    <button type="button" class="btn-info btn active" data-toggle="modal" data-target="#openModal">Libération</button>
                {% elif open_flag.open_flag == True %}
                    <button type="button" class="btn-info btn active" data-toggle="modal" data-target="#closeModal">privé</button>
                {% endif %}
            {% endif %}

            <!--Confirmation publique-->
            <div class="modal fade" id="openModal" tabindex="-1" role="dialog" aria-labelledby="basicModal" aria-hidden="true">
                <div class="modal-dialog">
                    <div class="modal-content">
                        <div class="modal-header">
                            <h4><class="modal-title" id="myModalLabel">écran de confirmation</h4></h4>
                        </div>
                        <div class="modal-body">
                            <label>Voulez-vous publier le quart de travail?</label>
                        </div>
                        <div class="modal-footer">
                            <button type="button" class="btn btn-default" data-dismiss="modal">proche</button>
                            {% ifnotequal month 12 %}
                                <a href="{% url 'schedule:scheduleopen' year month %}" class="btn-info btn active">Libération</a>
                            {% else %}
                            
                                <a href="{% url 'schedule:scheduleopen' year|add:'1' month %}" class="btn-info btn active">Libération</a>
                            {% endifnotequal %}
                            
                        </div>
                    </div>
                </div>
            </div>

            <!--Confirmation privée-->
            <div class="modal fade" id="closeModal" tabindex="-1" role="dialog" aria-labelledby="basicModal" aria-hidden="true">
                <div class="modal-dialog">
                    <div class="modal-content">
                        <div class="modal-header">
                            <h4><class="modal-title" id="myModalLabel">écran de confirmation</h4></h4>
                        </div>
                        <div class="modal-body">
                            <label>Voulez-vous garder le quart de travail privé?</label>
                        </div>
                        <div class="modal-footer">
                            <button type="button" class="btn btn-default" data-dismiss="modal">proche</button>
                            {% ifnotequal month 12 %}
                                <a href="{% url 'schedule:scheduleclose' year month %}" class="btn-info btn active">privé</a>
                            {% else %}
                            
                                <a href="{% url 'schedule:scheduleclose' year|add:'1' month %}" class="btn-info btn active">privé</a>
                            {% endifnotequal %}
                            
                        </div>
                    </div>
                </div>
            </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>
    {% if perms.schedule.add_schedule or open_flag.open_flag == True %}<!--Autorité-->
        {% for profile in profile_list %}
            {% for staff in user_list %}
                {% if profile.user_id == staff.id %}
                    <tr align="center">
                    <th class ="fixed03" ><a href="{% url 'schedule:monthschedulekojin' year month staff.id %}">{{ staff.last_name }} {{ staff.first_name }}</a></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-->
                            
                            {% if item.kibou_shift == True %}
                                <td class="meisai03">
                            {% elif item.shift_name_1|stringformat:"s" == "Fermé"  %}
                                <td class="meisai01"> 
                            {% elif item.shift_name_1|stringformat:"s" == "ne pas"  %} 
                                <td class="meisai04">
                            {% else %}
                                <td class="meisai01"> 
                            {% endif %}
                            {% if item.shift_name_1 != None %}
                                {% if item.shift_name_1|stringformat:"s" == "Oui" %}
                                    {{ item.shift_name_1 }}
                                {% elif item.shift_name_1|stringformat:"s" == "Fermé" %}
                                
                                {% elif item.shift_name_1|stringformat:"s" == "ne pas" %}
                                    {{ item.shift_name_1 }}
                                {% else %}                   
                                    <span style="background-color:{{ item.shisetsu_name_1.color }}">{{ item.shift_name_1 }}</span>
                                {% 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 %}                  
                            <span style="background-color:{{ item.shisetsu_name_2.color }}">{{ item.shift_name_2 }}</span>
                        {% 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 %}                        
                            <span style="background-color:{{ item.shisetsu_name_3.color }}">{{ item.shift_name_3 }}</span>
                        {% 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 %}                         
                            <span style="background-color:{{ item.shisetsu_name_4.color }}">{{ item.shift_name_4 }}</span>
                        {% 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-->
                        {% if perms.schedule.add_schedule %}<!--Autorité-->
                            <td class="fixed04"><b>{{ month.month_total_worktime }}</b></td>
                        {% else %}
                            <td class="fixed04"><b>―</b></td>
                        {% endif %}
                    {% 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="meisai02" id="s{{ staff.id }}d{{ item.date }}">
                                <a href="{% url 'schedule:update' item.pk %}">{{ item.day_total_worktime }} </a>
                            </td>
                        {% else %}
                            <td  class="meisai02" id="s{{ staff.id }}d{{ item.date }}">
                                {% if item.day_total_worktime != 0 %}
                                    {{ item.day_total_worktime }}
                                {% endif %}
                            </td>
                        {% endif %}
                    {% endif %}            
                {% endfor %}
            </tr>
            {% endif %}
            {% endfor %}
            {% endfor %}
            </tbody>
        </table>
    </div>
    </div>
    {% endif %}
{% endblock content %}



J'ai bien compris qu'il est important de communiquer avec les personnes qui l'utilisent réellement et d'utiliser leur imagination (pouvoir délirant) pour le considérer.

Recommended Posts

Mise en œuvre d'une fonction non publiée dans la table de décalage Django Ajout d'un contrôle de la couleur d'arrière-plan pour le décalage souhaité
Ajout d'une fonction pour enregistrer les décalages souhaités dans la table des décalages Django