prüfen

aus Django.Beitragen Import Administrator
aus Django.Beitragen.Authentifizierung.Modelle Import Benutzer
aus Django.Beitragen.Authentifizierung.Administrator Import BenutzerAdmin als BasisbenutzerAdmin
aus .Modelle Import Treffen, BlockierteDaten, GenkRandevu, BrasschaatRandevu, Arbeitszeiten, Einstellungen

Klasse TerminAdmin(Administrator.ModellAdmin):
    list_display = ('Name', 'E-Mail', 'Standort', 'Datum_Datum_abrufen', 'Erläuterung')
    list_filter = ['Standort', 'Geschichte', 'Moment']
    search_fields = ['Name', 'E-Mail']

    auf jeden get_tarih_saat(selbst, obj):
        zurückkehren F"{obj.Geschichte} {obj.Moment}"
    get_tarih_saat.kurz_beschreibung = 'Datum und Uhrzeit'

Administrator.Website.registrieren(Treffen, TerminAdmin)

Klasse EinstellungenAdmin(Administrator.ModellAdmin):
    list_display = ('Intervall',)

Administrator.Website.registrieren(Einstellungen, EinstellungenAdmin)

Klasse BenutzerAdmin(BasisbenutzerAdmin):
    list_display = ('Benutzername', 'E-Mail', 'Vorname', 'Nachname', 'ist_Mitarbeiter')

Klasse GenkRandevuAdmin(Administrator.ModellAdmin):
    list_display = ('Name', 'E-Mail', 'Datum_Datum_abrufen', 'Erläuterung')
    list_filter = ['Geschichte', 'Moment']
    search_fields = ['Name', 'E-Mail']

    auf jeden get_tarih_saat(selbst, obj):
        zurückkehren F"{obj.Geschichte} {obj.Moment}"
    get_tarih_saat.kurz_beschreibung = 'Datum und Uhrzeit'

    auf jeden get_queryset(selbst, Anfrage):
        zurückkehren super().get_queryset(Anfrage).Filter(Standort='genk')

Klasse BrasschaatRandevuAdmin(Administrator.ModellAdmin):
    list_display = ('Name', 'E-Mail', 'Datum_Datum_abrufen', 'Erläuterung')
    list_filter = ['Geschichte', 'Moment']
    search_fields = ['Name', 'E-Mail']

    auf jeden get_tarih_saat(selbst, obj):
        zurückkehren F"{obj.Geschichte} {obj.Moment}"
    get_tarih_saat.kurz_beschreibung = 'Datum und Uhrzeit'

    auf jeden get_queryset(selbst, Anfrage):
        zurückkehren super().get_queryset(Anfrage).Filter(Standort='Messing-Chat')

@Administrator.registrieren(Arbeitszeiten)
Klasse ArbeitszeitAdmin(Administrator.ModellAdmin):
    list_display = ('Standort', 'Tag', 'Startzeit', 'Endzeit')
    Bestellung = ['Standort', 'Tag']

Administrator.Website.Abmelden(Benutzer)
Administrator.Website.registrieren(Benutzer, BenutzerAdmin)
Administrator.Website.registrieren(GenkRandevu, GenkRandevuAdmin)
Administrator.Website.registrieren(BrasschaatRandevu, BrasschaatRandevuAdmin)

@Administrator.registrieren(BlockierteDaten)
Klasse BlockierteDatesAdmin(Administrator.ModellAdmin):
    list_display = ('date',), admin.py Datei,
aus Django.Konf Import Einstellungen
aus Django Import Formen
aus .Modelle Import Treffen
aus Django.Dienstprogramme.Übersetzung Import gettext_lazy als _

Klasse SpracheFormular(Formen.Bilden):
    Sprache = Formen.Auswahlfeld(Entscheidungen=[(Code, Name) für Code, Name In Einstellungen.SPRACHEN], Etikett=_("Sprache"))

Klasse Terminvereinbarung(Formen.ModellForm):
    Name = Formen.Zeichenfeld(
        Etikett=_('Name'),
        Widget=Formen.Texteingabe(Attribute={'Klasse': 'Formularsteuerung', 'Platzhalter': _('Name')})
    )
    E-Mail = Formen.E-Mail-Feld(
        Etikett=_('E-Mail'),
        Widget=Formen.E-Mail-Eingabe(Attribute={'Klasse': 'Formularsteuerung', 'Platzhalter': _('E-Mail')})
    )
    Telefon = Formen.Zeichenfeld(
        Etikett=_('Telefon'),
        Widget=Formen.Texteingabe(Attribute={'Klasse': 'Formularsteuerung', 'Platzhalter': _('Telefon')})
    )
    Geschichte = Formen.Datumsfeld(
        Etikett=_('Geschichte'),
        Widget=Formen.Datumseingabe(Attribute={'Klasse': Formularsteuerung Datumsauswahl, 'Typ': 'Datum', 'Platzhalter': _('Geschichte')})
    )
    Moment = Formen.Zeitfeld(
        Etikett=_('Moment'),
        Widget=Formen.Zeiteingabe(Attribute={'Klasse': form-control Zeitpicker, 'Typ': 'Text', 'Platzhalter': _('Moment')})
    )
    Erläuterung = Formen.Zeichenfeld(
        Etikett=_('Erläuterung'),
        Widget=Formen.Textbereich(Attribute={'Klasse': 'Formularsteuerung', 'Zeilen': 3, 'Platzhalter': _(Wie viele Personen reservieren Sie?)})
    )

    Klasse Meta:
        Modell = Treffen
        Felder = ['Name', 'E-Mail', 'Telefon', 'Geschichte', 'Moment', 'Erläuterung']

,forms.py-Datei, 
aus Django.db Import Modelle
aus Django.Dienstprogramme.Übersetzung Import Text abrufen als _

STANDORT_AUSWAHL = [
    ('genk', „Genks Pompadour“),
    ('Messing-Chat', Pomandi Brasschaat),
]

Klasse Treffen(Modelle.Modell):
    Standort = Modelle.Zeichenfeld(max_length=50, Entscheidungen=STANDORT_AUSWAHL, Null=FALSCH, leer=FALSCH)
    Name = Modelle.Zeichenfeld(max_length=50, Null=FALSCH, leer=FALSCH)
    E-Mail = Modelle.E-Mail-Feld(max_length=255, Null=FALSCH, leer=FALSCH)
    Telefon = Modelle.Zeichenfeld(max_length=20, Null=FALSCH, leer=FALSCH)
    Geschichte = Modelle.Datumsfeld(Null=WAHR)
    Moment = Modelle.Zeitfeld(Null=WAHR)
    Erläuterung = Modelle.Textfeld(max_length=500, Null=WAHR, leer=WAHR)

    auf jeden speichern(selbst, *Argumente, **Abonnieren):
        Wenn nicht selbst.Standort:
            Wenn selbst._Meta.model_name == "genkrandevu":
                selbst.Standort = 'genk'
            Elif selbst._Meta.model_name == "Messingschaatrandevu":
                selbst.Standort = 'Messing-Chat'
        super(Treffen, selbst).speichern(*Argumente, **Abonnieren)

    auf jeden __str__(selbst):
        zurückkehren selbst.Name

Klasse Arbeitszeiten(Modelle.Modell):
    max_appointments = Modelle.PositiveIntegerField(Standard=1, help_text="Maximale Anzahl der Termine für diese Zeitzone")

    TAGE_AUSWAHL = [
        (0, 'Montag'),
        (1, 'Dienstag'),
        (2, 'Mittwoch'),
        (3, 'Donnerstag'),
        (4, 'Nur'),
        (5, 'Samstag'),
        (6, 'Sonntag'),
    ]

    Standort = Modelle.Zeichenfeld(max_length=50, Entscheidungen=STANDORT_AUSWAHL, Null=WAHR, leer=WAHR)
    Tag = Modelle.PositiveSmallIntegerField(Entscheidungen=TAGE_AUSWAHL)
    start_time = Modelle.Zeitfeld()
    end_time = Modelle.Zeitfeld()

    Klasse Meta:
        unique_together = ['Standort', 'Tag']

    auf jeden __str__(selbst):
        zurückkehren F"{selbst.get_lokasyon_anzeige()} - {selbst.get_day_display()} - {selbst.start_time} - {selbst.end_time}"

Klasse GenkRandevu(Treffen):
    Klasse Meta:
        Proxy = WAHR
        verbose_name = "Genk-Ernennung"
        verbose_name_plural = „Genk-Ernennungen“

Klasse BrasschaatRandevu(Treffen):
    Klasse Meta:
        Proxy = WAHR
        verbose_name = Brasschaat Randevu
        verbose_name_plural = Brasschaat Randevular

Klasse BlockierteDaten(Modelle.Modell):
    Standort = Modelle.Zeichenfeld(max_length=50, Entscheidungen=STANDORT_AUSWAHL, Null=FALSCH, leer=FALSCH)
    Datum = Modelle.Datumsfeld()

    Klasse Meta:
        unique_together = ['Standort', 'Datum']

    auf jeden __str__(selbst):
        zurückkehren F"{selbst.get_lokasyon_anzeige()} - {selbst.Datum.strfzeit('%Y-%m-%D')}"


Klasse Einstellungen(Modelle.Modell):
    Standort = Modelle.Zeichenfeld(max_length=50, Entscheidungen=STANDORT_AUSWAHL, Null=WAHR, leer=WAHR)
    Intervall = Modelle.PositiveIntegerField(Standard=20)
,models.py-Datei, 
aus Django.http Import JsonAntwort
aus Django.Verknüpfungen Import machen, umleiten
aus .Modelle Import Treffen, BlockierteDaten, Arbeitszeiten, Einstellungen
aus .Formen Import Terminvereinbarung, SpracheFormular
aus Django.Dienstprogramme.Übersetzung Import Text abrufen als _
aus Django.Kern.Post Import send_mail
aus Django.Vorlage.Lader Import render_to_string
aus Django.Konf Import Einstellungen
aus Django.Dienstprogramme Import Übersetzung

auf jeden set_language(Anfrage):
    Wenn Anfrage.methode == "POST":
        bilden = SpracheFormular(Anfrage.POST)
        Wenn bilden.is_valid():
            user_language = bilden.cleaned_data['Sprache']
            Übersetzung.aktivieren(user_language)
            Anfrage.Sitzung["Django-Sprache"] = user_language
            zurückkehren umleiten('Standortauswahl')
        anders:
            drucken("Form ist ungültig!")
            drucken(bilden.Fehler)
    anders:
        bilden = SpracheFormular()
    zurückkehren machen(Anfrage, randevu_uygulamasi/set_language.html, {'bilden': bilden})

auf jeden location_choice(Anfrage):
    Wenn Anfrage.methode == "POST":
        chosen_location = Anfrage.POST.get('Standort')
        Anfrage.Sitzung[„Ausgewählter_Standort“] = chosen_location
        zurückkehren umleiten(„Termin erstellen“)
    zurückkehren machen(Anfrage, randevu_uygulamasi/standort_auswahl.html)

auf jeden randevu_listesi(Anfrage):
    Termine = Treffen.Objekte.alle().order_by('Geschichte', 'Moment')
    zurückkehren machen(Anfrage, randevu_uygulamasi/randevu_liste.html, {'Termine': Termine})

auf jeden randevu_olustur(Anfrage, Standort=Keiner):
    Wenn nicht Standort:
        Standort = Anfrage.Sitzung.get(„Ausgewählter_Standort“, 'Standardstandort')
        zurückkehren umleiten(„Termin erstellen“, Standort=Standort)

    Wenn Anfrage.methode == "POST":
        bilden = Terminvereinbarung(Anfrage.POST)
        Wenn bilden.is_valid():
            Geschichte = bilden.cleaned_data['Geschichte']
            Moment = bilden.cleaned_data['Moment']

            # Blockierte Daten Kontrolle
            Wenn BlockierteDaten.Objekte.Filter(Datum=Geschichte).existiert():
                bilden.add_error('Geschichte', "Für dieses Datum kann kein Termin vereinbart werden.")
                zurückkehren machen(Anfrage, randevu_uygulamasi/randevu_olustur.html, {'bilden': bilden, 'Standort': Standort})

            # Kontrolle der Arbeitszeiten und -tage
            day_of_week = Geschichte.Wochentag()
            versuchen:
                working_hours = Arbeitszeiten.Objekte.erhalten(Tag=day_of_week, Standort=Standort)
                Wenn Moment < working_hours.start_time oder Moment > working_hours.end_time:
                    bilden.add_error('Moment', Die gewählte Uhrzeit liegt außerhalb der Arbeitszeiten.)
                    zurückkehren machen(Anfrage, randevu_uygulamasi/randevu_olustur.html, {'bilden': bilden})
            außer Arbeitszeiten.Existiert nicht:
                bilden.add_error('Geschichte', Die Arbeitszeit für den ausgewählten Tag ist nicht definiert.)
                zurückkehren machen(Anfrage, randevu_uygulamasi/randevu_olustur.html, {'bilden': bilden})

            treffen = bilden.speichern(begehen=FALSCH)
            treffen.Standort = Standort
            treffen.speichern()
            zurückkehren umleiten('Termindetail', randevu_id=treffen.Ausweis)
    anders:
        bilden = Terminvereinbarung()
    zurückkehren machen(Anfrage, randevu_uygulamasi/randevu_olustur.html, {'bilden': bilden})
