mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-10-31 07:49:57 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			72 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Copyright (C) 2018-2025 by BDE ENS Paris-Saclay
 | |
| # SPDX-License-Identifier: GPL-3.0-or-later
 | |
| 
 | |
| import json
 | |
| 
 | |
| from django.contrib.auth.mixins import LoginRequiredMixin
 | |
| from django.utils.translation import gettext_lazy as _
 | |
| from django.views.generic import DetailView
 | |
| from django.views.generic.list import ListView
 | |
| from django_tables2.views import MultiTableMixin
 | |
| from permission.backends import PermissionBackend
 | |
| from permission.views import ProtectQuerysetMixin
 | |
| 
 | |
| from .models import Wrapped
 | |
| from .tables import WrappedTable
 | |
| 
 | |
| 
 | |
| class WrappedListView(ProtectQuerysetMixin, LoginRequiredMixin, MultiTableMixin, ListView):
 | |
|     """
 | |
|     Display all Wrapped, and classify by year
 | |
|     """
 | |
|     model = Wrapped
 | |
|     tables = [
 | |
|         lambda data: WrappedTable(data, prefix="public-"),
 | |
|         lambda data: WrappedTable(data, prefix="personnal-"),
 | |
|     ]
 | |
|     template_name = 'wrapped/wrapped_list.html'
 | |
|     extra_context = {'title': _("List of wrapped")}
 | |
| 
 | |
|     def get_queryset(self, **kwargs):
 | |
|         return super().get_queryset(**kwargs).distinct()
 | |
| 
 | |
|     def get_tables_data(self):
 | |
|         return [
 | |
|             Wrapped.objects.filter(public=True),
 | |
|             Wrapped.objects
 | |
|             .filter(PermissionBackend.filter_queryset(self.request, Wrapped, "change", field='public'))
 | |
|             .distinct()
 | |
|             .order_by("-bde__date_start")
 | |
|         ]
 | |
| 
 | |
|     def get_context_data(self, **kwargs):
 | |
|         context = super().get_context_data(**kwargs)
 | |
|         w = self.object_list.filter(note__noteclub__club__pk__gte=-1, public=False)
 | |
|         if w:
 | |
|             context['club_not_public'] = 'true'
 | |
|         else:
 | |
|             context['club_not_public'] = 'false'
 | |
|         return context
 | |
| 
 | |
| 
 | |
| class WrappedDetailView(ProtectQuerysetMixin, LoginRequiredMixin, DetailView):
 | |
|     """
 | |
|     View a wrapped
 | |
|     """
 | |
|     model = Wrapped
 | |
|     template_name = 'wrapped/0/wrapped_view.html'  # by default
 | |
| 
 | |
|     def get(self, *args, **kwargs):
 | |
|         bde_id = Wrapped.objects.get(pk=kwargs['pk']).bde.id
 | |
|         note_type = 'user' if 'user' in Wrapped.objects.get(pk=kwargs['pk']).note.__dir__() else 'club'
 | |
|         self.template_name = 'wrapped/' + str(bde_id) + '/wrapped_view_' + note_type + '.html'
 | |
|         return super().get(*args, **kwargs)
 | |
| 
 | |
|     def get_context_data(self, **kwargs):
 | |
|         context = super().get_context_data(**kwargs)
 | |
|         d = json.loads(self.object.data_json)
 | |
|         for key in d:
 | |
|             context[key] = d[key]
 | |
|         context['title'] = str(self.object)
 | |
|         return context
 |