Compare commits

..

1 Commits

Author SHA1 Message Date
Yann Weber a64aa47c1e manager: make agenda's groups foldable (#85616)
gitea/chrono/pipeline/head This commit looks good Details
2024-04-11 17:37:46 +02:00
5 changed files with 9 additions and 14 deletions

View File

@ -17,7 +17,7 @@
import json
from django.contrib.auth.decorators import login_required
from django.http import HttpResponse
from django.http import HttpResponse, HttpResponseBadRequest
from django.utils.translation import gettext_lazy as _
from django.views.decorators.csrf import csrf_exempt
@ -30,14 +30,13 @@ def save_preference(request):
user_pref, dummy = models.UserPreferences.objects.get_or_create(user=request.user)
if len(request.body) > 1000:
return HttpResponse(_('Payload is too large'), status=400)
bad_fmt_response = HttpResponse(_('Bad format'), status=400)
return HttpResponseBadRequest(_('Payload is too large'))
try:
prefs = json.loads(request.body)
except json.JSONDecodeError:
return bad_fmt_response
return HttpResponseBadRequest(_('Bad format'))
if not isinstance(prefs, dict) or len(prefs) != 1:
return bad_fmt_response
return HttpResponseBadRequest(_('Bad format'))
user_pref.preferences.update(prefs)
user_pref.save()

View File

@ -1,4 +1,4 @@
# Generated by Django 3.2.18 on 2024-04-02 13:32
# Generated by Django 3.2.18 on 2024-04-11 15:30
import django.db.models.deletion
from django.conf import settings
@ -24,7 +24,7 @@ class Migration(migrations.Migration):
(
'user',
models.ForeignKey(
null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
),
),
],

View File

@ -20,7 +20,7 @@ from django.utils.translation import gettext_lazy as _
class UserPreferences(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True)
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
preferences = models.JSONField(_('Preferences'), default=dict)
def get_preference(self, name):

View File

@ -16,8 +16,8 @@
{% if object_list %}
{% regroup object_list by category as agenda_groups %}
{% for group in agenda_groups %}
{% with group.grouper.id|stringformat:"s" as i %}
{% with 'folded-admin-forms-group-'|add:i as foldname %}
{% with i=group.grouper.id|stringformat:"s" %}
{% with foldname='folded-admin-forms-group-'|add:i %}
<div class="section foldable {% if user|get_preference:foldname %}folded{% endif %}" data-section-folded-pref-name="{{foldname}}">
{% endwith %}
{% endwith %}

View File

@ -37,9 +37,5 @@ def human_date_range(date_start, date_end):
@register.filter
def get_preference(user, pref_name):
if not user:
return None
user_preferences, dummy = UserPreferences.objects.get_or_create(user=user)
if not user_preferences:
return None
return user_preferences.preferences.get(pref_name) or False