From f3df8d70e1789f0966fb6993c41f2df540dde20d Mon Sep 17 00:00:00 2001 From: Hugo Levy-Falk Date: Sat, 10 Jul 2021 21:42:45 +0200 Subject: [PATCH] First commit --- .gitignore | 302 +++++++++++++++++++++++++++++++++++++++++++ .latexmkrc | 24 ++++ Makefile | 14 ++ presentation.pdf | Bin 0 -> 96687 bytes presentation.tex | 326 +++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 666 insertions(+) create mode 100644 .gitignore create mode 100644 .latexmkrc create mode 100644 Makefile create mode 100644 presentation.pdf create mode 100644 presentation.tex diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e06903f --- /dev/null +++ b/.gitignore @@ -0,0 +1,302 @@ + +# Created by https://www.toptal.com/developers/gitignore/api/latex +# Edit at https://www.toptal.com/developers/gitignore?templates=latex + +### LaTeX ### +## Core latex/pdflatex auxiliary files: +*.aux +*.lof +*.log +*.lot +*.fls +*.out +*.toc +*.fmt +*.fot +*.cb +*.cb2 +.*.lb + +## Intermediate documents: +*.dvi +*.xdv +*-converted-to.* +# these rules might exclude image files for figures etc. +# *.ps +# *.eps +# *.pdf + +## Generated if empty string is given at "Please type another file name for output:" +.pdf + +## Bibliography auxiliary files (bibtex/biblatex/biber): +*.bbl +*.bcf +*.blg +*-blx.aux +*-blx.bib +*.run.xml + +## Build tool auxiliary files: +*.fdb_latexmk +*.synctex +*.synctex(busy) +*.synctex.gz +*.synctex.gz(busy) +*.pdfsync + +## Build tool directories for auxiliary files +# latexrun +latex.out/ + +## Auxiliary and intermediate files from other packages: +# algorithms +*.alg +*.loa + +# achemso +acs-*.bib + +# amsthm +*.thm + +# beamer +*.nav +*.pre +*.snm +*.vrb + +# changes +*.soc + +# comment +*.cut + +# cprotect +*.cpt + +# elsarticle (documentclass of Elsevier journals) +*.spl + +# endnotes +*.ent + +# fixme +*.lox + +# feynmf/feynmp +*.mf +*.mp +*.t[1-9] +*.t[1-9][0-9] +*.tfm + +#(r)(e)ledmac/(r)(e)ledpar +*.end +*.?end +*.[1-9] +*.[1-9][0-9] +*.[1-9][0-9][0-9] +*.[1-9]R +*.[1-9][0-9]R +*.[1-9][0-9][0-9]R +*.eledsec[1-9] +*.eledsec[1-9]R +*.eledsec[1-9][0-9] +*.eledsec[1-9][0-9]R +*.eledsec[1-9][0-9][0-9] +*.eledsec[1-9][0-9][0-9]R + +# glossaries +*.acn +*.acr +*.glg +*.glo +*.gls +*.glsdefs +*.lzo +*.lzs + +# uncomment this for glossaries-extra (will ignore makeindex's style files!) +# *.ist + +# gnuplottex +*-gnuplottex-* + +# gregoriotex +*.gaux +*.glog +*.gtex + +# htlatex +*.4ct +*.4tc +*.idv +*.lg +*.trc +*.xref + +# hyperref +*.brf + +# knitr +*-concordance.tex +# TODO Uncomment the next line if you use knitr and want to ignore its generated tikz files +# *.tikz +*-tikzDictionary + +# listings +*.lol + +# luatexja-ruby +*.ltjruby + +# makeidx +*.idx +*.ilg +*.ind + +# minitoc +*.maf +*.mlf +*.mlt +*.mtc[0-9]* +*.slf[0-9]* +*.slt[0-9]* +*.stc[0-9]* + +# minted +_minted* +*.pyg + +# morewrites +*.mw + +# newpax +*.newpax + +# nomencl +*.nlg +*.nlo +*.nls + +# pax +*.pax + +# pdfpcnotes +*.pdfpc + +# sagetex +*.sagetex.sage +*.sagetex.py +*.sagetex.scmd + +# scrwfile +*.wrt + +# sympy +*.sout +*.sympy +sympy-plots-for-*.tex/ + +# pdfcomment +*.upa +*.upb + +# pythontex +*.pytxcode +pythontex-files-*/ + +# tcolorbox +*.listing + +# thmtools +*.loe + +# TikZ & PGF +*.dpth +*.md5 +*.auxlock + +# todonotes +*.tdo + +# vhistory +*.hst +*.ver + +# easy-todo +*.lod + +# xcolor +*.xcp + +# xmpincl +*.xmpi + +# xindy +*.xdy + +# xypic precompiled matrices and outlines +*.xyc +*.xyd + +# endfloat +*.ttt +*.fff + +# Latexian +TSWLatexianTemp* + +## Editors: +# WinEdt +*.bak +*.sav + +# Texpad +.texpadtmp + +# LyX +*.lyx~ + +# Kile +*.backup + +# gummi +.*.swp + +# KBibTeX +*~[0-9]* + +# TeXnicCenter +*.tps + +# auto folder when using emacs and auctex +./auto/* +*.el + +# expex forward references with \gathertags +*-tags.tex + +# standalone packages +*.sta + +# Makeindex log files +*.lpz + +# xwatermark package +*.xwm + +# REVTeX puts footnotes in the bibliography by default, unless the nofootinbib +# option is specified. Footnotes are the stored in a file with suffix Notes.bib. +# Uncomment the next line to have this generated file ignored. +#*Notes.bib + +### LaTeX Patch ### +# LIPIcs / OASIcs +*.vtc + +# glossaries +*.glstex + +# End of https://www.toptal.com/developers/gitignore/api/latex diff --git a/.latexmkrc b/.latexmkrc new file mode 100644 index 0000000..4690487 --- /dev/null +++ b/.latexmkrc @@ -0,0 +1,24 @@ +# LaTeXmk configuration file + +# Usage example +# latexmk file.tex + +# Main command line options +# -pdf : generate pdf using pdflatex +# -pv : run file previewer +# -pvc : run file previewer and continually recompile on change +# -C : clean up by removing all regeneratable files + +# Generate pdf using pdflatex (-pdf) +$pdf_mode = 1; + +# Define command to compile with pdfsync support and nonstopmode +$pdflatex = 'lualatex -shell-escape'; + +# Use default pdf viewer (Skim) +$pdf_previewer = 'evince'; + +# Also remove pdfsync files on clean +$clean_ext = 'pdfsync synctex.gz'; + +$ENV{'TEXINPUTS'}='/home/klafyvel/Documents/asso/rezo/formations/SystèmePaiementRe2o/rmrf-latex:' . $ENV{'TEXINPUTS'}; diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..89d6569 --- /dev/null +++ b/Makefile @@ -0,0 +1,14 @@ +# Makefile for presentation + +.PHONY: presentation.pdf all clean + +all: presentation.pdf + +presentation.pdf: presentation.tex + latexmk -use-make $< + +cleanall: + latexmk -C + +clean: + latexmk -c \ No newline at end of file diff --git a/presentation.pdf b/presentation.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8339e2e475d4622395287abea817a5484f296ccd GIT binary patch literal 96687 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� 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 Représente une facture; + \item<2-> Visible par les adhérents; + \item<3-> Est censé être controlée par les trésoriers. + \end{itemize} +\end{column} +\begin{column}{0.5\textwidth} + \begin{minted}[fontsize=\footnotesize,]{python} +class Facture(BaseInvoice): + user = models.ForeignKey("users.User",...) + paiement = models.ForeignKey("Paiement", ...) + banque = models.ForeignKey("Banque", ...) + cheque = models.CharField(...) + valid = models.BooleanField(...) + control = models.BooleanField(...) +\end{minted} +\end{column} +\end{columns} +\end{frame} +\begin{frame}[fragile]{L'objet Vente} +\begin{columns} +\begin{column}{0.5\textwidth} + \begin{itemize} + \item Représente une vente de \verb|number| articles(s) au prix unitaire \verb|prix|; + \item Stocke une information sur la durée d'adhésion / cotisation. + \end{itemize} +\end{column} +\begin{column}{0.5\textwidth} + \begin{minted}[fontsize=\footnotesize,]{python} +class Vente(RevMixin, AclMixin, models.Model): + facture = models.ForeignKey("BaseInvoice", ...) + number = models.IntegerField(...) + name = models.CharField(...) + prix = models.DecimalField(...) + duration_connection = models.PositiveIntegerField(...) + duration_days_connection = models.PositiveIntegerField(...) + duration_membership = models.PositiveIntegerField(...) + duration_days_membership = models.PositiveIntegerField(...) +\end{minted} +\end{column} +\end{columns} +\end{frame} +\begin{frame}[fragile]{L'objet Article} +\begin{columns} +\begin{column}{0.5\textwidth} + \begin{itemize} + \item Une recette pour créer des \verb|Vente|s; + \item On ne lie pas directement les ventes aux articles, on peut supprimer les articles sans contrainte. + \end{itemize} +\end{column} +\begin{column}{0.5\textwidth} + \begin{minted}[fontsize=\footnotesize,]{python} +class Article(RevMixin, AclMixin, models.Model): + name = models.CharField(...) + prix = models.DecimalField(...) + duration_membership = models.PositiveIntegerField(...) + duration_days_membership = models.PositiveIntegerField(...) + duration_connection = models.PositiveIntegerField(...) + duration_days_connection = models.PositiveIntegerField(...) + need_membership = models.BooleanField(...) + type_user = models.CharField(...) + available_for_everyone = models.BooleanField(...) +\end{minted} +\end{column} +\end{columns} +\end{frame} +\begin{frame}[fragile]{L'objet Cotisation} +\begin{columns} +\begin{column}{0.5\textwidth} + \begin{itemize} + \item Information sur les adhésions / cotisations des utilisateurs; + \item C’est ce qui est utilisé par l’objet \verb|User| pour savoir si un utilisateur est adhérent. + \end{itemize} +\end{column} +\begin{column}{0.5\textwidth} + \begin{minted}[fontsize=\footnotesize,]{python} +class Cotisation(RevMixin, AclMixin, models.Model): + vente = models.OneToOneField("Vente",...) + date_start_con = models.DateTimeField(...) + date_end_con = models.DateTimeField(...) + date_start_memb = models.DateTimeField(...) + date_end_memb = models.DateTimeField(...) +\end{minted} +\end{column} +\end{columns} +\end{frame} +\begin{frame}[fragile]{L'objet Paiement} +\begin{columns} +\begin{column}{0.5\textwidth} + \begin{itemize} + \item Enregistre un moyen de paiement; + \item On peut y brancher des méthodes de paiement personnalisées. + \end{itemize} +\end{column} +\begin{column}{0.5\textwidth} + \begin{minted}[fontsize=\footnotesize,]{python} +class Paiement(RevMixin, AclMixin, models.Model): + moyen = models.CharField(...) + available_for_everyone = models.BooleanField(...) + is_balance = models.BooleanField(...) +\end{minted} +\end{column} +\end{columns} +\end{frame} + +\section{La vue new\_facture} + +\begin{frame}[fragile] +\begin{columns} +\begin{column}{0.5\textwidth} + \begin{minted}[fontsize=\footnotesize,]{python} +@login_required +@can_create(Facture) +@can_edit(User) +def new_facture(request, user, userid): + """De la doc...""" + invoice = Facture(user=user) + article_list = Article.objects.filter(...) + invoice_form = FactureForm(...) + article_formset = formset_factory(SelectArticleForm)(...) + if invoice_form.is_valid() and article_formset.is_valid(): + # On verra après + + # Gestion du solde + p = Paiement.objects.filter(is_balance=True) + if len(p) and p[0].can_use_payment(request.user): + balance = user.solde + else: + balance = None + + return form(...) +\end{minted} +\end{column} +\begin{column}{0.5\textwidth} + Vue assez classique de formulaire Django. +\end{column} +\end{columns} +\end{frame} + +\begin{frame}[fragile]{À l'intérieur de ce if} + \begin{minted}[fontsize=\footnotesize,]{python} +new_invoice_instance = invoice_form.save(commit=False) +articles = article_formset +# Check if at least one article has been selected +if any(art.cleaned_data for art in articles): + # Encore un peu de patience, slide suivante +else : + messages.error(request, _("You need to choose at least one article.")) + \end{minted} +\end{frame} +\begin{frame} + \vspace{2cm} + \centering{\Huge\textbf{Roulement de tambours...}} +\end{frame} + +\begin{frame}[fragile] + \begin{columns} + \begin{column}{0.5\textwidth} + \begin{minted}[fontsize=\footnotesize,]{python} +# Building a purchase for each article sold +purchases = [] +total_price = 0 +for art_item in articles: + if art_item.cleaned_data: + article = art_item.cleaned_data["article"] + quantity = art_item.cleaned_data["quantity"] + total_price += article.prix * quantity + new_purchase = Vente(...) + purchases.append(new_purchase) +p = find_payment_method(new_invoice_instance.paiement) +if hasattr(p, "check_price"): + price_ok, msg = p.check_price(total_price, user) + invoice_form.add_error(None, msg) +else: + price_ok = True + \end{minted} + \end{column} + \begin{column}{0.5\textwidth} + + \begin{minted}[fontsize=\footnotesize,]{python} +if price_ok: + new_invoice_instance.save() + # Saving purchases so the invoice can find them. Invoice + # will modify them after being validated to put the right dates. + for p in purchases: + p.facture = new_invoice_instance + p.save() + return new_invoice_instance.paiement.end_payment( + new_invoice_instance, request + ) + \end{minted} +\end{column} +\end{columns} +\end{frame} + +\begin{frame}[fragile]{Le retour du modèle Paiement} +\begin{columns} + \begin{column}{0.5\textwidth} + Pour finir un paiement, + \begin{itemize} + \item Si une méthode de paiement personnalisée existe et que la transisition n'est pas explicitement interdite, on branche; + \item Sinon on valide la facture, on affiche un message et on redirige. + \end{itemize} + \end{column} +\begin{column}{0.5\textwidth} +\begin{minted}[fontsize=\footnotesize,]{python} +def end_payment(self, invoice, request, + use_payment_method=True): + payment_method = find_payment_method(self) + if payment_method is not None \ + and use_payment_method: + return payment_method.end_payment(invoice, + request) + + # So make this invoice valid, trigger send mail + invoice.valid = True + invoice.save(request=request) + + # Du code pas intéressant + return redirect(...) + \end{minted} +\end{column} +\end{columns} +\end{frame} + +\section{Un exemple simple : FreePayment} + +\begin{frame}[fragile] +\begin{columns} +\begin{column}{0.5\textwidth} +\begin{minted}[fontsize=\footnotesize,]{python} +class FreePayment(PaymentMethodMixin, models.Model): + """...""" + + class Meta: + verbose_name = _("Free payment") + + payment = models.OneToOneField( + Paiement, + on_delete=models.CASCADE, + related_name="payment_method_free", + editable=False, + ) +\end{minted} +\end{column} +\begin{column}{0.5\textwidth} +\begin{minted}[fontsize=\footnotesize,]{python} + def end_payment(self, invoice, request): + """Ends the payment normally. + """ + return invoice.paiement.end_payment(invoice, + request, + use_payment_method=False + ) + + def check_price(self, price, user, *args, **kwargs): + """Checks that the price meets the requirement + to be paid with user balance. + """ + return ( + price == 0, + _("You can't pay this invoice for free.") + ) + \end{minted} +\end{column} +\end{columns} +\end{frame} + +\section{Un exemple intéressant : ComnPay} + +\begin{frame}{Déroulé} + \begin{itemize} + \item<2-> Le end\_payment construit une requête spéciale pour que l'utilisateur l'envoie vers comnpay. La facture est invalide; + \item<3-> L'utilisateur fait son affaire avec ComnPay; + \item<4-> ComnPay notifie re2o que le paiement a été effectué. La facture est validée; + \item<5-> L'utilisateur est redirigé vers re2o. + \end{itemize} +\end{frame} + +\begin{frame} + \vspace{2cm} + \centering{\Huge\textbf{Un petit tour dans le code.}} +\end{frame} + +\section{Conclusion} + +\begin{frame}{Conclusion} + \begin{itemize} + \item Le système de paiement est modulable; + \item Mais du coup il est complexe; + \item Pour intégrer HelloAsso il faudrait s'inspirer du système ComnPay. + \end{itemize} +\end{frame} + +\end{document}