mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-10-31 07:49:57 +01:00 
			
		
		
		
	Allow to order the 2 tables and to fix the bug of several activities
This commit is contained in:
		| @@ -17,7 +17,8 @@ from django.utils.translation import gettext_lazy as _ | ||||
| from django.views import View | ||||
| from django.views.decorators.cache import cache_page | ||||
| from django.views.generic import DetailView, TemplateView, UpdateView | ||||
| from django_tables2.views import SingleTableView | ||||
| from django.views.generic.list import ListView | ||||
| from django_tables2.views import MultiTableMixin | ||||
| from note.models import Alias, NoteSpecial, NoteUser | ||||
| from permission.backends import PermissionBackend | ||||
| from permission.views import ProtectQuerysetMixin, ProtectedCreateView | ||||
| @@ -57,27 +58,40 @@ class ActivityCreateView(ProtectQuerysetMixin, ProtectedCreateView): | ||||
|         return reverse_lazy('activity:activity_detail', kwargs={"pk": self.object.pk}) | ||||
|  | ||||
|  | ||||
| class ActivityListView(ProtectQuerysetMixin, LoginRequiredMixin, SingleTableView): | ||||
| class ActivityListView(ProtectQuerysetMixin, LoginRequiredMixin, MultiTableMixin, ListView): | ||||
|     """ | ||||
|     Displays all Activities, and classify if they are on-going or upcoming ones. | ||||
|     """ | ||||
|     model = Activity | ||||
|     table_class = ActivityTable | ||||
|     ordering = ('-date_start',) | ||||
|     tables = [ActivityTable, ActivityTable] | ||||
|     extra_context = {"title": _("Activities")} | ||||
|  | ||||
|     def get_queryset(self, **kwargs): | ||||
|         return super().get_queryset(**kwargs).distinct() | ||||
|  | ||||
|     def get_tables(self): | ||||
|         tables = super().get_tables() | ||||
|  | ||||
|         tables[0].prefix = "all-" | ||||
|         tables[1].prefix = "upcoming-" | ||||
|         return tables | ||||
|  | ||||
|     def get_tables_data(self): | ||||
|         # first table = all activities, second table = upcoming | ||||
|         return [ | ||||
|             self.get_queryset().order_by("-date_start"), | ||||
|             Activity.objects.filter(date_end__gt=timezone.now()) | ||||
|                             .filter(PermissionBackend.filter_queryset(self.request, Activity, "view")) | ||||
|                             .distinct() | ||||
|                             .order_by("date_start") | ||||
|         ] | ||||
|  | ||||
|     def get_context_data(self, **kwargs): | ||||
|         context = super().get_context_data(**kwargs) | ||||
|  | ||||
|         upcoming_activities = Activity.objects.filter(date_end__gt=timezone.now()) | ||||
|         context['upcoming'] = ActivityTable( | ||||
|             data=upcoming_activities.filter(PermissionBackend.filter_queryset(self.request, Activity, "view")), | ||||
|             prefix='upcoming-', | ||||
|             order_by='date_start', | ||||
|         ) | ||||
|         tables = context["tables"] | ||||
|         for name, table in zip(["table", "upcoming"], tables): | ||||
|             context[name] = table | ||||
|  | ||||
|         started_activities = self.get_queryset().filter(open=True, valid=True).distinct().all() | ||||
|         context["started_activities"] = started_activities | ||||
|   | ||||
| @@ -400,37 +400,37 @@ msgstr "Inviter" | ||||
| msgid "Create new activity" | ||||
| msgstr "Créer une nouvelle activité" | ||||
|  | ||||
| #: apps/activity/views.py:67 note_kfet/templates/base.html:90 | ||||
| #: apps/activity/views.py:68 note_kfet/templates/base.html:90 | ||||
| msgid "Activities" | ||||
| msgstr "Activités" | ||||
|  | ||||
| #: apps/activity/views.py:93 | ||||
| #: apps/activity/views.py:108 | ||||
| msgid "Activity detail" | ||||
| msgstr "Détails de l'activité" | ||||
|  | ||||
| #: apps/activity/views.py:113 | ||||
| #: apps/activity/views.py:128 | ||||
| msgid "Update activity" | ||||
| msgstr "Modifier l'activité" | ||||
|  | ||||
| #: apps/activity/views.py:140 | ||||
| #: apps/activity/views.py:155 | ||||
| msgid "Invite guest to the activity \"{}\"" | ||||
| msgstr "Invitation pour l'activité « {} »" | ||||
|  | ||||
| #: apps/activity/views.py:178 | ||||
| #: apps/activity/views.py:193 | ||||
| msgid "You are not allowed to display the entry interface for this activity." | ||||
| msgstr "" | ||||
| "Vous n'êtes pas autorisé·e à afficher l'interface des entrées pour cette " | ||||
| "activité." | ||||
|  | ||||
| #: apps/activity/views.py:181 | ||||
| #: apps/activity/views.py:196 | ||||
| msgid "This activity does not support activity entries." | ||||
| msgstr "Cette activité ne requiert pas d'entrées." | ||||
|  | ||||
| #: apps/activity/views.py:184 | ||||
| #: apps/activity/views.py:199 | ||||
| msgid "This activity is closed." | ||||
| msgstr "Cette activité est fermée." | ||||
|  | ||||
| #: apps/activity/views.py:280 | ||||
| #: apps/activity/views.py:295 | ||||
| msgid "Entry for activity \"{}\"" | ||||
| msgstr "Entrées pour l'activité « {} »" | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user