diff options
| author | Magnus Hagander | 2018-12-14 14:04:33 +0000 |
|---|---|---|
| committer | Magnus Hagander | 2018-12-14 14:04:33 +0000 |
| commit | ae28c2fec8398c753d6d82c3ca65bca067734802 (patch) | |
| tree | b516bd8757a55c5d4af3483613e6189deb4bd2f3 | |
| parent | 52f065bb9bbe9a9e6f648dc31c25ba3af147ac85 (diff) | |
Fix spaces before/after comma and colon
Mostly not important, but getting rid of the PIP warnings will help
catch errors in the future.
63 files changed, 267 insertions, 267 deletions
diff --git a/postgresqleu/accounting/forms.py b/postgresqleu/accounting/forms.py index 248f7815..1c39098a 100644 --- a/postgresqleu/accounting/forms.py +++ b/postgresqleu/accounting/forms.py @@ -21,8 +21,8 @@ def PositiveValidator(v): raise ValidationError("Value must be a positive integer") class JournalItemForm(forms.ModelForm): - debit = forms.DecimalField(max_digits=10, decimal_places=2, validators=[PositiveValidator,], required=False) - credit = forms.DecimalField(max_digits=10, decimal_places=2, validators=[PositiveValidator,], required=False) + debit = forms.DecimalField(max_digits=10, decimal_places=2, validators=[PositiveValidator, ], required=False) + credit = forms.DecimalField(max_digits=10, decimal_places=2, validators=[PositiveValidator, ], required=False) def __init__(self, *args, **kwargs): super(JournalItemForm, self).__init__(*args, **kwargs) diff --git a/postgresqleu/accounting/models.py b/postgresqleu/accounting/models.py index 8cee3bbb..fee3d9fc 100644 --- a/postgresqleu/accounting/models.py +++ b/postgresqleu/accounting/models.py @@ -62,7 +62,7 @@ class Year(models.Model): class IncomingBalance(models.Model): year = models.ForeignKey(Year, null=False, blank=False, on_delete=models.CASCADE) account = models.ForeignKey(Account, to_field='num', null=False, blank=False, on_delete=models.CASCADE) - amount = models.DecimalField(max_digits=10, decimal_places=2, null=False, blank=False, validators=[nonzero_validator,]) + amount = models.DecimalField(max_digits=10, decimal_places=2, null=False, blank=False, validators=[nonzero_validator, ]) def __unicode__(self): return "%s / %s" % (self.year_id, self.account) @@ -98,7 +98,7 @@ class JournalEntry(models.Model): class JournalItem(models.Model): journal = models.ForeignKey(JournalEntry, null=False, blank=False, on_delete=models.CASCADE) account = models.ForeignKey(Account, to_field='num', null=False, blank=False, on_delete=models.CASCADE) - amount = models.DecimalField(max_digits=10, decimal_places=2, null=False, blank=False, validators=[nonzero_validator,]) + amount = models.DecimalField(max_digits=10, decimal_places=2, null=False, blank=False, validators=[nonzero_validator, ]) object = models.ForeignKey(Object, null=True, blank=True, on_delete=models.CASCADE) description = models.CharField(max_length=200, null=False, blank=False) diff --git a/postgresqleu/accounting/views.py b/postgresqleu/accounting/views.py index 01b1c5e3..700308f7 100644 --- a/postgresqleu/accounting/views.py +++ b/postgresqleu/accounting/views.py @@ -96,7 +96,7 @@ def new(request, year): lastentry = JournalEntry.objects.filter(year=year).order_by('-date')[0] d = lastentry.date except IndexError: - d = date(year,1,1) + d = date(year, 1, 1) year = get_object_or_404(Year, year=year) highseq = JournalEntry.objects.filter(year=year).aggregate(Max('seq'))['seq__max'] @@ -327,7 +327,7 @@ SELECT ac.name AS acname, ag.name AS agname, anum, a.name, else: # Ok, let's do this :) # Create a new year if we have to - (nextyear, created) = Year.objects.get_or_create(year=year.year + 1, defaults={'isopen':True}) + (nextyear, created) = Year.objects.get_or_create(year=year.year + 1, defaults={'isopen': True}) # Start by transferring this years result IncomingBalance(year=nextyear, @@ -406,7 +406,7 @@ def report(request, year, reporttype): enddate = date(year.year, 12, 31) else: # Yes, this is ugly indeed :) - enddate = date(9999,12,31) + enddate = date(9999, 12, 31) if request.GET.has_key('io') and request.GET['io'] == '1': includeopen = True diff --git a/postgresqleu/adyen/management/commands/process_adyen_reports.py b/postgresqleu/adyen/management/commands/process_adyen_reports.py index 173510a4..30320bf1 100644 --- a/postgresqleu/adyen/management/commands/process_adyen_reports.py +++ b/postgresqleu/adyen/management/commands/process_adyen_reports.py @@ -156,7 +156,7 @@ class Command(BaseCommand): return 'AAA' return a[0] - msg = "\n".join(["%-20s: %s" % (k,v) for k,v in sorted(types.iteritems(), key=sort_types)]) + msg = "\n".join(["%-20s: %s" % (k, v) for k, v in sorted(types.iteritems(), key=sort_types)]) acct = report.notification.merchantAccountCode # Generate an accounting record, iff we know what every row on the diff --git a/postgresqleu/adyen/management/commands/send_adyen_logreport.py b/postgresqleu/adyen/management/commands/send_adyen_logreport.py index 6ecdbaa7..88447a50 100755 --- a/postgresqleu/adyen/management/commands/send_adyen_logreport.py +++ b/postgresqleu/adyen/management/commands/send_adyen_logreport.py @@ -24,7 +24,7 @@ class Command(BaseCommand): @transaction.atomic def report_loglines(self): - lines = list(AdyenLog.objects.filter(error=True,sent=False).order_by('timestamp')) + lines = list(AdyenLog.objects.filter(error=True, sent=False).order_by('timestamp')) if len(lines): sio = StringIO() sio.write("The following error events have been logged by the Adyen integration:\n\n") diff --git a/postgresqleu/adyen/util.py b/postgresqleu/adyen/util.py index fd54293b..af72c0c0 100644 --- a/postgresqleu/adyen/util.py +++ b/postgresqleu/adyen/util.py @@ -41,7 +41,7 @@ def process_authorization(notification): # Generate urls pointing back to this entry in the Adyen online # system, for inclusion in accounting records. - urls = ["https://ca-live.adyen.com/ca/ca/accounts/showTx.shtml?pspReference=%s&txType=Payment&accountKey=MerchantAccount.%s" % (notification.pspReference, notification.merchantAccountCode),] + urls = ["https://ca-live.adyen.com/ca/ca/accounts/showTx.shtml?pspReference=%s&txType=Payment&accountKey=MerchantAccount.%s" % (notification.pspReference, notification.merchantAccountCode), ] # We can receive authorizations on non-primary Adyen merchant # accounts. This happens for example with payments from POS diff --git a/postgresqleu/braintreepayment/management/commands/send_braintree_logreport.py b/postgresqleu/braintreepayment/management/commands/send_braintree_logreport.py index 733c7880..98cfb89b 100755 --- a/postgresqleu/braintreepayment/management/commands/send_braintree_logreport.py +++ b/postgresqleu/braintreepayment/management/commands/send_braintree_logreport.py @@ -17,7 +17,7 @@ class Command(BaseCommand): def handle(self, *args, **options): with transaction.atomic(): - lines = list(BraintreeLog.objects.filter(error=True,sent=False).order_by('timestamp')) + lines = list(BraintreeLog.objects.filter(error=True, sent=False).order_by('timestamp')) if len(lines): sio = StringIO() diff --git a/postgresqleu/braintreepayment/management/commands/update_braintree_transactions.py b/postgresqleu/braintreepayment/management/commands/update_braintree_transactions.py index 9470f313..09f54141 100755 --- a/postgresqleu/braintreepayment/management/commands/update_braintree_transactions.py +++ b/postgresqleu/braintreepayment/management/commands/update_braintree_transactions.py @@ -86,7 +86,7 @@ class Command(BaseCommand): continue BraintreeLog(transid=t.transid, - message='Transaction has been disbursed, amount {0}, settled amount {1}'.format(btrans.amount,btrans.disbursement_details.settlement_amount)).save() + message='Transaction has been disbursed, amount {0}, settled amount {1}'.format(btrans.amount, btrans.disbursement_details.settlement_amount)).save() t.disbursedat = btrans.disbursement_details.disbursement_date t.disbursedamount = btrans.disbursement_details.settlement_amount diff --git a/postgresqleu/confreg/admin.py b/postgresqleu/confreg/admin.py index 1bc09297..94e0fa95 100644 --- a/postgresqleu/confreg/admin.py +++ b/postgresqleu/confreg/admin.py @@ -105,7 +105,7 @@ class ConferenceAdminForm(SelectableWidgetAdminFormMixin, ConcurrentProtectedMod def __init__(self, *args, **kwargs): super(ConferenceAdminForm, self).__init__(*args, **kwargs) self.fields['volunteers'].widget.widget.update_query_parameters({'conference': self.instance.id}) - self.fields['accounting_object'].choices = [('', '----'),] + [(o.name, o.name) for o in Object.objects.filter(active=True)] + self.fields['accounting_object'].choices = [('', '----'), ] + [(o.name, o.name) for o in Object.objects.filter(active=True)] def clean(self): data = super(ConferenceAdminForm, self).clean() @@ -142,8 +142,8 @@ class ConferenceRegistrationAdmin(admin.ModelAdmin): ordering = ['-payconfirmedat', '-created', 'lastname', 'firstname', ] actions = ['approve_conferenceregistration', 'email_recipients'] filter_horizontal = ('additionaloptions',) - exclude = ('invoice','bulkpayment',) - readonly_fields = ('invoice_link','bulkpayment_link', 'lastmodified', ) + exclude = ('invoice', 'bulkpayment', ) + readonly_fields = ('invoice_link', 'bulkpayment_link', 'lastmodified', ) def get_queryset(self, request): qs = super(ConferenceRegistrationAdmin, self).get_queryset(request) @@ -283,8 +283,8 @@ class ConferenceSessionScheduleSlotAdmin(admin.ModelAdmin): class RegistrationClassAdmin(admin.ModelAdmin): list_display = ['regclass', 'conference', ] - list_filter = ['conference',] - ordering = ['conference','regclass'] + list_filter = ['conference', ] + ordering = ['conference', 'regclass', ] class RegistrationDayAdmin(admin.ModelAdmin): list_display = ['day', 'conference', ] @@ -311,9 +311,9 @@ class RegistrationTypeAdminForm(ConcurrentProtectedModelForm): class RegistrationTypeAdmin(admin.ModelAdmin): list_display = ['conference', 'regtype', 'cost', 'sortkey', 'active', 'activeuntil', ] - list_filter = ['conference',] - ordering = ['conference','regtype'] - filter_horizontal = ('requires_option',) + list_filter = ['conference', ] + ordering = ['conference', 'regtype', ] + filter_horizontal = ('requires_option', ) form = RegistrationTypeAdminForm class ShirtsizeAdmin(admin.ModelAdmin): @@ -396,7 +396,7 @@ class SpeakerPhotoAdmin(admin.ModelAdmin): def formfield_for_dbfield(self, db_field, **kwargs): if db_field.name == 'photo': kwargs['widget'] = InlinePhotoWidget - return super(SpeakerPhotoAdmin,self).formfield_for_dbfield(db_field,**kwargs) + return super(SpeakerPhotoAdmin, self).formfield_for_dbfield(db_field, **kwargs) class TrackAdmin(admin.ModelAdmin): list_filter = ['conference', ] @@ -412,7 +412,7 @@ class RoomAdmin(admin.ModelAdmin): model = Room class ConferenceFeedbackQuestionAdmin(admin.ModelAdmin): - list_display = ['conference', 'sortkey', 'newfieldset', 'question',] + list_display = ['conference', 'sortkey', 'newfieldset', 'question', ] list_filter = ['conference', ] class PrepaidVoucherInline(admin.TabularInline): @@ -555,7 +555,7 @@ class BulkPaymentAdminForm(SelectableWidgetAdminFormMixin, ConcurrentProtectedMo class BulkPaymentAdmin(admin.ModelAdmin): form = BulkPaymentAdminForm - list_display = ['adminstring', 'conference', 'user', 'numregs', 'paidat', 'ispaid',] + list_display = ['adminstring', 'conference', 'user', 'numregs', 'paidat', 'ispaid', ] list_filter = ['conference', ] class AttendeeMailAdminForm(ConcurrentProtectedModelForm): diff --git a/postgresqleu/confreg/backendforms.py b/postgresqleu/confreg/backendforms.py index 854256fa..5bc6741f 100644 --- a/postgresqleu/confreg/backendforms.py +++ b/postgresqleu/confreg/backendforms.py @@ -78,12 +78,12 @@ class BackendForm(ConcurrentProtectedModelForm): # but meh, this isn't used that often so... if self.fieldsets: all_fields = set([f for f in self.fields if not f == '_validator']) - all_fieldsetted_fields = set(reduce(lambda x,y: x + y, [v['fields'] for v in self.fieldsets])) + all_fieldsetted_fields = set(reduce(lambda x, y: x + y, [v['fields'] for v in self.fieldsets])) missing = all_fields.difference(all_fieldsetted_fields) if missing: raise Exception("ERROR: fields %s are not in a fieldset" % ", ".join(missing)) - for k,v in self.fields.items(): + for k, v in self.fields.items(): # Adjust widgets if isinstance(v, django.forms.fields.DateField): v.widget = HtmlDateInput() @@ -92,8 +92,8 @@ class BackendForm(ConcurrentProtectedModelForm): # the conference dates. if isinstance(v, django.forms.fields.DateTimeField) and not k in self.exclude_date_validators: v.validators.extend([ - MinValueValidator(datetime.datetime.combine(self.conference.startdate, datetime.time(0,0,0))), - MaxValueValidator(datetime.datetime.combine(self.conference.enddate + datetime.timedelta(days=1), datetime.time(0,0,0))), + MinValueValidator(datetime.datetime.combine(self.conference.startdate, datetime.time(0, 0, 0))), + MaxValueValidator(datetime.datetime.combine(self.conference.enddate + datetime.timedelta(days=1), datetime.time(0, 0, 0))), ]) elif isinstance(v, django.forms.fields.DateField) and not k in self.exclude_date_validators: v.validators.extend([ @@ -214,7 +214,7 @@ class BackendSuperConferenceForm(BackendForm): exclude_date_validators = ['startdate', 'enddate'] def fix_fields(self): - self.fields['accounting_object'].choices = [('', '----'),] + [(o.name, o.name) for o in postgresqleu.accounting.models.Object.objects.filter(active=True)] + self.fields['accounting_object'].choices = [('', '----'), ] + [(o.name, o.name) for o in postgresqleu.accounting.models.Object.objects.filter(active=True)] if not self.instance.id: self.remove_field('accounting_object') @@ -374,7 +374,7 @@ class BackendAdditionalOptionForm(BackendForm): list_fields = ['name', 'cost', 'maxcount', 'invoice_autocancel_hours'] vat_fields = {'cost': 'reg'} auto_cascade_delete_to = ['registrationtype_requires_option', 'conferenceadditionaloption_requires_regtype', - 'conferenceadditionaloption_mutually_exclusive',] + 'conferenceadditionaloption_mutually_exclusive', ] class Meta: model = ConferenceAdditionalOption fields = ['name', 'cost', 'maxcount', 'public', 'upsellable', 'invoice_autocancel_hours', @@ -499,7 +499,7 @@ class BackendConferenceSessionForm(BackendForm): raise ValidationError("Sessions with speaker cannot change from {0} to {1}. Only one of {2} is allowed.".format( get_status_string(self.instance.status), get_status_string(newstatus), - ", ".join(["{0} ({1})".format(get_status_string(s), v) for s,v in valid_status_transitions[self.instance.status].items()]), + ", ".join(["{0} ({1})".format(get_status_string(s), v) for s, v in valid_status_transitions[self.instance.status].items()]), )) return newstatus @@ -627,7 +627,7 @@ class BackendVolunteerSlotForm(BackendForm): class BackendFeedbackQuestionForm(BackendForm): helplink = 'feedback#conference' - list_fields = ['newfieldset', 'question', 'sortkey',] + list_fields = ['newfieldset', 'question', 'sortkey', ] allow_copy_previous = True class Meta: @@ -741,10 +741,10 @@ class BackendAccessTokenForm(BackendForm): fields = ['token', 'description', 'permissions', ] def _transformed_accesstoken_permissions(self): - for k,v in AccessTokenPermissions: + for k, v in AccessTokenPermissions: baseurl = '/events/admin/{0}/tokendata/{1}/{2}'.format(self.conference.urlname, self.instance.token, k) - formats = ['csv', 'tsv', 'json'] - yield k, mark_safe('{0} ({1})'.format(v,", ".join(['<a href="{0}.{1}">{1}</a>'.format(baseurl, f) for f in formats]))) + formats = ['csv', 'tsv', 'json', ] + yield k, mark_safe('{0} ({1})'.format(v, ", ".join(['<a href="{0}.{1}">{1}</a>'.format(baseurl, f) for f in formats]))) def fix_fields(self): self.fields['permissions'].widget = django.forms.CheckboxSelectMultiple( diff --git a/postgresqleu/confreg/backendviews.py b/postgresqleu/confreg/backendviews.py index 40574e32..2f478a05 100644 --- a/postgresqleu/confreg/backendviews.py +++ b/postgresqleu/confreg/backendviews.py @@ -117,7 +117,7 @@ def backend_process_form(request, urlname, formclass, id, cancel_url='../', save instance = instancemaker() # Set initial values on newly created instance, if any are set - for k,v in formclass.get_initial().items(): + for k, v in formclass.get_initial().items(): setattr(instance, k, v) else: if bypass_conference_filter: @@ -131,14 +131,14 @@ def backend_process_form(request, urlname, formclass, id, cancel_url='../', save if instance.pk: # Are there any associated objects here, by any chance? collector = NestedObjects(using='default') - collector.collect([instance,]) + collector.collect([instance, ]) to_delete = collector.nested() to_delete.remove(instance) if to_delete: to_delete = [d for d in flatten_list(to_delete[0]) if not d._meta.model_name in formclass.auto_cascade_delete_to] if to_delete: pieces = [unicode(to_delete[n]) for n in range(0, min(5, len(to_delete))) if not isinstance(to_delete[n], list)] - extra_error = u"This {0} cannot be deleted. It would have resulted in the following other objects also being deleted: {1}".format(formclass.Meta.model._meta.verbose_name,u', '.join(pieces)) + extra_error = u"This {0} cannot be deleted. It would have resulted in the following other objects also being deleted: {1}".format(formclass.Meta.model._meta.verbose_name, u', '.join(pieces)) else: messages.info(request, "{0} {1} deleted.".format(formclass.Meta.model._meta.verbose_name.capitalize(), instance)) instance.delete() @@ -225,7 +225,7 @@ def backend_handle_copy_previous(request, formclass, restpieces, conference): sourceconf = get_authenticated_conference(request, confid=sourceconfid) if request.method == "POST": - idlist = sorted([int(k[2:]) for k,v in request.POST.items() if k.startswith('c_') and v == '1']) + idlist = sorted([int(k[2:]) for k, v in request.POST.items() if k.startswith('c_') and v == '1']) if formclass.copy_transform_form: # First validate the transform form transform_form = formclass.copy_transform_form(conference, sourceconf, data=request.POST) @@ -739,7 +739,7 @@ class JsonWriter(object): def tokendata(request, urlname, token, datatype, dataformat): conference = get_object_or_404(Conference, urlname=urlname) - if not AccessToken.objects.filter(conference=conference, token=token, permissions__contains=[datatype,]).exists(): + if not AccessToken.objects.filter(conference=conference, token=token, permissions__contains=[datatype, ]).exists(): raise Http404() if dataformat.lower() == 'csv': diff --git a/postgresqleu/confreg/feedback.py b/postgresqleu/confreg/feedback.py index 032d2398..11da5a57 100644 --- a/postgresqleu/confreg/feedback.py +++ b/postgresqleu/confreg/feedback.py @@ -25,7 +25,7 @@ def build_feedback_response(question): r['textanswers'] = [a.textanswer for a in ConferenceFeedbackAnswer.objects.only('textanswer').filter(conference_id=confid, question_id=questionid).exclude(textanswer='')] else: # Numeric choices from 1-5 - r['graphdata'] = build_graphdata(question, 'rateanswer', range(0,6)) + r['graphdata'] = build_graphdata(question, 'rateanswer', range(0, 6)) return r def feedback_report(request, confname): @@ -57,7 +57,7 @@ def feedback_report(request, confname): def build_toplists(what, query): cursor = connection.cursor() for k in ('topic_importance', 'content_quality', 'speaker_knowledge', 'speaker_quality'): - tl = {'title': '%s by %s' % (what, k.replace('_',' ').title())} + tl = {'title': '%s by %s' % (what, k.replace('_', ' ').title())} cursor.execute(query.replace('{{key}}', k)) tl['list'] = cursor.fetchall() yield tl diff --git a/postgresqleu/confreg/forms.py b/postgresqleu/confreg/forms.py index ef3dc6fe..11e44829 100644 --- a/postgresqleu/confreg/forms.py +++ b/postgresqleu/confreg/forms.py @@ -250,7 +250,7 @@ class ConferenceRegistrationForm(forms.ModelForm): class Meta: model = ConferenceRegistration - exclude = ('conference','attendee','registrator','payconfirmedat','payconfirmedby','created', 'regtoken', ) + exclude = ('conference', 'attendee', 'registrator', 'payconfirmedat', 'payconfirmedby', 'created', 'regtoken', ) widgets = { 'photoconsent': forms.Select(choices=((None, ''), (True, 'I consent to having my photo taken'), (False, "I don't want my photo taken"))), } @@ -290,13 +290,13 @@ class ConferenceRegistrationForm(forms.ModelForm): yield {'id': 'additional_options', 'legend': 'Additional options', 'intro': conf.additionalintro, - 'fields': [self['additionaloptions'],], + 'fields': [self['additionaloptions'], ], } yield {'id': 'voucher_codes', 'legend': 'Voucher codes', 'intro': 'If you have a voucher or discount code, enter it in this field. If you do not have one, just leave the field empty.', - 'fields': [self['vouchercode'],], + 'fields': [self['vouchercode'], ], } class RegistrationChangeForm(forms.ModelForm): @@ -342,14 +342,14 @@ class MultiRegInvoiceForm(forms.Form): address = forms.CharField(widget=forms.widgets.Textarea, required=True) class ConferenceSessionFeedbackForm(forms.ModelForm): - topic_importance = forms.ChoiceField(widget=RadioSelect,choices=rating_choices, label='Importance of the topic') - content_quality = forms.ChoiceField(widget=RadioSelect,choices=rating_choices, label='Quality of the content') - speaker_knowledge = forms.ChoiceField(widget=RadioSelect,choices=rating_choices, label='Speakers knowledge of the subject') - speaker_quality = forms.ChoiceField(widget=RadioSelect,choices=rating_choices, label='Speakers presentation skills') + topic_importance = forms.ChoiceField(widget=RadioSelect, choices=rating_choices, label='Importance of the topic') + content_quality = forms.ChoiceField(widget=RadioSelect, choices=rating_choices, label='Quality of the content') + speaker_knowledge = forms.ChoiceField(widget=RadioSelect, choices=rating_choices, label='Speakers knowledge of the subject') + speaker_quality = forms.ChoiceField(widget=RadioSelect, choices=rating_choices, label='Speakers presentation skills') class Meta: model = ConferenceSessionFeedback - exclude = ('conference','attendee','session') + exclude = ('conference', 'attendee', 'session', ) class ConferenceFeedbackForm(forms.Form): @@ -365,7 +365,7 @@ class ConferenceFeedbackForm(forms.Form): if q.isfreetext: if q.textchoices: self.fields['question_%s' % q.id] = forms.ChoiceField(widget=RadioSelect, - choices=[(x,x) for x in q.textchoices.split(";")], + choices=[(x, x) for x in q.textchoices.split(";")], label=q.question, initial=self.get_answer_text(responses, q.id)) else: @@ -596,7 +596,7 @@ class EmailSessionForm(forms.Form): class BulkRegistrationForm(forms.Form): - recipient_name = forms.CharField(required=True, max_length=100,label='Invoice recipient name') + recipient_name = forms.CharField(required=True, max_length=100, label='Invoice recipient name') recipient_address = forms.CharField(required=True, max_length=100, label='Invoice recipient address', widget=forms.Textarea) email_list = forms.CharField(required=True, label='Emails to pay for', widget=forms.Textarea) @@ -651,7 +651,7 @@ class WaitlistOfferForm(forms.Form): def _get_id_list_from_data(self): if not self.data: return [] l = [] - for k,v in self.data.items(): + for k, v in self.data.items(): if v == '1' and k.startswith('reg_'): l.append(int(k[4:])) return l diff --git a/postgresqleu/confreg/jinjabadge.py b/postgresqleu/confreg/jinjabadge.py index 8ae60cc8..63860d2c 100755 --- a/postgresqleu/confreg/jinjabadge.py +++ b/postgresqleu/confreg/jinjabadge.py @@ -46,7 +46,7 @@ class JinjaBadge(Flowable): def draw(self): if self.js.get('border', False): - self.canv.rect(0,0,self.width,self.height) + self.canv.rect(0, 0, self.width, self.height) for e in self.js['elements']: if e == {}: @@ -146,7 +146,7 @@ def escapejson_filter(v): # those, but only one if there is more than one. return re.sub(r'^"|"$', '', json.dumps(v)) -def test_inlist(v,l): +def test_inlist(v, l): return v in l class JinjaRenderer(object): @@ -166,7 +166,7 @@ class JinjaRenderer(object): env = jinja2.sandbox.SandboxedEnvironment() env.filters.update({ 'escapejson': escapejson_filter, - 'yesno': lambda b,v: v.split(',')[not b], + 'yesno': lambda b, v: v.split(',')[not b], }) env.tests.update({ 'inlist': test_inlist, diff --git a/postgresqleu/confreg/jinjafunc.py b/postgresqleu/confreg/jinjafunc.py index 32616230..0e486e2d 100644 --- a/postgresqleu/confreg/jinjafunc.py +++ b/postgresqleu/confreg/jinjafunc.py @@ -187,7 +187,7 @@ def filter_float_str(f, n): # Format a datetime. If it'sa datetime, call strftime. If it's a # string, assume it's iso format and convert it to a date first. def filter_datetimeformat(value, fmt): - if isinstance(value, date) or isinstance(value, datetime) or isinstance(value,time): + if isinstance(value, date) or isinstance(value, datetime) or isinstance(value, time): return value.strftime(fmt) else: return dateutil.parser.parse(value).strftime(fmt) @@ -210,10 +210,10 @@ def render_jinja_conference_response(request, conference, pagemagic, templatenam 'datetimeformat': filter_datetimeformat, 'groupby_sort': filter_groupby_sort, 'leadingnbsp': leadingnbsp, - 'markdown': lambda t: jinja2.Markup(markdown.markdown(t, extensions=['tables',])), + 'markdown': lambda t: jinja2.Markup(markdown.markdown(t, extensions=['tables', ])), 'shuffle': filter_shuffle, 'slugify': slugify, - 'yesno': lambda b,v: v.split(',')[not b], + 'yesno': lambda b, v: v.split(',')[not b], }) # If ?test=1 is specified, try to load a template with .test in the diff --git a/postgresqleu/confreg/management/commands/confreg_expire_additionaloptions.py b/postgresqleu/confreg/management/commands/confreg_expire_additionaloptions.py index dc212242..0b8b0a06 100644 --- a/postgresqleu/confreg/management/commands/confreg_expire_additionaloptions.py +++ b/postgresqleu/confreg/management/commands/confreg_expire_additionaloptions.py @@ -39,7 +39,7 @@ class Command(BaseCommand): bulkpayment__isnull=True, additionaloptions__invoice_autocancel_hours__isnull=False, ).extra( - where=["lastmodified < CURRENT_TIMESTAMP - confreg_conferenceadditionaloption.invoice_autocancel_hours * '1 hour'::interval",] + where=["lastmodified < CURRENT_TIMESTAMP - confreg_conferenceadditionaloption.invoice_autocancel_hours * '1 hour'::interval", ] ) expired = defaultdict(list) diff --git a/postgresqleu/confreg/mobileviews.py b/postgresqleu/confreg/mobileviews.py index fc358e12..1f33d892 100644 --- a/postgresqleu/confreg/mobileviews.py +++ b/postgresqleu/confreg/mobileviews.py @@ -86,7 +86,7 @@ def conferencedata(request, confname, since): curs.execute("SELECT itemid, type FROM confreg_deleteditems WHERE deltime>%(lastmod)s ORDER BY type", { 'lastmod': datefilter, }) - deldata = dict([(k, [i for i,t in v]) for k,v in itertools.groupby(curs.fetchall(), lambda t: t[1])]) + deldata = dict([(k, [i for i, t in v]) for k, v in itertools.groupby(curs.fetchall(), lambda t: t[1])]) else: deldata = {} diff --git a/postgresqleu/confreg/models.py b/postgresqleu/confreg/models.py index 303a941d..eb14972e 100644 --- a/postgresqleu/confreg/models.py +++ b/postgresqleu/confreg/models.py @@ -51,9 +51,9 @@ STATUS_CHOICES_LONG = ( (4, "Reserve-listed in case of cancels/changes"), # Reserve list ) def get_status_string(val): - return (t for v,t in STATUS_CHOICES if v == val).next() + return (t for v, t in STATUS_CHOICES if v == val).next() def get_status_string_long(val): - return (t for v,t in STATUS_CHOICES_LONG if v == val).next() + return (t for v, t in STATUS_CHOICES_LONG if v == val).next() valid_status_transitions = { 0: {3: 'Talk approved', 2: 'Talk is rejected', 4: 'Talk added to reserve list'}, @@ -68,7 +68,7 @@ def color_validator(value): raise ValidationError('Color values must start with #') if len(value) != 7: raise ValidationError('Color values must be # + 7 characters') - for n in range(0,3): + for n in range(0, 3): try: int(value[n * 2 + 1:n * 2 + 2 + 1], 16) except ValueError: @@ -104,7 +104,7 @@ class GlobalOptOut(models.Model): class Conference(models.Model): - urlname = models.CharField(max_length=32, blank=False, null=False, unique=True, validators=[validate_lowercase,], verbose_name="URL name") + urlname = models.CharField(max_length=32, blank=False, null=False, unique=True, validators=[validate_lowercase, ], verbose_name="URL name") conferencename = models.CharField(max_length=64, blank=False, null=False, verbose_name="Conference name") startdate = models.DateField(blank=False, null=False, verbose_name="Start date") enddate = models.DateField(blank=False, null=False, verbose_name="End date") @@ -113,19 +113,19 @@ class Conference(models.Model): promopicurl = models.URLField(blank=True, null=False, verbose_name="URL to promo picture", validators=[PictureUrlValidator(aspect=2.3)]) promotext = models.TextField(null=False, blank=True, max_length=1000, verbose_name="Promotion text") timediff = models.IntegerField(null=False, blank=False, default=0) - contactaddr = models.EmailField(blank=False,null=False, verbose_name="Contact address") - sponsoraddr = models.EmailField(blank=False,null=False, verbose_name="Sponsor address") - active = models.BooleanField(blank=False,null=False,default=False, verbose_name="Registration open") - callforpapersopen = models.BooleanField(blank=False,null=False,default=False, verbose_name="Call for papers open") - callforsponsorsopen = models.BooleanField(blank=False,null=False,default=False, verbose_name="Call for sponsors open") - feedbackopen = models.BooleanField(blank=False,null=False,default=False, verbose_name="Session feedback open") - conferencefeedbackopen = models.BooleanField(blank=False,null=False,default=False, verbose_name="Conference feedback open") - allowedit = models.BooleanField(blank=False,null=False,default=True, verbose_name="Allow editing registrations") - scheduleactive = models.BooleanField(blank=False,null=False,default=False,verbose_name="Schedule publishing active") - sessionsactive = models.BooleanField(blank=False,null=False,default=False,verbose_name="Session list publishing active") + contactaddr = models.EmailField(blank=False, null=False, verbose_name="Contact address") + sponsoraddr = models.EmailField(blank=False, null=False, verbose_name="Sponsor address") + active = models.BooleanField(blank=False, null=False, default=False, verbose_name="Registration open") + callforpapersopen = models.BooleanField(blank=False, null=False, default=False, verbose_name="Call for papers open") + callforsponsorsopen = models.BooleanField(blank=False, null=False, default=False, verbose_name="Call for sponsors open") + feedbackopen = models.BooleanField(blank=False, null=False, default=False, verbose_name="Session feedback open") + conferencefeedbackopen = models.BooleanField(blank=False, null=False, default=False, verbose_name="Conference feedback open") + allowedit = models.BooleanField(blank=False, null=False, default=True, verbose_name="Allow editing registrations") + scheduleactive = models.BooleanField(blank=False, null=False, default=False, verbose_name="Schedule publishing active") + sessionsactive = models.BooleanField(blank=False, null=False, default=False, verbose_name="Session list publishing active") schedulewidth = models.IntegerField(blank=False, default=600, null=False, verbose_name="Width of HTML schedule") pixelsperminute = models.FloatField(blank=False, default=1.5, null=False, verbose_name="Vertical pixels per minute") - confurl = models.CharField(max_length=128, blank=False, null=False, validators=[validate_lowercase,], verbose_name="Conference URL") + confurl = models.CharField(max_length=128, blank=False, null=False, validators=[validate_lowercase, ], verbose_name="Conference URL") twittersync_active = models.BooleanField(null=False, default=False, verbose_name='Twitter posting active') twitterreminders_active = models.BooleanField(null=False, default=False, verbose_name='Twitter reminder DMs active') twitter_user = models.CharField(max_length=32, blank=True, null=False) @@ -158,8 +158,8 @@ class Conference(models.Model): accounting_object = models.CharField(max_length=30, blank=True, null=True, verbose_name="Accounting object name") vat_registrations = models.ForeignKey(VatRate, null=True, blank=True, verbose_name='VAT rate for registrations', related_name='vat_registrations', on_delete=models.CASCADE) vat_sponsorship = models.ForeignKey(VatRate, null=True, blank=True, verbose_name='VAT rate for sponsorships', related_name='vat_sponsorship', on_delete=models.CASCADE) - invoice_autocancel_hours = models.IntegerField(blank=True, null=True, validators=[MinValueValidator(1),], verbose_name="Autocancel invoices", help_text="Automatically cancel invoices after this many hours") - attendees_before_waitlist = models.IntegerField(blank=False, null=False, default=0, validators=[MinValueValidator(0),], verbose_name="Attendees before waitlist", help_text="Maximum number of attendees before enabling waitlist management. 0 for no waitlist management") + invoice_autocancel_hours = models.IntegerField(blank=True, null=True, validators=[MinValueValidator(1), ], verbose_name="Autocancel invoices", help_text="Automatically cancel invoices after this many hours") + attendees_before_waitlist = models.IntegerField(blank=False, null=False, default=0, validators=[MinValueValidator(0), ], verbose_name="Attendees before waitlist", help_text="Maximum number of attendees before enabling waitlist management. 0 for no waitlist management") series = models.ForeignKey(ConferenceSeries, null=False, blank=False, on_delete=models.CASCADE) personal_data_purged = models.DateTimeField(null=True, blank=True, help_text="Personal data for registrations for this conference have been purged") @@ -244,7 +244,7 @@ class RegistrationClass(models.Model): return self.regclass def colortuple(self): - return tuple([int(self.badgecolor[n * 2 + 1:n * 2 + 2 + 1], 16) for n in range(0,3)]) + return tuple([int(self.badgecolor[n * 2 + 1:n * 2 + 2 + 1], 16) for n in range(0, 3)]) @property def bgcolortuplestr(self): @@ -255,7 +255,7 @@ class RegistrationClass(models.Model): def foregroundcolortuple(self): if len(self.badgeforegroundcolor): - return tuple([int(self.badgeforegroundcolor[n * 2 + 1:n * 2 + 2 + 1], 16) for n in range(0,3)]) + return tuple([int(self.badgeforegroundcolor[n * 2 + 1:n * 2 + 2 + 1], 16) for n in range(0, 3)]) else: return None @@ -305,7 +305,7 @@ class RegistrationType(models.Model): days = models.ManyToManyField(RegistrationDay, blank=True) alertmessage = models.TextField(null=False, blank=True, verbose_name="Alert message", help_text="Message shown in popup to user when completing the registration") upsell_target = models.BooleanField(null=False, blank=False, default=False, help_text='Is target registration type for upselling in order to add additional options') - invoice_autocancel_hours = models.IntegerField(blank=True, null=True, validators=[MinValueValidator(1),], verbose_name="Autocancel invoices", help_text="Automatically cancel invoices after this many hours") + invoice_autocancel_hours = models.IntegerField(blank=True, null=True, validators=[MinValueValidator(1), ], verbose_name="Autocancel invoices", help_text="Automatically cancel invoices after this many hours") requires_option = models.ManyToManyField('ConferenceAdditionalOption', blank=True, help_text='Requires at least one of the selected additional options to be picked') class Meta: @@ -357,7 +357,7 @@ class ConferenceAdditionalOption(models.Model): maxcount = models.IntegerField(null=False, verbose_name="Maximum number of uses") public = models.BooleanField(null=False, blank=False, default=True, help_text='Visible on public forms (opposite of admin only)') upsellable = models.BooleanField(null=False, blank=False, default=True, help_text='Can this option be purchased after the registration is completed') - invoice_autocancel_hours = models.IntegerField(blank=True, null=True, validators=[MinValueValidator(1),], verbose_name="Autocancel invoices", help_text="Automatically cancel invoices after this many hours") + invoice_autocancel_hours = models.IntegerField(blank=True, null=True, validators=[MinValueValidator(1), ], verbose_name="Autocancel invoices", help_text="Automatically cancel invoices after this many hours") requires_regtype = models.ManyToManyField(RegistrationType, blank=True, verbose_name="Requires registration type", help_text='Can only be picked with selected registration types') mutually_exclusive = models.ManyToManyField('self', blank=True, help_text='Mutually exlusive with these additional options', symmetrical=True) @@ -540,7 +540,7 @@ class ConferenceRegistration(models.Model): # For exporting "safe attributes" to external systems def safe_export(self): - attribs = ['firstname', 'lastname', 'email', 'company', 'address', 'country', 'phone', 'shirtsize', 'dietary', 'twittername', 'nick', 'shareemail',] + attribs = ['firstname', 'lastname', 'email', 'company', 'address', 'country', 'phone', 'shirtsize', 'dietary', 'twittername', 'nick', 'shareemail', ] d = dict((a, getattr(self, a) and unicode(getattr(self, a))) for a in attribs) if self.regtype: d['regtype'] = self.regtype.safe_export() @@ -701,7 +701,7 @@ class ConferenceSession(models.Model): @property def skill_level_string(self): - return (t for v,t in SKILL_CHOICES if v == self.skill_level).next() + return (t for v, t in SKILL_CHOICES if v == self.skill_level).next() @property def status_string(self): diff --git a/postgresqleu/confreg/pdfschedule.py b/postgresqleu/confreg/pdfschedule.py index 4d0f9a0d..6b32b750 100644 --- a/postgresqleu/confreg/pdfschedule.py +++ b/postgresqleu/confreg/pdfschedule.py @@ -72,10 +72,10 @@ def build_linear_pdf_schedule(conference, room, tracks, day, colored, pagesize, table_horiz_margin = 2*cm default_tbl_style = [ - ('VALIGN', (0,0), (-1, -1), 'TOP'), - ('BOX', (0,0), (-1, -1), 0.5, colors.black), - ('INNERGRID', (0,0), (-1, -1), 0.5, colors.black), - ('BOTTOMPADDING', (0,0), (-1, -1), 15), + ('VALIGN', (0, 0), (-1, -1), 'TOP'), + ('BOX', (0, 0), (-1, -1), 0.5, colors.black), + ('INNERGRID', (0, 0), (-1, -1), 0.5, colors.black), + ('BOTTOMPADDING', (0, 0), (-1, -1), 15), ] # Loop over days, creating one page for each day @@ -89,7 +89,7 @@ def build_linear_pdf_schedule(conference, room, tracks, day, colored, pagesize, t = Table(tbldata, colWidths=[3*cm, width - 3*cm - 2 * table_horiz_margin]) t.setStyle(TableStyle(tblstyle)) - w,h = t.wrapOn(canvas, width, height) + w, h = t.wrapOn(canvas, width, height) t.drawOn(canvas, table_horiz_margin, height - 4*cm - h) canvas.showPage() @@ -108,7 +108,7 @@ def build_linear_pdf_schedule(conference, room, tracks, day, colored, pagesize, else: tbldata.extend([(tstr, (Paragraph(s.title, st_title), Paragraph("<i>%s</i>" % s.speaker_list, st_speakers)))]) if colored and s.track and s.track.color: - tblstyle.append(('BACKGROUND', (1,len(tbldata) - 1), (1,len(tbldata) - 1), s.track.color),) + tblstyle.append(('BACKGROUND', (1, len(tbldata) - 1), (1, len(tbldata) - 1), s.track.color), ) _finalize_page() canvas.save() @@ -146,7 +146,7 @@ def build_complete_pdf_schedule(conference, tracks, day, colored, pagesize, orie lastday = d groupedbyday[d]['last'] = s.endtime groupedbyday[d]['sessions'].append(s) - for k,v in groupedbyday.items(): + for k, v in groupedbyday.items(): v['length'] = v['last']-v['first'] v['rooms'] = set([s.room for s in v['sessions'] if s.room]) @@ -173,7 +173,7 @@ def build_complete_pdf_schedule(conference, tracks, day, colored, pagesize, orie breakpoints = [] # For each breakpoint, find the closest one - for p in range(1,pagesperday): + for p in range(1, pagesperday): breaktime = dd['first'] + timedelta(seconds=p * secondsperpage) breaksession = cross_sessions[min(range(len(cross_sessions)), key=lambda i: abs(cross_sessions[i].starttime-breaktime))] if not breaksession in breakpoints: @@ -184,7 +184,7 @@ def build_complete_pdf_schedule(conference, tracks, day, colored, pagesize, orie if s in breakpoints: pagesessions.append(currentpagesessions) # Make sure the breaking sessions itself is on both pages - currentpagesessions = [s,] + currentpagesessions = [s, ] pagesessions.append(currentpagesessions) else: # For a single page schedule, just add all sessions to the first page. @@ -210,7 +210,7 @@ def build_complete_pdf_schedule(conference, tracks, day, colored, pagesize, orie # fit within the boxes. roomtitlefontsize = 20 for r in dd['rooms']: - for fs in 16,14,12,10,8: + for fs in 16, 14, 12, 10, 8: fwidth = canvas.stringWidth(r.roomname, "DejaVu Serif", fs) if fwidth < roomwidth-4*mm: # Width at this size is small enough to work, so use it @@ -231,7 +231,7 @@ def build_complete_pdf_schedule(conference, tracks, day, colored, pagesize, orie pagelength = (ps[-1].endtime-ps[0].starttime).seconds first = ps[0].starttime - canvas.rect(2*cm, height-pagelength*unitspersecond-4*cm, roomcount*roomwidth, pagelength*unitspersecond,stroke=1) + canvas.rect(2*cm, height-pagelength*unitspersecond-4*cm, roomcount*roomwidth, pagelength*unitspersecond, stroke=1) for s in ps: if s.cross_schedule: # Cross schedule rooms are very special... @@ -247,7 +247,7 @@ def build_complete_pdf_schedule(conference, tracks, day, colored, pagesize, orie canvas.setFillColor(s.track.color) else: canvas.setFillColor(colors.white) - canvas.rect(s_left,s_top,thisroomwidth,s_height,stroke=1,fill=colored) + canvas.rect(s_left, s_top, thisroomwidth, s_height, stroke=1, fill=colored) timestampstr = "%s-%s" % (s.starttime.strftime("%H:%M"), s.endtime.strftime("%H:%M")) ts = Paragraph(timestampstr, timestampstyle) @@ -279,7 +279,7 @@ def build_complete_pdf_schedule(conference, tracks, day, colored, pagesize, orie for includespeaker in (True, False): title = s.title while title: - for fs in (12,10,9,8): + for fs in (12, 10, 9, 8): sessionstyle = ParagraphStyle('sessionstyle') sessionstyle.fontName = "DejaVu Serif" sessionstyle.fontSize = fs @@ -314,9 +314,9 @@ class PdfScheduleForm(forms.Form): day = forms.ModelChoiceField(label='Days to include', queryset=None, empty_label='(all days)', required=False) tracks = forms.ModelMultipleChoiceField(label='Tracks to include', queryset=None, required=True, help_text="Filter for some tracks. By default, all tracks are included.") colored = forms.BooleanField(label='Colored tracks', required=False) - pagesize = forms.ChoiceField(label='Page size', choices=(('a4', 'A4'),('a3','A3'))) - orientation = forms.ChoiceField(label='Orientation', choices=(('p', 'Portrait'),('l', 'Landscape'))) - pagesperday = forms.ChoiceField(label='Pages per day', choices=((1,1),(2,2),(3,3)), help_text="Not used for per-room schedules. Page breaks happen only at cross-schedule sessions.") + pagesize = forms.ChoiceField(label='Page size', choices=(('a4', 'A4'), ('a3', 'A3'))) + orientation = forms.ChoiceField(label='Orientation', choices=(('p', 'Portrait'), ('l', 'Landscape'))) + pagesperday = forms.ChoiceField(label='Pages per day', choices=((1, 1), (2, 2), (3, 3)), help_text="Not used for per-room schedules. Page breaks happen only at cross-schedule sessions.") titledatefmt = forms.CharField(label='Title date format', help_text="strftime format specification used to print the date in the title of the first page for each day") def __init__(self, conference, *args, **kwargs): diff --git a/postgresqleu/confreg/regtypes.py b/postgresqleu/confreg/regtypes.py index c861c832..6b324026 100644 --- a/postgresqleu/confreg/regtypes.py +++ b/postgresqleu/confreg/regtypes.py @@ -28,7 +28,7 @@ def validate_speaker_or_reserve_registration(reg): raise ValidationError('Speaker registrations have to be done by the speaker directly') if not ConferenceSession.objects.filter(conference=reg.conference, speaker__user=reg.attendee, - status__in=(1,4), # approved/reserve + status__in=(1, 4), # approved/reserve ).exists(): raise ValidationError('This registration type is only available if you are a confirmed speaker at this conference') @@ -62,7 +62,7 @@ _specialregtypes['man'] = { 'confirmfunc': confirm_manual_registration, } -special_reg_types = [(k,v['name']) for k,v in _specialregtypes.items()] +special_reg_types = [(k, v['name']) for k, v in _specialregtypes.items()] def validate_special_reg_type(regtypename, reg): if not _specialregtypes.has_key(regtypename): diff --git a/postgresqleu/confreg/reporting.py b/postgresqleu/confreg/reporting.py index e28b58c8..2f69ca61 100644 --- a/postgresqleu/confreg/reporting.py +++ b/postgresqleu/confreg/reporting.py @@ -75,7 +75,7 @@ class MultiConferenceReport(object): self.curs = connection.cursor() def run(self): - (maxday,minday) = self.maxmin() + (maxday, minday) = self.maxmin() if not maxday: raise ReportException("There are no %s at this conference." % self.title.lower()) allvals = [range(maxday, minday - 1, -1), ] @@ -111,10 +111,10 @@ class SingleConferenceReport(object): self.curs.execute("SELECT max(startdate-payconfirmedat::date), min(startdate-payconfirmedat::date),max(startdate) FROM confreg_conferenceregistration r INNER JOIN confreg_conference c ON r.conference_id=c.id WHERE r.conference_id=%(id)s AND r.payconfirmedat IS NOT NULL", { 'id': self.conference.id }) - (maxday,minday,startdate) = self.curs.fetchone() + (maxday, minday, startdate) = self.curs.fetchone() if not maxday: raise ReportException("There are no %s at this conference." % self.title.lower()) - allvals = [range(maxday,minday - 1, -1), ] + allvals = [range(maxday, minday - 1, -1), ] self.headers = ['Days'] for header, rows in self.fetch_all_data(minday, maxday, startdate): allvals.append([r[0] for r in rows]) @@ -128,7 +128,7 @@ class SingleConferenceReport(object): ###########################################################3 class ConfirmedRegistrationsReport(MultiConferenceReport): def __init__(self, title, conferences): - super(ConfirmedRegistrationsReport, self).__init__(title,'Number of registrations',conferences) + super(ConfirmedRegistrationsReport, self).__init__(title, 'Number of registrations', conferences) def maxmin(self): self.curs.execute("SELECT max(startdate-payconfirmedat::date), min(startdate-payconfirmedat::date) FROM confreg_conference c INNER JOIN confreg_conferenceregistration r ON c.id=r.conference_id WHERE c.id=ANY(%(idlist)s) AND r.payconfirmedat IS NOT NULL", {'idlist': [c.id for c in self.conferences]}) @@ -145,7 +145,7 @@ reporttypes.append(('Confirmed registrations', ConfirmedRegistrationsReport)) class SubmittedSessionsReport(MultiConferenceReport): def __init__(self, title, conferences): - super(SubmittedSessionsReport, self).__init__(title,'Number of sessions',conferences) + super(SubmittedSessionsReport, self).__init__(title, 'Number of sessions', conferences) def maxmin(self): self.curs.execute("SELECT max(extract(days from startdate-initialsubmit)::integer), min(extract(days from startdate-initialsubmit)::integer) FROM confreg_conference c INNER JOIN confreg_conferencesession s ON c.id=s.conference_id WHERE c.id=ANY(%(idlist)s) AND s.initialsubmit IS NOT NULL AND NOT s.cross_schedule", {'idlist': [c.id for c in self.conferences]}) @@ -162,7 +162,7 @@ reporttypes.append(('Submitted sessions', SubmittedSessionsReport)) class SubmittingSpeakersReport(MultiConferenceReport): def __init__(self, title, conferences): - super(SubmittingSpeakersReport, self).__init__(title,'Number of speakers',conferences) + super(SubmittingSpeakersReport, self).__init__(title, 'Number of speakers', conferences) def maxmin(self): self.curs.execute("SELECT max(extract(days from startdate-initialsubmit)::integer), min(extract(days from startdate-initialsubmit)::integer) FROM confreg_conference c INNER JOIN confreg_conferencesession s ON c.id=s.conference_id WHERE c.id=ANY(%(idlist)s) AND s.initialsubmit IS NOT NULL AND NOT s.cross_schedule", {'idlist': [c.id for c in self.conferences]}) diff --git a/postgresqleu/confreg/reportingforms.py b/postgresqleu/confreg/reportingforms.py index 6db7e8f7..e0878109 100644 --- a/postgresqleu/confreg/reportingforms.py +++ b/postgresqleu/confreg/reportingforms.py @@ -13,7 +13,7 @@ _trendlines = ( ) class TimeReportForm(forms.Form): - reporttype = forms.ChoiceField(required=True, choices=enumerate([r[0] for r in reporttypes],1), label="Report type") + reporttype = forms.ChoiceField(required=True, choices=enumerate([r[0] for r in reporttypes], 1), label="Report type") conferences = GroupedModelMultipleChoiceField('series', required=True, queryset=Conference.objects.all().order_by('-startdate')) trendline = forms.ChoiceField(required=False, choices=_trendlines) diff --git a/postgresqleu/confreg/reports.py b/postgresqleu/confreg/reports.py index e894c0a9..319fa2c6 100644 --- a/postgresqleu/confreg/reports.py +++ b/postgresqleu/confreg/reports.py @@ -39,7 +39,7 @@ attendee_report_fields = [ ('payconfirmedat', 'Payment confirmed', False, None), ] -_attendee_report_field_map = dict([(a,(b,c,d)) for a,b,c,d in attendee_report_fields]) +_attendee_report_field_map = dict([(a, (b, c, d)) for a, b, c, d in attendee_report_fields]) class ReportFilter(object): def __init__(self, id, name, queryset=None, querysetcol=None, emptyasnull=True): @@ -74,9 +74,9 @@ class ReportFilter(object): else: # Just make sure it exists if self.emptyasnull: - return Q(**{"%s__isnull" % self.id:False, "%s__gt" % self.id: ''}) + return Q(**{"%s__isnull" % self.id: False, "%s__gt" % self.id: ''}) else: - return Q(**{"%s__isnull" % self.id:False}) + return Q(**{"%s__isnull" % self.id: False}) @property def html(self): @@ -143,7 +143,7 @@ def attendee_report_filters(conference): yield ReportFilter('nick', 'Nickname') yield ReportFilter('dietary', 'Dietary needs') yield ReportFilter('shareemail', 'Share email with sponsors') - yield ReportFilter('photoconsent', 'Photo consent', ((1, 'Yes'),(0, 'No'))) + yield ReportFilter('photoconsent', 'Photo consent', ((1, 'Yes'), (0, 'No'))) yield ReportFilter('payconfirmedat', 'Payment confirmed', emptyasnull=False) yield ReportFilter('additionaloptions', 'Additional options', ConferenceAdditionalOption.objects.filter(conference=conference), 'name') yield ReportFilter('shirtsize', 'T-Shirt size', ShirtSize.objects.all()) @@ -206,8 +206,8 @@ class ReportWriterPdf(ReportWriterBase): ] if self.borders: style.extend([ - ('GRID', (0,0), (-1, -1), 1, colors.black), - ('BACKGROUND', (0,0), (-1,0), colors.lightgrey), + ('GRID', (0, 0), (-1, -1), 1, colors.black), + ('BACKGROUND', (0, 0), (-1, 0), colors.lightgrey), ]) t.setStyle(TableStyle(style)) story.append(t) @@ -233,7 +233,7 @@ def build_attendee_report(conference, POST): q = q & f.build_Q(POST) # Figure out our order by - orderby = map(lambda x: _attendee_report_field_map[x][2] and _attendee_report_field_map[x][2] or x, [POST['orderby1'],POST['orderby2']]) + orderby = map(lambda x: _attendee_report_field_map[x][2] and _attendee_report_field_map[x][2] or x, [POST['orderby1'], POST['orderby2']]) # Run the query! result = ConferenceRegistration.objects.select_related('shirtsize', 'regtype', 'country', 'conference').filter(q).distinct().order_by(*orderby) diff --git a/postgresqleu/confreg/views.py b/postgresqleu/confreg/views.py index 8510b8f4..f159e180 100644 --- a/postgresqleu/confreg/views.py +++ b/postgresqleu/confreg/views.py @@ -119,7 +119,7 @@ def _registration_dashboard(request, conference, reg, has_other_multiregs, redir # Any invoices that should be linked need to be added invoices = [] if reg.invoice: - invoices.append(('Registration invoice and receipt', InvoicePresentationWrapper(reg.invoice,'.'))) + invoices.append(('Registration invoice and receipt', InvoicePresentationWrapper(reg.invoice, '.'))) for pao in PendingAdditionalOrder.objects.filter(reg=reg, invoice__isnull=False): invoices.append(('Additional options invoice and receipt', InvoicePresentationWrapper(pao.invoice, '.'))) @@ -659,7 +659,7 @@ def reg_add_options(request, confname): return HttpResponseRedirect('../') options = [] - for k,v in request.POST.items(): + for k, v in request.POST.items(): if k.startswith('ao_') and v == "1": options.append(int(k[3:])) @@ -906,7 +906,7 @@ def feedback_conference(request, confname): if form.is_valid(): # We've got the data, now write it to the database. for q in questions: - a,created = ConferenceFeedbackAnswer.objects.get_or_create(conference=conference, question=q, attendee=request.user) + a, created = ConferenceFeedbackAnswer.objects.get_or_create(conference=conference, question=q, attendee=request.user) if q.isfreetext: a.textanswer = form.cleaned_data['question_%s' % q.id] else: @@ -1227,7 +1227,7 @@ def callforpapers_edit(request, confname, sessionid): # on the same page. If feedback is still open, we show nothing feedback_fields = ('topic_importance', 'content_quality', 'speaker_knowledge', 'speaker_quality') if is_tester or not conference.feedbackopen: - feedbackdata = [{'key': k, 'title': k.replace('_',' ').title(), 'num': [0] * 5} for k in feedback_fields] + feedbackdata = [{'key': k, 'title': k.replace('_', ' ').title(), 'num': [0] * 5} for k in feedback_fields] feedbacktext = [] fb = list(ConferenceSessionFeedback.objects.filter(conference=conference, session=session)) feedbackcount = len(fb) @@ -1252,7 +1252,7 @@ def callforpapers_edit(request, confname, sessionid): }) feedbackcomparisons.append({ 'key': measurement, - 'title': measurement.replace('_',' ').title(), + 'title': measurement.replace('_', ' ').title(), 'vals': curs.fetchall(), }) else: @@ -1276,7 +1276,7 @@ def callforpapers_edit(request, confname, sessionid): elif request.FILES: if len(request.FILES) != 1: raise Exception("Only one file at a time, sorry!") - for k,v in request.FILES.items(): + for k, v in request.FILES.items(): ConferenceSessionSlides(session=session, name=v.name, content=v.read()).save() @@ -1294,7 +1294,7 @@ def callforpapers_edit(request, confname, sessionid): 'feedbackdata': feedbackdata, 'feedbacktext': feedbacktext, 'feedbackcomparisons': feedbackcomparisons, - 'feedbackfields': [f.replace('_',' ').title() for f in feedback_fields], + 'feedbackfields': [f.replace('_', ' ').title() for f in feedback_fields], 'slidesurlform': slidesurlform, 'slidesfileform': slidesfileform, 'slides': ConferenceSessionSlides.objects.filter(session=session), @@ -1800,7 +1800,7 @@ def optout(request, token=None): else: exec_no_result('DELETE FROM confreg_globaloptout WHERE user_id=%(u)s', {'u': userid}) - exec_no_result('DELETE FROM confreg_conferenceseriesoptout WHERE user_id=%(u)s AND NOT series_id=ANY(%(series)s)',{ + exec_no_result('DELETE FROM confreg_conferenceseriesoptout WHERE user_id=%(u)s AND NOT series_id=ANY(%(series)s)', { 'u': userid, 'series': optout_ids, }) @@ -1900,7 +1900,7 @@ def viewvouchers(request, confname, batchid): batch = get_object_or_404(PrepaidBatch, conference=conference, pk=batchid) vouchers = batch.prepaidvoucher_set.all() - vouchermailtext = template_to_string('confreg/mail/prepaid_vouchers.txt',{ + vouchermailtext = template_to_string('confreg/mail/prepaid_vouchers.txt', { 'batch': batch, 'vouchers': vouchers, 'conference': conference, @@ -2037,7 +2037,7 @@ def bulkpay(request, confname): errors = 1 else: # All content is valid, so just append it - state.append({'email': regs[0].email, 'found': 1, 'pay': 1, 'total': s, 'rows':[u'%s (%s%s)' % (r[0], settings.CURRENCY_SYMBOL.decode('utf8'), r[2]) for r in regrows]}) + state.append({'email': regs[0].email, 'found': 1, 'pay': 1, 'total': s, 'rows': [u'%s (%s%s)' % (r[0], settings.CURRENCY_SYMBOL.decode('utf8'), r[2]) for r in regrows]}) totalcost += s invoicerows.extend(regrows) @@ -2111,7 +2111,7 @@ def talkvote(request, confname): alltracks.insert(0, {'id': 0, 'trackname': 'No track'}) alltrackids = [t['id'] for t in alltracks] selectedtracks = [int(id) for id in request.GET.getlist('tracks') if int(id) in alltrackids] - allstatusids = [id for id,status in STATUS_CHOICES] + allstatusids = [id for id, status in STATUS_CHOICES] selectedstatuses = [int(id) for id in request.GET.getlist('statuses') if int(id) in allstatusids] if selectedtracks: urltrackfilter = "{0}&".format("&".join(["tracks={0}".format(t) for t in selectedtracks])) @@ -2238,7 +2238,7 @@ def talkvote_vote(request, confname): session = get_object_or_404(ConferenceSession, conference=conference, id=request.POST['sessionid']) v = int(request.POST['vote']) if v > 0: - vote,created = ConferenceSessionVote.objects.get_or_create(session=session, voter=request.user) + vote, created = ConferenceSessionVote.objects.get_or_create(session=session, voter=request.user) vote.vote = v vote.save() else: @@ -2260,7 +2260,7 @@ def talkvote_comment(request, confname): return HttpResponse('Can only use POST') session = get_object_or_404(ConferenceSession, conference=conference, id=request.POST['sessionid']) - vote,created = ConferenceSessionVote.objects.get_or_create(session=session, voter=request.user) + vote, created = ConferenceSessionVote.objects.get_or_create(session=session, voter=request.user) vote.comment = request.POST['comment'] vote.save() @@ -2298,7 +2298,7 @@ def createschedule(request, confname): re_slot = re.compile('^slot(\d+)$') for sess in conference.conferencesession_set.all(): found = False - for k,v in request.POST.items(): + for k, v in request.POST.items(): if v == "sess%s" % sess.id: sm = re_slot.match(k) if not sm: @@ -2343,7 +2343,7 @@ def createschedule(request, confname): days = [] - for d,d_sessions in raw.items(): + for d, d_sessions in raw.items(): sessionset = SessionSet(allrooms, allrooms, conference.schedulewidth, conference.pixelsperminute, d_sessions) days.append({ 'day': d, @@ -2459,7 +2459,7 @@ def simple_report(request, confname): d = curs.fetchall() collist = [dd[0] for dd in curs.description] # Get offsets of all columns that don't start with _ - colofs = [n for x,n in zip(collist, range(len(collist))) if not x.startswith('_')] + colofs = [n for x, n in zip(collist, range(len(collist))) if not x.startswith('_')] if len(colofs) != len(collist): # One or more columns filtered - so filter the data d = map(itemgetter(*colofs), d) @@ -2569,7 +2569,7 @@ RIGHT JOIN confreg_discountcode dc ON dc.code=r.vouchercode LEFT JOIN confreg_bulkpayment bp ON bp.id=r.bulkpayment_id WHERE dc.conference_id={1} AND (r.conference_id={1} OR r.conference_id IS NULL) GROUP BY dc.id ORDER BY code""".format(statusstr.format('maxuses'), conference.id)) tables.append({'title': 'Discount codes', - 'columns': ['id', 'Code', 'Expires', 'Max uses', 'Confirmed', 'Invoiced', 'Unconfirmed','Total', 'Remaining'], + 'columns': ['id', 'Code', 'Expires', 'Max uses', 'Confirmed', 'Invoiced', 'Unconfirmed', 'Total', 'Remaining', ], 'fixedcols': 3, 'hidecols': 1, 'linker': lambda x: '../discountcodes/{0}/'.format(x[0]), @@ -2610,7 +2610,7 @@ def admin_registration_list(request, urlname): revsort = False sortmap = { - 'last':'lastname', + 'last': 'lastname', 'first': 'firstname', 'company': 'company', 'type': 'regtype__sortkey', @@ -3099,7 +3099,7 @@ def transfer_reg(request, urlname): transaction.set_rollback(True) return HttpResponseRedirect('.') transaction.savepoint_commit(savepoint) - messages.info(request,"Registration transfer completed.") + messages.info(request, "Registration transfer completed.") return HttpResponseRedirect('../') else: transaction.savepoint_rollback(savepoint) @@ -3136,7 +3136,7 @@ def crossmail(request): if not conf in conferenceids: raise ValidationError("Invalid conference selected") - (t,v) = filt.split(':') + (t, v) = filt.split(':') if t == 'rt': # Regtype q = "SELECT attendee_id, email, firstname || ' ' || lastname, regtoken FROM confreg_conferenceregistration WHERE conference_id={0} AND payconfirmedat IS NOT NULL".format(conf) @@ -3243,7 +3243,7 @@ def crossmailoptions(request): ]) r.extend([ {'id': 'sp:{0}'.format(k), 'title': u'Speaker: {0}'.format(v)} - for k,v in STATUS_CHOICES + for k, v in STATUS_CHOICES ]) return HttpResponse(json.dumps(r), content_type="application/json") diff --git a/postgresqleu/confsponsor/backendforms.py b/postgresqleu/confsponsor/backendforms.py index eef2ca64..b5bdab2b 100644 --- a/postgresqleu/confsponsor/backendforms.py +++ b/postgresqleu/confsponsor/backendforms.py @@ -100,7 +100,7 @@ class BackendSponsorshipLevelBenefitForm(BackendForm): return json.dumps([{ 'source': 'id_benefit_class', 'target': 'id_class_parameters', - 'map': {k:v['class'].default_params for k,v in all_benefits.items()} + 'map': {k: v['class'].default_params for k, v in all_benefits.items()} }]) class BackendSponsorshipLevelBenefitManager(object): diff --git a/postgresqleu/confsponsor/benefitclasses/attendeelist.py b/postgresqleu/confsponsor/benefitclasses/attendeelist.py index 8da2fd38..b72e504a 100644 --- a/postgresqleu/confsponsor/benefitclasses/attendeelist.py +++ b/postgresqleu/confsponsor/benefitclasses/attendeelist.py @@ -14,7 +14,7 @@ class AttendeeListForm(BaseBenefitForm): confirm = forms.ChoiceField(label="Claim benefit", choices=((0, '* Choose'), (1, 'Claim this benefit'), (2, 'Decline this benefit'))) def clean_confirm(self): - if not int(self.cleaned_data['confirm']) in (1,2): + if not int(self.cleaned_data['confirm']) in (1, 2): raise ValidationError('You must decide if you want to claim this benefit') return self.cleaned_data['confirm'] diff --git a/postgresqleu/confsponsor/benefitclasses/requireclaiming.py b/postgresqleu/confsponsor/benefitclasses/requireclaiming.py index f96ffc0c..a3c443a5 100644 --- a/postgresqleu/confsponsor/benefitclasses/requireclaiming.py +++ b/postgresqleu/confsponsor/benefitclasses/requireclaiming.py @@ -7,7 +7,7 @@ class RequireClaimingForm(BaseBenefitForm): confirm = forms.ChoiceField(label="Claim benefit", choices=((0, '* Choose'), (1, 'Claim this benefit'), (2, 'Decline this benefit'))) def clean_confirm(self): - if not int(self.cleaned_data['confirm']) in (1,2): + if not int(self.cleaned_data['confirm']) in (1, 2): raise ValidationError('You must decide if you want to claim this benefit') return self.cleaned_data['confirm'] diff --git a/postgresqleu/confsponsor/benefits.py b/postgresqleu/confsponsor/benefits.py index 44fa22ce..f4bbcfaf 100644 --- a/postgresqleu/confsponsor/benefits.py +++ b/postgresqleu/confsponsor/benefits.py @@ -1,6 +1,6 @@ from benefitclasses import all_benefits -benefit_choices = [(k, v['name']) for k,v in all_benefits.items()] +benefit_choices = [(k, v['name']) for k, v in all_benefits.items()] def get_benefit_class(benefitid): return all_benefits[benefitid]['class'] diff --git a/postgresqleu/confsponsor/models.py b/postgresqleu/confsponsor/models.py index 7cf823b3..28f2c846 100644 --- a/postgresqleu/confsponsor/models.py +++ b/postgresqleu/confsponsor/models.py @@ -44,7 +44,7 @@ pre_delete.connect(delete_inline_storage, sender=SponsorshipContract) class SponsorshipLevel(models.Model): conference = models.ForeignKey(Conference, null=False, blank=False, on_delete=models.CASCADE) levelname = models.CharField(max_length=100, null=False, blank=False) - urlname = models.CharField(max_length=100, null=False, blank=False, validators=[validate_lowercase,]) + urlname = models.CharField(max_length=100, null=False, blank=False, validators=[validate_lowercase, ]) levelcost = models.IntegerField(null=False, blank=False, verbose_name="Cost") available = models.BooleanField(null=False, blank=False, default=True, verbose_name="Available for signup") maxnumber = models.IntegerField(null=False, blank=False, default=0, verbose_name="Maximum number of sponsors") diff --git a/postgresqleu/confwiki/admin.py b/postgresqleu/confwiki/admin.py index 76ee0c56..99257137 100644 --- a/postgresqleu/confwiki/admin.py +++ b/postgresqleu/confwiki/admin.py @@ -36,7 +36,7 @@ class WikipageAdminForm(SelectableWidgetAdminFormMixin, ConcurrentProtectedModel class WikipageHistoryInline(admin.TabularInline): model = WikipageHistory readonly_fields = ['author', 'publishedat'] - exclude = ['contents',] + exclude = ['contents', ] can_delete = False max_num = 0 extra = 0 @@ -56,7 +56,7 @@ class AttendeeSignupAdminForm(ConcurrentProtectedModelForm): class Meta: model = AttendeeSignup exclude = [] - readonly_fields = ['signup',] + readonly_fields = ['signup', ] def __init__(self, *args, **kwargs): super(AttendeeSignupAdminForm, self).__init__(*args, **kwargs) @@ -67,7 +67,7 @@ class AttendeeSignupAdminForm(ConcurrentProtectedModelForm): class AttendeeSignupAdmin(admin.ModelAdmin): form = AttendeeSignupAdminForm - list_display = ['signup', 'attendee',] + list_display = ['signup', 'attendee', ] list_filter = ['signup__conference', ] admin.site.register(Wikipage, WikipageAdmin) diff --git a/postgresqleu/confwiki/forms.py b/postgresqleu/confwiki/forms.py index 9e4aaba2..b8cfa7ae 100644 --- a/postgresqleu/confwiki/forms.py +++ b/postgresqleu/confwiki/forms.py @@ -39,11 +39,11 @@ class SignupSubmitForm(forms.Form): if signup.options: choices = signup.options.split(',') - self.fields['choice'].choices = [(k,k) for k in choices] + self.fields['choice'].choices = [(k, k) for k in choices] self.fields['choice'].choices.insert(0, ('', '')) else: # This one is boolean only - self.fields['choice'].choices = (('', ''), ('yes','Yes'), ('', 'No'), ) + self.fields['choice'].choices = (('', ''), ('yes', 'Yes'), ('', 'No'), ) if attendee_signup: self.fields['choice'].initial = attendee_signup.choice @@ -105,11 +105,11 @@ class SignupAdminEditSignupForm(ConcurrentProtectedModelForm): if signup.options: choices = signup.options.split(',') - self.fields['choice'].choices = [(k,k) for k in choices] + self.fields['choice'].choices = [(k, k) for k in choices] self.fields['choice'].choices.insert(0, ('', '')) else: # This one is boolean only - self.fields['choice'].choices = (('', ''), ('yes','Yes'), ('', 'No'), ) + self.fields['choice'].choices = (('', ''), ('yes', 'Yes'), ('', 'No'), ) self.fields['choice'].required = False class SignupSendmailForm(forms.Form): diff --git a/postgresqleu/confwiki/models.py b/postgresqleu/confwiki/models.py index f793388f..a8591241 100644 --- a/postgresqleu/confwiki/models.py +++ b/postgresqleu/confwiki/models.py @@ -11,7 +11,7 @@ class Wikipage(models.Model, DiffableModel): conference = models.ForeignKey(Conference, null=False, blank=False, on_delete=models.CASCADE) url = models.CharField(max_length=100, null=False, blank=False, validators=[ RegexValidator(regex='^[a-zA-Z0-9_-]+$', - message='Invalid character in urlname. Only alphanumerical, underscore and dash are allowed.'),]) + message='Invalid character in urlname. Only alphanumerical, underscore and dash are allowed.'), ]) title = models.CharField(max_length=100, null=False, blank=False) author = models.ForeignKey(ConferenceRegistration, null=False, blank=False, on_delete=models.CASCADE) publishedat = models.DateTimeField(null=False, blank=False, auto_now=True) @@ -119,8 +119,8 @@ class Signup(models.Model): intro = models.TextField(null=False, blank=False) deadline = models.DateTimeField(null=True, blank=True) maxsignups = models.IntegerField(null=False, blank=False, default=-1) - options = models.CharField(max_length=1000, null=False, blank=True, help_text="Comma separated list of options to choose.", validators=[validate_options,]) - optionvalues = models.CharField(max_length=1000, null=False, blank=True, help_text="Optional comma separated list of how much each choice counts towards the max value", validators=[validate_optionvalues,]) + options = models.CharField(max_length=1000, null=False, blank=True, help_text="Comma separated list of options to choose.", validators=[validate_options, ]) + optionvalues = models.CharField(max_length=1000, null=False, blank=True, help_text="Optional comma separated list of how much each choice counts towards the max value", validators=[validate_optionvalues, ]) public = models.BooleanField(null=False, blank=False, default=False, help_text="All attendees can sign up") visible = models.BooleanField(null=False, blank=False, default=False, help_text="Show who have signed up to all invited attendees") diff --git a/postgresqleu/confwiki/views.py b/postgresqleu/confwiki/views.py index 7eeec305..dd867a91 100644 --- a/postgresqleu/confwiki/views.py +++ b/postgresqleu/confwiki/views.py @@ -241,7 +241,7 @@ def admin_edit_page(request, urlname, pageid): f = form.save(commit=False) form.save_m2m() s = StringIO() - for k,v in f.diff.items(): + for k, v in f.diff.items(): if type(v[0]) == list: fr = u", ".join([unicode(o) for o in v[0]]) else: @@ -477,9 +477,9 @@ def signup_admin_sendmail(request, urlname, signupid): form = SignupSendmailForm(additional_choices, data=request.POST, num=numtosend) if form.is_valid(): - towhat = next(v for k,v in form.recipient_choices if k == rr) + towhat = next(v for k, v in form.recipient_choices if k == rr) recipients = exec_to_list("SELECT firstname || ' ' || lastname, email {0}".format(qq), params) - for n,e in recipients: + for n, e in recipients: send_simple_mail(conference.contactaddr, e, form.cleaned_data['subject'], diff --git a/postgresqleu/elections/forms.py b/postgresqleu/elections/forms.py index 84282b28..072eea58 100644 --- a/postgresqleu/elections/forms.py +++ b/postgresqleu/elections/forms.py @@ -23,7 +23,7 @@ class VoteForm(forms.Form): for vote in self.votes: votemap[vote.candidate_id] = vote.score - dropdown = [(x,self._votestring(x)) for x in range(1,len(self.candidates) + 1)] + dropdown = [(x, self._votestring(x)) for x in range(1, len(self.candidates) + 1)] dropdown.insert(0, (-1, '** Please rate this candidate')) # Dynamically add a dropdown field for each candidate @@ -43,7 +43,7 @@ class VoteForm(forms.Form): def clean(self): # First, make sure all existing fields are actually filled out - for (k,v) in self.cleaned_data.items(): + for (k, v) in self.cleaned_data.items(): if k.startswith('cand'): if v == "-1": self._errors[k] = ErrorList(["You need to select a score for this candidate!"]) @@ -63,7 +63,7 @@ class VoteForm(forms.Form): # Finally, verify that all options have been found, and none have been duplicated options = range(1, len(self.candidates) + 1) - for k,v in self.cleaned_data.items(): + for k, v in self.cleaned_data.items(): if int(v) in options: # First use is ok. Take it out of the list, so next attempt generates error del options[options.index(int(v))] @@ -83,7 +83,7 @@ class VoteForm(forms.Form): # Let's see if the old votes are here if len(self.votes) == 0: # This is completely new, let's create votes for him - for k,v in self.cleaned_data.items(): + for k, v in self.cleaned_data.items(): id = int(k[4:]) Vote(election=self.election, voter=self.member, candidate_id=id, score=v).save() self.votes = Vote.objects.filter(election=self.election, voter=self.member) diff --git a/postgresqleu/invoices/forms.py b/postgresqleu/invoices/forms.py index 92715b1d..9924b317 100644 --- a/postgresqleu/invoices/forms.py +++ b/postgresqleu/invoices/forms.py @@ -35,12 +35,12 @@ class InvoiceForm(forms.ModelForm): self.fields['allowedmethods'].queryset = InvoicePaymentMethod.objects.filter(active=True) self.fields['allowedmethods'].label_from_instance = lambda m: "{0} ({1})".format(m.name, m.internaldescription) - self.fields['accounting_account'].choices = [(0, '----'),] + [(a.num, "%s: %s" % (a.num, a.name)) for a in Account.objects.filter(availableforinvoicing=True)] - self.fields['accounting_object'].choices = [('', '----'),] + [(o.name, o.name) for o in Object.objects.filter(active=True)] + self.fields['accounting_account'].choices = [(0, '----'), ] + [(a.num, "%s: %s" % (a.num, a.name)) for a in Account.objects.filter(availableforinvoicing=True)] + self.fields['accounting_object'].choices = [('', '----'), ] + [(o.name, o.name) for o in Object.objects.filter(active=True)] if self.instance.finalized: # All fields should be read-only for finalized invoices - for fn,f in self.fields.items(): + for fn, f in self.fields.items(): if self.instance.ispaid or not fn in self.available_in_finalized: if type(f.widget).__name__ in ('TextInput', 'Textarea', 'DateInput', 'DateTimeInput'): f.widget.attrs['readonly'] = "readonly" diff --git a/postgresqleu/invoices/management/commands/setup_payment_providers.py b/postgresqleu/invoices/management/commands/setup_payment_providers.py index 78a20653..325d8f54 100644 --- a/postgresqleu/invoices/management/commands/setup_payment_providers.py +++ b/postgresqleu/invoices/management/commands/setup_payment_providers.py @@ -20,27 +20,27 @@ class Command(BaseCommand): self.stdout.write("Updated classname for {0}.".format(self.style.WARNING(c))) # Create the ones that don't exist if any - (p, created) = InvoicePaymentMethod.objects.get_or_create(classname='postgresqleu.util.payment.paypal.Paypal', defaults={'name':'Paypal or credit card', 'sortkey':100, 'auto': False, 'internaldescription': 'Paypal', 'active': False}) + (p, created) = InvoicePaymentMethod.objects.get_or_create(classname='postgresqleu.util.payment.paypal.Paypal', defaults={'name': 'Paypal or credit card', 'sortkey': 100, 'auto': False, 'internaldescription': 'Paypal', 'active': False}) if created: self.stdout.write("Created payment method Paypal ({0})".format(self.style.WARNING("disabled"))) - (p, created) = InvoicePaymentMethod.objects.get_or_create(classname='postgresqleu.util.payment.banktransfer.Banktransfer', defaults={'name':'Bank transfer', 'sortkey':200, 'auto':False, 'internaldescription': 'Manual bank transfer', 'active': False}) + (p, created) = InvoicePaymentMethod.objects.get_or_create(classname='postgresqleu.util.payment.banktransfer.Banktransfer', defaults={'name': 'Bank transfer', 'sortkey': 200, 'auto': False, 'internaldescription': 'Manual bank transfer', 'active': False}) if created: self.stdout.write("Created payment method Manual bank transfer ({0})".format(self.style.WARNING("disabled"))) - (p, created) = InvoicePaymentMethod.objects.get_or_create(classname='postgresqleu.util.payment.adyen.AdyenCreditcard', defaults={'name':'Credit card', 'sortkey':50, 'auto':False, 'internaldescription': 'Adyen creditcard', 'active': False}) + (p, created) = InvoicePaymentMethod.objects.get_or_create(classname='postgresqleu.util.payment.adyen.AdyenCreditcard', defaults={'name': 'Credit card', 'sortkey': 50, 'auto': False, 'internaldescription': 'Adyen creditcard', 'active': False}) if created: self.stdout.write("Created payment method Adyen creditcard ({0})".format(self.style.WARNING("disabled"))) - (p, created) = InvoicePaymentMethod.objects.get_or_create(classname='postgresqleu.util.payment.adyen.AdyenBanktransfer', defaults={'name':'Direct bank transfer', 'sortkey':75, 'auto':False, 'internaldescription': 'Adyen managed bank transfer', 'active': False}) + (p, created) = InvoicePaymentMethod.objects.get_or_create(classname='postgresqleu.util.payment.adyen.AdyenBanktransfer', defaults={'name': 'Direct bank transfer', 'sortkey': 75, 'auto': False, 'internaldescription': 'Adyen managed bank transfer', 'active': False}) if created: self.stdout.write("Created payment method Adyen bank transfer ({0})".format(self.style.WARNING("disabled"))) - (p, created) = InvoicePaymentMethod.objects.get_or_create(classname='postgresqleu.util.payment.dummy.DummyPayment', defaults={'name':'Dummy', 'sortkey':999, 'auto':False, 'active':False}) + (p, created) = InvoicePaymentMethod.objects.get_or_create(classname='postgresqleu.util.payment.dummy.DummyPayment', defaults={'name': 'Dummy', 'sortkey': 999, 'auto': False, 'active': False}) if created: self.stdout.write("Created payment method Dummy ({0})".format(self.style.WARNING("disabled"))) - (p, created) = InvoicePaymentMethod.objects.get_or_create(classname='postgresqleu.util.payment.braintree.BrainTree', defaults={'name':'Credit card', 'sortkey':51, 'auto':False, 'internaldescription': 'Braintree managed creditcard', 'active': False}) + (p, created) = InvoicePaymentMethod.objects.get_or_create(classname='postgresqleu.util.payment.braintree.BrainTree', defaults={'name': 'Credit card', 'sortkey': 51, 'auto': False, 'internaldescription': 'Braintree managed creditcard', 'active': False}) if created: self.stdout.write("Created payment method Braintree creditcard ({0})".format(self.style.WARNING("disabled"))) diff --git a/postgresqleu/invoices/models.py b/postgresqleu/invoices/models.py index 2466ff7c..d61e3e8d 100644 --- a/postgresqleu/invoices/models.py +++ b/postgresqleu/invoices/models.py @@ -34,7 +34,7 @@ class InvoicePaymentMethod(models.Model): return self.name class Meta: - ordering = ['sortkey',] + ordering = ['sortkey', ] class InvoiceRefund(models.Model): reason = models.CharField(max_length=500, null=False, blank=True, default='', help_text="Reason for refunding of invoice") @@ -231,7 +231,7 @@ class InvoiceHistory(models.Model): txt = models.CharField(max_length=100, null=False, blank=False) class Meta: - ordering = ['time',] + ordering = ['time', ] def __unicode__(self): return self.txt diff --git a/postgresqleu/invoices/templatetags/util.py b/postgresqleu/invoices/templatetags/util.py index 373b2304..89b97782 100644 --- a/postgresqleu/invoices/templatetags/util.py +++ b/postgresqleu/invoices/templatetags/util.py @@ -4,5 +4,5 @@ register = template.Library() @register.filter def stringreplace(value, pattern): - (old,new) = pattern.split(',') - return value.replace(old,new) + (old, new) = pattern.split(',') + return value.replace(old, new) diff --git a/postgresqleu/invoices/util.py b/postgresqleu/invoices/util.py index 3c56d792..a318ccfc 100644 --- a/postgresqleu/invoices/util.py +++ b/postgresqleu/invoices/util.py @@ -394,7 +394,7 @@ class InvoiceManager(object): leaveopen = False else: leaveopen = True - urls = ['%s/invoices/%s/' % (settings.SITEBASE, invoice.pk),] + urls = ['%s/invoices/%s/' % (settings.SITEBASE, invoice.pk), ] if extraurls: urls.extend(extraurls) @@ -511,7 +511,7 @@ class InvoiceManager(object): (invoice.refund.vatrate.vataccount.num, accountingtxt, vatamount, None), ) - urls = ['%s/invoices/%s/' % (settings.SITEBASE, invoice.pk),] + urls = ['%s/invoices/%s/' % (settings.SITEBASE, invoice.pk), ] create_accounting_entry(date.today(), accrows, True, urls) InvoiceHistory(invoice=invoice, @@ -563,7 +563,7 @@ class InvoiceManager(object): leaveopen = False else: leaveopen = True - urls = ['%s/invoices/%s/' % (settings.SITEBASE, invoice.pk),] + urls = ['%s/invoices/%s/' % (settings.SITEBASE, invoice.pk), ] if extraurls: urls.extend(extraurls) diff --git a/postgresqleu/invoices/views.py b/postgresqleu/invoices/views.py index 71a6d967..fa66e5f8 100644 --- a/postgresqleu/invoices/views.py +++ b/postgresqleu/invoices/views.py @@ -199,13 +199,13 @@ def flaginvoice(request, invoicenum): str = StringIO.StringIO() def payment_logger(msg): str.write(msg) - (r,i,p) = mgr.process_incoming_payment(invoice.invoicestr, - invoice.total_amount, - request.POST['reason'], - 0, # We assume this was a bank payment without cost - settings.ACCOUNTING_MANUAL_INCOME_ACCOUNT, - 0, # costaccount - logger=payment_logger) + (r, i, p) = mgr.process_incoming_payment(invoice.invoicestr, + invoice.total_amount, + request.POST['reason'], + 0, # We assume this was a bank payment without cost + settings.ACCOUNTING_MANUAL_INCOME_ACCOUNT, + 0, # costaccount + logger=payment_logger) if r != InvoiceManager.RESULT_OK: return HttpResponse("Failed to process payment flagging:\n%s" % str.getvalue(), diff --git a/postgresqleu/mailqueue/util.py b/postgresqleu/mailqueue/util.py index 646b2e3a..c075e458 100644 --- a/postgresqleu/mailqueue/util.py +++ b/postgresqleu/mailqueue/util.py @@ -42,8 +42,8 @@ def send_simple_mail(sender, receiver, subject, msgtxt, attachments=None, bcc=No if attachments: for filename, contenttype, content in attachments: - main,sub = contenttype.split('/') - part = MIMENonMultipart(main,sub) + main, sub = contenttype.split('/') + part = MIMENonMultipart(main, sub) part.set_payload(content) part.add_header('Content-Disposition', 'attachment; filename="%s"' % filename) encoders.encode_base64(part) diff --git a/postgresqleu/membership/views.py b/postgresqleu/membership/views.py index 9274bd25..23dade0b 100644 --- a/postgresqleu/membership/views.py +++ b/postgresqleu/membership/views.py @@ -67,7 +67,7 @@ def home(request): raise Exception("This should not happen - generating invoice when one already exists!") manager = InvoiceManager() processor = InvoiceProcessor.objects.get(processorname="membership processor") - invoicerows = [('%s - %s years membership - %s' % (settings.ORG_NAME, settings.MEMBERSHIP_LENGTH, request.user.email), 1, settings.MEMBERSHIP_COST, None),] + invoicerows = [('%s - %s years membership - %s' % (settings.ORG_NAME, settings.MEMBERSHIP_LENGTH, request.user.email), 1, settings.MEMBERSHIP_COST, None), ] member.activeinvoice = manager.create_invoice( request.user, request.user.email, diff --git a/postgresqleu/newsevents/models.py b/postgresqleu/newsevents/models.py index 0c797aa4..f872ca25 100644 --- a/postgresqleu/newsevents/models.py +++ b/postgresqleu/newsevents/models.py @@ -29,5 +29,5 @@ class News(models.Model): return self.datetime.strftime("%d %B %Y") class Meta: - ordering = ['-datetime','title'] + ordering = ['-datetime', 'title', ] verbose_name_plural = 'News' diff --git a/postgresqleu/paypal/management/commands/paypal_match.py b/postgresqleu/paypal/management/commands/paypal_match.py index 6be4fde1..192c6b4d 100755 --- a/postgresqleu/paypal/management/commands/paypal_match.py +++ b/postgresqleu/paypal/management/commands/paypal_match.py @@ -32,7 +32,7 @@ class Command(BaseCommand): for trans in translist: # URLs for linkback to paypal - urls = ["https://www.paypal.com/cgi-bin/webscr?cmd=_view-a-trans&id=%s" % trans.paypaltransid,] + urls = ["https://www.paypal.com/cgi-bin/webscr?cmd=_view-a-trans&id=%s" % trans.paypaltransid, ] # Manual handling of some record types @@ -123,16 +123,16 @@ class Command(BaseCommand): ), ).save() - (r,i,p) = invoicemanager.process_incoming_payment(trans.transtext, - trans.amount, - "Paypal id %s, from %s <%s>" % (trans.paypaltransid, trans.sendername, trans.sender), - trans.fee, - settings.ACCOUNTING_PAYPAL_INCOME_ACCOUNT, - settings.ACCOUNTING_PAYPAL_FEE_ACCOUNT, - urls, - payment_logger, - InvoicePaymentMethod.objects.get(classname='postgresqleu.util.payment.paypal.Paypal'), - ) + (r, i, p) = invoicemanager.process_incoming_payment(trans.transtext, + trans.amount, + "Paypal id %s, from %s <%s>" % (trans.paypaltransid, trans.sendername, trans.sender), + trans.fee, + settings.ACCOUNTING_PAYPAL_INCOME_ACCOUNT, + settings.ACCOUNTING_PAYPAL_FEE_ACCOUNT, + urls, + payment_logger, + InvoicePaymentMethod.objects.get(classname='postgresqleu.util.payment.paypal.Paypal'), + ) if r == invoicemanager.RESULT_OK: trans.setmatched('Matched standard invoice') diff --git a/postgresqleu/paypal/models.py b/postgresqleu/paypal/models.py index 308a7c5e..9c356eac 100644 --- a/postgresqleu/paypal/models.py +++ b/postgresqleu/paypal/models.py @@ -4,7 +4,7 @@ from datetime import datetime class SourceAccount(models.Model): accountname = models.CharField(max_length=16, null=False, blank=False) - lastsync = models.DateTimeField(null=False, blank=False, default=datetime(2009,1,1)) + lastsync = models.DateTimeField(null=False, blank=False, default=datetime(2009, 1, 1)) def __unicode__(self): return self.accountname diff --git a/postgresqleu/paypal/util.py b/postgresqleu/paypal/util.py index e3771086..324ad587 100644 --- a/postgresqleu/paypal/util.py +++ b/postgresqleu/paypal/util.py @@ -46,7 +46,7 @@ class PaypalAPI(object): continue break - yield dict([(k,r.get('L_{0}{1}'.format(k, i),[''])[0]) + yield dict([(k, r.get('L_{0}{1}'.format(k, i), [''])[0]) for k in ('TRANSACTIONID', 'TIMESTAMP', 'EMAIL', 'TYPE', 'AMT', 'FEEAMT', 'NAME')]) diff --git a/postgresqleu/paypal/views.py b/postgresqleu/paypal/views.py index d932f8fe..eda121a3 100644 --- a/postgresqleu/paypal/views.py +++ b/postgresqleu/paypal/views.py @@ -129,7 +129,7 @@ def paypal_return_handler(request): # from the accounting system. Note that this is an undocumented # URL format for paypal, so it may stop working at some point in # the future. - urls = ["https://www.paypal.com/cgi-bin/webscr?cmd=_view-a-trans&id=%s" % ti.paypaltransid,] + urls = ["https://www.paypal.com/cgi-bin/webscr?cmd=_view-a-trans&id=%s" % ti.paypaltransid, ] # Separate out donations made through our website if ti.transtext == settings.PAYPAL_DONATION_TEXT: @@ -151,16 +151,16 @@ def paypal_return_handler(request): }) invoicemanager = InvoiceManager() - (r,i,p) = invoicemanager.process_incoming_payment(ti.transtext, - ti.amount, - "Paypal id %s, from %s <%s>, auto" % (ti.paypaltransid, ti.sendername, ti.sender), - ti.fee, - settings.ACCOUNTING_PAYPAL_INCOME_ACCOUNT, - settings.ACCOUNTING_PAYPAL_FEE_ACCOUNT, - urls, - payment_logger, - InvoicePaymentMethod.objects.get(classname='postgresqleu.util.payment.paypal.Paypal'), - ) + (r, i, p) = invoicemanager.process_incoming_payment(ti.transtext, + ti.amount, + "Paypal id %s, from %s <%s>, auto" % (ti.paypaltransid, ti.sendername, ti.sender), + ti.fee, + settings.ACCOUNTING_PAYPAL_INCOME_ACCOUNT, + settings.ACCOUNTING_PAYPAL_FEE_ACCOUNT, + urls, + payment_logger, + InvoicePaymentMethod.objects.get(classname='postgresqleu.util.payment.paypal.Paypal'), + ) if r == invoicemanager.RESULT_OK: # Matched it! ti.matched = True diff --git a/postgresqleu/trustlypayment/api.py b/postgresqleu/trustlypayment/api.py index 77690ff9..3f248132 100644 --- a/postgresqleu/trustlypayment/api.py +++ b/postgresqleu/trustlypayment/api.py @@ -73,7 +73,7 @@ class TrustlyWrapper(object): else: # Different currency, so ensure it's zero if Decimal(b['balance']) != 0: - raise TrustlyException('Found non-zero balance {0} for non-standard currency {1}'.format(b['balance'],b['currency'])) + raise TrustlyException('Found non-zero balance {0} for non-standard currency {1}'.format(b['balance'], b['currency'])) if balance is None: raise TrustlyException('Found no balance for {0}'.format(self.currency)) return balance diff --git a/postgresqleu/trustlypayment/management/commands/send_trustly_logreport.py b/postgresqleu/trustlypayment/management/commands/send_trustly_logreport.py index c184349a..07db06a2 100755 --- a/postgresqleu/trustlypayment/management/commands/send_trustly_logreport.py +++ b/postgresqleu/trustlypayment/management/commands/send_trustly_logreport.py @@ -24,7 +24,7 @@ class Command(BaseCommand): @transaction.atomic def report_loglines(self): - lines = list(TrustlyLog.objects.filter(error=True,sent=False).order_by('timestamp')) + lines = list(TrustlyLog.objects.filter(error=True, sent=False).order_by('timestamp')) if len(lines): sio = StringIO() sio.write("The following error events have been logged by the Trustly integration:\n\n") diff --git a/postgresqleu/util/context_processors.py b/postgresqleu/util/context_processors.py index 83175122..74e4991a 100644 --- a/postgresqleu/util/context_processors.py +++ b/postgresqleu/util/context_processors.py @@ -27,7 +27,7 @@ def settings_context_unicode(request=None): # Same as settings_context, except convert all strings to unicode assuming # utf-8. c = settings_context(request) - for k,v in c.items(): + for k, v in c.items(): if isinstance(v, str): c[k] = v.decode('utf8') return c diff --git a/postgresqleu/util/db.py b/postgresqleu/util/db.py index 7f10cf5a..d3e291cd 100644 --- a/postgresqleu/util/db.py +++ b/postgresqleu/util/db.py @@ -35,7 +35,7 @@ def exec_to_keyed_dict(query, params=None): curs = connection.cursor() curs.execute(query, params) columns = [col[0] for col in curs.description] - return {r[columns[0]]:r for r in (dict(zip(columns, row))for row in curs.fetchall())} + return {r[columns[0]]: r for r in (dict(zip(columns, row))for row in curs.fetchall())} def exec_to_grouped_dict(query, params=None): curs = connection.cursor() diff --git a/postgresqleu/util/diffablemodel.py b/postgresqleu/util/diffablemodel.py index 47d692d9..8c4f68ab 100644 --- a/postgresqleu/util/diffablemodel.py +++ b/postgresqleu/util/diffablemodel.py @@ -18,14 +18,14 @@ class DiffableModel(object): d2 = self._dict diffs = dict([(k, (v, d2[k])) for k, v in d1.items() if v != d2[k]]) # Foreign key lookups - for k,v in diffs.items(): + for k, v in diffs.items(): if type(self._meta.get_field(k)) is django.db.models.fields.related.ForeignKey: # If it's a foreign key, look up the name again on ourselves. # Since we only care about the *new* value, it's easy enough. diffs[k] = (v[0], getattr(self, k)) # Many to many lookups if hasattr(self, 'map_manytomany_for_diff'): - for k,v in diffs.items(): + for k, v in diffs.items(): if k in manytomanyfieldnames and self.map_manytomany_for_diff.has_key(k): # Try to show the display name instead here newvalue = getattr(self, self.map_manytomany_for_diff[k]) diff --git a/postgresqleu/util/forms.py b/postgresqleu/util/forms.py index c700b813..406cfc3e 100644 --- a/postgresqleu/util/forms.py +++ b/postgresqleu/util/forms.py @@ -17,7 +17,7 @@ class ConcurrentProtectedModelForm(forms.ModelForm): def _filter_initial(self): # self.initial will include things given in the URL after ?, so filter it to # only include items that are actually form fields. - return {k:v for k,v in self.initial.items() if k in self.fields.keys()} + return {k: v for k, v in self.initial.items() if k in self.fields.keys()} def update_protected_fields(self): self.fields['_validator'].initial = Signer().sign(base64.urlsafe_b64encode(cPickle.dumps(self._filter_initial(), -1))) @@ -41,7 +41,7 @@ class ConcurrentProtectedModelForm(forms.ModelForm): s = Signer().unsign(self.cleaned_data['_validator']) b = base64.urlsafe_b64decode(s.encode('utf8')) d = cPickle.loads(b) - for k,v in d.items(): + for k, v in d.items(): if i[k] != v: raise ValidationError("Concurrent modification of field {0}. Please reload the form and try again.".format(k)) except BadSignature: diff --git a/postgresqleu/util/jsonutil.py b/postgresqleu/util/jsonutil.py index 7783d364..08eb53ac 100644 --- a/postgresqleu/util/jsonutil.py +++ b/postgresqleu/util/jsonutil.py @@ -6,5 +6,5 @@ class JsonSerializer(json.JSONEncoder): if isinstance(obj, datetime) or isinstance(obj, date): return obj.isoformat() if hasattr(obj, 'json_included_attributes'): - return dict([(k,getattr(obj, k)) for k in obj.json_included_attributes]) + return dict([(k, getattr(obj, k)) for k in obj.json_included_attributes]) return json.JSONEncoder.default(self, obj) diff --git a/postgresqleu/util/management/commands/sessioninfo.py b/postgresqleu/util/management/commands/sessioninfo.py index ea4b80a8..06a88d9c 100644 --- a/postgresqleu/util/management/commands/sessioninfo.py +++ b/postgresqleu/util/management/commands/sessioninfo.py @@ -30,8 +30,8 @@ class Command(BaseCommand): session.pop(k, None) if session: print " -- Other session values --" - for k,v in session.items(): - print u"{0:20} {1}".format(k,v) + for k, v in session.items(): + print u"{0:20} {1}".format(k, v) except Session.DoesNotExist: raise CommandError('Session not found') diff --git a/postgresqleu/util/messaging/twitter.py b/postgresqleu/util/messaging/twitter.py index 6655ead2..60edcc7d 100644 --- a/postgresqleu/util/messaging/twitter.py +++ b/postgresqleu/util/messaging/twitter.py @@ -29,7 +29,7 @@ class Twitter(object): def send_message(self, tousername, msg): # Nor the username - tousername = tousername.lower().replace('@','') + tousername = tousername.lower().replace('@', '') # DM API calls require us to look up the userid, so do that with a # tiny cache first. diff --git a/postgresqleu/util/middleware.py b/postgresqleu/util/middleware.py index 62f10734..10c45d08 100644 --- a/postgresqleu/util/middleware.py +++ b/postgresqleu/util/middleware.py @@ -20,16 +20,16 @@ class FilterPersistMiddleware(object): referrer = request.META['HTTP_REFERER'].split('?')[0] referrer = referrer[referrer.find('/admin'):len(referrer)] - key = 'key' + path.replace('/','_') + key = 'key' + path.replace('/', '_') if path == referrer: #We are in same page as before if query_string == '': #Filter is empty, delete it - if session.get(key,False): + if session.get(key, False): del session[key] return None request.session[key] = query_string elif '_directlink=1' in query_string: # Direct link to a filter, by ourselves, so remove it - redirect_to = path + '?' + query_string.replace('&_directlink=1','') + redirect_to = path + '?' + query_string.replace('&_directlink=1', '') if session.has_key(key): del session[key] return http.HttpResponseRedirect(redirect_to) diff --git a/postgresqleu/util/misc/pgeuinvoice.py b/postgresqleu/util/misc/pgeuinvoice.py index 4f9ac2f7..a72edeec 100755 --- a/postgresqleu/util/misc/pgeuinvoice.py +++ b/postgresqleu/util/misc/pgeuinvoice.py @@ -63,7 +63,7 @@ class PDFBase(object): t = self.canvas.beginText() t.setTextOrigin(6*cm, 4*cm) t.setFont("DejaVu Serif Italic", 70) - t.setFillColorRGB(0.9,0.9,0.9) + t.setFillColorRGB(0.9, 0.9, 0.9) t.textLine("PREVIEW PREVIEW") self.canvas.rotate(45) self.canvas.drawText(t) @@ -75,7 +75,7 @@ class PDFBase(object): t.setFillColor(colors.black) t.setFont("DejaVu Serif", 9) t.setTextOrigin(6*cm, 27.5*cm) - self.textlines(t,"""PostgreSQL Europe + self.textlines(t, """PostgreSQL Europe Carpeaux Diem 13, rue du Square Carpeaux 75018 PARIS @@ -144,16 +144,16 @@ class PDFInvoice(PDFBase): if self.invoicenum: if self.receipt: - self.canvas.drawCentredString(10.5*cm,18.5*cm, "Receipt for invoice number %s%s" % (self.invoicenum, suffix)) + self.canvas.drawCentredString(10.5*cm, 18.5*cm, "Receipt for invoice number %s%s" % (self.invoicenum, suffix)) else: - self.canvas.drawCentredString(10.5*cm,18.5*cm, "Invoice number %s - %s%s" % (self.invoicenum, self.invoicedate.strftime("%B %d, %Y"),suffix)) + self.canvas.drawCentredString(10.5*cm, 18.5*cm, "Invoice number %s - %s%s" % (self.invoicenum, self.invoicedate.strftime("%B %d, %Y"), suffix)) self.canvas.setFont('DejaVu Serif Bold', 10) if self.receipt: self.canvas.drawCentredString(17*cm, 28*cm, "Receipt #%s" % self.invoicenum) else: self.canvas.drawCentredString(17*cm, 28*cm, "Invoice #%s" % self.invoicenum) else: - self.canvas.drawCentredString(10.5*cm,18.5*cm, "Receipt - %s%s" % (self.invoicedate.strftime("%B %d, %Y"), suffix)) + self.canvas.drawCentredString(10.5*cm, 18.5*cm, "Receipt - %s%s" % (self.invoicedate.strftime("%B %d, %Y"), suffix)) if pagenum == 0: firstcol = "Item" @@ -167,18 +167,18 @@ class PDFInvoice(PDFBase): "%.2f %s" % (cost, self.currency), vatrate and vatrate.shortstr or "No VAT", "%.2f %s" % ((cost * count) * (1+(vatpercent/Decimal(100))), self.currency)) - for title,cost, count, vatrate, vatpercent in self.rows[pagenum*self.ROWS_PER_PAGE:(pagenum+1)*self.ROWS_PER_PAGE]]) + for title, cost, count, vatrate, vatpercent in self.rows[pagenum*self.ROWS_PER_PAGE:(pagenum+1)*self.ROWS_PER_PAGE]]) style = [ ('FONTSIZE', (0, 0), (-1, -1), 8), - ('BACKGROUND',(0,0),(tblcols-1,0),colors.lightgrey), - ('ALIGN',(1,0),(tblcols-1,-1),'RIGHT'), - ('LINEBELOW',(0,0),(-1,0), 2, colors.black), - ('OUTLINE', (0,0), (-1, -1), 1, colors.black), + ('BACKGROUND', (0, 0), (tblcols-1, 0), colors.lightgrey), + ('ALIGN', (1, 0), (tblcols-1, -1), 'RIGHT'), + ('LINEBELOW', (0, 0), (-1, 0), 2, colors.black), + ('OUTLINE', (0, 0), (-1, -1), 1, colors.black), ] if islastpage: - totalexcl = sum([cost*count for title,cost,count,vatrate,vatpercent in self.rows]) - totalvat = sum([(cost*count*(vatpercent/Decimal(100))).quantize(Decimal('0.01')) for title,cost,count,vatrate,vatpercent in self.rows]) - totalincl = sum([(cost*count*(1+vatpercent/Decimal(100))).quantize(Decimal('0.01')) for title,cost,count,vatrate,vatpercent in self.rows]) + totalexcl = sum([cost*count for title, cost, count, vatrate, vatpercent in self.rows]) + totalvat = sum([(cost*count*(vatpercent/Decimal(100))).quantize(Decimal('0.01')) for title, cost, count, vatrate, vatpercent in self.rows]) + totalincl = sum([(cost*count*(1+vatpercent/Decimal(100))).quantize(Decimal('0.01')) for title, cost, count, vatrate, vatpercent in self.rows]) if self.totalvat > 0 and totalvat != self.totalvat: raise Exception("Specified total VAT {0} does not match calculated VAT {1}".format(self.totalvat, totalvat)) @@ -201,7 +201,7 @@ class PDFInvoice(PDFBase): ('SPAN', (0, -2), (3, -2)), ('SPAN', (0, -1), (3, -1)), ('ALIGN', (0, -3), (0, -1), 'RIGHT'), - ('LINEABOVE', (-4,-3), (-1, -3), 2, colors.black), + ('LINEABOVE', (-4, -3), (-1, -3), 2, colors.black), ]) else: tbldata.append([' Continued on page %s' % (pagenum + 2), '', '', '']) @@ -210,13 +210,13 @@ class PDFInvoice(PDFBase): t = Table(tbldata, [9.5*cm, 1.5*cm, 2.5*cm, 2*cm, 2.5*cm]) t.setStyle(TableStyle(style)) - w,h = t.wrapOn(self.canvas,10*cm,10*cm) + w, h = t.wrapOn(self.canvas, 10*cm, 10*cm) t.drawOn(self.canvas, 2*cm, 18*cm-h) if self.receipt: - self.canvas.drawCentredString(10.5*cm,17.3*cm-h, "This invoice was paid %s" % self.duedate.strftime("%B %d, %Y")) + self.canvas.drawCentredString(10.5*cm, 17.3*cm-h, "This invoice was paid %s" % self.duedate.strftime("%B %d, %Y")) else: - self.canvas.drawCentredString(10.5*cm,17.3*cm-h, "This invoice is due: %s" % self.duedate.strftime("%B %d, %Y")) + self.canvas.drawCentredString(10.5*cm, 17.3*cm-h, "This invoice is due: %s" % self.duedate.strftime("%B %d, %Y")) if islastpage: @@ -294,7 +294,7 @@ class PDFRefund(PDFBase): def save(self): self._pageheader() - self.canvas.drawCentredString(10.5*cm,19*cm, "REFUND NOTE FOR INVOICE NUMBER {0}".format(self.invoicenum)) + self.canvas.drawCentredString(10.5*cm, 19*cm, "REFUND NOTE FOR INVOICE NUMBER {0}".format(self.invoicenum)) tblpaid = [ ["Amount paid"], @@ -317,26 +317,26 @@ class PDFRefund(PDFBase): ]) style = [ - ('SPAN', (0,0), (1,0)), - ('BACKGROUND',(0,0),(-1,0),colors.lightgrey), - ('ALIGN',(0,0),(0,0),'CENTER'), - ('ALIGN',(1,1),(1,-1),'RIGHT'), - ('LINEBELOW',(0,1),(-1,1), 1, colors.black), - ('OUTLINE', (0,0), (-1, -1), 1, colors.black), + ('SPAN', (0, 0), (1, 0)), + ('BACKGROUND', (0, 0), (-1, 0), colors.lightgrey), + ('ALIGN', (0, 0), (0, 0), 'CENTER'), + ('ALIGN', (1, 1), (1, -1), 'RIGHT'), + ('LINEBELOW', (0, 1), (-1, 1), 1, colors.black), + ('OUTLINE', (0, 0), (-1, -1), 1, colors.black), ] if self.invoicevat: style.append( - ('LINEABOVE', (-1,-1), (-1,-1), 2, colors.black), + ('LINEABOVE', (-1, -1), (-1, -1), 2, colors.black), ) t = Table(tblpaid, [10.5*cm, 2.5*cm, 1.5*cm, 2.5*cm]) t.setStyle(TableStyle(style)) - w,h = t.wrapOn(self.canvas,10*cm,10*cm) + w, h = t.wrapOn(self.canvas, 10*cm, 10*cm) t.drawOn(self.canvas, (self.canvas._pagesize[0]-w)/2, 18*cm-h) t = Table(tblrefunded, [10.5*cm, 2.5*cm, 1.5*cm, 2.5*cm]) t.setStyle(TableStyle(style)) - w,h = t.wrapOn(self.canvas,10*cm,10*cm) + w, h = t.wrapOn(self.canvas, 10*cm, 10*cm) t.drawOn(self.canvas, (self.canvas._pagesize[0]-w)/2, 18*cm-h*2-1*cm) self.canvas.drawCentredString(10.5*cm, 17.3*cm-h*2 - 2*cm, "This refund was issued {0}".format(self.refunddate.strftime("%B %d, %Y"))) diff --git a/postgresqleu/util/payment/adyen.py b/postgresqleu/util/payment/adyen.py index 71975035..f9affe9b 100644 --- a/postgresqleu/util/payment/adyen.py +++ b/postgresqleu/util/payment/adyen.py @@ -19,7 +19,7 @@ from postgresqleu.adyen.models import TransactionStatus from postgresqleu.adyen.util import AdyenAPI def _escapeVal(val): - return val.replace('\\','\\\\').replace(':','\\:') + return val.replace('\\', '\\\\').replace(':', '\\:') def calculate_signature(param): param = OrderedDict(sorted(param.items(), key=lambda t: t[0])) @@ -53,7 +53,7 @@ class _AdyenBase(object): param.update({ 'merchantReference': '%s%s' % (settings.ADYEN_MERCHANTREF_PREFIX, invoiceid), 'paymentAmount': '%s' % (int(invoiceamount * Decimal(100.0)),), - 'orderData': base64.encodestring(_gzip_string(orderdata.encode('utf-8'))).strip().replace("\n",''), + 'orderData': base64.encodestring(_gzip_string(orderdata.encode('utf-8'))).strip().replace("\n", ''), 'merchantReturnData': '%s%s' % (settings.ADYEN_MERCHANTREF_PREFIX, invoiceid), 'sessionValidity': (datetime.utcnow() + timedelta(minutes=30)).strftime('%Y-%m-%dT%H:%M:%SZ'), 'allowedMethods': allowedMethods, diff --git a/postgresqleu/util/payment/paypal.py b/postgresqleu/util/payment/paypal.py index 587576b7..066ac5f6 100644 --- a/postgresqleu/util/payment/paypal.py +++ b/postgresqleu/util/payment/paypal.py @@ -18,14 +18,14 @@ lower fees. """ PAYPAL_COMMON = { - 'business':settings.PAYPAL_EMAIL, - 'lc':'GB', + 'business': settings.PAYPAL_EMAIL, + 'lc': 'GB', 'currency_code': settings.CURRENCY_ABBREV, - 'button_subtype':'services', - 'no_note':'1', - 'no_shipping':'1', - 'bn':'PP-BuyNowBF:btn_buynowCC_LG.gif-NonHosted', - 'charset':'utf-8', + 'button_subtype': 'services', + 'no_note': '1', + 'no_shipping': '1', + 'bn': 'PP-BuyNowBF:btn_buynowCC_LG.gif-NonHosted', + 'charset': 'utf-8', } def build_payment_url(self, invoicestr, invoiceamount, invoiceid, returnurl=None): diff --git a/postgresqleu/util/validators.py b/postgresqleu/util/validators.py index 942e17d0..79c7d46f 100644 --- a/postgresqleu/util/validators.py +++ b/postgresqleu/util/validators.py @@ -59,7 +59,7 @@ def validate_json_structure(config, structure): raise ValidationError("Keys {0} are not allowed".format(", ".join(["->".join(path + [m]) for m in extra]))) # Keys are correct, validate datatypes - for k,v in config.items(): + for k, v in config.items(): fullkey = "->".join(path + [k]) # Dicts don't have __name__ if type(structure[k]) == dict: @@ -95,7 +95,7 @@ class PictureUrlValidator(object): raise ValidationError("Downloading promo picture returned status %s" % r.status_code) try: img = Image.open(StringIO(r.content)) - w,h = img.size + w, h = img.size if self.aspect: newaspect = round(float(w) / float(h), 2) if newaspect != self.aspect: diff --git a/tools/accounting/oneoff/backfill_accounting.py b/tools/accounting/oneoff/backfill_accounting.py index 6de9a8fb..ab50107d 100755 --- a/tools/accounting/oneoff/backfill_accounting.py +++ b/tools/accounting/oneoff/backfill_accounting.py @@ -114,13 +114,13 @@ if __name__ == "__main__": allentries.append(thisentry) # Find all other paypal transactions - for ptrans in PaypalTrans.objects.filter(timestamp__gt=datetime(2013,01,01,0,0,0)).exclude(id__in=paypal_handled): + for ptrans in PaypalTrans.objects.filter(timestamp__gt=datetime(2013, 01, 01, 0, 0, 0)).exclude(id__in=paypal_handled): if not ptrans.fee: print "Paypal %s has no paypal fee, that can't be right!" % ptrans.id continue allentries.append({ 'date': ptrans.timestamp.date(), - 'text': 'Paypal %s - %s - update manually' % (ptrans.paypaltransid,ptrans.transtext), + 'text': 'Paypal %s - %s - update manually' % (ptrans.paypaltransid, ptrans.transtext), 'rows': [ (settings.ACCOUNTING_PAYPAL_FEE_ACCOUNT, ptrans.fee, None), (settings.ACCOUNTING_PAYPAL_INCOME_ACCOUNT, ptrans.amount - ptrans.fee, None), @@ -129,7 +129,7 @@ if __name__ == "__main__": }) # Find all other adyen transactoins - for atrans in AdyenTrans.objects.filter(authorizedat__gt=datetime(2013,01,01,0,0,0), settledat__isnull=False).exclude(id__in=adyen_handled): + for atrans in AdyenTrans.objects.filter(authorizedat__gt=datetime(2013, 01, 01, 0, 0, 0), settledat__isnull=False).exclude(id__in=adyen_handled): if atrans.amount == 0: print "Adyen transaction %s rounded off to 0, deal with manually!" % atrans.pspReference continue diff --git a/tools/deploystatic/deploystatic.py b/tools/deploystatic/deploystatic.py index 8cb4a959..bd131243 100755 --- a/tools/deploystatic/deploystatic.py +++ b/tools/deploystatic/deploystatic.py @@ -47,7 +47,7 @@ def filter_shuffle(l): # Format a datetime. If it's a datetime, call strftime. If it's a # string, assume it's iso format and convert it to a date first. def filter_datetimeformat(value, fmt): - if isinstance(value, date) or isinstance(value, datetime) or isinstance(value,time): + if isinstance(value, date) or isinstance(value, datetime) or isinstance(value, time): return value.strftime(fmt) else: return dateutil.parser.parse(value).strftime(fmt) @@ -308,7 +308,7 @@ if __name__ == "__main__": if args.branch: env = jinja2.sandbox.SandboxedEnvironment(loader=JinjaTarLoader(source)) else: - env = jinja2.sandbox.SandboxedEnvironment(loader=jinja2.FileSystemLoader([os.path.join(args.sourcepath, 'templates/'),])) + env = jinja2.sandbox.SandboxedEnvironment(loader=jinja2.FileSystemLoader([os.path.join(args.sourcepath, 'templates/'), ])) env.filters.update(global_filters) # If there is a context json, load it as well |
