Parcourir la source

aggressive caching

subDesTagesMitExtraKaese il y a 2 ans
Parent
commit
2a474ef946

+ 7 - 7
locale/de/LC_MESSAGES/django.po

@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-12-21 18:02+0000\n"
+"POT-Creation-Date: 2022-12-21 19:07+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -121,15 +121,15 @@ msgstr "Ereignis nicht gefunden"
 msgid "Event"
 msgid "Event"
 msgstr "Ereignis"
 msgstr "Ereignis"
 
 
-#: zitap/templates/zitap/event.html:37
+#: zitap/templates/zitap/event.html:38
 msgid "Update Slots"
 msgid "Update Slots"
 msgstr "Zeitslot aktualisieren"
 msgstr "Zeitslot aktualisieren"
 
 
-#: zitap/templates/zitap/event.html:40 zitap/templates/zitap/my-events.html:32
+#: zitap/templates/zitap/event.html:41 zitap/templates/zitap/my-events.html:32
 msgid "Logout"
 msgid "Logout"
 msgstr "Abmelden"
 msgstr "Abmelden"
 
 
-#: zitap/templates/zitap/event.html:63 zitap/views.py:79
+#: zitap/templates/zitap/event.html:64 zitap/views.py:87
 msgid "Login to Update Slots"
 msgid "Login to Update Slots"
 msgstr "Anmelden, um Zeitslots zu aktualisieren"
 msgstr "Anmelden, um Zeitslots zu aktualisieren"
 
 
@@ -148,16 +148,16 @@ msgstr "Meine Ereignisse"
 msgid "Login"
 msgid "Login"
 msgstr "Anmelden"
 msgstr "Anmelden"
 
 
-#: zitap/views.py:50
+#: zitap/views.py:54
 msgid "Could not create event. Please try again."
 msgid "Could not create event. Please try again."
 msgstr "Konnte Ereignis nicht erstellen. Bitte versuchen Sie es erneut."
 msgstr "Konnte Ereignis nicht erstellen. Bitte versuchen Sie es erneut."
 
 
-#: zitap/views.py:77
+#: zitap/views.py:85
 #, fuzzy
 #, fuzzy
 #| msgid "Event"
 #| msgid "Event"
 msgid "Login to My Events"
 msgid "Login to My Events"
 msgstr "Anmelden, um meine Ereignisse anzuzeigen"
 msgstr "Anmelden, um meine Ereignisse anzuzeigen"
 
 
-#: zitap/views.py:96
+#: zitap/views.py:104
 msgid "Username already exists"
 msgid "Username already exists"
 msgstr "Benutzername existiert bereits"
 msgstr "Benutzername existiert bereits"

+ 19 - 4
zitap/static/zitap/js/live-updates.js

@@ -7,7 +7,7 @@ window.addEventListener("load", function()
   const gridSlots = occupancyGrid.getElementsByClassName("slot")
   const gridSlots = occupancyGrid.getElementsByClassName("slot")
   
   
   const endpoint = `${window.location.href}/slots`
   const endpoint = `${window.location.href}/slots`
-  setTimeout(updateSlots, 1000)
+  updateSlots()
 
 
   function updateSlots()
   function updateSlots()
   {
   {
@@ -18,20 +18,37 @@ window.addEventListener("load", function()
   function setCheckboxes(data)
   function setCheckboxes(data)
   {
   {
     let maxParticipants = 0
     let maxParticipants = 0
+    const username = document.getElementById("username")
     for(let i=0; i<gridSlots.length; i++)
     for(let i=0; i<gridSlots.length; i++)
     {
     {
       const slot = document.getElementById(`grid_slot_${i}`)
       const slot = document.getElementById(`grid_slot_${i}`)
       let participants = []
       let participants = []
       for(let participant in data)
       for(let participant in data)
       {
       {
-        if(data[participant][i] == '1')
+        if(data[participant][i] === '1')
+        {
           participants.push(participant)
           participants.push(participant)
+        }
+      }
+      if(username && data[username.value]) 
+      {
+        if(data[username.value][i] === '1')
+        {
+          slot.classList.add("my-slot")
+          document.getElementsByName(`slot_${i}`)[0].checked = true
+        }
+        else
+        {
+          slot.classList.remove("my-slot")
+          document.getElementsByName(`slot_${i}`)[0].checked = false
+        }
       }
       }
       slot.style.setProperty("--color-index", participants.length)
       slot.style.setProperty("--color-index", participants.length)
       slot.title = `${slot.title.split('\n')[0]}\n${participants.join(", ")}`
       slot.title = `${slot.title.split('\n')[0]}\n${participants.join(", ")}`
       maxParticipants = Math.max(participants.length, maxParticipants)
       maxParticipants = Math.max(participants.length, maxParticipants)
     }
     }
     occupancyGrid.style.setProperty("--color-count", maxParticipants)
     occupancyGrid.style.setProperty("--color-count", maxParticipants)
+    this.document.getElementById("update-button").style.display = "none"
   }
   }
 
 
   onCheckedChanged = function(checkables) {
   onCheckedChanged = function(checkables) {
@@ -45,6 +62,4 @@ window.addEventListener("load", function()
         body: data,
         body: data,
     }).then(response => response.json()).then(setCheckboxes)
     }).then(response => response.json()).then(setCheckboxes)
   }
   }
-
-  //this.document.getElementById("update-button").style.display = "none"
 })
 })

