From 102178710366ee957db552cd524498519780a0e5 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Sat, 4 Apr 2020 11:57:20 +0200 Subject: [PATCH 1/2] family: PEP8, style (#41327) --- passerelle/apps/family/models.py | 139 +++++++++++++++++-------------- 1 file changed, 76 insertions(+), 63 deletions(-) diff --git a/passerelle/apps/family/models.py b/passerelle/apps/family/models.py index c4985b08..974c8a19 100644 --- a/passerelle/apps/family/models.py +++ b/passerelle/apps/family/models.py @@ -16,9 +16,8 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from datetime import date, time +from datetime import date import os -import shutil import sys import zipfile @@ -30,7 +29,7 @@ from django.utils import six from django.utils.translation import ugettext_lazy as _ from django.http import Http404, HttpResponse from django.db import models, transaction -from django.utils.timezone import make_aware, datetime, get_current_timezone, now, is_naive +from django.utils.timezone import make_aware, datetime, now, is_naive from passerelle.base.models import BaseResource from passerelle.compat import json_loads @@ -73,6 +72,7 @@ def format_address(data): address += ', %(zipcode)s %(city)s' % data return address + def format_family(family): data = {'quotient': family.family_quotient} for attr in ('street_name', 'street_number', 'address_complement', @@ -81,6 +81,7 @@ def format_family(family): data['address'] = format_address(data) return data + def format_person(p): data = {'id': str(p.id), 'text': p.fullname, @@ -94,23 +95,27 @@ def format_person(p): data['address'] = format_address(data) return data + def format_invoice(i): - invoice = {'id': i.external_id, - 'label': i.label, - 'amount': i.amount, - 'total_amount': i.total_amount, - 'created': i.issue_date, - 'pay_limit_date': i.pay_limit_date, - 'payment_date': i.payment_date, - 'paid': i.paid, - 'online_payment': i.online_payment, - 'no_online_payment_reason': i.no_online_payment_reason, - 'has_pdf': i.has_pdf} + invoice = { + 'id': i.external_id, + 'label': i.label, + 'amount': i.amount, + 'total_amount': i.total_amount, + 'created': i.issue_date, + 'pay_limit_date': i.pay_limit_date, + 'payment_date': i.payment_date, + 'paid': i.paid, + 'online_payment': i.online_payment, + 'no_online_payment_reason': i.no_online_payment_reason, + 'has_pdf': i.has_pdf + } if now().date() > i.pay_limit_date: invoice['online_payment'] = False invoice['no_online_payment_reason'] = 'past-due-date' return invoice + class FileNotFoundError(Exception): http_status = 200 log_error = False @@ -122,22 +127,23 @@ def dict_cherry_pick(d1, attributes): old_key = new_key = attribute if isinstance(attribute, tuple): old_key, new_key = attribute - if not old_key in d1: + if old_key not in d1: continue d2[new_key] = d1[old_key] return d2 + class GenericFamily(BaseResource): category = _('Business Process Connectors') archive = models.FileField(_('Data Archive'), upload_to='archives', max_length=256) file_format = models.CharField( - _('File Format'), max_length=40, - choices=( - ('native', _('Native')), - ('concerto_fondettes', _('Concerto extract from Fondettes')), - ('concerto_orleans', _(u'Concerto extract from Orléans')), - ), - default='native') + _('File Format'), max_length=40, + choices=( + ('native', _('Native')), + ('concerto_fondettes', _('Concerto extract from Fondettes')), + ('concerto_orleans', _(u'Concerto extract from Orléans')), + ), + default='native') class Meta: verbose_name = _('Generic Family Connector') @@ -191,54 +197,56 @@ class GenericFamily(BaseResource): families.append(family_data['id']) address = family_data.get('address') or {} family_data.update(address) - data = dict_cherry_pick(family_data, - ('login', - 'password', - 'family_quotient', - ('number', 'street_number'), - ('postal_code', 'zipcode'), - ('street', 'street_name'), - ('complement', 'address_complement'))) - family, created = Family.objects.update_or_create(external_id=family_data['id'], - resource=self, defaults=data) + data = dict_cherry_pick( + family_data, + ('login', + 'password', + 'family_quotient', + ('number', 'street_number'), + ('postal_code', 'zipcode'), + ('street', 'street_name'), + ('complement', 'address_complement'))) + family, created = Family.objects.update_or_create( + external_id=family_data['id'], resource=self, defaults=data) for adult in family_data.get('adults') or []: adults.append(adult['id']) adult_address = adult.get('address') or {} adult.update(adult_address) - data = dict_cherry_pick(adult, - ('first_name', - 'last_name', - 'phone', - ('mobile', 'cellphone'), - 'sex', - ('number', 'street_number'), - ('postal_code', 'zipcode'), - ('street', 'street_name'), - ('complement', 'address_complement'), - 'country') - ) - Adult.objects.update_or_create(family=family, - external_id=adult['id'], defaults=data) + data = dict_cherry_pick( + adult, + ('first_name', + 'last_name', + 'phone', + ('mobile', 'cellphone'), + 'sex', + ('number', 'street_number'), + ('postal_code', 'zipcode'), + ('street', 'street_name'), + ('complement', 'address_complement'), + 'country')) + Adult.objects.update_or_create( + family=family, external_id=adult['id'], defaults=data) # cleanup adults Adult.objects.exclude(external_id__in=adults).delete() for child in family_data.get('children') or []: children.append(child['id']) - data = dict_cherry_pick(child, - ('first_name', 'last_name', 'sex', 'birthdate')) + data = dict_cherry_pick(child, ('first_name', 'last_name', 'sex', 'birthdate')) Child.objects.get_or_create(family=family, - external_id=child['id'], defaults=data) + external_id=child['id'], + defaults=data) # cleanup children Child.objects.exclude(external_id__in=children).delete() for invoice in family_data['invoices']: invoices.append(invoice['id']) - data = dict_cherry_pick(invoice, - ('label', - ('created', 'issue_date'), - 'pay_limit_date', - 'litigation_date', 'total_amount', 'payment_date', - 'amount', 'autobilling')) + data = dict_cherry_pick( + invoice, + ('label', + ('created', 'issue_date'), + 'pay_limit_date', + 'litigation_date', 'total_amount', 'payment_date', + 'amount', 'autobilling')) for date_attribute in data.keys(): if not date_attribute.endswith('_date'): continue @@ -248,7 +256,9 @@ class GenericFamily(BaseResource): data[date_attribute] = get_date(data[date_attribute]) data['paid'] = bool(data.get('payment_date')) Invoice.objects.update_or_create(resource=self, - family=family, external_id=invoice['id'], defaults=data) + family=family, + external_id=invoice['id'], + defaults=data) if 'invoices/%s.pdf' % invoice['id'] in archive_files: with open(os.path.join(invoices_dir, '%s.pdf' % invoice['id']), 'wb') as fp: fp.write(archive.read('invoices/%s.pdf' % invoice['id'])) @@ -257,7 +267,7 @@ class GenericFamily(BaseResource): Invoice.objects.exclude(external_id__in=invoices).delete() for filename in os.listdir(invoices_dir): file_invoice_id = os.path.splitext(filename)[0] - if not file_invoice_id in invoices: + if file_invoice_id not in invoices: os.unlink(os.path.join(invoices_dir, filename)) # cleanup families @@ -348,7 +358,7 @@ class GenericFamily(BaseResource): return None @endpoint(name='regie', perm='can_access', - pattern='^invoice/(?P\w+)/$') + pattern=r'^invoice/(?P\w+)/$') def get_invoice_details(self, request, invoice_id, NameID=None, email=None, **kwargs): invoice = self.get_invoice(invoice_id) if not invoice: @@ -356,7 +366,7 @@ class GenericFamily(BaseResource): return {'data': format_invoice(invoice)} @endpoint(name='regie', perm='can_access', - pattern='^invoice/(?P\w+)/pdf/$') + pattern=r'^invoice/(?P\w+)/pdf/$') def get_invoice_pdf(self, request, invoice_id, **kwargs): invoice = self.get_invoice(invoice_id) if not invoice: @@ -364,7 +374,7 @@ class GenericFamily(BaseResource): return invoice.get_pdf() @endpoint(name='regie', methods=['post'], - perm='can_access', pattern='^invoice/(?P\w+)/pay/$') + perm='can_access', pattern=r'^invoice/(?P\w+)/pay/$') def pay_invoice(self, request, invoice_id, **kwargs): data = json_loads(request.body) invoice = self.get_invoice(invoice_id) @@ -381,9 +391,12 @@ class GenericFamily(BaseResource): @endpoint(name='regie', perm='can_access', pattern='^users/with-pending-invoices/$') def get_pending_invoices_by_nameid(self, request): data = defaultdict(lambda: {'invoices': []}) - for i in Invoice.objects.filter(payment_date__isnull=True, - family__resource=self, - family__familylink__isnull=False).select_related('family').prefetch_related('family__familylink_set'): + for i in (Invoice.objects.filter( + payment_date__isnull=True, + family__resource=self, + family__familylink__isnull=False) + .select_related('family') + .prefetch_related('family__familylink_set')): name_id = i.family.familylink_set.all()[0].name_id data[name_id]['invoices'].append(format_invoice(i)) return {'data': data} -- 2.24.0