trivial: apply black

This commit is contained in:
Frédéric Péters 2021-01-11 19:02:29 +01:00
parent 3e5838c9ac
commit f7348a846d
18 changed files with 291 additions and 166 deletions

View File

@ -16,11 +16,14 @@
import django.apps
class AppConfig(django.apps.AppConfig):
name = 'passerelle_montpellier_encombrants'
def get_after_urls(self):
from . import urls
return urls.urlpatterns
default_app_config = 'passerelle_montpellier_encombrants.AppConfig'

View File

@ -36,9 +36,7 @@ class ListValidator(object):
class CommaSeparatedEmailField(forms.Field):
def __init__(self, dedup=True, max_length=None, min_length=None, *args,
**kwargs):
def __init__(self, dedup=True, max_length=None, min_length=None, *args, **kwargs):
self.dedup = dedup
self.max_length = max_length
self.min_length = min_length
@ -64,7 +62,6 @@ class CommaSeparatedEmailField(forms.Field):
class EncombrantsManagementForm(forms.ModelForm):
class Meta:
model = EncombrantsManagement
exclude = ('slug', 'users')
@ -74,6 +71,7 @@ class EncombrantsManagementForm(forms.ModelForm):
self.instance.slug = slugify(self.instance.title)
return super(EncombrantsManagementForm, self).save(commit=commit)
class EncombrantsManagementUpdateForm(EncombrantsManagementForm):
class Meta:
model = EncombrantsManagement
@ -87,9 +85,11 @@ class NoStreetsCommuneForm(forms.ModelForm):
class CommuneForm(forms.ModelForm):
streets = forms.CharField(widget=forms.Textarea(attrs={'cols': 25, 'rows': 10}),
help_text=_('one street by line'),
required=False)
streets = forms.CharField(
widget=forms.Textarea(attrs={'cols': 25, 'rows': 10}),
help_text=_('one street by line'),
required=False,
)
class Meta:
model = Commune
@ -106,15 +106,18 @@ class CommuneForm(forms.ModelForm):
class SectorForm(forms.ModelForm):
contact_email = CommaSeparatedEmailField(label=_('Emails'),
required=False,
help_text=_('separated by commas'))
contact_email = CommaSeparatedEmailField(
label=_('Emails'), required=False, help_text=_('separated by commas')
)
class Meta:
model = Sector
fields = '__all__'
class StreetsForm(forms.Form):
streets = forms.CharField(widget=forms.Textarea(attrs={'cols': 25, 'rows': 10}),
help_text=_('one street by line'),
required=False)
streets = forms.CharField(
widget=forms.Textarea(attrs={'cols': 25, 'rows': 10}),
help_text=_('one street by line'),
required=False,
)

View File

@ -12,13 +12,12 @@ from passerelle_montpellier_encombrants.utils import email_sectors
class Command(BaseCommand):
def get(self, url, sign=False):
api_user = getattr(settings, 'ENCOMBRANTS_API_USER')
secret = getattr(settings, 'ENCOMBRANTS_API_SECRET')
orig = getattr(settings, 'ENCOMBRANTS_API_ORIG')
if sign:
url = sign_url(url + '&email=' + urllib.quote(api_user), secret) + '&orig='+urllib.quote(orig)
url = sign_url(url + '&email=' + urllib.quote(api_user), secret) + '&orig=' + urllib.quote(orig)
return requests.get(url, headers={'Accept': 'application/json'})
def handle(self, *args, **kwargs):
@ -39,5 +38,7 @@ class Command(BaseCommand):
response = r.json()
if 'err' in response:
raise CommandError('Error while retrieving formdefs: %s' % r.json())
response = [x for x in response if x.get('workflow', {}).get('status', {}).get('name') != u'Annulé']
response = [
x for x in response if x.get('workflow', {}).get('status', {}).get('name') != u'Annulé'
]
email_sectors(response, tomorrow)

View File

@ -14,7 +14,10 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='EncombrantsManagement',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
(
'id',
models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True),
),
('title', models.CharField(verbose_name='Title', max_length=50)),
('slug', models.SlugField(verbose_name='Identifier', unique=True)),
('description', models.TextField(verbose_name='Description')),

View File

@ -14,7 +14,10 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='CollectDay',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
(
'id',
models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True),
),
('date', models.DateField()),
],
options={
@ -25,21 +28,25 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='Commune',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
(
'id',
models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True),
),
('name', models.CharField(max_length=50)),
('insee', models.CharField(max_length=10)),
],
options={
},
options={},
bases=(models.Model,),
),
migrations.CreateModel(
name='Sector',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
(
'id',
models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True),
),
],
options={
},
options={},
bases=(models.Model,),
),
migrations.AddField(

View File

@ -14,12 +14,14 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='Street',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
(
'id',
models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True),
),
('name', models.CharField(max_length=128, verbose_name='Street')),
('commune', models.ForeignKey(to='passerelle_montpellier_encombrants.Commune')),
],
options={
},
options={},
bases=(models.Model,),
),
]

View File

@ -14,7 +14,9 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='sector',
name='contact_email',
field=models.CharField(help_text='separated by commas', max_length=128, verbose_name='Contact Emails', blank=True),
field=models.CharField(
help_text='separated by commas', max_length=128, verbose_name='Contact Emails', blank=True
),
preserve_default=True,
),
]

View File

@ -14,7 +14,9 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='sector',
name='contact_email',
field=models.CharField(help_text='separated by commas', max_length=1024, verbose_name='Contact Emails', blank=True),
field=models.CharField(
help_text='separated by commas', max_length=1024, verbose_name='Contact Emails', blank=True
),
preserve_default=True,
),
]

View File

@ -14,6 +14,19 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='encombrantsmanagement',
name='log_level',
field=models.CharField(default=b'NOTSET', max_length=10, verbose_name='Log Level', choices=[(b'NOTSET', b'NOTSET'), (b'DEBUG', b'DEBUG'), (b'INFO', b'INFO'), (b'WARNING', b'WARNING'), (b'ERROR', b'ERROR'), (b'CRITICAL', b'CRITICAL'), (b'FATAL', b'FATAL')]),
field=models.CharField(
default=b'NOTSET',
max_length=10,
verbose_name='Log Level',
choices=[
(b'NOTSET', b'NOTSET'),
(b'DEBUG', b'DEBUG'),
(b'INFO', b'INFO'),
(b'WARNING', b'WARNING'),
(b'ERROR', b'ERROR'),
(b'CRITICAL', b'CRITICAL'),
(b'FATAL', b'FATAL'),
],
),
),
]

View File

@ -15,6 +15,19 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='encombrantsmanagement',
name='log_level',
field=models.CharField(choices=[(b'NOTSET', b'NOTSET'), (b'DEBUG', b'DEBUG'), (b'INFO', b'INFO'), (b'WARNING', b'WARNING'), (b'ERROR', b'ERROR'), (b'CRITICAL', b'CRITICAL'), (b'FATAL', b'FATAL')], default=b'INFO', max_length=10, verbose_name='Log Level'),
field=models.CharField(
choices=[
(b'NOTSET', b'NOTSET'),
(b'DEBUG', b'DEBUG'),
(b'INFO', b'INFO'),
(b'WARNING', b'WARNING'),
(b'ERROR', b'ERROR'),
(b'CRITICAL', b'CRITICAL'),
(b'FATAL', b'FATAL'),
],
default=b'INFO',
max_length=10,
verbose_name='Log Level',
),
),
]

View File

@ -21,6 +21,7 @@ from django.utils.translation import ugettext_lazy as _
from passerelle.base.models import BaseResource
class EncombrantsManagement(BaseResource):
category = _('Business Process Connectors')
@ -45,9 +46,9 @@ class EncombrantsManagement(BaseResource):
@six.python_2_unicode_compatible
class Sector(models.Model):
contact_email = models.CharField(max_length=1024, blank=True,
verbose_name=_('Contact Emails'),
help_text=_('separated by commas'))
contact_email = models.CharField(
max_length=1024, blank=True, verbose_name=_('Contact Emails'), help_text=_('separated by commas')
)
class Meta:
verbose_name = _('Sector')
@ -61,10 +62,8 @@ class Sector(models.Model):
@six.python_2_unicode_compatible
class Commune(models.Model):
name = models.CharField(max_length=50, blank=False,
verbose_name=_('Name'))
insee = models.CharField(max_length=10, blank=False,
verbose_name=_('INSEE Code'))
name = models.CharField(max_length=50, blank=False, verbose_name=_('Name'))
insee = models.CharField(max_length=10, blank=False, verbose_name=_('INSEE Code'))
sector = models.ForeignKey(Sector, verbose_name=_('Sector'))
def __str__(self):
@ -74,8 +73,7 @@ class Commune(models.Model):
@six.python_2_unicode_compatible
class Street(models.Model):
commune = models.ForeignKey(Commune)
name = models.CharField(max_length=128, blank=False,
verbose_name=_('Street'))
name = models.CharField(max_length=128, blank=False, verbose_name=_('Street'))
def __str__(self):
return '%s, %s' % (self.name, self.commune)
@ -83,8 +81,7 @@ class Street(models.Model):
@six.python_2_unicode_compatible
class CollectDay(models.Model):
sector = models.ForeignKey(Sector,
verbose_name=_('Sector'))
sector = models.ForeignKey(Sector, verbose_name=_('Sector'))
date = models.DateField(verbose_name=_('Date'))
class Meta:

View File

@ -52,17 +52,23 @@ class Workbook(object):
z = zipfile.ZipFile(output, 'w')
z.writestr('content.xml', self.get_data())
z.writestr('mimetype', 'application/vnd.oasis.opendocument.spreadsheet')
z.writestr('META-INF/manifest.xml', '''<?xml version="1.0" encoding="UTF-8"?>
z.writestr(
'META-INF/manifest.xml',
'''<?xml version="1.0" encoding="UTF-8"?>
<manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0">
<manifest:file-entry manifest:full-path="/" manifest:media-type="application/vnd.oasis.opendocument.spreadsheet"/>
<manifest:file-entry manifest:full-path="styles.xml" manifest:media-type="text/xml"/>
<manifest:file-entry manifest:full-path="content.xml" manifest:media-type="text/xml"/>
<manifest:file-entry manifest:full-path="META-INF/manifest.xml" manifest:media-type="text/xml"/>
<manifest:file-entry manifest:full-path="mimetype" manifest:media-type="text/plain"/>
</manifest:manifest>''')
z.writestr('styles.xml', '''<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
</manifest:manifest>''',
)
z.writestr(
'styles.xml',
'''<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<office:document-styles xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0">
</office:document-styles>''')
</office:document-styles>''',
)
z.close()
@ -81,9 +87,9 @@ class WorkSheet(object):
root = ET.Element('{%s}table' % TABLE_NS)
root.attrib['{%s}name' % TABLE_NS] = self.name
ET.SubElement(root, '{%s}table-column' % TABLE_NS)
for i in range(0, max(self.cells.keys())+1):
for i in range(0, max(self.cells.keys()) + 1):
row = ET.SubElement(root, '{%s}table-row' % TABLE_NS)
for j in range(0, max(self.cells.get(i).keys())+1):
for j in range(0, max(self.cells.get(i).keys()) + 1):
cell = self.cells.get(i, {}).get(j, None)
if not cell:
ET.SubElement(row, '{%s}table-cell' % TABLE_NS)

View File

@ -21,51 +21,76 @@ from django.contrib.auth.decorators import login_required
from .views import *
public_urlpatterns = [
url(r'^(?P<slug>[\w,-]+)/$', EncombrantsManagementDetailView.as_view(),
name='montpellier-encombrants-view'),
url(r'^(?P<slug>[\w,-]+)/available/(?P<insee>\d+)$', AvailableDaysView.as_view(),
name='montpellier-encombrants-available-days'),
url(
r'^(?P<slug>[\w,-]+)/$',
EncombrantsManagementDetailView.as_view(),
name='montpellier-encombrants-view',
),
url(
r'^(?P<slug>[\w,-]+)/available/(?P<insee>\d+)$',
AvailableDaysView.as_view(),
name='montpellier-encombrants-available-days',
),
]
management_urlpatterns = [
url(r'^add$', EncombrantsManagementCreateView.as_view(),
name='montpellier-encombrants-add'),
url(r'^(?P<slug>[\w,-]+)/edit$', EncombrantsManagementUpdateView.as_view(),
name='montpellier-encombrants-edit'),
url(r'^(?P<slug>[\w,-]+)/delete$', EncombrantsManagementDeleteView.as_view(),
name='montpellier-encombrants-delete'),
url(r'^sectors/$', SectorListView.as_view(),
name='montpellier-encombrants-sector-listing'),
url(r'^sectors/add$', SectorCreateView.as_view(),
name='montpellier-encombrants-sector-add'),
url(r'^sectors/(?P<pk>[\w,-]+)/$', SectorUpdateView.as_view(),
name='montpellier-encombrants-sector-update'),
url(r'^sectors/(?P<pk>[\w,-]+)/delete$', SectorDeleteView.as_view(),
name='montpellier-encombrants-sector-remove'),
url(r'^communes/$', CommuneListView.as_view(),
name='montpellier-encombrants-commune-listing'),
url(r'^communes/add$', CommuneCreateView.as_view(),
name='montpellier-encombrants-commune-add'),
url(r'^communes/(?P<pk>[\w,-]+)/edit$', CommuneUpdateView.as_view(),
name='montpellier-encombrants-commune-edit'),
url(r'^communes/(?P<pk>[\w,-]+)$', CommuneView.as_view(),
name='montpellier-encombrants-commune-view'),
url(r'^communes/(?P<pk>[\w,-]+)/streets$', StreetEditView.as_view(),
name='montpellier-encombrants-commune-streets-edit-view'),
url(r'^communes/(?P<pk>[\w,-]+)/delete$', CommuneDeleteView.as_view(),
name='montpellier-encombrants-commune-remove'),
url(r'^collectdays/$', CollectDayListView.as_view(),
name='montpellier-encombrants-collectday-listing'),
url(r'^collectdays/add$', CollectDayCreateView.as_view(),
name='montpellier-encombrants-collectday-add'),
url(r'^collectdays/(?P<pk>[\w,-]+)/delete$', CollectDayDeleteView.as_view(),
name='montpellier-encombrants-collectday-remove'),
url(r'^add$', EncombrantsManagementCreateView.as_view(), name='montpellier-encombrants-add'),
url(
r'^(?P<slug>[\w,-]+)/edit$',
EncombrantsManagementUpdateView.as_view(),
name='montpellier-encombrants-edit',
),
url(
r'^(?P<slug>[\w,-]+)/delete$',
EncombrantsManagementDeleteView.as_view(),
name='montpellier-encombrants-delete',
),
url(r'^sectors/$', SectorListView.as_view(), name='montpellier-encombrants-sector-listing'),
url(r'^sectors/add$', SectorCreateView.as_view(), name='montpellier-encombrants-sector-add'),
url(
r'^sectors/(?P<pk>[\w,-]+)/$',
SectorUpdateView.as_view(),
name='montpellier-encombrants-sector-update',
),
url(
r'^sectors/(?P<pk>[\w,-]+)/delete$',
SectorDeleteView.as_view(),
name='montpellier-encombrants-sector-remove',
),
url(r'^communes/$', CommuneListView.as_view(), name='montpellier-encombrants-commune-listing'),
url(r'^communes/add$', CommuneCreateView.as_view(), name='montpellier-encombrants-commune-add'),
url(
r'^communes/(?P<pk>[\w,-]+)/edit$',
CommuneUpdateView.as_view(),
name='montpellier-encombrants-commune-edit',
),
url(r'^communes/(?P<pk>[\w,-]+)$', CommuneView.as_view(), name='montpellier-encombrants-commune-view'),
url(
r'^communes/(?P<pk>[\w,-]+)/streets$',
StreetEditView.as_view(),
name='montpellier-encombrants-commune-streets-edit-view',
),
url(
r'^communes/(?P<pk>[\w,-]+)/delete$',
CommuneDeleteView.as_view(),
name='montpellier-encombrants-commune-remove',
),
url(r'^collectdays/$', CollectDayListView.as_view(), name='montpellier-encombrants-collectday-listing'),
url(r'^collectdays/add$', CollectDayCreateView.as_view(), name='montpellier-encombrants-collectday-add'),
url(
r'^collectdays/(?P<pk>[\w,-]+)/delete$',
CollectDayDeleteView.as_view(),
name='montpellier-encombrants-collectday-remove',
),
]
urlpatterns = required(
app_enabled('passerelle_montpellier_encombrants'), [
app_enabled('passerelle_montpellier_encombrants'),
[
url(r'^montpellier-encombrants/', include(public_urlpatterns)),
url(r'^manage/montpellier-encombrants/',
decorated_includes(login_required, include(management_urlpatterns))),
]
url(
r'^manage/montpellier-encombrants/',
decorated_includes(login_required, include(management_urlpatterns)),
),
],
)