auf jeden get_working_hours(Anfrage, Standort, day_of_week):
    # Wir holen die Standortinformationen aus der URL, daher ist die folgende Zeile nicht erforderlich.
    # lokasyon = request.session.get('chosen_location', 'default_lokasyon')
    versuchen:
        working_hours = Arbeitszeiten.Objekte.erhalten(Tag=day_of_week, Standort=Standort)
        zurückkehren JsonAntwort({
            'Start': working_hours.start_time.strfzeit('%HM'),
            'Ende': working_hours.end_time.strfzeit('%HM')
        })
    außer Arbeitszeiten.Existiert nicht:
        zurückkehren JsonAntwort({'Fehler': Arbeitszeiten für diesen Tag nicht festgelegt}, Status=404)

auf jeden get_working_days(Anfrage, Standort):
    # Wir holen die Standortinformationen aus der URL, daher ist die folgende Zeile nicht erforderlich.
    # lokasyon = request.session.get('chosen_location', 'default_lokasyon')
    working_days = Arbeitszeiten.Objekte.Filter(Standort=Standort).values_list('Tag', Wohnung=WAHR)
    zurückkehren JsonAntwort(Liste(working_days), sicher=FALSCH)


auf jeden randevu_detay(Anfrage, randevu_id):
    treffen = Treffen.Objekte.erhalten(Ausweis=randevu_id)
    zurückkehren machen(Anfrage, randevu_anwendung/randevu_details.html, {'treffen': treffen})

auf jeden blocked_dates(Anfrage):
    # Holen Sie sich die vom Benutzer ausgewählte Standortinformation
    Standort = Anfrage.Sitzung.get(„Ausgewählter_Standort“, 'Standardstandort')

    # Filtern Sie die blockierten Daten nach Standort
    Termine = BlockierteDaten.Objekte.Filter(Standort=Standort).values_list('Datum', Wohnung=WAHR)

    drucken(Termine)  # Verschieben Sie diese Zeile hierher

    # Konvertieren Sie die Daten in das String-Format
    date_strings = [Datum.isoformat() für Datum In Termine]

    # Geben Sie die Ergebnisse im JSON-Format zurück
    zurückkehren JsonAntwort(date_strings, sicher=FALSCH)




auf jeden get_appointments_for_date(Anfrage):
    selected_date = Anfrage.GET.get('Datum')
    Termine = Treffen.Objekte.Filter(Geschichte=selected_date).values_list('Moment', Wohnung=WAHR)
    zurückkehren JsonAntwort(Liste(Termine), sicher=FALSCH)

auf jeden get_appointment_interval(Anfrage, Standort):
    Einstellungen = Einstellungen.Objekte.Filter(Standort=Standort).Erste()
    Intervall = Einstellungen.Intervall Wenn Einstellungen anders 20  # Wenn die Einstellungen nicht vorgenommen wurden, standardmäßig 20 Minuten
    zurückkehren JsonAntwort({"Intervall": Intervall})

,views.py-Datei, 
# randevu_uygulamasi/urls.py

aus Django.URLs Import Weg
aus . Import Ansichten
aus Django.Konf.URLs.i18n Import i18n_patterns

