diff --git a/passerelle_montpellier_encombrants/__init__.py b/passerelle_montpellier_encombrants/__init__.py
index 0b8e595..f1a0cf8 100644
--- a/passerelle_montpellier_encombrants/__init__.py
+++ b/passerelle_montpellier_encombrants/__init__.py
@@ -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'
diff --git a/passerelle_montpellier_encombrants/forms.py b/passerelle_montpellier_encombrants/forms.py
index 34f3f85..ceb73aa 100644
--- a/passerelle_montpellier_encombrants/forms.py
+++ b/passerelle_montpellier_encombrants/forms.py
@@ -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,
+ )
diff --git a/passerelle_montpellier_encombrants/management/commands/notify_sectors.py b/passerelle_montpellier_encombrants/management/commands/notify_sectors.py
index 7f369f9..2264ca5 100644
--- a/passerelle_montpellier_encombrants/management/commands/notify_sectors.py
+++ b/passerelle_montpellier_encombrants/management/commands/notify_sectors.py
@@ -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)
diff --git a/passerelle_montpellier_encombrants/migrations/0001_initial.py b/passerelle_montpellier_encombrants/migrations/0001_initial.py
index 844f4cc..bb8b9c8 100644
--- a/passerelle_montpellier_encombrants/migrations/0001_initial.py
+++ b/passerelle_montpellier_encombrants/migrations/0001_initial.py
@@ -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')),
diff --git a/passerelle_montpellier_encombrants/migrations/0002_auto_20150413_0629.py b/passerelle_montpellier_encombrants/migrations/0002_auto_20150413_0629.py
index 885a0f8..0b10786 100644
--- a/passerelle_montpellier_encombrants/migrations/0002_auto_20150413_0629.py
+++ b/passerelle_montpellier_encombrants/migrations/0002_auto_20150413_0629.py
@@ -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(
diff --git a/passerelle_montpellier_encombrants/migrations/0005_street.py b/passerelle_montpellier_encombrants/migrations/0005_street.py
index 7abb8fa..bcb3245 100644
--- a/passerelle_montpellier_encombrants/migrations/0005_street.py
+++ b/passerelle_montpellier_encombrants/migrations/0005_street.py
@@ -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,),
),
]
diff --git a/passerelle_montpellier_encombrants/migrations/0007_auto_20150915_1014.py b/passerelle_montpellier_encombrants/migrations/0007_auto_20150915_1014.py
index 1230c0e..1575581 100644
--- a/passerelle_montpellier_encombrants/migrations/0007_auto_20150915_1014.py
+++ b/passerelle_montpellier_encombrants/migrations/0007_auto_20150915_1014.py
@@ -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,
),
]
diff --git a/passerelle_montpellier_encombrants/migrations/0008_auto_20151201_0440.py b/passerelle_montpellier_encombrants/migrations/0008_auto_20151201_0440.py
index bd43f94..1244a79 100644
--- a/passerelle_montpellier_encombrants/migrations/0008_auto_20151201_0440.py
+++ b/passerelle_montpellier_encombrants/migrations/0008_auto_20151201_0440.py
@@ -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,
),
]
diff --git a/passerelle_montpellier_encombrants/migrations/0009_encombrantsmanagement_log_level.py b/passerelle_montpellier_encombrants/migrations/0009_encombrantsmanagement_log_level.py
index 6c4cb3d..169e6fe 100644
--- a/passerelle_montpellier_encombrants/migrations/0009_encombrantsmanagement_log_level.py
+++ b/passerelle_montpellier_encombrants/migrations/0009_encombrantsmanagement_log_level.py
@@ -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'),
+ ],
+ ),
),
]
diff --git a/passerelle_montpellier_encombrants/migrations/0011_auto_20180101_1706.py b/passerelle_montpellier_encombrants/migrations/0011_auto_20180101_1706.py
index db01b37..64bdd9d 100644
--- a/passerelle_montpellier_encombrants/migrations/0011_auto_20180101_1706.py
+++ b/passerelle_montpellier_encombrants/migrations/0011_auto_20180101_1706.py
@@ -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',
+ ),
),
]
diff --git a/passerelle_montpellier_encombrants/models.py b/passerelle_montpellier_encombrants/models.py
index deb1ac0..0cd5d2b 100644
--- a/passerelle_montpellier_encombrants/models.py
+++ b/passerelle_montpellier_encombrants/models.py
@@ -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:
diff --git a/passerelle_montpellier_encombrants/ods.py b/passerelle_montpellier_encombrants/ods.py
index 1a7db13..45f724f 100644
--- a/passerelle_montpellier_encombrants/ods.py
+++ b/passerelle_montpellier_encombrants/ods.py
@@ -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', '''
+ z.writestr(
+ 'META-INF/manifest.xml',
+ '''
-''')
- z.writestr('styles.xml', '''
+''',
+ )
+ z.writestr(
+ 'styles.xml',
+ '''
-''')
+''',
+ )
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)
diff --git a/passerelle_montpellier_encombrants/urls.py b/passerelle_montpellier_encombrants/urls.py
index b95ae62..6224ac0 100644
--- a/passerelle_montpellier_encombrants/urls.py
+++ b/passerelle_montpellier_encombrants/urls.py
@@ -21,51 +21,76 @@ from django.contrib.auth.decorators import login_required
from .views import *
public_urlpatterns = [
- url(r'^(?P[\w,-]+)/$', EncombrantsManagementDetailView.as_view(),
- name='montpellier-encombrants-view'),
- url(r'^(?P[\w,-]+)/available/(?P\d+)$', AvailableDaysView.as_view(),
- name='montpellier-encombrants-available-days'),
+ url(
+ r'^(?P[\w,-]+)/$',
+ EncombrantsManagementDetailView.as_view(),
+ name='montpellier-encombrants-view',
+ ),
+ url(
+ r'^(?P[\w,-]+)/available/(?P\d+)$',
+ AvailableDaysView.as_view(),
+ name='montpellier-encombrants-available-days',
+ ),
]
management_urlpatterns = [
- url(r'^add$', EncombrantsManagementCreateView.as_view(),
- name='montpellier-encombrants-add'),
- url(r'^(?P[\w,-]+)/edit$', EncombrantsManagementUpdateView.as_view(),
- name='montpellier-encombrants-edit'),
- url(r'^(?P[\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[\w,-]+)/$', SectorUpdateView.as_view(),
- name='montpellier-encombrants-sector-update'),
- url(r'^sectors/(?P[\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[\w,-]+)/edit$', CommuneUpdateView.as_view(),
- name='montpellier-encombrants-commune-edit'),
- url(r'^communes/(?P[\w,-]+)$', CommuneView.as_view(),
- name='montpellier-encombrants-commune-view'),
- url(r'^communes/(?P[\w,-]+)/streets$', StreetEditView.as_view(),
- name='montpellier-encombrants-commune-streets-edit-view'),
- url(r'^communes/(?P[\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[\w,-]+)/delete$', CollectDayDeleteView.as_view(),
- name='montpellier-encombrants-collectday-remove'),
+ url(r'^add$', EncombrantsManagementCreateView.as_view(), name='montpellier-encombrants-add'),
+ url(
+ r'^(?P[\w,-]+)/edit$',
+ EncombrantsManagementUpdateView.as_view(),
+ name='montpellier-encombrants-edit',
+ ),
+ url(
+ r'^(?P[\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[\w,-]+)/$',
+ SectorUpdateView.as_view(),
+ name='montpellier-encombrants-sector-update',
+ ),
+ url(
+ r'^sectors/(?P[\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[\w,-]+)/edit$',
+ CommuneUpdateView.as_view(),
+ name='montpellier-encombrants-commune-edit',
+ ),
+ url(r'^communes/(?P[\w,-]+)$', CommuneView.as_view(), name='montpellier-encombrants-commune-view'),
+ url(
+ r'^communes/(?P[\w,-]+)/streets$',
+ StreetEditView.as_view(),
+ name='montpellier-encombrants-commune-streets-edit-view',
+ ),
+ url(
+ r'^communes/(?P[\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[\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)),
+ ),
+ ],
)
diff --git a/passerelle_montpellier_encombrants/utils.py b/passerelle_montpellier_encombrants/utils.py
index e54f683..07a2bcf 100644
--- a/passerelle_montpellier_encombrants/utils.py
+++ b/passerelle_montpellier_encombrants/utils.py
@@ -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()
diff --git a/passerelle_montpellier_encombrants/views.py b/passerelle_montpellier_encombrants/views.py
index a90ec53..1bed808 100644
--- a/passerelle_montpellier_encombrants/views.py
+++ b/passerelle_montpellier_encombrants/views.py
@@ -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:
diff --git a/setup.py b/setup.py
index 372ce57..4f2e32d 100644
--- a/setup.py
+++ b/setup.py
@@ -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,
- }
+ },
)
diff --git a/tests/settings.py b/tests/settings.py
index 484bf2e..2187fae 100644
--- a/tests/settings.py
+++ b/tests/settings.py
@@ -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],
},
}
}
diff --git a/tests/test_main.py b/tests/test_main.py
index 23efb94..b5ba424 100644
--- a/tests/test_main.py
+++ b/tests/test_main.py
@@ -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'], [])