View File

@ -43,35 +43,37 @@ prefix_map = {
'ENCL': 'ENCLOS',
'ESP': 'ESPLANADE',
'ESPA': 'ESPACE',
'GR': '', # "GR GRAND-RUE JEAN MOULIN"
'GR': '', # "GR GRAND-RUE JEAN MOULIN"
'IMP': 'IMPASSE',
'JARD': 'JARDIN',
'MAIL': '', # "MAIL LE GRAND MAIL"
'MAIL': '', # "MAIL LE GRAND MAIL"
'PARC': 'PARC',
'PARV': '', # "PARV PARVIS DE LA LEGION D HONNEUR"
'PARV': '', # "PARV PARVIS DE LA LEGION D HONNEUR"
'PAS': 'PASSAGE',
'PL': 'PLACE',
'PLAN': 'PLAN',
'PONT': 'PONT',
'QUA': 'QUAI',
'R': 'RUE',
'RAMB': '', # "RAMB RAMBLA DES CALISSONS"
'RAMB': '', # "RAMB RAMBLA DES CALISSONS"
'RPT': 'ROND-POINT',
'RTE': 'ROUTE',
'SQ': 'SQUARE',
'TSSE': '', # "TSSE TERRASSE DES ALLEES DU BOIS"
'TSSE': '', # "TSSE TERRASSE DES ALLEES DU BOIS"
'TUN': 'TUNNEL',
'VIAD': 'VIADUC',
'VOI': 'VOIE',
}
def prefix_cleanup(name):
name = name.strip()
for prefix, full in prefix_map.items():
if name.startswith(prefix + ' '):
name = (full + name[len(prefix):]).strip()
name = (full + name[len(prefix) :]).strip()
return name
def get_sector(insee, address=None):
communes = Commune.objects.filter(insee=insee)
for commune in communes:
@ -83,6 +85,7 @@ def get_sector(insee, address=None):
else:
return commune.sector
def email_sectors(formdatas, when):
subject = get_template('passerelle_montpellier_encombrants/email_subject.txt')
message = get_template('passerelle_montpellier_encombrants/email_body.txt')
@ -95,8 +98,10 @@ def email_sectors(formdatas, when):
for data in formdatas:
fields = data['fields']
data = [fields.get(d) or '' for d in ('commune', 'prenom', 'nom', 'numero',
'voie', 'date', 'telephone', 'commentaire')]
data = [
fields.get(d) or ''
for d in ('commune', 'prenom', 'nom', 'numero', 'voie', 'date', 'telephone', 'commentaire')
]
sector = get_sector(fields.get('commune_raw'), fields.get('adresse'))
if sector:
@ -104,8 +109,12 @@ def email_sectors(formdatas, when):
for destination, data in sectors.items():
destinations = [d.strip() for d in destination.split(',') if d.strip()]
mail = EmailMessage(subject.render(context).strip(), message.render(context),
settings.DEFAULT_FROM_EMAIL, destinations)
mail = EmailMessage(
subject.render(context).strip(),
message.render(context),
settings.DEFAULT_FROM_EMAIL,
destinations,
)
attachement_body = BytesIO()
# create ods
@ -119,9 +128,11 @@ def email_sectors(formdatas, when):
for i, d in enumerate(data):
for j, e in enumerate(d):
ws.write(i+1, j, e)
ws.write(i + 1, j, e)
ods.save(attachement_body)
mail.attach('demandes.ods', attachement_body.getvalue(), 'application/vnd.oasis.opendocument.spreadsheet')
mail.attach(
'demandes.ods', attachement_body.getvalue(), 'application/vnd.oasis.opendocument.spreadsheet'
)
mail.send()