URL-Muster = [
   
    Weg('', Ansichten.randevu_listesi, Name='Terminliste'),
   Weg(randevu//'', Ansichten.randevu_olustur, Name=„Termin erstellen“),
    Weg(randevu_detail//, Ansichten.randevu_detay, Name='Termindetail'),
    Weg('blockierte_daten/', Ansichten.blocked_dates, Name=„blockierte_Daten“),
    Weg('Sprache festlegen/', Ansichten.set_language, Name='Sprache festlegen'),
    Weg('Standortauswahl/', Ansichten.location_choice, Name='Standortauswahl'),
    Weg(''de/arbeitszeiten_abfragen///''', Ansichten.get_working_hours, Name='Arbeitsstunden abrufen'),
    Weg(de/arbeits tage//, Ansichten.get_working_days, Name='Arbeitstage abrufen'),
    Weg(get_appointments_for_date/, Ansichten.get_appointments_for_date, Name=get_appointments_for_date),
    Weg(get_appointment_interval/, Ansichten.get_appointment_interval, Name=get_appointment_interval),



]

,urls.py-Datei,

DOCTYPE html>
{% Belastung statisch %}
{% Belastung i18n %}

<Meta Name="Ansichtsfenster" Inhalt="width=device-width, initial-scale=1.0">

<Verknüpfung relativ="Stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">

<Verknüpfung relativ="Stylesheet" href="{% statisch randevu_uygulamasi/css/styles.css %}">

<Verknüpfung relativ="Stylesheet" href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css">

<Skript Quelle="https://code.jquery.com/jquery-3.2.1.slim.min.js">Skript>
<Skript Quelle="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js">Skript>
<Skript Quelle="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js">Skript>

<Skript Quelle="https://cdn.jsdelivr.net/npm/flatpickr">Skript>

<div Klasse="Container py-5">
    <h1 Klasse="mb-5 text-center display-4">{% trans „Neue Ernennung“ %}h1>

    <div Klasse="Reihe justify-content-center">
        <div Klasse="Spalte-12, Spalte-md-8">
           
            <bilden Verfahren="Post">


                {% csrf_token %}
                {% für Feld In bilden %}
                <div Klasse="Formulargruppe">
                    <Etikett für="angezeigteZeit" Klasse="col-lg-2 control-label display-4">{{ Feld.Etikett }}Etikett>
                    <div Klasse="col-lg-10">
                        {% Wenn Feld.Name != "Moment" %}
                        {{ Feld }}
                        {% anders %}
                       
                        <Eingang Typ="Text" Ausweis="angezeigteZeit" Klasse="Formularkontrolle" schreibgeschützt>
                       
                        <div Ausweis="zeitButtonsContainer">div>
                       
                        <Eingang Typ="versteckt" Ausweis="id_saat" Name="Moment" Autovervollständigung="aus">
                        {% Ende %}
                       
                        {% Wenn Feld.Fehler %}
                        <div Klasse="Warnung Warnung-Gefahr">
                            {{ Feld.Fehler|verbinden:", " }}
                        div>
                        {% Ende %}
                       
                       
                    div>
                div>
                {% Ende für %}
                <div Klasse="Formulargruppe">
                    <div Klasse="col-lg-offset-2 col-lg-10">
                        <Taste Klasse="btn btn-primary btn-lg btn-block">{% trans "Termin erstellen" %}Taste>
                    div>
                div>
            bilden>
        div>
    div>
div>

<Stil>
    .flatpickr-day.disabled, .flatpickr-day.disabled:hover {
        Hintergrund: rot !wichtig;
        cursor: nicht-erlaubt;
    }
Stil>

<Skript>
    $(dokumentieren).bereit(Funktion() {
        $("#timeButtonsContainer").verstecken();  // Sayfa yüklendiğinde saat seçim butonlarını gizle

        // Engellenen tarihleri al
        $.getJSON('{% url "blocked_dates" %}', Funktion(geblockteTermine) {
            // Çalışma günlerini al
            $.getJSON('{% url "get_working_days" %}', Funktion(Arbeitstage) {
                // Engellenen tarihlerle çalışma günlerini birleştir
                Wo deaktivierteDaten = getDisabledDates(geblockteTermine, Arbeitstage);
               
                // Flatpickr ayarları
                $("#id_datum").Flachpicker({
                    Datumsformat: "J-m-t",
                    deaktivieren: deaktivierteDaten,
                    minDatum: "Heute",
                    beiÄnderung: Funktion(ausgewählteTermine, dateStr, Beispiel) {
                        Wenn (ausgewählteTermine.Länge > 0) {
                            Wo Wochentag = ausgewählteTermine[0].getDay();
                            $.getJSON('{% url "get_working_hours" day_of_week=0 %}'.ersetzen('0', Wochentag), Funktion(Arbeitsstunden) {
                                Wo verfügbareZeiten = Zeitfenster generieren(Arbeitsstunden.Start, Arbeitsstunden.Ende);
   
                                // Seçilen tarihte alınmış randevuları kontrol et
                                $.getJSON(/termine_für_datum_holen/, {Datum: dateStr}, Funktion(eingenommene Zeiten) {
                                    verfügbareZeiten = verfügbareZeiten.Filter(Funktion(Zeit) {
                                        zurückkehren !eingenommene Zeiten.beinhaltet(Zeit);
                                    });
   
                                    Zeitschaltflächen auffüllen(verfügbareZeiten);
                                });
                            });
                        }
                    }
                });
            });
        });
    });
   
    // Engellenen tarihlerle çalışma günlerini birleştir
    Funktion getDisabledDates(geblockteTermine, Arbeitstage) {
        Wo deaktivierteDaten = geblockteTermine.Scheibe(); // Engellenen tarihleri kopyala
        Wo aktuellesDatum = neu Datum();
        für (Wo ich = 0; ich < 365; ich++) { // Bir yıl içindeki tüm tarihleri kontrol et
            Wo Wochentag = aktuellesDatum.getDay();
            Wenn (!Arbeitstage.beinhaltet(Wochentag)) {
                deaktivierteDaten.drücken(formatDate(aktuellesDatum));
            }
            aktuellesDatum.Datum festlegen(aktuellesDatum.getDate() + 1);
        }
        zurückkehren deaktivierteDaten;
    }
   
    // Tarihi "YYYY-MM-DD" formatına dönüştür
    Funktion formatDate(Datum) {
        Wo Tag = Datum.getDate();
        Wo Monat = Datum.Monat abrufen() + 1;
        Wo Jahr = Datum.getFullYear();
        zurückkehren Jahr + '-' + (Monat < 10 ? '0' : '') + Monat + '-' + (Tag < 10 ? '0' : '') + Tag;
    }
   
    Funktion Zeitschaltflächen auffüllen(verfügbareZeiten) {
        Wo Container = $("#timeButtonsContainer");
        Container.leer();  // Önceki butonları temizle
   
        verfügbareZeiten.fürJedes(Funktion(Zeit) {
            Wo Taste = $(" )
                .Klasse hinzufügen("btn btn-primary time-button")
                .Text(Zeit)
                .klicken(Funktion() {
                    $("#aktuelle_id").Wert(Zeit);  // Gizli saat input alanını doldur
                    $("#angezeigteZeit").Wert(Zeit);  // Seçilen saati göster
                    Container.verstecken();  // Saat seçim butonlarını gizle
                });
            Container.Anhängen(Taste);
        });
   
        Container.zeigen();  // Saat butonlarını göster
   
        // Saat seçim butonları gösterildiğinde, dış tıklama ile gizleme işlevini ekleyin
        $(dokumentieren).klicken(Funktion(Ereignis) {
            Wenn (!$(Ereignis.Ziel).am nächsten gelegen("#id_tarih, .zeit-button").Länge) {
                Container.verstecken();
            }
        });
    }
   
   


    Funktion Zeitfenster generieren(Start, Ende) {
        Wo Zeitfenster = [];
        Wo aktuelle Zeit = neu Datum(`1970-01-01 ${Start}:00`);
        Wo Endzeit = neu Datum(`1970-01-01 ${Ende}:00`);
       
        // Interval değerini API'den alın
        $.Ajax({
            URL: /termin_intervall_abfragen/,
            asynchron: FALSCH,
            Datentyp: 'json',
            Erfolg: Funktion(Daten) {
                Wo Intervall = Daten.Intervall * 60000;  // dakikayı milisaniyeye çevir
   
                während (aktuelle Zeit < Endzeit) {
                    Wo Std. = Zeichenfolge(aktuelle Zeit.Stunden abrufen()).StraßeStart(2, '0');
                    Wo Minuten = Zeichenfolge(aktuelle Zeit.getMinutes()).StraßeStart(2, '0');
                    Zeitfenster.drücken(`${Std.}:${Minuten}`);
                    aktuelle Zeit = neu Datum(aktuelle Zeit.getTime() + Intervall);
                }
            }
        });
   
        zurückkehren Zeitfenster;
    }

    // Lokasyon değerini dinamik olarak formun action attribute'una ekleyen fonksiyon
Funktion updateFormActionWithLocation() {
    Wo Standortwert = "{{ request.session.chosen_location }}";  // Django template dilini kullanarak session'dan lokasyon değerini alıyoruz
    Wo formActionURL = "{% url 'randevu_olustur' lokasyon='PLACEHOLDER' %}".ersetzen('PLATZHALTER', Standortwert);
    $("bilden").attr("Aktion", formActionURL);
}

// Formun submit edilmesi öncesinde lokasyon değerini formun action attribute'una ekleyin
$("bilden").einreichen(Funktion() {
    updateFormActionWithLocation();
});

   
Skript>
,randevuolustur.html Datei