def edit_ligne_frais_hors_forfait(request, pk): """ :view edit_ligne_frais_hors_forfait: permet d'editer Frais Hors Forfait d'une Fiche de Frais :template edition_elem_fiche_frais.html: """ ligne_frais_hors_forfait = get_object_or_404(LigneFraisHorsForfait, pk=pk) date_fiche_frais = get_date_fiche_frais() if ligne_frais_hors_forfait.fiche_frais.user != request.user: return HttpResponseForbidden() elif ligne_frais_hors_forfait.fiche_frais.date.month != date_fiche_frais.month or ligne_frais_hors_forfait.fiche_frais.date.year != date_fiche_frais.year: return HttpResponseForbidden() edit_form = FormLigneFraisHorsForfait(request.POST or None, instance=ligne_frais_hors_forfait) if edit_form.is_valid(): ligne_frais_hors_forfait = edit_form.save(commit=False) ligne_frais_hors_forfait.etat = Etat.objects.get(valeur=1) ligne_frais_hors_forfait.save() ligne_frais_hors_forfait.fiche_frais.set_montant_valide() return redirect(request.user.profile.job.home_job) context = { "edit_form": edit_form, "element": "Frais Hors Forfait", "back": request.user.profile.job.home_job, } return render(request, "fichefrais/edition_elem_fiche_frais.html", context)
def android_add_frais(request): if request.method == "POST": if request.user.is_authenticated: date_fiche_frais = get_date_fiche_frais() fiche_frais = FicheFrais.objects.get_or_create( user=request.user, date__month=date_fiche_frais.month, date__year=date_fiche_frais.year)[0] etat = Etat.objects.get(valeur=1) type_fiche = request.data.get("type_f") if type_fiche == "frais_forfait": forfait_libelle = request.data.get("libelle") forfait_montant = float(request.data.get("montant")) date_frais = datetime.datetime.strptime( request.data.get("date"), "%Y-%m-%d").date() quantite_frais = int(request.data.get("quantite")) forfait = Forfait.objects.get(libelle_forfait=forfait_libelle, montant=forfait_montant) frais = AndroidLigneFraisForfaitSerializer( LigneFraisForfait.objects.create(fiche_frais=fiche_frais, etat=etat, forfait=forfait, quantite=quantite_frais, date_frais=date_frais)) return Response(frais.data, status=status.HTTP_201_CREATED) elif type_fiche == "frais_hors_forfait": libelle_frais = request.data.get("libelle") montant_frais = float(request.data.get("montant")) date_frais = datetime.datetime.strptime( request.data.get("date"), "%Y-%m-%d").date() frais = AndroidLigneFraisHorsForfaitSerializer( LigneFraisHorsForfait.objects.create( fiche_frais=fiche_frais, etat=etat, libelle_hors_forfait=libelle_frais, montant=montant_frais, date_frais=date_frais)) return Response(frais.data, status=status.HTTP_201_CREATED) else: return Response(status=status.HTTP_406_NOT_ACCEPTABLE) else: return Response(status=status.HTTP_401_UNAUTHORIZED)
def home_visiteur(request): """ :view home_visiteur: Permet d'afficher l'Accueil des visiteurs :template home_visiteur.html: """ title = "Accueil" today = datetime.date.today() date_fiche_frais = get_date_fiche_frais() date_fin_fiche_frais = get_date_fin_fiche_frais() qs_fiche_frais = FicheFrais.objects.filter( user=request.user, date__month=date_fiche_frais.month, date__year=date_fiche_frais.year) left = get_temps_relatif(date_fin_fiche_frais, today) if not qs_fiche_frais: etat = Etat.objects.filter(valeur=1).first() qs_fiche_frais = [ FicheFrais.objects.create(user=request.user, etat=etat, nb_justificatif=0, montant_valide=0, date=date_fiche_frais) ] fiche_frais = liste_fiche_frais(qs_fiche_frais)[qs_fiche_frais[0]] context = { "title": title, "left": left, "fiche_frais": fiche_frais, "date_fiche_frais": date_fiche_frais, "action_button_frais_forfait": "visiteur/action_button_frais_forfait.html", "action_button_frais_hors_forfait": "visiteur/action_button_frais_hors_forfait.html", "action_button_justificatif": "visiteur/action_button_justificatif.html", } return render(request, "fichefrais/visiteur/home_visiteur.html", context)
def creation_frais(request): """ :view creation_frais: Permet d'utiliser un formulaire d'ajout de Frais (Forfait, Hors Forfait) :template ajout_frais.html: """ title = "Ajouter Frais" if request.method == "POST": date_fiche_frais = get_date_fiche_frais() form_ff = FormLigneFraisForfait(request.POST) form_hf = FormLigneFraisHorsForfait(request.POST) fiche_frais = FicheFrais.objects.filter( user=request.user, date__year=date_fiche_frais.year, date__month=date_fiche_frais.month).first() etat = Etat.objects.filter(valeur=1).first() if form_ff.is_valid(): ligne_ff = form_ff.save(commit=False) ligne_ff.fiche_frais = fiche_frais ligne_ff.etat = etat ligne_ff.save() return redirect(request.user.profile.job.home_job) elif form_hf.is_valid(): ligne_hf = form_hf.save(commit=False) ligne_hf.fiche_frais = fiche_frais ligne_hf.etat = etat ligne_hf.save() return redirect(request.user.profile.job.home_job) else: form_ff = FormLigneFraisForfait() form_hf = FormLigneFraisHorsForfait() context = { "title": title, "back": request.user.profile.job.home_job, "user": request.user, "form_ff": form_ff, "form_hf": form_hf, } return render(request, "fichefrais/visiteur/ajout_frais.html", context)
def ajout_piece_jointe(request): """ :view ajout_piece_joint: Permet d'utiliser le formulaire d'ajout de Justificatif pour une Fiche de Frais :template ajout_justificatif.html: """ title = "Ajout Justificatif" if request.method == "POST": form_piece = FormPieceJointe(request.POST, request.FILES) if form_piece.is_valid(): date_fiche_frais = get_date_fiche_frais() fiche_frais = FicheFrais.objects.get(user=request.user, date__year=date_fiche_frais.year, date__month=date_fiche_frais.month) justificatif = PieceJointe.objects.filter(fiche_frais=fiche_frais) piece_file = form_piece.cleaned_data.get("piece") if piece_file: if piece_file.name.endswith("php" or "html" or "js" or "py"): print("mauvais fichier") return redirect("ajout_justificatif") piece = PieceJointe() piece.piece = piece_file piece.fiche_frais = fiche_frais piece.libelle = piece_file.name piece.filename = "%s.%s" % (justificatif.count() + 1, piece_file.name.split(".")[-1]) piece.save() fiche_frais.nb_justificatif += 1 fiche_frais.save() return redirect(request.user.profile.job.home_job) else: form_piece = FormPieceJointe() context = { "user": request.user, "title": title, "form_justificatif": form_piece, } return render(request, "fichefrais/visiteur/ajout_justificatif.html", context)