[PYTHON] Ändern Sie, was von einer von Dango autorisierten Person angezeigt wird

Ich bat einen Freund, den Schichttisch einmal zu benutzen. Es gab einige Anfragen.

① Schichttabelle: Nur der Administrator kann die Uhrzeit bearbeiten. (2) Schichttabelle: Ich möchte, dass Sie die Schichterstellung nach Tag kopieren ③ Gewünschte Schicht: Bis zum 5. eines jeden Monats bitten wir um eine Schichtanforderung und erstellen und verteilen sie bis zum 10., also geben Sie Einschränkungen ein, mit denen Sie bis 5 eingeben können ④ Bulletin Board: Benachrichtigen Sie jede Einrichtung ⑤ Aufgabe Es ist am besten, wenn Sie übernehmen können, was Sie tun müssen

Bisher habe ich vorerst bewegte Objekte als Ziele erstellt. Von hier aus möchte ich mehr über Eingabebeschränkungen und Berechtigungskontrollen erfahren, damit sie wirklich verwendet werden können.

Wenn Sie zunächst auf die Arbeitszeit in der Schichttabelle klicken, gelangen Sie zum Bildschirm zum Registrieren von Schichten. Ändern Sie dies jedoch so, dass nur Superuser dies tun können und andere Benutzer dies nicht können.

In HTML,

{% if perms.schedule.add_schedule %}

Die bedingte Anweisung von wurde hinzugefügt.

perms. bezieht sich auf die Berechtigungseinstellung selbst und bestimmt, ob die darin enthaltene Zeitplantabelle über zusätzliche Berechtigungen verfügt.

Es war nur eine Zeile, aber es dauerte fast zwei Stunden. Es gibt wahrscheinlich etwas über die Berechtigungseinstellungen zu lernen.

HTML sieht so aus

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 der gewünschten Schichten</a></p>
                {% ifnotequal month 1 %}
                    <a href="{% url 'schedule:monthschedule' year month|add:'-1' %}" class="btn-info btn active">Im vergangenen Monat</a>
                {% else %}
                    <a href="{% url 'schedule:monthschedule' year|add:'-1' 12 %}" class="btn-info btn active">Im vergangenen Monat</a>
                {% endifnotequal %}
       
                {% ifnotequal month 12 %}
                    <a href="{% url 'schedule:monthschedule' year month|add:'1' %}" class="btn-info btn active">Nächsten Monat</a>
                {% else %}
                     <a href="{% url 'schedule:monthschedule' year|add:'1' 1 %}" class="btn-info btn active">Nächsten Monat</a>
                {% endifnotequal %}
                {% if perms.schedule.add_schedule %}<!--Behörde-->
                    <a href="{% url 'schedule:schedulecreate' year month %}" class="btn-info btn active">Schicht erstellen</a>
                {% endif %}
        </div>
        <div class="cole-md-2">
            {% for shift in shift_object %}
                {% if shift.name != "Geschlossen" and shift.name != "Ja" %}
                    {{ 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">alles</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>    <!--Datum-->
            <th class ="fixed00" rowspan="2">{{ kikan }}</th>
            {% for item in calender_object %}
            <th class ="fixed01">{{ item.date | date:"d" }}</th>
            {% endfor %}
        <tr>   <!--Tag-->
            {% 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_ID-Element, das in js verwendet wird-->
                {% for item in object_list %} 
                    {% if item.user|stringformat:"s" == staff.username|stringformat:"s" %}<!--Wenn der Benutzername der gleiche ist-->
                        <td class="meisai"> 
                        {% if item.shift_name_1 != None %}
                            {% if item.shift_name_1|stringformat:"s" == "Ja" or item.shift_name_1|stringformat:"s" == "Geschlossen" %}
                                {{ 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" == "Ja" or item.shift_name_2|stringformat:"s" == "Geschlossen" %}
                        {{ 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" == "Ja" or item.shift_name_3|stringformat:"s" == "Geschlossen" %}
                        {{ 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" == "Ja" or item.shift_name_4|stringformat:"s" == "Geschlossen" %}
                        {{ 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 %}<!--Wenn der Benutzername der gleiche ist-->
                    <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" %}<!--Wenn der Benutzername der gleiche ist-->
                    {% if perms.schedule.add_schedule %}<!--Behörde-->
                        <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

Die Schaltfläche zum Erstellen von Schichten wird nicht mehr ohne Erlaubnis angezeigt. Und die Zeit ist auch nicht anklickbar.

① Schichttabelle: Nur der Administrator kann die Uhrzeit bearbeiten. Dies löste das Problem.

(2) Schichttabelle: Ich möchte, dass Sie die Schichterstellung nach Tag kopieren ⇒ Überlegen Sie, was Sie mit dem Kopieren am Tag tun sollen. Ich habe das Gefühl, dass es einfacher ist, es im Profil zu haben und von dort zu kopieren.

③ Gewünschte Schicht: Bis zum 5. eines jeden Monats bitten wir um eine Schichtanforderung und erstellen und verteilen sie bis zum 10., also geben Sie Einschränkungen ein, mit denen Sie bis 5 eingeben können ⇒ Ich mache das jetzt seit ungefähr 2 Stunden, aber ich konnte es nicht lösen. Der aktuelle Code ist hier

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)
        #Geben Sie erst nach dem 20. als 5. ein
        if now.day > 5:
            startdate = datetime.date(now.year,now.month,20)
            if date < startdate:
                raise ValidationError(
                "Es ist ein Datum, das nicht eingegeben werden kann",
                params={'value': value},
                )
        else:
            startdate = datetime.date(now.year,now.month,20)
            startdate = enddate + relativedelta(months=1)
            if date < startdate:
                raise ValidationError(
                "Es ist ein Datum, das nicht eingegeben werden kann",
                params={'value': value},
                )
        return date

    success_url = reverse_lazy('schedule:KibouList')

Wenn dies 5 Tage überschreitet, kann es erst nach dem 20. des folgenden Monats aktualisiert werden. Ich kann es überhaupt machen (lacht)

Dies kann möglicherweise nicht sofort behoben werden

④ Bulletin Board: Benachrichtigen Sie jede Einrichtung ⇒ Dies scheint möglich zu sein, also werde ich es tun (⌒∇⌒)

⑤ Aufgabe Es ist am besten, wenn Sie übernehmen können, was Sie tun müssen ⇒ Ich werde die Verwendbarkeit von Redmine oder Todoist untersuchen und verschiedene Möglichkeiten zur Erstellung regelmäßiger Aufgaben in Betracht ziehen. Ich denke, dies wird eine App sein, also plane ich, sie zu verschieben

Recommended Posts

Ändern Sie, was von einer von Dango autorisierten Person angezeigt wird
[Python] Was wird durch Mehrfachvererbung geerbt?
Was ist ein Namespace?
Was ist copy.copy ()
Was ist Django? .. ..
Was ist dotenv?
Was ist POSIX?
Was ist klass?
Was ist SALOME?
Was ist Linux?
Was ist Python?
Was ist Hyperopt?
Was ist Linux?
Was ist Pyvenv?
Was ist __call__?
Was ist Linux?
Was ist Python?
[Statistik] Verstehen Sie anhand von Animationen, wie die ROC-Kurve aussieht.