+ 1 - 0
zitap/templates/zitap/event.html

@@ -34,6 +34,7 @@
             {% endfor %}
             {% endfor %}
             </div>
             </div>
             {{ form.non_field_errors }}
             {{ form.non_field_errors }}
+            <input type="hidden" id="username" value="{{ user.username }}">
         <input type="submit" value="{% trans 'Update Slots' %}" id="update-button">
         <input type="submit" value="{% trans 'Update Slots' %}" id="update-button">
     </form>
     </form>
     <button class="logout" onclick="location.href='{% url 'logout' url=event.url %}'">
     <button class="logout" onclick="location.href='{% url 'logout' url=event.url %}'">

+ 6 - 0
zitap/views.py

@@ -5,6 +5,8 @@ from django.http import HttpResponseNotFound, HttpResponseRedirect, JsonResponse
 from django.shortcuts import render
 from django.shortcuts import render
 from django.contrib.auth import authenticate, login as auth_login, logout as auth_logout
 from django.contrib.auth import authenticate, login as auth_login, logout as auth_logout
 from django.views.decorators.csrf import csrf_exempt
 from django.views.decorators.csrf import csrf_exempt
+from django.views.decorators.vary import vary_on_cookie
+from django.views.decorators.cache import cache_page
 from django.utils.translation import gettext as _
 from django.utils.translation import gettext as _
 from django.contrib.auth.models import User
 from django.contrib.auth.models import User
 
 
@@ -12,6 +14,7 @@ from .forms import CreateEventForm, LoginForm, UpdateSlotsForm
 from .models import Event, Participant, Date
 from .models import Event, Participant, Date
 from .helpers import slots2string, string2slots, get_slot_count, slots2grid
 from .helpers import slots2string, string2slots, get_slot_count, slots2grid
 
 
+@cache_page(60 * 15)
 def index(request):
 def index(request):
     return render(request, 'zitap/index.html')
     return render(request, 'zitap/index.html')
 
 
@@ -26,6 +29,7 @@ def my_events(request):
 def about(request):
 def about(request):
     return render(request, 'zitap/about.html')
     return render(request, 'zitap/about.html')
 
 
+@cache_page(60 * 15)
 def create_event(request):
 def create_event(request):
     if request.method == 'POST':
     if request.method == 'POST':
         form = CreateEventForm(request.POST)
         form = CreateEventForm(request.POST)
@@ -52,6 +56,8 @@ def create_event(request):
         form = CreateEventForm()
         form = CreateEventForm()
     return render(request, 'zitap/create-event.html', {'form': form})
     return render(request, 'zitap/create-event.html', {'form': form})
 
 
+@cache_page(60 * 15)
+@vary_on_cookie
 def event(request, url):
 def event(request, url):
     try:
     try:
         event = Event.objects.prefetch_related('date_set', 'participant_set', 'participant_set__user').get(url=url)
         event = Event.objects.prefetch_related('date_set', 'participant_set', 'participant_set__user').get(url=url)