View File

@ -26,8 +26,13 @@ from django.db import transaction
from passerelle import utils as passerelle_utils
from .models import EncombrantsManagement, Sector, Commune, CollectDay, Street
from .forms import (EncombrantsManagementForm, EncombrantsManagementUpdateForm, CommuneForm,
StreetsForm, NoStreetsCommuneForm)
from .forms import (
EncombrantsManagementForm,
EncombrantsManagementUpdateForm,
CommuneForm,
StreetsForm,
NoStreetsCommuneForm,
)
from .forms import SectorForm
from .utils import prefix_cleanup, get_sector
@ -164,10 +169,11 @@ class AvailableDaysView(View, SingleObjectMixin):
else:
collect_days = []
limit = request.GET.get('limit')
result = [{'id': x.date.strftime('%Y-%m-%d'),
'text': x.date.strftime('%d/%m/%Y')} for x in collect_days]
result = [
{'id': x.date.strftime('%Y-%m-%d'), 'text': x.date.strftime('%d/%m/%Y')} for x in collect_days
]
if limit:
result = result[:int(limit)]
result = result[: int(limit)]
return passerelle_utils.response_for_json(request, {'data': result})
@ -176,8 +182,7 @@ class StreetEditView(FormView):
template_name = 'passerelle/manage/service_form.html'
def get_success_url(self):
return reverse('montpellier-encombrants-commune-view',
kwargs={'pk': self.kwargs['pk']})
return reverse('montpellier-encombrants-commune-view', kwargs={'pk': self.kwargs['pk']})
def get_initial(self):
try:

View File

@ -25,9 +25,9 @@ class eo_sdist(sdist):
def get_version():
'''Use the VERSION, if absent generates a version with git describe, if not
tag exists, take 0.0- and add the length of the commit log.
'''
"""Use the VERSION, if absent generates a version with git describe, if not
tag exists, take 0.0- and add the length of the commit log.
"""
if os.path.exists('VERSION'):
with open('VERSION', 'r') as v:
return v.read()
@ -65,6 +65,7 @@ class compile_translations(Command):
curdir = os.getcwd()
try:
from django.core.management import call_command
for path, dirs, files in os.walk('passerelle_montpellier_encombrants'):
if 'locale' not in dirs:
continue
@ -104,13 +105,14 @@ setup(
'Programming Language :: Python',
'Programming Language :: Python :: 2',
],
install_requires=['django>=1.11, <1.12',
],
install_requires=[
'django>=1.11, <1.12',
],
zip_safe=False,
cmdclass={
'build': build,
'compile_translations': compile_translations,
'install_lib': install_lib,
'sdist': eo_sdist,
}
},
)

View File

@ -3,15 +3,14 @@ import os
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
INSTALLED_APPS += (
'passerelle_montpellier_encombrants',
)
INSTALLED_APPS += ('passerelle_montpellier_encombrants',)
DATABASES = {
'default': {
'ENGINE': os.environ.get('DB_ENGINE', 'django.db.backends.sqlite3'),
'TEST': {
'NAME': 'passerelle-montpellier-encombrants-test-%s' % os.environ.get('BRANCH_NAME', '').replace('/', '-')[:63],
'NAME': 'passerelle-montpellier-encombrants-test-%s'
% os.environ.get('BRANCH_NAME', '').replace('/', '-')[:63],
},
}
}

