[PYTHON] Changer ce qui est affiché par la personne autorisée Dango

J'ai demandé à un ami d'utiliser la table de travail une fois. Il y a eu quelques demandes.

① Table de décalage: seul l'administrateur peut modifier l'heure. (2) Tableau des équipes: je veux que vous copiez la création de l'équipe par jour ③ Quart de travail souhaité: le 5 de chaque mois, nous demandons une demande de quart et la créons et la distribuons avant le 10, donc les restrictions d'entrée pour l'entrée par 5 ④ Tableau d'affichage: informez chaque établissement ⑤ Tâche Il est préférable que vous puissiez reprendre ce que vous avez à faire

Jusqu'à présent, j'ai créé des objets en mouvement comme objectifs pour le moment. De là, j'aimerais en savoir plus sur les restrictions d'entrée et les contrôles d'autorité afin qu'ils puissent vraiment être utilisés.

Tout d'abord, cliquez sur les heures de travail dans le tableau des équipes pour accéder à l'écran d'enregistrement des équipes, mais modifiez-la pour que seuls les super utilisateurs puissent le faire et les autres utilisateurs ne le puissent pas.

En html,

{% if perms.schedule.add_schedule %}

Ajout de l'instruction conditionnelle de.

Perms. Fait référence au paramètre d'autorité lui-même et détermine si la table de nomenclature qu'elle contient a des droits supplémentaires.

C'était juste une ligne, mais cela a pris presque deux heures. Il y aura probablement quelque chose à apprendre sur les paramètres d'autorisation.

html ressemble à ceci

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 %}
                {% 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 %}
                <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>
            {% 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 %}

image.png

Le bouton de création d'équipe n'est plus affiché sans autorisation. Et l'heure est également non cliquable.

① Table de décalage: seul l'administrateur peut modifier l'heure. Cela a résolu le problème.

(2) Tableau des équipes: je veux que vous copiez la création de l'équipe par jour ⇒ Pensez à quoi faire de la copie le jour même. Je pense qu'il est plus facile de l'avoir dans votre profil et de le copier à partir de là.

③ Quart de travail souhaité: le 5 de chaque mois, nous demandons une demande de quart et la créons et la distribuons avant le 10, donc les restrictions d'entrée pour l'entrée par 5 ⇒ Je fais cela depuis environ 2 heures maintenant, mais je n'ai pas été en mesure de le résoudre. Le code actuel est ici

schedule.views



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')

Avec cela, s'il dépasse 5 jours, il ne peut être mis à jour qu'après le 20 du mois suivant. Je peux le faire du tout (rires)

Cela peut ne pas être résolu immédiatement

④ Tableau d'affichage: informez chaque établissement ⇒ Cela semble possible à implémenter, je vais donc le faire

⑤ Tâche Il est préférable que vous puissiez reprendre ce que vous avez à faire ⇒J'étudierai l'utilisabilité de redmine ou todoist et envisagerai différentes manières de créer des tâches régulières. Je pense que ce sera une application, je prévois donc de la reporter

Recommended Posts

Changer ce qui est affiché par la personne autorisée Dango
[Python] Qu'est-ce qui est hérité par l'héritage multiple?
Qu'est-ce que l'espace de noms
Qu'est-ce que copy.copy ()
Qu'est-ce que Django? .. ..
Qu'est-ce que dotenv?
Qu'est-ce que POSIX
Qu'est-ce que le klass?
Qu'est-ce que SALOME?
Qu'est-ce que Linux?
Qu'est-ce que python
Qu'est-ce que l'hyperopt?
Qu'est-ce que Linux
Qu'est-ce que pyvenv
Qu'est-ce que __call__
Qu'est-ce que Linux
Qu'est-ce que Python
[Statistiques] Comprenez ce qu'est la courbe ROC par animation.