def homepage(request): deputes = Depute.objects.filter(actif=True).order_by( Lower('nom'), 'prenom') return HttpResponse( template([ raw(""" <div class="alert alert-dismissible alert-info"> <p>Ce site permet de retrouver facilement les votes de vos députés</p> <p>Vous pouvez trouver votre député par circonscription sur <a href="https://www.nosdeputes.fr/circonscription" class="alert-link">NosDéputés.fr</a></p> </div> """), L.p / L.a(href="/deputes/inactifs") / L.button(".btn.btn-warning") / "voir députés inactifs", L.h2 / ["Députés ", L.small(".text-muted") / " actifs"], L.div(".list-group") / [ L. a(".list-group-item.list-group-item-action.flex-column.align-items-start", href=dep.url()) / [ L.div(".d-flex.w-100.justify-content-between") / [ L.h5(".mb-1") / f"{dep.nom}, {dep.prenom}", L.small / f"{dep.groupe}" ] ] for dep in deputes ], ]))
def depute(request, dep_id): dep = Depute.objects.get(identifiant=dep_id) dossiers = Dossier.objects.filter( date_promulgation__isnull=False).order_by("-date_promulgation", "titre") return HttpResponse( template([ _render_breadcrumb([dep]), L.p / ( L.a(href=dep.url() + "/lois-en-cours") / L.button(".btn.btn-warning") / "voir lois en cours", ' ', L.a(href=dep.url() + "/autres-votes") / L.button(".btn.btn-warning") / "voir autres votes", ), L.h2 / ["Lois", L.small(".text-muted") / " promulguées"], L.div(".list-group") / [ L. a(".list-group-item.list-group-item-action.flex-column.align-items-start", href=dos.url(dep)) / [ L.div(".d-flex.w-100.justify-content-between") / [ L.h5(".mb-1") / dos.titre, _display_depute_vote(dos, dep), ] ] for dos in dossiers ] ]))
def deputes_inactifs(request): deputes_inactifs = Depute.objects.filter(actif=False).order_by( Lower('nom'), 'prenom') return HttpResponse( template([ L.h2 / ["Députés ", L.small(".text-muted") / " inactifs"], L.div(".list-group") / [ L. a(".list-group-item.list-group-item-action.flex-column.align-items-start", href=dep.url()) / [ L.div(".d-flex.w-100.justify-content-between") / [ L.h5(".mb-1") / f"{dep.nom}, {dep.prenom}", L.small / f"{dep.groupe}" ] ] for dep in deputes_inactifs ] ]))
def lois_en_cours(request, dep_id): dep = Depute.objects.get(identifiant=dep_id) dossiers = Dossier.objects.filter(date_promulgation__isnull=True) return HttpResponse( template([ _render_breadcrumb([dep, 'Lois en cours']), L.h2 / ["Lois", L.small(".text-muted") / " en cours d'étude"], L.div(".list-group") / [ L. a(".list-group-item.list-group-item-action.flex-column.align-items-start", href=dos.url(dep)) / [ L.div(".d-flex.w-100.justify-content-between") / [ L.h5(".mb-1") / dos.titre, _display_depute_vote(dos, dep), ] ] for dos in dossiers ] ]))
def autres_votes(request, dep_id): dep = Depute.objects.get(identifiant=dep_id) scrutins = Scrutin.objects.filter(dossier__isnull=True, etape__isnull=True) return HttpResponse( template([ _render_breadcrumb([dep, 'Autres votes']), L.h2 / [ "Autres votes", ], L.div(".list-group") / [ L. a(".list-group-item.list-group-item-action.flex-column.align-items-start", href=dep.url() + '/scrutin/' + str(scrutin.id)) / [ L.div(".d-flex.w-100.justify-content-between") / [ L.h5(".mb-1") / scrutin.objet, _display_scrutin_vote(dep, scrutin), ] ] for scrutin in scrutins ] ]))
def depute_dossier(request, dep_id, dos_id): dep = Depute.objects.get(identifiant=dep_id) dos = Dossier.objects.get(identifiant=dos_id) etapes = Etape.objects.filter(dossier=dos).order_by("-date") return HttpResponse( template([ _render_breadcrumb([dep, dos]), L.p / L.a(href=dos.url_an()) / L.button(".btn.btn-info") / "dossier législatif", L.h2 / [ "Étapes", ], L.div(".list-group") / [ L. a(".list-group-item.list-group-item-action.flex-column.align-items-start", href=etape.url(dep)) / [ L.div(".d-flex.w-100.justify-content-between") / [ L.h5(".mb-1") / etape.titre, _display_etape_vote(etape, dep), ] ] for etape in etapes ] ]))
def depute_etape(request, dep_id, etape_id): dep = Depute.objects.get(identifiant=dep_id) etape = Etape.objects.get(identifiant=etape_id) dos = etape.dossier try: scrutin = etape.scrutin_set.filter(dossier__isnull=True, article__isnull=True).first() except: scrutin = None articles = etape.scrutin_set.values_list( 'article', flat=True).order_by('article').distinct() articles = [a for a in articles if a] articles.sort(key=_sort_articles) scrutins_amendements = etape.scrutin_set.filter(dossier=dos, etape=etape) return HttpResponse( template([ _render_breadcrumb([dep, dos, etape]), (L.span('.badge.badge-info') / ( 'Le ', scrutin.date, (' ', scrutin.heure) if scrutin.heure else None, ), ) if scrutin else None, L.p / (( ' ', L.a(href=scrutin.url_an) / L.button(".btn.btn-info") / f'Scrutin', ( ' ', L.a(href=scrutin.url_video) / L.button(".btn.btn-info") / "video du vote", ) if scrutin.url_video else None, ( ' ', L.a(href=scrutin.url_CR) / L.button(".btn.btn-info") / "compte-rendu", ) if scrutin.url_CR else None, ) if scrutin else None), (L.h2 / ["Articles", L.small(".text-muted") / " votés"], L.div(".list-group") / [ L. a(".list-group-item.list-group-item-action.flex-column.align-items-start", href="/" + dep.identifiant + "/etape/" + etape.identifiant + "/article/" + article) / [ L.div(".d-flex.w-100.justify-content-between") / [ L.h5(".mb-1") / f"Article {article}", _display_article_vote(etape, dep, article), ] ] for article in articles ]) if articles else None, (L.br, L.br, L.h2 / [ "Amendements et motions", L.small(".text-muted") / " votés" ], L.div(".list-group") / [ L. a(".list-group-item.list-group-item-action.flex-column.align-items-start", href="/" + dep.identifiant + "/scrutin/" + str(amdt_scrutin.id)) / [ L.div(".d-flex.w-100.justify-content-between") / [ L.h5(".mb-1") / f"{amdt_scrutin.objet}", _display_scrutin_vote(dep, amdt_scrutin), ] ] for amdt_scrutin in scrutins_amendements ]) if scrutins_amendements.count() else None, ]))