Compare commits
1 Commits
37850a288b
...
a64aa47c1e
Author | SHA1 | Date |
---|---|---|
Yann Weber | a64aa47c1e |
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
),
|
||||
),
|
||||
],
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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 %}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue