Ce serveur Gitlab sera éteint le 30 juin 2020, pensez à migrer vos projets vers les serveurs gitlab-research.centralesupelec.fr et gitlab-student.centralesupelec.fr !

views.py 3.16 KB
Newer Older
1 2 3 4 5 6 7 8
# App de gestion des users pour re2o
# Goulven Kermarec, Gabriel Détraz
# Gplv2
from django.shortcuts import render, redirect
from django.shortcuts import render_to_response, get_object_or_404
from django.core.context_processors import csrf
from django.template import Context, RequestContext, loader
from django.contrib import messages
9
from django.db.models import Max
10

11
from cotisations.models import NewFactureForm, EditFactureForm, Facture, Article, Cotisation
12
from users.models import User
13

14
from dateutil.relativedelta import relativedelta
15
from django.utils import timezone
16

17 18 19 20 21
def form(ctx, template, request):
    c = ctx
    c.update(csrf(request))
    return render_to_response(template, c, context_instance=RequestContext(request))

22 23 24 25 26 27 28 29
def end_adhesion(user):
    """ Renvoie la date de fin d'adhésion d'un user, False sinon """
    date_max = Cotisation.objects.all().filter(facture=Facture.objects.all().filter(user=user)).aggregate(Max('date_end'))['date_end__max']
    return date_max

def create_cotis(facture, user, article):
    """ Update et crée l'objet cotisation associé à une facture, prend en argument l'user, la facture pour la quantitéi, et l'article pour la durée"""
    cotisation=Cotisation(facture=facture)
30 31 32 33
    date_max = end_adhesion(user) or timezone.now()
    if date_max < timezone.now():
        datemax = timezone.now()
    cotisation.date_start=date_max
34 35 36 37
    cotisation.date_end = cotisation.date_start + relativedelta(months=article[0].duration*facture.number) 
    cotisation.save()
    return

38
def new_facture(request, userid):
39 40 41 42 43 44
    try:
        user = User.objects.get(pk=userid)
    except User.DoesNotExist:
        messages.error(request, u"Utilisateur inexistant" )
        return redirect("/cotisations/")
    facture = Facture(user=user)
45 46
    facture_form = NewFactureForm(request.POST or None, instance=facture)
    if facture_form.is_valid():
47 48 49 50 51
        new_facture = facture_form.save(commit=False)
        article = facture_form.cleaned_data['article']
        new_facture.prix = article[0].prix
        new_facture.name = article[0].name
        new_facture.save()
52 53 54 55 56
        if article[0].cotisation == True:
            create_cotis(new_facture, user, article)
            messages.success(request, "La cotisation a été prolongée pour l'adhérent %s " % user.name )
        else:
            messages.success(request, "La facture a été crée")
57 58 59 60 61 62 63 64 65 66 67 68 69 70
        return redirect("/cotisations/")
    return form({'factureform': facture_form}, 'cotisations/facture.html', request)

def edit_facture(request, factureid):
    try:
        facture = Facture.objects.get(pk=factureid)
    except Facture.DoesNotExist:
        messages.error(request, u"Facture inexistante" )
        return redirect("/cotisations/")
    facture_form = EditFactureForm(request.POST or None, instance=facture)
    if facture_form.is_valid():
        facture_form.save()
        messages.success(request, "La facture a bien été modifiée")
        return redirect("/cotisations/")
71
    return form({'factureform': facture_form}, 'cotisations/facture.html', request)
72 73 74 75

def index(request):
    facture_list = Facture.objects.order_by('pk')
    return render(request, 'cotisations/index.html', {'facture_list': facture_list})