View File

@ -11,15 +11,29 @@ from django.core.urlresolvers import reverse
from django.utils.encoding import force_text
from passerelle_montpellier_encombrants.models import (
EncombrantsManagement, Commune, Sector, CollectDay, Street)
EncombrantsManagement,
Commune,
Sector,
CollectDay,
Street,
)
maurin_streets = ('CHE DES JARDINS DE MAGUELONE', 'RTE DEPARTEMENTALE 132',
'CHE DE SAINT-HUBERT', 'PLAN DU MAS DE SARDAN',
'R DES ROBINIERS')
maurin_streets = (
'CHE DES JARDINS DE MAGUELONE',
'RTE DEPARTEMENTALE 132',
'CHE DE SAINT-HUBERT',
'PLAN DU MAS DE SARDAN',
'R DES ROBINIERS',
)
lattes_streets = ('AV DE BOIRARGUES', 'RPT DE LA FONTVIN', 'PLAN ROSSINI',
'R DES CYCLAMENS', 'RTE DEPARTEMENTALE 172',
'CHE DU MAS DE CAUSSE À L\'ESTELLE')
lattes_streets = (
'AV DE BOIRARGUES',
'RPT DE LA FONTVIN',
'PLAN ROSSINI',
'R DES CYCLAMENS',
'RTE DEPARTEMENTALE 172',
'CHE DU MAS DE CAUSSE À L\'ESTELLE',
)
class EncombrantsTestCase(TestCase):
@ -27,15 +41,17 @@ class EncombrantsTestCase(TestCase):
def setUp(self):
self.client = Client()
self.instance = EncombrantsManagement.objects.create(title='montpellier',
slug='montpellier',
description='encombrants')
self.instance = EncombrantsManagement.objects.create(
title='montpellier', slug='montpellier', description='encombrants'
)
self.now = datetime.datetime.now()
for mail, insee, name in (('cournonsec@montpellier3m.fr', '34087', 'Cournonsec'),
('jacou@montpellier3m.fr', '34120', 'Jacou'),
('castelnau@montpellier3m.fr', '34057', 'Castelnau'),
('prades@montpellier3m.fr', '34217', 'Prades'),
('sussargues@montpellier3m.fr', '34307', 'Sussargues')):
for mail, insee, name in (
('cournonsec@montpellier3m.fr', '34087', 'Cournonsec'),
('jacou@montpellier3m.fr', '34120', 'Jacou'),
('castelnau@montpellier3m.fr', '34057', 'Castelnau'),
('prades@montpellier3m.fr', '34217', 'Prades'),
('sussargues@montpellier3m.fr', '34307', 'Sussargues'),
):
sector = Sector.objects.create(contact_email=mail)
commune = Commune.objects.create(sector=sector, insee=insee, name=name)
for i in range(2, randint(3, 10)):
@ -44,75 +60,90 @@ class EncombrantsTestCase(TestCase):
def test_collectdays(self):
for commune in Commune.objects.all():
r = self.client.get(reverse('montpellier-encombrants-available-days',
kwargs={'slug': self.instance.slug, 'insee': commune.insee}))
r = self.client.get(
reverse(
'montpellier-encombrants-available-days',
kwargs={'slug': self.instance.slug, 'insee': commune.insee},
)
)
data = json.loads(force_text(r.content))
def test_collectdays_in_communes_with_street(self):
maurin_sector = Sector.objects.create(contact_email='maurin@montpellier3m.fr')
maurin_commune = Commune.objects.create(sector=maurin_sector, name='Maurin',
insee='34970')
maurin_commune = Commune.objects.create(sector=maurin_sector, name='Maurin', insee='34970')
lattes_sector = Sector.objects.create(contact_email='lattes@montpellier3m.fr')
lattes_commune = Commune.objects.create(sector=lattes_sector, name='Lattes',
insee='34970')
lattes_commune = Commune.objects.create(sector=lattes_sector, name='Lattes', insee='34970')
for s in maurin_streets:
Street.objects.create(commune=maurin_commune, name=s)
CollectDay.objects.create(sector=maurin_sector,
date=self.now + datetime.timedelta(days=2))
CollectDay.objects.create(sector=maurin_sector, date=self.now + datetime.timedelta(days=2))
# Maurin
r = self.client.get(reverse('montpellier-encombrants-available-days',
kwargs={'slug': self.instance.slug,
'insee': '34970'}), {'adresse': 'PLAN DU MAS DE SARDAN'})
r = self.client.get(
reverse(
'montpellier-encombrants-available-days',
kwargs={'slug': self.instance.slug, 'insee': '34970'},
),
{'adresse': 'PLAN DU MAS DE SARDAN'},
)
data = json.loads(force_text(r.content))
#self.assertNotEqual(data['data'], [])
# self.assertNotEqual(data['data'], [])
# Lattes
for s in lattes_streets:
Street.objects.create(commune=lattes_commune, name=s)
r = self.client.get(reverse('montpellier-encombrants-available-days',
kwargs={'slug': self.instance.slug,
'insee': '34970'}), {'adresse': 'ROUTE DEPARTEMENTALE 172'})
r = self.client.get(
reverse(
'montpellier-encombrants-available-days',
kwargs={'slug': self.instance.slug, 'insee': '34970'},
),
{'adresse': 'ROUTE DEPARTEMENTALE 172'},
)
data = json.loads(force_text(r.content))
#self.assertEqual(data['data'], [])
# self.assertEqual(data['data'], [])
CollectDay.objects.create(sector=lattes_sector,
date=self.now + datetime.timedelta(days=4))
CollectDay.objects.create(sector=lattes_sector, date=self.now + datetime.timedelta(days=4))
r = self.client.get(reverse('montpellier-encombrants-available-days',
kwargs={'slug': self.instance.slug,
'insee': '34970'}), {'adresse': 'ROUTE DEPARTEMENTALE 172'})
r = self.client.get(
reverse(
'montpellier-encombrants-available-days',
kwargs={'slug': self.instance.slug, 'insee': '34970'},
),
{'adresse': 'ROUTE DEPARTEMENTALE 172'},
)
data = json.loads(force_text(r.content))
self.assertNotEqual(data['data'], [])
def test_collectdays_nonexisting_street(self):
r = self.client.get(reverse('montpellier-encombrants-available-days',
kwargs={'slug': self.instance.slug,
'insee': '34970'}), {'adresse': 'Nonexisting street'})
r = self.client.get(
reverse(
'montpellier-encombrants-available-days',
kwargs={'slug': self.instance.slug, 'insee': '34970'},
),
{'adresse': 'Nonexisting street'},
)
data = json.loads(force_text(r.content))
self.assertEqual(data['data'], [])
def test_collectdays_random_case_street(self):
lattes_sector = Sector.objects.create(contact_email='lattes@montpellier3m.fr')
lattes_commune = Commune.objects.create(sector=lattes_sector, name='Lattes',
insee='34970')
lattes_commune = Commune.objects.create(sector=lattes_sector, name='Lattes', insee='34970')
for s in lattes_streets:
Street.objects.create(commune=lattes_commune, name=s)
CollectDay.objects.create(sector=lattes_sector,
date=self.now + datetime.timedelta(days=10))
CollectDay.objects.create(sector=lattes_sector, date=self.now + datetime.timedelta(days=10))
r = self.client.get(reverse('montpellier-encombrants-available-days',
kwargs={'slug': self.instance.slug,
'insee': '34970'}), {'adresse': 'route departementale 172'})
r = self.client.get(
reverse(
'montpellier-encombrants-available-days',
kwargs={'slug': self.instance.slug, 'insee': '34970'},
),
{'adresse': 'route departementale 172'},
)
data = json.loads(force_text(r.content))
self.assertNotEqual(data['data'], [])