[PYTHON] Django Shift Symbol Hintergrund mit verschiedenen Farben je nach Einrichtung

Die Schichttabelle enthält Daten wie A, B, C und Feiertage. Obwohl ich A sage, da es drei Einrichtungen gibt, erstelle ich es derzeit in Excel, damit ich verstehen kann, auf welcher Basis ich arbeite. Dies entspricht durch Ändern der Farbe der Zelle.

image.png

In Excel wird es so erstellt. Das Café verwaltete zwei Stützpunkte und erstellte einen separaten Schichttisch. (Ich habe es noch nicht gesehen, daher kann es einige Änderungen geben ...)

Bei der Implementierung mit Django haben wir ein Farbfeld in der Verschiebungstabelle, sodass wir es verwalten und anzeigen können. Wenn ich während der Implementierung feststellte, dass ich mich für bezahlt oder Urlaub entschieden habe, kann ich die Einrichtung auswählen, damit sie auch während des Urlaubs farbig wird. Es scheint, dass die Eingabesteuerung einfach zu implementieren ist, wenn Sie sie in forms.py ausführen, aber ich habe sie noch nie ausgeführt, daher möchte ich sie in Zukunft implementieren.

Ich habe auch beschlossen, die Shisetsu-Tabelle zum Färben an HTML zu übergeben.

schedule/views.py



from django.shortcuts import render
from shisetsu.models import *
from accounts.models import *
from .models import *
from django.shortcuts import redirect
import calendar
import datetime
from datetime import timedelta
from datetime import datetime as dt

# Create your views here.

def homeschedule(request):
    from datetime import datetime
    now = datetime.now()
    return redirect('schedule/monthschedule/%s/%s/' % (now.year,now.month,))  #Automatisch zum Schichtbildschirm dieses Monats umleiten

def monthschedulefunc(request,year_num,month_num):
    user_list = User.objects.all()
    year, month = int(year_num), int(month_num)
    shisetsu_object = Shisetsu.objects.all()
    print(shisetsu_object)
    object_list = Schedule.objects.filter(year = year, month = month).order_by('user', 'date')
    #Ermitteln Sie die Anzahl der Tage im Schichtbereich
    startdate = datetime.date(year,month-1,21)
    enddate = datetime.date(year,month,20)
    kaisu = enddate - startdate
    kaisu = int(kaisu.days) + 1
    
    #Machen Sie eine Liste von Daten und Tagen
    hiduke = str(year) + "-" + str(month-1) + "-" + str(20)
    date_format = "%Y-%m-%d"
    hiduke = dt.strptime(hiduke, date_format)
    weekdays = ["Mond","Feuer","Wasser","Holz","Geld","Boden","Tag"]
    calender_object = []
    youbi_object = []
    for i in range(kaisu):
        hiduke = hiduke + timedelta(days=1)    
        calender_object.append(hiduke)
        youbi = weekdays[hiduke.weekday()] 
        youbi_object.append(youbi)
    
    kaisu = str(kaisu)

    context = {
        'object_list': Schedule.objects.all(),
        'staff_list' : User.objects.all(),
        'shisetsu_object': shisetsu_object.all(),
        'kaisu' : kaisu
    }
    return render(request,'schedule/month.html', {
    'object_list': object_list,
    'user_list': user_list,
    'calender_object': calender_object,
    'youbi_object':youbi_object,
    'kaisu':kaisu,
    'shisetsu_object':shisetsu_object
    }, )

schedule/month.html


{% extends 'schedule/base.html' %}
{% block header %}
{% endblock header %}

{% block content %}
<table class="table table-striped table-bordered">
<thead>
    <tr align="center" class="info">    <!--Datum-->
        <th rowspan="2"></th>
        {% for item in calender_object %}
                <th class="day_{{ item.date }}">{{ item.date | date:"d" }}</th>
        {% endfor %}
    <tr align="center" class="info">   <!--Tag-->
        {% for item in youbi_object %}
            <th class="day_{{ item.date }}">{{ item }}</th>
        {% endfor %}
    </tr>
</thead>
<tbody>
    {% for staff in user_list %}
        <tr align="center">
        <th class="staff_name" staff_id="{{ staff.staff_id }}" width="200" >{{ 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="day_{{ item.date }}" id="s{{ staff.id }}d{{ item.date }}"> 
                    {% 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 %}
                </td>
            {% endif %}            
        {% endfor %}
        </tr>
    {% endfor %}
</tbody>

</table>
{% endblock content %}

Ich denke, dass ein iterativer Prozess durchgeführt werden kann, aber da 1 gut funktioniert hat, verwende ich ihn beim Kopieren und Einfügen. Danach kann es renoviert werden, da die gesamten monatlichen Arbeitsstunden berechnet werden.

Und hier ist das Anzeigeergebnis.

image.png

Nein, du bist fertig! Die Hintergrundfarbe ist etwas klein, aber gut (⌒∇⌒)

Ich bin in ungefähr 3 Stunden angekommen, also denke ich, dass ich es ziemlich schnell geschafft habe.

Als nächstes möchte ich an der Berechnung der Gesamtzeit des Monats arbeiten. Zunächst möchte ich bestätigen, dass die Arbeitszeiten des Tages geändert oder hinzugefügt werden können.

Recommended Posts

Django Shift Symbol Hintergrund mit verschiedenen Farben je nach Einrichtung
Django + Apache mit mod_wsgi unter Windows Server 2016
Hinweise zum Aktivieren von PostgreSQL mit Django