Commit 58a2a1ee authored by Nicolas Joyard's avatar Nicolas Joyard

Implement dossier detail

parent 449891c8
......@@ -73,3 +73,26 @@ class ThemeBaseTest(BaseTest):
with self.assertNumQueries(self.queries):
self.client.get(self.url)
class DossierBaseTest(BaseTest):
tab = 'none'
base_url = '/votes/dossier/15407/%s/'
"""
Common queries plus:
- 1 for the dossier
- 1 for related themes
"""
queries = BaseTest.left_pane_queries + 2
@property
def url(self):
return self.base_url % self.tab
def do_query_test(self):
# First query to set session variables
self.client.get(self.url)
with self.assertNumQueries(self.queries):
self.client.get(self.url)
<h1 class="text-center">Pouvoirs publics : prorogation de l'état d'urgence</h1>
\ No newline at end of file
{
"status_code": 200
}
\ No newline at end of file
<span class="tag">Etat d'urgence</span>
\ No newline at end of file
{
"status_code": 200
}
\ No newline at end of file
<tr class="document">
<td>
<span class="chamber-icon" style="background-image: url(/static/collected/images/chamber-sen.png)"></span>
</td>
<td>
<a class="external" href="http://www.senat.fr/dossier-legislatif/pjl15-176.html" target="_blank">
Procedure file
</a>
</td>
<td>
<a class="external" href="http://www.senat.fr/dossier-legislatif/pjl15-176.html" target="_blank">
</a>
</td>
</tr>
---
<tr class="document">
<td>
<span class="chamber-icon" style="background-image: url(/static/collected/images/chamber-an.png)"></span>
</td>
<td>
<a class="external" href="http://www.assemblee-nationale.fr/14/dossiers/prorogation_loi_55-385.asp" target="_blank">
Procedure file
</a>
</td>
<td>
<a class="external" href="http://www.assemblee-nationale.fr/14/dossiers/prorogation_loi_55-385.asp" target="_blank">
</a>
</td>
</tr>
\ No newline at end of file
<tr class="proposal">
<td>
<span class="chamber-icon" style="background-image: url(/static/collected/images/chamber-an.png)" title="Assemblée nationale"></span>
<span class="chamber-icon" style="background-image: url(/static/collected/images/chamber-sen.png)" title="Sénat"></span>
</td>
<td>
<a href="/votes/dossier/15407/">
Pouvoirs publics : prorogation de l'état d'urgence
</a>
</td><td>14/prorogation_loi_55-385</td>
<td>
L'amendement n° 46 de m. estrosi à l'article 4 du projet de loi prorogeant l'application de la loi n° 55-385 du 3 avril 1955 relative à l'état d'urgence et renforçant l'efficacité de ses dispositions (première lecture).
<br/>
<small>
http://www2.assemblee-nationale.fr/scrutins/detail/(legislature)/14/(num)/1190
</small>
</td>
<td>Prorogation de l'État d'Urgence - amendement 46</td>
<td><i aria-label="against" class="fa fa-thumbs-down vote_negative" title="against"></i></td>
<td>rejected</td>
<td>128</td>
<td>198</td>
<td>0</td>
</tr>
---
<tr class="proposal">
<td>
<span class="chamber-icon" style="background-image: url(/static/collected/images/chamber-an.png)" title="Assemblée nationale"></span>
<span class="chamber-icon" style="background-image: url(/static/collected/images/chamber-sen.png)" title="Sénat"></span>
</td>
<td>
<a href="/votes/dossier/15407/">
Pouvoirs publics : prorogation de l'état d'urgence
</a>
</td><td>14/prorogation_loi_55-385</td>
<td>
L'ensemble du projet de loi prorogeant l'application de la loi n° 55-385 du 3 avril 1955 relative à l'état d'urgence et renforçant l'efficacité de ses dispositions (première lecture).
<br/>
<small>
http://www2.assemblee-nationale.fr/scrutins/detail/(legislature)/14/(num)/1191
</small>
</td>
<td>Prorogation de l'état d'urgence - première lecture</td>
<td><i aria-label="against" class="fa fa-thumbs-down vote_negative" title="against"></i></td>
<td>adopted</td>
<td>550</td>
<td>6</td>
<td>1</td>
</tr>
\ No newline at end of file
......@@ -7,15 +7,15 @@
</tr>
---
<tr>
<th>L'amendement n° 108 (rect) de la commission et l'amendement identique n° 109 (rect) de m. jacob après l'article premier du projet de loi prorogeant l'application de la loi n° 55-385 du 3 avril 1955 relative à l'état d'urgence (première lecture)</th>
<td><span class="glyphicon glyphicon-ok text-danger"></span></td>
<th>La motion de renvoi en commission, déposée par m. christian jacob, du projet de loi prorogeant l'application de la loi n° 55-385 du 3 avril 1955 relative à l'état d'urgence (première lecture)</th>
<td><span class="glyphicon glyphicon-remove text-success"></span></td>
<td><span class="glyphicon glyphicon-remove"></span></td>
<td></td>
</tr>
---
<tr>
<th>L'amendement n° 8 de m. larrivé et l'amendement identique n° 89 de m. jacob après l'article premier du projet de loi prorogeant l'application de la loi n° 55-385 du 3 avril 1955 relative à l'état d'urgence (première lecture)</th>
<td><span class="glyphicon glyphicon-remove text-success"></span></td>
<th>L'amendement n° 32 de m. ciotti après l'article 2 du projet de loi prorogeant l'application de la loi n° 55-385 du 3 avril 1955 relative à l'état d'urgence (première lecture)</th>
<td><span class="glyphicon glyphicon-ok text-danger"></span></td>
<td><span class="glyphicon glyphicon-remove"></span></td>
<td></td>
</tr>
......@@ -28,28 +28,28 @@
</tr>
---
<tr>
<th>L'amendement n° 7 de m. larrivé et l'amendement identique n° 88 de m. jacob après l'article premier du projet de loi prorogeant l'application de la loi n° 55-385 du 3 avril 1955 relative à l'état d'urgence (première lecture)</th>
<th>L'amendement n° 8 de m. larrivé et l'amendement identique n° 89 de m. jacob après l'article premier du projet de loi prorogeant l'application de la loi n° 55-385 du 3 avril 1955 relative à l'état d'urgence (première lecture)</th>
<td><span class="glyphicon glyphicon-remove text-success"></span></td>
<td><span class="glyphicon glyphicon-remove"></span></td>
<td></td>
</tr>
---
<tr>
<th>L'amendement n° 30 de m. ciotti après l'article premier du projet de loi prorogeant l'application de la loi n° 55-385 du 3 avril 1955 relative à l'état d'urgence (première lecture)</th>
<td><span class="glyphicon glyphicon-remove text-success"></span></td>
<th>L'amendement n° 108 (rect) de la commission et l'amendement identique n° 109 (rect) de m. jacob après l'article premier du projet de loi prorogeant l'application de la loi n° 55-385 du 3 avril 1955 relative à l'état d'urgence (première lecture)</th>
<td><span class="glyphicon glyphicon-ok text-danger"></span></td>
<td><span class="glyphicon glyphicon-remove"></span></td>
<td></td>
</tr>
---
<tr>
<th>L'amendement n° 52 de m. ciotti après l'article premier du projet de loi prorogeant l'application de la loi n° 55-385 du 3 avril 1955 relative à l'état d'urgence (première lecture)</th>
<td><span class="glyphicon glyphicon-remove text-success"></span></td>
<th>L'ensemble du projet de loi prorogeant l'application de la loi n° 55-385 du 3 avril 1955 relative à l'état d'urgence (première lecture)</th>
<td><span class="glyphicon glyphicon-ok text-danger"></span></td>
<td><span class="glyphicon glyphicon-remove"></span></td>
<td></td>
</tr>
---
<tr>
<th>L'amendement n° 97 de m. jacob après l'article 2 du projet de loi prorogeant l'application de la loi n° 55-385 du 3 avril 1955 relative à l'état d'urgence (première lecture)</th>
<th>L'amendement n° 83 de m. le fur après l'article premier du projet de loi prorogeant l'application de la loi n° 55-385 du 3 avril 1955 relative à l'état d'urgence (première lecture)</th>
<td><span class="glyphicon glyphicon-remove text-success"></span></td>
<td><span class="glyphicon glyphicon-remove"></span></td>
<td></td>
......@@ -63,28 +63,28 @@
</tr>
---
<tr>
<th>L'amendement n° 83 de m. le fur après l'article premier du projet de loi prorogeant l'application de la loi n° 55-385 du 3 avril 1955 relative à l'état d'urgence (première lecture)</th>
<th>L'amendement n° 97 de m. jacob après l'article 2 du projet de loi prorogeant l'application de la loi n° 55-385 du 3 avril 1955 relative à l'état d'urgence (première lecture)</th>
<td><span class="glyphicon glyphicon-remove text-success"></span></td>
<td><span class="glyphicon glyphicon-remove"></span></td>
<td></td>
</tr>
---
<tr>
<th>L'ensemble du projet de loi prorogeant l'application de la loi n° 55-385 du 3 avril 1955 relative à l'état d'urgence (première lecture)</th>
<td><span class="glyphicon glyphicon-ok text-danger"></span></td>
<th>L'amendement n° 52 de m. ciotti après l'article premier du projet de loi prorogeant l'application de la loi n° 55-385 du 3 avril 1955 relative à l'état d'urgence (première lecture)</th>
<td><span class="glyphicon glyphicon-remove text-success"></span></td>
<td><span class="glyphicon glyphicon-remove"></span></td>
<td></td>
</tr>
---
<tr>
<th>L'amendement n° 32 de m. ciotti après l'article 2 du projet de loi prorogeant l'application de la loi n° 55-385 du 3 avril 1955 relative à l'état d'urgence (première lecture)</th>
<td><span class="glyphicon glyphicon-ok text-danger"></span></td>
<th>L'amendement n° 30 de m. ciotti après l'article premier du projet de loi prorogeant l'application de la loi n° 55-385 du 3 avril 1955 relative à l'état d'urgence (première lecture)</th>
<td><span class="glyphicon glyphicon-remove text-success"></span></td>
<td><span class="glyphicon glyphicon-remove"></span></td>
<td></td>
</tr>
---
<tr>
<th>La motion de renvoi en commission, déposée par m. christian jacob, du projet de loi prorogeant l'application de la loi n° 55-385 du 3 avril 1955 relative à l'état d'urgence (première lecture)</th>
<th>L'amendement n° 7 de m. larrivé et l'amendement identique n° 88 de m. jacob après l'article premier du projet de loi prorogeant l'application de la loi n° 55-385 du 3 avril 1955 relative à l'état d'urgence (première lecture)</th>
<td><span class="glyphicon glyphicon-remove text-success"></span></td>
<td><span class="glyphicon glyphicon-remove"></span></td>
<td></td>
......@@ -114,15 +114,15 @@
</tr>
---
<tr>
<th>L'amendement n° 46 de m. estrosi à l'article 4 du projet de loi prorogeant l'application de la loi n° 55-385 du 3 avril 1955 relative à l'état d'urgence et renforçant l'efficacité de ses dispositions (première lecture).</th>
<td><span class="glyphicon glyphicon-remove text-success"></span></td>
<th>L'ensemble du projet de loi prorogeant l'application de la loi n° 55-385 du 3 avril 1955 relative à l'état d'urgence et renforçant l'efficacité de ses dispositions (première lecture).</th>
<td><span class="glyphicon glyphicon-ok text-danger"></span></td>
<td><span class="glyphicon glyphicon-remove"></span></td>
<td></td>
</tr>
---
<tr>
<th>L'ensemble du projet de loi prorogeant l'application de la loi n° 55-385 du 3 avril 1955 relative à l'état d'urgence et renforçant l'efficacité de ses dispositions (première lecture).</th>
<td><span class="glyphicon glyphicon-ok text-danger"></span></td>
<th>L'amendement n° 46 de m. estrosi à l'article 4 du projet de loi prorogeant l'application de la loi n° 55-385 du 3 avril 1955 relative à l'état d'urgence et renforçant l'efficacité de ses dispositions (première lecture).</th>
<td><span class="glyphicon glyphicon-remove text-success"></span></td>
<td><span class="glyphicon glyphicon-remove"></span></td>
<td></td>
</tr>
\ No newline at end of file
......@@ -7,11 +7,11 @@
</td>
<td>
<a href="/votes/dossier/15407/">
Pouvoirs publics : prorogation de l'état d'urgence
<a href="/votes/dossier/15426/">
Pouvoirs publics : prorogation de l'application de la loi relative à l'état d'urgence
</a>
</td>
<td>14/prorogation_loi_55-385</td>
<td>14/application_loi_55-385_prorogation</td>
</tr>
---
<tr class="dossier">
......@@ -19,13 +19,15 @@
<span class="chamber-icon" style="background-image: url(/static/collected/images/chamber-an.png)" title="Assemblée nationale"></span>
<span class="chamber-icon" style="background-image: url(/static/collected/images/chamber-sen.png)" title="Sénat"></span>
</td>
<td>
<a href="/votes/dossier/15409/">
Pouvoirs publics : prorogation de l'application de la loi sur l'état d'urgence
<a href="/votes/dossier/15424/">
Pouvoirs publics : application de la loi relative à l’état d’urgence
</a>
</td>
<td>14/loi_55-385_prorogation_application</td>
<td>14/prorogation_application_loi_55-385</td>
</tr>
---
<tr class="dossier">
......@@ -33,15 +35,13 @@
<span class="chamber-icon" style="background-image: url(/static/collected/images/chamber-an.png)" title="Assemblée nationale"></span>
<span class="chamber-icon" style="background-image: url(/static/collected/images/chamber-sen.png)" title="Sénat"></span>
</td>
<td>
<a href="/votes/dossier/15424/">
Pouvoirs publics : application de la loi relative à l’état d’urgence
<a href="/votes/dossier/15409/">
Pouvoirs publics : prorogation de l'application de la loi sur l'état d'urgence
</a>
</td>
<td>14/prorogation_application_loi_55-385</td>
<td>14/loi_55-385_prorogation_application</td>
</tr>
---
<tr class="dossier">
......@@ -53,9 +53,9 @@
</td>
<td>
<a href="/votes/dossier/15426/">
Pouvoirs publics : prorogation de l'application de la loi relative à l'état d'urgence
<a href="/votes/dossier/15407/">
Pouvoirs publics : prorogation de l'état d'urgence
</a>
</td>
<td>14/application_loi_55-385_prorogation</td>
<td>14/prorogation_loi_55-385</td>
</tr>
\ No newline at end of file
from .base import DossierBaseTest
class DossierDetailTest(DossierBaseTest):
def test_queries(self):
self.do_query_test()
def test_name(self):
return self.selector_test('#dossier-detail h1')
def test_themes(self):
return self.selector_test('#dossier-detail .tag')
from .base import DossierBaseTest
class DossierDocumentsTest(DossierBaseTest):
tab = 'documents'
"""
Dossier base queries plus
- 1 for documents
- 1 for related chambers
"""
queries = DossierBaseTest.queries + 2
def test_queries(self):
self.do_query_test()
def test_proposals(self):
self.selector_test('.document')
from .base import DossierBaseTest
class DossierProposalsTest(DossierBaseTest):
tab = 'proposals'
"""
Dossier base queries plus
- 1 for proposals
- 1 for related recommendations
- 1 for related dossiers/documents
- 1 for related dossiers/documents/chambers
"""
queries = DossierBaseTest.queries + 4
def test_queries(self):
self.do_query_test()
def test_proposals(self):
self.selector_test('.proposal')
......@@ -4,7 +4,9 @@ from django.contrib import admin
from django.views import generic
from views.dossier_ac import DossierAutocomplete, ProposalAutocomplete
from views.dossier_detail import DossierDetail
from views.dossier_detail_base import DossierDetailBase
from views.dossier_detail_proposals import DossierDetailProposals
from views.dossier_detail_documents import DossierDetailDocuments
from views.dossier_list import DossierList
from views.group_ac import GroupAutocomplete
......@@ -20,7 +22,8 @@ from views.redirects import (
RedirectGroupList,
RedirectRepresentativeDetail,
RedirectThemeDetail,
RedirectGroupRepresentativeList
RedirectGroupRepresentativeList,
RedirectDossierDetail
)
from views.theme_detail_base import ThemeDetailBase
......@@ -110,9 +113,24 @@ urlpatterns = [
),
url(
r'^votes/dossier/(?P<pk>\d+)/$',
DossierDetail.as_view(),
RedirectDossierDetail.as_view(),
name='dossier-detail'
),
url(
r'^votes/dossier/(?P<pk>\d+)/none/$',
DossierDetailBase.as_view(),
name='dossier-none'
),
url(
r'^votes/dossier/(?P<pk>\d+)/proposals/$',
DossierDetailProposals.as_view(),
name='dossier-proposals'
),
url(
r'^votes/dossier/(?P<pk>\d+)/documents/$',
DossierDetailDocuments.as_view(),
name='dossier-documents'
),
url(
r'^votes/autocomplete/dossier/$',
DossierAutocomplete.as_view(),
......
......@@ -5,11 +5,7 @@ from django.views import generic
from representatives_votes.models import Dossier
class DossierDetail(generic.DetailView):
queryset = Dossier.objects.prefetch_related(
'proposals',
'proposals__recommendation',
'documents',
'documents__chamber',
)
class DossierDetailBase(generic.DetailView):
template_name = 'representatives_votes/dossier_detail.html'
queryset = Dossier.objects.prefetch_related('themes')
# coding: utf-8
from .dossier_detail_base import DossierDetailBase
class DossierDetailDocuments(DossierDetailBase):
template_name = 'representatives_votes/dossier_detail_documents.html'
def get_queryset(self):
qs = super(DossierDetailDocuments, self).get_queryset()
qs = qs.prefetch_related('documents__chamber')
return qs
def get_context_data(self, **kwargs):
c = super(DossierDetailDocuments, self).get_context_data(**kwargs)
c['tab'] = 'documents'
c['documents'] = c['object'].documents.all()
return c
# coding: utf-8
from .dossier_detail_base import DossierDetailBase
class DossierDetailProposals(DossierDetailBase):
template_name = 'representatives_votes/dossier_detail_proposals.html'
def get_queryset(self):
qs = super(DossierDetailProposals, self).get_queryset()
qs = qs.prefetch_related(
'proposals__recommendation',
'proposals__dossier__documents__chamber'
)
return qs
def get_context_data(self, **kwargs):
c = super(DossierDetailProposals, self).get_context_data(**kwargs)
c['tab'] = 'proposals'
c['proposals'] = c['object'].proposals.all()
return c
......@@ -38,3 +38,8 @@ class RedirectRepresentativeDetail(RedirectView):
class RedirectThemeDetail(RedirectView):
permanent = True
pattern_name = 'theme-links'
class RedirectDossierDetail(RedirectView):
permanent = True
pattern_name = 'dossier-proposals'
# coding: utf-8
from django.db import models
from representatives_votes.models import Dossier
from .theme_detail_base import ThemeDetailBase
......@@ -8,7 +12,13 @@ class ThemeDetailDossiers(ThemeDetailBase):
def get_queryset(self):
qs = super(ThemeDetailDossiers, self).get_queryset()
qs = qs.prefetch_related('dossiers__documents__chamber')
qs = qs.prefetch_related(
models.Prefetch(
'dossiers',
Dossier.objects.order_by('-pk')
.prefetch_related('documents__chamber')
)
)
return qs
def get_context_data(self, **kwargs):
......
......@@ -7,29 +7,16 @@
<table class="table table-responsive">
<tr>
<th>
{% trans "Chambers" %}
</th>
<th>
{% trans "Dossier" %}
</th>
<th>
{% trans "Reference" %}
<th>
{% trans "Proposal" %}
</th>
<th>
{% trans "Title" %}
</th>
<th>
{% trans "Recommendation" %}
</th>
<th>
{% trans "Status" %}
</th>
<th>{% trans "Chambers" %}</th>
<th>{% trans "Dossier" %}</th>
<th>{% trans "Reference" %}</th>
<th>{% trans "Proposal" %}</th>
<th>{% trans "Title" %}</th>
<th>{% trans "Recommendation" %}</th>
<th>{% trans "Status" %}</th>
<th>{{ "for"|position_icon }}</th>
<th>{{ "against"|position_icon }}</th>
<th>{{"abstain"|position_icon }}</th>
<th>{{ "abstain"|position_icon }}</th>
</tr>
{% for proposal in proposals %}
......
<p>No public position has been recorded. You can always <a>add a public position</a>.</p>
<table class="table table-responsive custom-timeline text-center">
<thead>
<tr>
<th class="text-center">Before</th>
<th class="text-center">Last year</th>
<th class="text-center">Last 6 months</th>
<th class="text-center">This month</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<button class="btn btn-default" type="button" data-toggle="collapse" data-target="#collapsePosition1" aria-expanded="false" aria-controls="collapsePosition1">
Jan Philipp ALBRECHT<br/>DD MMM YYYY
</button>
</td>
<td>
<button class="btn btn-default" type="button" data-toggle="collapse" data-target="#collapsePosition2" aria-expanded="false" aria-controls="collapsePosition2">
Martina ANDERSON<br/>DD MMM YYYY
</button>
<br>
<br>
<button class="btn btn-default" type="button" data-toggle="collapse" data-target="#collapsePosition3" aria-expanded="false" aria-controls="collapsePosition3">
Izaskun BILBAO BARANDICA<br/>DD MMM YYYY
</button>
</td>
<td></td>
<td>
<button class="btn btn-default" type="button" data-toggle="collapse" data-target="#collapsePosition4" aria-expanded="false" aria-controls="collapsePosition4">
Sergio Gaetano COFFERATI<br/>DD MMM YYYY
</button>