forked from DGNum/gestioCOF
Add Wagtail CMS for kfet app.
K-Fêt - Integrate wagtail to serve "static" pages of old K-Fêt website - Fixture "kfetcms/kfet_wagtail_17_05" contains a copy of old website (as in May 2017). - Media files can be got until end of June 17 at http://partage.eleves.ens.fr//files/604e6dea2ceebc66b1936c6b3f911744/kfet_media.tar.gz Login/logout - Update package django_cas_ng to last version. - Clean COFCASBackend. - Change CAS version to 3 (version used on eleves.ens). This enables the logout redirection (for CAS ofc). - Add messages and clean existing ones on login/logout (for both outsider and cas users). Misc - Update settings to bypass an incompability between debug-toolbar and wagtailmenus packages. - Better management of dev/test-specific urls (if debug-toolbar wasn't in INSTALLED_APPS, media files were not served). - UI improvements.
This commit is contained in:
parent
b13e992a30
commit
8c6d56b27c
67 changed files with 3038 additions and 618 deletions
|
@ -23,6 +23,9 @@ from django.db.models.functions import Coalesce
|
|||
from django.utils import timezone
|
||||
from django.utils.crypto import get_random_string
|
||||
from django.utils.decorators import method_decorator
|
||||
|
||||
from django_cas_ng.views import logout as cas_logout_view
|
||||
|
||||
from gestioncof.models import CofProfile
|
||||
|
||||
from kfet.config import kfet_config
|
||||
|
@ -47,48 +50,21 @@ from collections import defaultdict
|
|||
from kfet import consumers
|
||||
from datetime import timedelta
|
||||
from decimal import Decimal
|
||||
import django_cas_ng
|
||||
import heapq
|
||||
import statistics
|
||||
from kfet.statistic import ScaleMixin, last_stats_manifest, tot_ventes, WeekScale
|
||||
|
||||
|
||||
class Home(TemplateView):
|
||||
template_name = "kfet/home.html"
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
articles = list(
|
||||
Article.objects
|
||||
.filter(is_sold=True, hidden=False)
|
||||
.select_related('category')
|
||||
.order_by('category__name')
|
||||
)
|
||||
pressions, others = [], []
|
||||
while len(articles) > 0:
|
||||
article = articles.pop()
|
||||
if article.category.name == 'Pression':
|
||||
pressions.append(article)
|
||||
else:
|
||||
others.append(article)
|
||||
context['pressions'], context['articles'] = pressions, others
|
||||
return context
|
||||
|
||||
@method_decorator(login_required)
|
||||
def dispatch(self, *args, **kwargs):
|
||||
return super(TemplateView, self).dispatch(*args, **kwargs)
|
||||
|
||||
|
||||
@teamkfet_required
|
||||
def login_genericteam(request):
|
||||
# Check si besoin de déconnecter l'utilisateur de CAS
|
||||
profile, _ = CofProfile.objects.get_or_create(user=request.user)
|
||||
need_cas_logout = False
|
||||
if profile.login_clipper:
|
||||
need_cas_logout = True
|
||||
profile = getattr(request.user, 'profile', None)
|
||||
cas_logout = None
|
||||
if profile and profile.login_clipper:
|
||||
# Récupèration de la vue de déconnexion de CAS
|
||||
# Ici, car request sera modifié après
|
||||
logout_cas = django_cas_ng.views.logout(request)
|
||||
next_page = request.META.get('HTTP_REFERER', None)
|
||||
cas_logout = cas_logout_view(request, next_page=next_page)
|
||||
|
||||
# Authentification du compte générique
|
||||
token = GenericTeamToken.objects.create(token=get_random_string(50))
|
||||
|
@ -97,11 +73,8 @@ def login_genericteam(request):
|
|||
|
||||
messages.success(request, "Connecté en utilisateur partagé")
|
||||
|
||||
if need_cas_logout:
|
||||
# Vue de déconnexion de CAS
|
||||
return logout_cas
|
||||
return cas_logout or render(request, "kfet/login_genericteam.html")
|
||||
|
||||
return render(request, "kfet/login_genericteam.html")
|
||||
|
||||
def put_cleaned_data_in_dict(dict, form):
|
||||
for field in form.cleaned_data:
|
||||
|
@ -368,8 +341,9 @@ def account_read(request, trigramme):
|
|||
account = get_object_or_404(Account, trigramme=trigramme)
|
||||
|
||||
# Checking permissions
|
||||
if not request.user.has_perm('kfet.is_team') \
|
||||
and request.user != account.user:
|
||||
if not account.readable or (
|
||||
not request.user.has_perm('kfet.is_team') and
|
||||
request.user != account.user):
|
||||
raise PermissionDenied
|
||||
|
||||
addcosts = (
|
||||
|
@ -2056,6 +2030,7 @@ def order_to_inventory(request, pk):
|
|||
messages.success(request, "C'est tout bon !")
|
||||
return redirect('kfet.order')
|
||||
else:
|
||||
print(formset.errors)
|
||||
messages.error(request, "Corrigez les erreurs")
|
||||
else:
|
||||
formset = cls_formset(initial=initial)
|
||||
|
@ -2324,7 +2299,7 @@ class AccountStatBalance(PkUrlMixin, JSONDetailView):
|
|||
)
|
||||
|
||||
context['charts'] = [{
|
||||
"color": "rgb(255, 99, 132)",
|
||||
"color": "rgb(200, 20, 60)",
|
||||
"label": "Balance",
|
||||
"values": changes,
|
||||
}]
|
||||
|
@ -2419,7 +2394,7 @@ class AccountStatOperation(ScaleMixin, PkUrlMixin, JSONDetailView):
|
|||
ventes = sum(ope['article_nb'] for ope in chunk)
|
||||
nb_ventes.append(ventes)
|
||||
|
||||
context['charts'] = [{"color": "rgb(255, 99, 132)",
|
||||
context['charts'] = [{"color": "rgb(200, 20, 60)",
|
||||
"label": "NB items achetés",
|
||||
"values": nb_ventes}]
|
||||
return context
|
||||
|
@ -2501,7 +2476,7 @@ class ArticleStatSales(ScaleMixin, JSONDetailView):
|
|||
nb_accounts.append(sum_accounts)
|
||||
nb_liq.append(sum_liq)
|
||||
|
||||
context['charts'] = [{"color": "rgb(255, 99, 132)",
|
||||
context['charts'] = [{"color": "rgb(200, 20, 60)",
|
||||
"label": "Toutes consommations",
|
||||
"values": nb_ventes},
|
||||
{"color": "rgb(54, 162, 235)",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue