From ccb42d0abc64e2a05bd4413f247a6957ea4f2348 Mon Sep 17 00:00:00 2001 From: Gabriel Detraz Date: Sat, 2 Jul 2016 15:58:50 +0200 Subject: [PATCH] Ajoute une app pour les factures --- cotisations/__init__.py | 0 .../__pycache__/__init__.cpython-34.pyc | Bin 0 -> 120 bytes cotisations/__pycache__/admin.cpython-34.pyc | Bin 0 -> 165 bytes cotisations/__pycache__/models.cpython-34.pyc | Bin 0 -> 3640 bytes cotisations/__pycache__/urls.cpython-34.pyc | Bin 0 -> 439 bytes cotisations/__pycache__/views.cpython-34.pyc | Bin 0 -> 1967 bytes cotisations/admin.py | 3 + cotisations/migrations/0001_initial.py | 60 ++++++++++++++++ cotisations/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-34.pyc | Bin 0 -> 1774 bytes .../__pycache__/__init__.cpython-34.pyc | Bin 0 -> 131 bytes cotisations/models.py | 68 ++++++++++++++++++ .../templates/cotisations/facture.html | 14 ++++ cotisations/templates/cotisations/index.html | 28 ++++++++ .../templates/cotisations/sidebar.html | 7 ++ cotisations/tests.py | 3 + cotisations/urls.py | 11 +++ cotisations/views.py | 41 +++++++++++ re2o/urls.py | 1 + 19 files changed, 236 insertions(+) create mode 100644 cotisations/__init__.py create mode 100644 cotisations/__pycache__/__init__.cpython-34.pyc create mode 100644 cotisations/__pycache__/admin.cpython-34.pyc create mode 100644 cotisations/__pycache__/models.cpython-34.pyc create mode 100644 cotisations/__pycache__/urls.cpython-34.pyc create mode 100644 cotisations/__pycache__/views.cpython-34.pyc create mode 100644 cotisations/admin.py create mode 100644 cotisations/migrations/0001_initial.py create mode 100644 cotisations/migrations/__init__.py create mode 100644 cotisations/migrations/__pycache__/0001_initial.cpython-34.pyc create mode 100644 cotisations/migrations/__pycache__/__init__.cpython-34.pyc create mode 100644 cotisations/models.py create mode 100644 cotisations/templates/cotisations/facture.html create mode 100644 cotisations/templates/cotisations/index.html create mode 100644 cotisations/templates/cotisations/sidebar.html create mode 100644 cotisations/tests.py create mode 100644 cotisations/urls.py create mode 100644 cotisations/views.py diff --git a/cotisations/__init__.py b/cotisations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/cotisations/__pycache__/__init__.cpython-34.pyc b/cotisations/__pycache__/__init__.cpython-34.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ca281b3555371fe85c20fc47b987605b0393605b GIT binary patch literal 120 zcmaFI!^_n-wLF{w2p)q77+?f49Dul(1xTbYFa&Ed`mJOr0tq9CU#j|LiADP5<>mTC vsYdzw$@wLj#fc@E`FX|q@$s2?nI-Y@dIgoYIBatBQ%ZAE?LgX#ftUdRb|V{1 literal 0 HcmV?d00001 diff --git a/cotisations/__pycache__/admin.cpython-34.pyc b/cotisations/__pycache__/admin.cpython-34.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0e4e22211de9a2103651dcc4eede17350d4405df GIT binary patch literal 165 zcmaFI!^_n-wLILOfq~&M5W@izkmUfx#Uel=1&A0Kau^tL85yD&85mQT7=ksKUjk(q zG#PKPCZ^m}#sl@w(r6@d&{$xy@$q`<^4CH=C*BK`96a{Z!I pqkR43{F2P##FEVXykdQ@A$kRsw>WHa^HWN5QtcRl+KPdg0RXOeCYk^M literal 0 HcmV?d00001 diff --git a/cotisations/__pycache__/models.cpython-34.pyc b/cotisations/__pycache__/models.cpython-34.pyc new file mode 100644 index 0000000000000000000000000000000000000000..30b89c47986592a088b42b752fea8d1ca559a981 GIT binary patch literal 3640 zcmcgv%W@k<6z!2_Mi0yKBO$hd0*6O|c-Ro0RZx`ka*CoN0ya=Jo2jv;Esq#UPWK2W zuIxg=3ciE<0^96aQ7n4P${Us}*uXhGk}V560V;*$zUsbrx~Kc}xu@H|)uyXI{kZqV z?`0u=6=NS4^)(dzGfa#>N2Ee@9T7OfVY?vGg6I}SP|Vv!k-DPmiNMR-u1I~+Es3Bc zoNKWsVqbiXZoZI?=#<4>^sI<$aY@8w8z_$jst8m>T(yDfSYQf)DG}Ffpf(n$AuuiC zx((EY^y~|!;hhojto6>0ymb-JiH*km0ahj&j`6$wSf&~^Z@aI$tW>VkwT>1V?q^!6 z79SpcJXF?D^e-?{5EDQW6of2_j!Ucn59^qQ;{;f9?k^tqmqvbc8Gjy7lsHqABW38Mha8G1n-cE4Ne2bo-uA3mE8+XIH<9 z)au^e-l~!p`m3#emgp!;`aQjxvtniUwkd@nMhe4uzMnG_&i>30oRwj$**I&;VaS(- zp{a%;x(`y;YhieE5T$uUvAd~)Su$z&K9U&x#-|@|UcJ0&T%xQVLp&(&9s;_R16sMf z6RGt?rm^u`JCYdJKI~<(El1wopu2_rnZ6Qbax>}5{9!jnQ=R2YYgclJhk;#{+)_&j zSRlsCB7Htg2}QGO%~>3N=bf4}kMCl^K5=qVtfR|mNkLkAmW1Fi(gDo3(m)bI3Px%W zSPpMAstUR!)D%sPrcN_MGfOiEbBrdWilqrBPmTys*=aT$ivfPlu^YEOH+Hc^f#q;- zhr~YG+lqReU7nzMl7`!;&eISe^#aX{G^ZlUg>Z8h5IH;2R=+9wJWCqT>jxRbq7E+_#Sczk!CX5^KU7{REndvD{R{vwSBaq2#4)b z-Y$>F(Vx?;G)?(pydxD(9z~uGh}tKEsFx+#{d?*;wAK}IRm(5~ibZqKm8!oS%jMS2 z{U5NphHpGQ*oE@GgfJyM=_MIt+ux?zYW0eBD@bmlWZWoP1u<@<+S>SE?(vrwhA?cU zk=9{2rYo!H`Z9{9bO~q4nH_%j7mni$3gvG-w&f(+8j9u;Cbm2P2KJWG#`XcPBJgnc z&rA$^U1m`(P}HU-Bw|9ws70hbPIOa}w_52SmSgH@b&?WkTn_aHYD0?pj(P{J#?<79 zxP(%vY!-py0+7xi}6!6T<)i}wGN&V+U2&S$`jXR0G{aDiMPv5{DVR?Xjh`@b& zzJWqKn$&wVcGF&CjY*S5XWbew24WCUV2w3Vvr`{O(@kT5W#~Gu@bV|vL)G+-K5c6`v^XT@8FZ< z>ZunWz>~9~mAcH%&i?j4AMCe(?7n~2k7oqn3l5fz@hxt}(NQ!489+`TCP1hG)P&4{ z+=SQ!!U#|cm-(oumNNZLy+u~3< z?yWhiRdX^EtbUm%X<11Yo!{I~D#awH)2GYv_47qAYAuoEtnpAb-pQKLj8R_x%i291 zBsRVl{pA?5QQPB!ve&!7X$N$fh(!^mg_wspm68UI)q=F}h;_4l^|&juzsbIqd6=rO!9(O8Jp^VP!76*F))W@ GNPYn$8*&o> literal 0 HcmV?d00001 diff --git a/cotisations/__pycache__/views.cpython-34.pyc b/cotisations/__pycache__/views.cpython-34.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fa02e8e842e9e6c773cc2d3cdd3482bfc733550e GIT binary patch literal 1967 zcmaKs&2HpG5P+*~kLS1p#hPV7JL~TyOZ^-e}?Lw zOcEuh@Cb+(;FJTez=6C)UpaB%0XR|Bc9zKsVU26LyUN{N^;OkhL9g@E?~7-@_yB*v z(&NzhQ+m~JBog`w$N+Kyp@7_h&;h}#j$L&jbRqX3^r}@CvIgWngnl*mAZtS2g0Ka7 z8^Si^9SA#>t^rvW@&Ll1n){ITAn!xihkO9x0P-P(L&#SkTp^1lBrW(6AY6r{4N1q2 z*C6Ra64>!;kn|ww+wnRi1K1x8|0Ew^Rl{%h#pHqnEhAF1_j@iF1Gp7tURn0%!r} z4qOWU3GKi+&0WT%$)Zv?Vt?d}%`mPmJV^_sqav1cD}O#qA}x`(M?MEzBuL@L`oy%f z%x4+tO%p30jfk%R*U9GZt)1ftcNUAq4$6n+PF(6#MLMOx?Hs3ap|)qI#ycce1F}|p z00>{K34EPKG3OOOd?vrvw*?I}z*NB0VHe1kOAr^1^@Y|wm_4vbNN%!gqK-m?%mBZ) z5%GB}bQ7j6j#J{oCFQ859Pv0r`?>>Z6`}?_PJFhxbSXKSW8=*gC&f*8=6C2iUq+jU z6}8Q1^ZH6(Uv0*CeI?I&w>&o8+KL@MyR#gOTCx3H=h>)>J=)YXtE5uKk5O{`yS(as z{nh?cI$uqWqbyB~r=nwt9s7Zr$1x=nx-_#99C^6L8lNvs#?AU16V!tVU&W%T#0Fb; z3%Quo1}n6n`XoTCi+dsv9WkUAAJEDzJ`8Y|UiB-9)4TtT=vlD?9>a6tMF;Q;5JG4V zrVUGhXfXxf@*oP|6#~8`NEChIGz%?N?>5!8rTVj_+Nr40eqFmC5x=#c4lGs58lR}z zeJ$12*f_HnXKQ;k!?chmDQCZal_1_F=jQK_xP|;6l|{`xFO&2zCHD9RS^W>>o`sC} z$jZ3XLQL>^Db={tPx$N#XhR~FSmEUO;#(~4vv`}uCJU~VnseB$sig^SvF=?KT!>3_ z18Qgb1}|SyF?0~FxJzh#(l>aQm@<^RpcjGQNLxB#lyv`VBtIXO5*K7QobgvJk8|B7P`yWjhyQQRy* ztP1>){>P&YGfbvYaa3-r=OyZRu9e-biYyyrgM_(XTg4^H?VCn8!;*`tL}eSG8PrBM zZ4aCLJ$FQG^Ctb5n-m(;14}YoUGjUIaztjzmNQzc)>|$z3)9vXa(wOem)x`t+Y)Vk dOq>`Xr$7G^0Q?1WAD8GY zdW(HpI6W350I3B73oO02A+aHKVBkRN!oaP#4kQg2c<>!}fj8hcQfvS^FlxdH={A8o z@MFh2C8yA_)XF3iQO=PiqC^=cMaNdHRKzkYMV=MPOG%g%Pa>^<_E{xji{9dQ8vsEg zB0vKh_=gY^KnKu;QA3BSP;d{>(-1g4KJWl|3;2Rr+rSs$1l&V1Cqq&rg(cw2#I!VX z#W2a_72r33uL8eGBAZ09qlt@HYdY8e6DzhaJG^xrhqqq_{#C zo!~XI=Ih1@)$MiQZvcN2a1lmJFrv~e!)QgPpkv*gQ+w-5wb;L$^1bV%{I&^kxnCDG zq<*~v{Jt53cY(h*hiBvEcuv64-JCak|FU7{O2gQL0gcB8G~FMm;PKfAtHz{2S*Y9n ze*ZHTPRg8Z_8&a#f8O6@#CoXQEKE@~w`D1!1eJFvFyV!=1y}9oD2I80%&6Fpc2(Or zh$Mz3@&mOnmLd)1G5ZydRX}k>n1~tf(Gdz?umrQXJUacCPKt6#^MzXC7?DB3#z`1q zaZ1MrDqSvOQ5L5S&G5bnvu6{+v=>I@L=vXx2sOjYCg~8Rayf;sv1Iv_g`BHqSSMhY z`D``HOHouuxOLSz>E$o=aJl1%nt2x0oHGEHZR0TUnp{&UEZqhtk@-f||<^uf#v}lR!^N01Qy5gqb@|ZLvMS%5b7r^t lALyQ?Ek7YJ#@R)F74;b%LwXe1B!lPxyzGbzY{{VpPx)cBa literal 0 HcmV?d00001 diff --git a/cotisations/migrations/__pycache__/__init__.cpython-34.pyc b/cotisations/migrations/__pycache__/__init__.cpython-34.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ab177145c29fd58c13379b88d902af3888d7530f GIT binary patch literal 131 zcmaFI!^_n-wLF{w2p)q77+?f49Dul(1xTbYFa&Ed`mJOr0tq9CUk3VRiADP5<>mTC zsYdzw$@wLj#fc@E`FX|qxtZxjP-c95W?p7Ve7s&k + {% csrf_token %} + {% bootstrap_form factureform %} + {% bootstrap_button "Créer ou modifier" button_type="submit" icon="star" %} + +{% endblock %} diff --git a/cotisations/templates/cotisations/index.html b/cotisations/templates/cotisations/index.html new file mode 100644 index 00000000..a65b18ed --- /dev/null +++ b/cotisations/templates/cotisations/index.html @@ -0,0 +1,28 @@ +{% extends "cotisations/sidebar.html" %} +{% load bootstrap3 %} + +{% block title %}Facture{% endblock %} + +{% block content %} + + + + + + + + + + + {% for user in users_list %} + + + + + + + + {% endfor %} +
DesignationUtilisateurArticleMoyen de paiementDate
{{ facture_list.name }}{{ facture_list.user }}{{ facture_list.article }}{{ facture_list.paiement }}{{ facture_list.date }}
+{% endblock %} + diff --git a/cotisations/templates/cotisations/sidebar.html b/cotisations/templates/cotisations/sidebar.html new file mode 100644 index 00000000..8894fcbb --- /dev/null +++ b/cotisations/templates/cotisations/sidebar.html @@ -0,0 +1,7 @@ +{% extends "base.html" %} + +{% block sidebar %} +

Créer une facture

+

Editer une facture

+

Liste des factures

+{% endblock %} diff --git a/cotisations/tests.py b/cotisations/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/cotisations/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/cotisations/urls.py b/cotisations/urls.py new file mode 100644 index 00000000..3c0bbdf7 --- /dev/null +++ b/cotisations/urls.py @@ -0,0 +1,11 @@ +from django.conf.urls import url + +from . import views + +urlpatterns = [ + url(r'^new_facture/(?P[0-9]+)$', views.new_facture, name='new-facture'), + url(r'^edit_facture/(?P[0-9]+)$', views.edit_facture, name='edit-facture'), + url(r'^$', views.index, name='index'), +] + + diff --git a/cotisations/views.py b/cotisations/views.py new file mode 100644 index 00000000..a5fa5549 --- /dev/null +++ b/cotisations/views.py @@ -0,0 +1,41 @@ +# 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 + +from cotisations.models import NewFactureForm, EditFactureForm, Facture, Article + +def form(ctx, template, request): + c = ctx + c.update(csrf(request)) + return render_to_response(template, c, context_instance=RequestContext(request)) + +def new_facture(request, userid): + facture = Facture.objects.create(user=userid) + facture_form = NewFactureForm(request.POST or None, instance=facture) + if facture_form.is_valid(): + facture_form.save() + messages.success(request, "La facture a été crée") + 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/") + return form({'factureform': facture}, 'cotisations/facture.html', request) + +def index(request): + facture_list = Facture.objects.order_by('pk') + return render(request, 'cotisations/index.html', {'facture_list': facture_list}) diff --git a/re2o/urls.py b/re2o/urls.py index 6bcabc24..89fd34cd 100644 --- a/re2o/urls.py +++ b/re2o/urls.py @@ -22,5 +22,6 @@ urlpatterns = [ url(r'^admin/', include(admin.site.urls)), url(r'^users/', include('users.urls', namespace='users')), url(r'^search/', include('search.urls', namespace='search')), + url(r'^cotisations/', include('cotisations.urls', namespace='cotisations')), #url(r'^logs/', include('logs.urls', namespace='logs')), ]