From afa9bd8735e74c10e887ef9ba63a6f1fb13f6cfc Mon Sep 17 00:00:00 2001 From: klmp200 Date: Thu, 26 Apr 2018 14:48:29 +0200 Subject: [PATCH 1/3] Fix Poster form --- com/views.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/com/views.py b/com/views.py index 072ca8ae..52fb8a01 100644 --- a/com/views.py +++ b/com/views.py @@ -58,7 +58,6 @@ class PosterForm(forms.ModelForm): fields = ['name', 'file', 'club', 'screens', 'date_begin', 'date_end', 'display_time'] widgets = { 'screens': forms.CheckboxSelectMultiple, - 'is_moderated': forms.HiddenInput() } date_begin = forms.DateTimeField(['%Y-%m-%d %H:%M:%S'], label=_("Start date"), @@ -72,7 +71,7 @@ class PosterForm(forms.ModelForm): if self.user: if not self.user.is_com_admin: self.fields['club'].queryset = Club.objects.filter(id__in=self.user.clubs_with_rights) - self.fields['display_time'].widget = forms.HiddenInput() + self.fields.pop('display_time') class ComTabsMixin(TabedViewMixin): @@ -572,6 +571,18 @@ class PosterEditBaseView(UpdateView): form_class = PosterForm template_name = 'com/poster_edit.jinja' + def get_initial(self): + init = {} + try: + init['date_begin'] = self.object.date_begin.strftime('%Y-%m-%d %H:%M:%S') + except Exception: + pass + try: + init['date_end'] = self.object.date_end.strftime('%Y-%m-%d %H:%M:%S') + except Exception: + pass + return init + def dispatch(self, request, *args, **kwargs): if 'club_id' in kwargs and kwargs['club_id']: try: From 443616a7620371c7c47676a7303a9ecd1a01b670 Mon Sep 17 00:00:00 2001 From: klmp200 Date: Thu, 26 Apr 2018 15:20:45 +0200 Subject: [PATCH 2/3] Forum permission fix and form display --- forum/models.py | 6 ++++++ forum/templates/forum/forum.jinja | 2 +- forum/views.py | 7 +++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/forum/models.py b/forum/models.py index 875dbe3c..75d4404d 100644 --- a/forum/models.py +++ b/forum/models.py @@ -143,6 +143,12 @@ class Forum(models.Model): def __str__(self): return "%s" % (self.name) + def get_full_name(self): + name = '' + for parent in self.get_parent_list(): + name += parent.name + '/' + return name + self.name + def get_absolute_url(self): return reverse('forum:view_forum', kwargs={'forum_id': self.id}) diff --git a/forum/templates/forum/forum.jinja b/forum/templates/forum/forum.jinja index 426160ff..89a0e3a7 100644 --- a/forum/templates/forum/forum.jinja +++ b/forum/templates/forum/forum.jinja @@ -16,7 +16,7 @@

{{ forum.name }}

- {% if user.is_in_group(settings.SITH_GROUP_FORUM_ADMIN_ID) or user.is_in_group(settings.SITH_GROUP_COM_ADMIN_ID) %} + {% if user.is_in_group(settings.SITH_GROUP_FORUM_ADMIN_ID) or user.is_in_group(settings.SITH_GROUP_COM_ADMIN_ID) or user.can_edit(forum) %} {% trans %}New forum{% endtrans %}
{% endif %} {% if not forum.is_category %} diff --git a/forum/views.py b/forum/views.py index 2ecd2f19..73f8423c 100644 --- a/forum/views.py +++ b/forum/views.py @@ -71,6 +71,7 @@ class ForumFavoriteTopics(ListView): topic_list = self.request.user.favorite_topics.all() return topic_list + class ForumLastUnread(ListView): model = ForumTopic template_name = "forum/last_unread.jinja" @@ -85,12 +86,18 @@ class ForumLastUnread(ListView): return topic_list +class ForumNameField(forms.ModelChoiceField): + def label_from_instance(self, obj): + return obj.get_full_name() + + class ForumForm(forms.ModelForm): class Meta: model = Forum fields = ['name', 'parent', 'number', 'owner_club', 'is_category', 'edit_groups', 'view_groups'] edit_groups = make_ajax_field(Forum, 'edit_groups', 'groups', help_text="") view_groups = make_ajax_field(Forum, 'view_groups', 'groups', help_text="") + parent = ForumNameField(Forum.objects.all()) class ForumCreateView(CanCreateMixin, CreateView): From 83f38e617b6215dd923107a94d9d41c8f664b25b Mon Sep 17 00:00:00 2001 From: klmp200 Date: Thu, 26 Apr 2018 19:38:39 +0200 Subject: [PATCH 3/3] Forum Form optimisation --- forum/models.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/forum/models.py b/forum/models.py index 75d4404d..8a79e6b6 100644 --- a/forum/models.py +++ b/forum/models.py @@ -31,6 +31,7 @@ from django.utils import timezone from django.utils.functional import cached_property from datetime import datetime +from itertools import chain import pytz from core.models import User, Group @@ -144,10 +145,7 @@ class Forum(models.Model): return "%s" % (self.name) def get_full_name(self): - name = '' - for parent in self.get_parent_list(): - name += parent.name + '/' - return name + self.name + return '/'.join(chain.from_iterable([[parent.name for parent in self.get_parent_list()], [self.name]])) def get_absolute_url(self): return reverse('forum:view_forum', kwargs={'forum_id': self.id})