From 377a77143cb32bee2935a1422b89efc3c22c12f3 Mon Sep 17 00:00:00 2001 From: Thomas Steen Rasmussen Date: Fri, 7 Feb 2020 18:46:34 +0100 Subject: [PATCH] black everything, working on #355 --- src/backoffice/urls.py | 9 ++-- src/backoffice/views.py | 23 +++++---- src/camps/factories.py | 6 ++- .../migrations/0033_camp_show_schedule.py | 10 ++-- src/program/email.py | 4 +- .../migrations/0072_auto_20190616_1746.py | 11 ++-- ...entproposal_use_provided_speaker_laptop.py | 11 ++-- .../migrations/0074_auto_20190801_0933.py | 10 ++-- src/program/multiform.py | 47 +++++++++-------- src/rideshare/migrations/0003_ride_has_car.py | 11 ++-- .../migrations/0004_auto_20190711_2036.py | 6 +-- .../migrations/0005_ride_to_location.py | 8 +-- .../migrations/0006_auto_20190713_0859.py | 51 ++++++++++++------- src/rideshare/migrations/0007_ride_author.py | 12 +++-- .../migrations/0008_auto_20190713_0924.py | 12 +++-- src/rideshare/models.py | 26 +++++++--- src/rideshare/views.py | 24 +++++++-- src/shop/invoiceworker.py | 5 +- src/shop/migrations/0058_order_pdf.py | 10 ++-- .../migrations/0059_auto_20190718_2051.py | 8 +-- .../migrations/0060_productcategory_weight.py | 11 ++-- src/shop/models.py | 4 +- src/shop/views.py | 4 +- src/sponsors/admin.py | 9 +++- src/sponsors/email.py | 2 +- .../commands/email_sponsor_tickets.py | 21 +++++--- .../migrations/0012_auto_20190807_2229.py | 31 +++++++---- src/sponsors/models.py | 14 +++-- src/tickets/admin.py | 2 +- .../migrations/0006_auto_20190616_1746.py | 14 ++--- .../migrations/0008_auto_20190718_2055.py | 26 ++++------ .../0009_tickettype_includes_badge.py | 6 +-- .../migrations/0010_auto_20190724_2037.py | 14 ++--- .../migrations/0012_auto_20190724_2037.py | 14 ++--- ...13_tickettype_single_ticket_per_product.py | 11 ++-- .../migrations/0014_auto_20190803_2241.py | 26 +++++----- src/tickets/models.py | 3 +- src/tickets/tests.py | 7 +-- src/utils/admin.py | 2 +- 39 files changed, 312 insertions(+), 213 deletions(-) diff --git a/src/backoffice/urls.py b/src/backoffice/urls.py index 0bd02423..1a06abb8 100644 --- a/src/backoffice/urls.py +++ b/src/backoffice/urls.py @@ -7,11 +7,10 @@ app_name = "backoffice" urlpatterns = [ path("", BackofficeIndexView.as_view(), name="index"), # infodesk - path("infodesk/", include( - [ - path("", ScanTicketsView.as_view(), name="scan_tickets"), - ] - )), + path( + "infodesk/", + include([path("", ScanTicketsView.as_view(), name="scan_tickets"),]), + ), path("shop_tickets/", ShopTicketOverview.as_view(), name="shop_ticket_overview"), path("product_handout/", ProductHandoutView.as_view(), name="product_handout"), path("badge_handout/", BadgeHandoutView.as_view(), name="badge_handout"), diff --git a/src/backoffice/views.py b/src/backoffice/views.py index ba68b881..4185ffcd 100644 --- a/src/backoffice/views.py +++ b/src/backoffice/views.py @@ -564,7 +564,9 @@ def _ticket_getter_by_pk(pk): pass -class ScanTicketsView(LoginRequiredMixin, InfoTeamPermissionMixin, CampViewMixin,TemplateView): +class ScanTicketsView( + LoginRequiredMixin, InfoTeamPermissionMixin, CampViewMixin, TemplateView +): template_name = "info_desk/scan.html" ticket = None @@ -591,23 +593,23 @@ class ScanTicketsView(LoginRequiredMixin, InfoTeamPermissionMixin, CampViewMixin messages.warning(self.request, "Ticket not found!") elif self.order_search: - context['order'] = self.order + context["order"] = self.order return context def post(self, request, **kwargs): - if 'check_in_ticket_id' in request.POST: + if "check_in_ticket_id" in request.POST: self.ticket = self.check_in_ticket(request) - elif 'badge_ticket_id' in request.POST: + elif "badge_ticket_id" in request.POST: self.ticket = self.hand_out_badge(request) - elif 'find_order_id' in request.POST: + elif "find_order_id" in request.POST: self.order_search = True try: - order_id = self.request.POST.get('find_order_id') + order_id = self.request.POST.get("find_order_id") self.order = Order.objects.get(id=order_id) except Order.DoesNotExist: pass - elif 'mark_as_paid' in request.POST: + elif "mark_as_paid" in request.POST: self.mark_order_as_paid(request) return super().get(request, **kwargs) @@ -621,7 +623,7 @@ class ScanTicketsView(LoginRequiredMixin, InfoTeamPermissionMixin, CampViewMixin return ticket_to_check_in def hand_out_badge(self, request): - badge_ticket_id = request.POST.get('badge_ticket_id') + badge_ticket_id = request.POST.get("badge_ticket_id") ticket_to_handout_badge_for = _ticket_getter_by_pk(badge_ticket_id) ticket_to_handout_badge_for.badge_handed_out = True ticket_to_handout_badge_for.save() @@ -629,7 +631,7 @@ class ScanTicketsView(LoginRequiredMixin, InfoTeamPermissionMixin, CampViewMixin return ticket_to_handout_badge_for def mark_order_as_paid(self, request): - order = Order.objects.get(id=request.POST.get('mark_as_paid')) + order = Order.objects.get(id=request.POST.get("mark_as_paid")) order.mark_as_paid() messages.success(request, "Order #{} has been marked as paid!".format(order.id)) @@ -643,6 +645,5 @@ class ShopTicketOverview(LoginRequiredMixin, CampViewMixin, ListView): context_object_name = "shop_tickets" def get_context_data(self, *, object_list=None, **kwargs): - kwargs['ticket_types'] = TicketType.objects.filter(camp=self.camp) + kwargs["ticket_types"] = TicketType.objects.filter(camp=self.camp) return super().get_context_data(object_list=object_list, **kwargs) - diff --git a/src/camps/factories.py b/src/camps/factories.py index 32d02556..ae47f5b4 100644 --- a/src/camps/factories.py +++ b/src/camps/factories.py @@ -19,12 +19,14 @@ class CampFactory(DjangoModelFactory): buildup = factory.LazyFunction( lambda: DateTimeTZRange( lower=timezone.now() - timezone.timedelta(days=3), - upper=timezone.now() - timezone.timedelta(hours=1) + upper=timezone.now() - timezone.timedelta(hours=1), ) ) camp = factory.LazyFunction( - lambda: DateTimeTZRange(lower=timezone.now(), upper=timezone.now() + timezone.timedelta(days=8)) + lambda: DateTimeTZRange( + lower=timezone.now(), upper=timezone.now() + timezone.timedelta(days=8) + ) ) teardown = factory.LazyFunction( diff --git a/src/camps/migrations/0033_camp_show_schedule.py b/src/camps/migrations/0033_camp_show_schedule.py index 2f4b49fa..cf35174d 100644 --- a/src/camps/migrations/0033_camp_show_schedule.py +++ b/src/camps/migrations/0033_camp_show_schedule.py @@ -6,13 +6,15 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('camps', '0032_auto_20180917_1754'), + ("camps", "0032_auto_20180917_1754"), ] operations = [ migrations.AddField( - model_name='camp', - name='show_schedule', - field=models.BooleanField(default=True, help_text='Check if the schedule should be shown.'), + model_name="camp", + name="show_schedule", + field=models.BooleanField( + default=True, help_text="Check if the schedule should be shown." + ), ), ] diff --git a/src/program/email.py b/src/program/email.py index 21451fe3..573cc88b 100644 --- a/src/program/email.py +++ b/src/program/email.py @@ -24,6 +24,7 @@ def add_new_speakerproposal_email(speakerproposal): subject="New speaker proposal '%s' was just submitted" % speakerproposal.name, ) + def add_new_eventproposal_email(eventproposal): formatdict = {"proposal": eventproposal} @@ -41,6 +42,7 @@ def add_new_eventproposal_email(eventproposal): subject="New event proposal '%s' was just submitted" % eventproposal.title, ) + def add_speakerproposal_updated_email(speakerproposal): formatdict = {"proposal": speakerproposal} @@ -58,6 +60,7 @@ def add_speakerproposal_updated_email(speakerproposal): subject="Speaker proposal '%s' was just updated" % speakerproposal.name, ) + def add_eventproposal_updated_email(eventproposal): formatdict = {"proposal": eventproposal} @@ -74,4 +77,3 @@ def add_eventproposal_updated_email(eventproposal): formatdict=formatdict, subject="Event proposal '%s' was just updated" % eventproposal.title, ) - diff --git a/src/program/migrations/0072_auto_20190616_1746.py b/src/program/migrations/0072_auto_20190616_1746.py index 9e90cdc3..1df5230d 100644 --- a/src/program/migrations/0072_auto_20190616_1746.py +++ b/src/program/migrations/0072_auto_20190616_1746.py @@ -6,13 +6,16 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('program', '0071_auto_20180827_1958'), + ("program", "0071_auto_20180827_1958"), ] operations = [ migrations.AlterField( - model_name='speakerproposal', - name='email', - field=models.EmailField(help_text='The email of the speaker (defaults to the logged in user if empty).', max_length=150), + model_name="speakerproposal", + name="email", + field=models.EmailField( + help_text="The email of the speaker (defaults to the logged in user if empty).", + max_length=150, + ), ), ] diff --git a/src/program/migrations/0073_eventproposal_use_provided_speaker_laptop.py b/src/program/migrations/0073_eventproposal_use_provided_speaker_laptop.py index ebe5ff4c..e45b76a6 100644 --- a/src/program/migrations/0073_eventproposal_use_provided_speaker_laptop.py +++ b/src/program/migrations/0073_eventproposal_use_provided_speaker_laptop.py @@ -6,13 +6,16 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('program', '0072_auto_20190616_1746'), + ("program", "0072_auto_20190616_1746"), ] operations = [ migrations.AddField( - model_name='eventproposal', - name='use_provided_speaker_laptop', - field=models.BooleanField(default=False, help_text='Will you be using the provided speaker laptop?'), + model_name="eventproposal", + name="use_provided_speaker_laptop", + field=models.BooleanField( + default=False, + help_text="Will you be using the provided speaker laptop?", + ), ), ] diff --git a/src/program/migrations/0074_auto_20190801_0933.py b/src/program/migrations/0074_auto_20190801_0933.py index d3c08892..8a117c93 100644 --- a/src/program/migrations/0074_auto_20190801_0933.py +++ b/src/program/migrations/0074_auto_20190801_0933.py @@ -6,13 +6,15 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('program', '0073_eventproposal_use_provided_speaker_laptop'), + ("program", "0073_eventproposal_use_provided_speaker_laptop"), ] operations = [ migrations.AlterField( - model_name='eventproposal', - name='use_provided_speaker_laptop', - field=models.BooleanField(default=True, help_text='Will you be using the provided speaker laptop?'), + model_name="eventproposal", + name="use_provided_speaker_laptop", + field=models.BooleanField( + default=True, help_text="Will you be using the provided speaker laptop?" + ), ), ] diff --git a/src/program/multiform.py b/src/program/multiform.py index a04b3ce6..a303d1ec 100644 --- a/src/program/multiform.py +++ b/src/program/multiform.py @@ -43,17 +43,17 @@ class MultiForm(object): button. MultiForm imitates the Form API so that it is invisible to anybody else that you are using a MultiForm. """ + form_classes = {} def __init__(self, data=None, files=None, *args, **kwargs): # Some things, such as the WizardView expect these to exist. self.data, self.files = data, files kwargs.update( - data=data, - files=files, + data=data, files=files, ) - self.initials = kwargs.pop('initial', None) + self.initials = kwargs.pop("initial", None) if self.initials is None: self.initials = {} self.forms = OrderedDict() @@ -68,14 +68,13 @@ class MultiForm(object): Returns the args and kwargs for initializing one of our form children. """ fkwargs = kwargs.copy() - prefix = kwargs.get('prefix') + prefix = kwargs.get("prefix") if prefix is None: prefix = key else: - prefix = '{0}__{1}'.format(key, prefix) + prefix = "{0}__{1}".format(key, prefix) fkwargs.update( - initial=self.initials.get(key), - prefix=prefix, + initial=self.initials.get(key), prefix=prefix, ) return args, fkwargs @@ -134,19 +133,20 @@ class MultiForm(object): def non_field_errors(self): form_errors = ( - form.non_field_errors() for form in self.forms.values() - if hasattr(form, 'non_field_errors') + form.non_field_errors() + for form in self.forms.values() + if hasattr(form, "non_field_errors") ) return ErrorList(chain(self.crossform_errors, *form_errors)) def as_table(self): - return mark_safe(''.join(form.as_table() for form in self.forms.values())) + return mark_safe("".join(form.as_table() for form in self.forms.values())) def as_ul(self): - return mark_safe(''.join(form.as_ul() for form in self.forms.values())) + return mark_safe("".join(form.as_ul() for form in self.forms.values())) def as_p(self): - return mark_safe(''.join(form.as_p() for form in self.forms.values())) + return mark_safe("".join(form.as_p() for form in self.forms.values())) def is_multipart(self): return any(form.is_multipart() for form in self.forms.values()) @@ -167,14 +167,15 @@ class MultiForm(object): def cleaned_data(self): return OrderedDict( (key, form.cleaned_data) - for key, form in self.forms.items() if form.is_valid() + for key, form in self.forms.items() + if form.is_valid() ) @cleaned_data.setter def cleaned_data(self, data): for key, value in data.items(): child_form = self[key] - if hasattr(child_form, 'forms'): + if hasattr(child_form, "forms"): for formlet, formlet_data in zip(child_form.forms, value): formlet.cleaned_data = formlet_data else: @@ -187,33 +188,37 @@ class MultiModelForm(MultiForm): means that it includes support for the instance parameter in initialization and adds a save method. """ + def __init__(self, *args, **kwargs): - self.instances = kwargs.pop('instance', None) + self.instances = kwargs.pop("instance", None) if self.instances is None: self.instances = {} super(MultiModelForm, self).__init__(*args, **kwargs) def get_form_args_kwargs(self, key, args, kwargs): - fargs, fkwargs = super(MultiModelForm, self).get_form_args_kwargs(key, args, kwargs) + fargs, fkwargs = super(MultiModelForm, self).get_form_args_kwargs( + key, args, kwargs + ) try: # If we only pass instance when there was one specified, we make it # possible to use non-ModelForms together with ModelForms. - fkwargs['instance'] = self.instances[key] + fkwargs["instance"] = self.instances[key] except KeyError: pass return fargs, fkwargs def save(self, commit=True): objects = OrderedDict( - (key, form.save(commit)) - for key, form in self.forms.items() + (key, form.save(commit)) for key, form in self.forms.items() ) - if any(hasattr(form, 'save_m2m') for form in self.forms.values()): + if any(hasattr(form, "save_m2m") for form in self.forms.values()): + def save_m2m(): for form in self.forms.values(): - if hasattr(form, 'save_m2m'): + if hasattr(form, "save_m2m"): form.save_m2m() + self.save_m2m = save_m2m return objects diff --git a/src/rideshare/migrations/0003_ride_has_car.py b/src/rideshare/migrations/0003_ride_has_car.py index 51ec21a3..f2c2271c 100644 --- a/src/rideshare/migrations/0003_ride_has_car.py +++ b/src/rideshare/migrations/0003_ride_has_car.py @@ -6,13 +6,16 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('rideshare', '0002_auto_20180814_1942'), + ("rideshare", "0002_auto_20180814_1942"), ] operations = [ migrations.AddField( - model_name='ride', - name='has_car', - field=models.BooleanField(default=True, help_text='Leave checked if you are offering a ride, uncheck if you need a ride'), + model_name="ride", + name="has_car", + field=models.BooleanField( + default=True, + help_text="Leave checked if you are offering a ride, uncheck if you need a ride", + ), ), ] diff --git a/src/rideshare/migrations/0004_auto_20190711_2036.py b/src/rideshare/migrations/0004_auto_20190711_2036.py index 4d5270bb..a1203604 100644 --- a/src/rideshare/migrations/0004_auto_20190711_2036.py +++ b/src/rideshare/migrations/0004_auto_20190711_2036.py @@ -6,13 +6,11 @@ from django.db import migrations class Migration(migrations.Migration): dependencies = [ - ('rideshare', '0003_ride_has_car'), + ("rideshare", "0003_ride_has_car"), ] operations = [ migrations.RenameField( - model_name='ride', - old_name='location', - new_name='from_location', + model_name="ride", old_name="location", new_name="from_location", ), ] diff --git a/src/rideshare/migrations/0005_ride_to_location.py b/src/rideshare/migrations/0005_ride_to_location.py index 8767d0c7..0493acf8 100644 --- a/src/rideshare/migrations/0005_ride_to_location.py +++ b/src/rideshare/migrations/0005_ride_to_location.py @@ -6,14 +6,14 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('rideshare', '0004_auto_20190711_2036'), + ("rideshare", "0004_auto_20190711_2036"), ] operations = [ migrations.AddField( - model_name='ride', - name='to_location', - field=models.CharField(default='BornHack', max_length=100), + model_name="ride", + name="to_location", + field=models.CharField(default="BornHack", max_length=100), preserve_default=False, ), ] diff --git a/src/rideshare/migrations/0006_auto_20190713_0859.py b/src/rideshare/migrations/0006_auto_20190713_0859.py index bb205ca1..e3f72249 100644 --- a/src/rideshare/migrations/0006_auto_20190713_0859.py +++ b/src/rideshare/migrations/0006_auto_20190713_0859.py @@ -6,38 +6,51 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('rideshare', '0005_ride_to_location'), + ("rideshare", "0005_ride_to_location"), ] operations = [ migrations.AlterField( - model_name='ride', - name='description', - field=models.TextField(help_text='Include any details you want, like luggage space/requirements, contact info and so on.'), + model_name="ride", + name="description", + field=models.TextField( + help_text="Include any details you want, like luggage space/requirements, contact info and so on." + ), ), migrations.AlterField( - model_name='ride', - name='from_location', - field=models.CharField(help_text='Where does this ride begin?', max_length=100), + model_name="ride", + name="from_location", + field=models.CharField( + help_text="Where does this ride begin?", max_length=100 + ), ), migrations.AlterField( - model_name='ride', - name='has_car', - field=models.BooleanField(default=True, help_text='Leave checked if you are offering a ride, uncheck if you need a ride.'), + model_name="ride", + name="has_car", + field=models.BooleanField( + default=True, + help_text="Leave checked if you are offering a ride, uncheck if you need a ride.", + ), ), migrations.AlterField( - model_name='ride', - name='seats', - field=models.PositiveIntegerField(help_text='How many seats are you offering/how many seats do you need?'), + model_name="ride", + name="seats", + field=models.PositiveIntegerField( + help_text="How many seats are you offering/how many seats do you need?" + ), ), migrations.AlterField( - model_name='ride', - name='to_location', - field=models.CharField(help_text='What is the destination of this ride?', max_length=100), + model_name="ride", + name="to_location", + field=models.CharField( + help_text="What is the destination of this ride?", max_length=100 + ), ), migrations.AlterField( - model_name='ride', - name='when', - field=models.DateTimeField(help_text='When does this ride leave? Format is YYYY-MM-DD HH:mm'), + model_name="ride", + name="when", + field=models.DateTimeField( + help_text="When does this ride leave? Format is YYYY-MM-DD HH:mm" + ), ), ] diff --git a/src/rideshare/migrations/0007_ride_author.py b/src/rideshare/migrations/0007_ride_author.py index 4c59a976..b4cd425f 100644 --- a/src/rideshare/migrations/0007_ride_author.py +++ b/src/rideshare/migrations/0007_ride_author.py @@ -6,13 +6,17 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('rideshare', '0006_auto_20190713_0859'), + ("rideshare", "0006_auto_20190713_0859"), ] operations = [ migrations.AddField( - model_name='ride', - name='author', - field=models.CharField(default='Unnamed', help_text='Let people know who posted this', max_length=100), + model_name="ride", + name="author", + field=models.CharField( + default="Unnamed", + help_text="Let people know who posted this", + max_length=100, + ), ), ] diff --git a/src/rideshare/migrations/0008_auto_20190713_0924.py b/src/rideshare/migrations/0008_auto_20190713_0924.py index 6e1aa172..941b7ac3 100644 --- a/src/rideshare/migrations/0008_auto_20190713_0924.py +++ b/src/rideshare/migrations/0008_auto_20190713_0924.py @@ -6,13 +6,17 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('rideshare', '0007_ride_author'), + ("rideshare", "0007_ride_author"), ] operations = [ migrations.AlterField( - model_name='ride', - name='author', - field=models.CharField(default='Anonymous', help_text='Let people know who posted this', max_length=100), + model_name="ride", + name="author", + field=models.CharField( + default="Anonymous", + help_text="Let people know who posted this", + max_length=100, + ), ), ] diff --git a/src/rideshare/models.py b/src/rideshare/models.py index dd430827..a6d32d50 100644 --- a/src/rideshare/models.py +++ b/src/rideshare/models.py @@ -7,16 +7,28 @@ from utils.models import UUIDModel, CampRelatedModel class Ride(UUIDModel, CampRelatedModel): camp = models.ForeignKey("camps.Camp", on_delete=models.PROTECT) user = models.ForeignKey("auth.User", on_delete=models.PROTECT) - author = models.CharField(max_length=100, help_text="Let people know who posted this", default="Anonymous") + author = models.CharField( + max_length=100, help_text="Let people know who posted this", default="Anonymous" + ) has_car = models.BooleanField( default=True, - help_text="Leave checked if you are offering a ride, uncheck if you need a ride." + help_text="Leave checked if you are offering a ride, uncheck if you need a ride.", + ) + seats = models.PositiveIntegerField( + help_text="How many seats are you offering/how many seats do you need?" + ) + from_location = models.CharField( + max_length=100, help_text="Where does this ride begin?" + ) + to_location = models.CharField( + max_length=100, help_text="What is the destination of this ride?" + ) + when = models.DateTimeField( + help_text="When does this ride leave? Format is YYYY-MM-DD HH:mm" + ) + description = models.TextField( + help_text="Include any details you want, like luggage space/requirements, contact info and so on." ) - seats = models.PositiveIntegerField(help_text="How many seats are you offering/how many seats do you need?") - from_location = models.CharField(max_length=100, help_text="Where does this ride begin?") - to_location = models.CharField(max_length=100, help_text="What is the destination of this ride?") - when = models.DateTimeField(help_text="When does this ride leave? Format is YYYY-MM-DD HH:mm") - description = models.TextField(help_text="Include any details you want, like luggage space/requirements, contact info and so on.") def get_absolute_url(self): return reverse( diff --git a/src/rideshare/views.py b/src/rideshare/views.py index 36b4ed3e..55d7b87d 100644 --- a/src/rideshare/views.py +++ b/src/rideshare/views.py @@ -63,15 +63,21 @@ class RideDetail(LoginRequiredMixin, CampViewMixin, DetailView): class RideCreate(LoginRequiredMixin, CampViewMixin, CreateView): model = Ride - fields = ["author", "has_car", "from_location", "to_location", "when", "seats", "description"] + fields = [ + "author", + "has_car", + "from_location", + "to_location", + "when", + "seats", + "description", + ] def get_initial(self): """ Default 'author' to users public_credit_name where relevant """ - return { - "author": self.request.user.profile.get_public_credit_name - } + return {"author": self.request.user.profile.get_public_credit_name} def form_valid(self, form, **kwargs): """ @@ -92,7 +98,15 @@ class IsRideOwnerMixin(UserPassesTestMixin): class RideUpdate(LoginRequiredMixin, CampViewMixin, IsRideOwnerMixin, UpdateView): model = Ride - fields = ["author", "has_car", "from_location", "to_location", "when", "seats", "description"] + fields = [ + "author", + "has_car", + "from_location", + "to_location", + "when", + "seats", + "description", + ] class RideDelete(LoginRequiredMixin, CampViewMixin, IsRideOwnerMixin, DeleteView): diff --git a/src/shop/invoiceworker.py b/src/shop/invoiceworker.py index 4a486730..3b9ace17 100644 --- a/src/shop/invoiceworker.py +++ b/src/shop/invoiceworker.py @@ -19,7 +19,9 @@ def do_work(): """ # check if we need to generate any proforma invoices for shop orders - for order in Order.objects.filter(Q(pdf="") | Q(pdf__isnull=True), open__isnull=True): + for order in Order.objects.filter( + Q(pdf="") | Q(pdf__isnull=True), open__isnull=True + ): # generate proforma invoice for this Order pdffile = generate_pdf_letter( filename=order.filename, @@ -141,4 +143,3 @@ def do_work(): "Unable to add creditnote email for creditnote %s to %s" % (creditnote.pk, creditnote.user.email) ) - diff --git a/src/shop/migrations/0058_order_pdf.py b/src/shop/migrations/0058_order_pdf.py index 6fd053c2..a538b2c9 100644 --- a/src/shop/migrations/0058_order_pdf.py +++ b/src/shop/migrations/0058_order_pdf.py @@ -6,13 +6,15 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('shop', '0057_order_notes'), + ("shop", "0057_order_notes"), ] operations = [ migrations.AddField( - model_name='order', - name='pdf', - field=models.FileField(blank=True, null=True, upload_to='proforma_invoices/'), + model_name="order", + name="pdf", + field=models.FileField( + blank=True, null=True, upload_to="proforma_invoices/" + ), ), ] diff --git a/src/shop/migrations/0059_auto_20190718_2051.py b/src/shop/migrations/0059_auto_20190718_2051.py index 8d423deb..02e03ac2 100644 --- a/src/shop/migrations/0059_auto_20190718_2051.py +++ b/src/shop/migrations/0059_auto_20190718_2051.py @@ -6,13 +6,13 @@ from django.db import migrations class Migration(migrations.Migration): dependencies = [ - ('shop', '0058_order_pdf'), + ("shop", "0058_order_pdf"), ] operations = [ migrations.RenameField( - model_name='orderproductrelation', - old_name='handed_out', - new_name='ticket_generated', + model_name="orderproductrelation", + old_name="handed_out", + new_name="ticket_generated", ), ] diff --git a/src/shop/migrations/0060_productcategory_weight.py b/src/shop/migrations/0060_productcategory_weight.py index d4253dbb..3791ddf2 100644 --- a/src/shop/migrations/0060_productcategory_weight.py +++ b/src/shop/migrations/0060_productcategory_weight.py @@ -6,13 +6,16 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('shop', '0059_auto_20190718_2051'), + ("shop", "0059_auto_20190718_2051"), ] operations = [ migrations.AddField( - model_name='productcategory', - name='weight', - field=models.IntegerField(default=100, help_text='Sorting weight. Heavier items sink to the bottom.'), + model_name="productcategory", + name="weight", + field=models.IntegerField( + default=100, + help_text="Sorting weight. Heavier items sink to the bottom.", + ), ), ] diff --git a/src/shop/models.py b/src/shop/models.py index 77505bf1..322e6faa 100644 --- a/src/shop/models.py +++ b/src/shop/models.py @@ -376,7 +376,9 @@ class ProductCategory(CreatedUpdatedModel, UUIDModel): name = models.CharField(max_length=150) slug = models.SlugField() public = models.BooleanField(default=True) - weight = models.IntegerField(default=100, help_text="Sorting weight. Heavier items sink to the bottom.") + weight = models.IntegerField( + default=100, help_text="Sorting weight. Heavier items sink to the bottom." + ) def __str__(self): return self.name diff --git a/src/shop/views.py b/src/shop/views.py index 9e66d135..a2243b2f 100644 --- a/src/shop/views.py +++ b/src/shop/views.py @@ -156,7 +156,9 @@ class ShopIndexView(ListView): def get_queryset(self): queryset = super(ShopIndexView, self).get_queryset() - return queryset.available().order_by("category__weight", "category__name", "price", "name") + return queryset.available().order_by( + "category__weight", "category__name", "price", "name" + ) def get_context_data(self, **kwargs): context = super(ShopIndexView, self).get_context_data(**kwargs) diff --git a/src/sponsors/admin.py b/src/sponsors/admin.py index 360b0eb6..f7c93649 100644 --- a/src/sponsors/admin.py +++ b/src/sponsors/admin.py @@ -5,7 +5,14 @@ from .models import Sponsor, SponsorTier @admin.register(Sponsor) class SponsorAdmin(admin.ModelAdmin): - list_display = ("name", "tier", "ticket_email", "ticket_ready", "tickets_sent", "tickets_generated") + list_display = ( + "name", + "tier", + "ticket_email", + "ticket_ready", + "tickets_sent", + "tickets_generated", + ) list_filter = ("tier__camp",) diff --git a/src/sponsors/email.py b/src/sponsors/email.py index 5dc0fcd2..f9a88968 100644 --- a/src/sponsors/email.py +++ b/src/sponsors/email.py @@ -7,6 +7,7 @@ from utils.email import add_outgoing_email logger = logging.getLogger("bornhack.%s" % __name__) + def add_sponsorticket_email(ticket): # put formatdict together formatdict = { @@ -31,4 +32,3 @@ def add_sponsorticket_email(ticket): attachment=f.read(), attachment_filename=filename, ) - diff --git a/src/sponsors/management/commands/email_sponsor_tickets.py b/src/sponsors/management/commands/email_sponsor_tickets.py index 03e74b2f..42a73b9f 100644 --- a/src/sponsors/management/commands/email_sponsor_tickets.py +++ b/src/sponsors/management/commands/email_sponsor_tickets.py @@ -29,20 +29,25 @@ class Command(BaseCommand): for sponsor in sponsors: if ( - sponsor.tier.tickets and - sponsor.tickets_generated and - sponsor.ticket_email and - sponsor.ticket_ready and - not sponsor.tickets_sent + sponsor.tier.tickets + and sponsor.tickets_generated + and sponsor.ticket_email + and sponsor.ticket_ready + and not sponsor.tickets_sent ): - self.output("# Generating outgoing emails to send tickets for {}:".format(sponsor)) + self.output( + "# Generating outgoing emails to send tickets for {}:".format( + sponsor + ) + ) for ticket in sponsor.sponsorticket_set.all(): # send the email if add_sponsorticket_email(ticket=ticket): logger.info("OK: email to %s added" % sponsor) else: - logger.error("Unable to send sponsor ticket email to %s" % sponsor) + logger.error( + "Unable to send sponsor ticket email to %s" % sponsor + ) sponsor.tickets_sent = True sponsor.save() - diff --git a/src/sponsors/migrations/0012_auto_20190807_2229.py b/src/sponsors/migrations/0012_auto_20190807_2229.py index b194b01d..20f8fa40 100644 --- a/src/sponsors/migrations/0012_auto_20190807_2229.py +++ b/src/sponsors/migrations/0012_auto_20190807_2229.py @@ -6,23 +6,34 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('sponsors', '0011_auto_20181118_1513'), + ("sponsors", "0011_auto_20181118_1513"), ] operations = [ migrations.AddField( - model_name='sponsor', - name='ticket_email', - field=models.EmailField(blank=True, help_text='The email to send the tickets to', max_length=254, null=True), + model_name="sponsor", + name="ticket_email", + field=models.EmailField( + blank=True, + help_text="The email to send the tickets to", + max_length=254, + null=True, + ), ), migrations.AddField( - model_name='sponsor', - name='ticket_ready', - field=models.BooleanField(default=False, help_text='Check when we are ready to send tickets to this sponsor.'), + model_name="sponsor", + name="ticket_ready", + field=models.BooleanField( + default=False, + help_text="Check when we are ready to send tickets to this sponsor.", + ), ), migrations.AddField( - model_name='sponsor', - name='tickets_sent', - field=models.BooleanField(default=False, help_text='True when the tickets have been emailed to the sponsor'), + model_name="sponsor", + name="tickets_sent", + field=models.BooleanField( + default=False, + help_text="True when the tickets have been emailed to the sponsor", + ), ), ] diff --git a/src/sponsors/models.py b/src/sponsors/models.py index d8e310e6..6b56ed36 100644 --- a/src/sponsors/models.py +++ b/src/sponsors/models.py @@ -23,11 +23,19 @@ class Sponsor(CampRelatedModel): tickets_generated = models.BooleanField(default=False) - ticket_email = models.EmailField(null=True, blank=True, help_text="The email to send the tickets to") + ticket_email = models.EmailField( + null=True, blank=True, help_text="The email to send the tickets to" + ) - ticket_ready = models.BooleanField(default=False, help_text="Check when we are ready to send tickets to this sponsor.") + ticket_ready = models.BooleanField( + default=False, + help_text="Check when we are ready to send tickets to this sponsor.", + ) - tickets_sent = models.BooleanField(default=False, help_text="True when the tickets have been emailed to the sponsor") + tickets_sent = models.BooleanField( + default=False, + help_text="True when the tickets have been emailed to the sponsor", + ) def __str__(self): return "{} ({})".format(self.name, self.tier.camp) diff --git a/src/tickets/admin.py b/src/tickets/admin.py index 2bd71357..7213a1d8 100644 --- a/src/tickets/admin.py +++ b/src/tickets/admin.py @@ -7,7 +7,7 @@ from .models import TicketType, SponsorTicket, DiscountTicket, ShopTicket class BaseTicketAdmin(admin.ModelAdmin): actions = ["generate_pdf"] exclude = ["qrcode_base64"] - readonly_fields = ['token', 'badge_token'] + readonly_fields = ["token", "badge_token"] def generate_pdf(self, request, queryset): for ticket in queryset.all(): diff --git a/src/tickets/migrations/0006_auto_20190616_1746.py b/src/tickets/migrations/0006_auto_20190616_1746.py index f2fac385..d976b03d 100644 --- a/src/tickets/migrations/0006_auto_20190616_1746.py +++ b/src/tickets/migrations/0006_auto_20190616_1746.py @@ -6,23 +6,23 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('tickets', '0005_auto_20180318_0906'), + ("tickets", "0005_auto_20180318_0906"), ] operations = [ migrations.AddField( - model_name='discountticket', - name='token', + model_name="discountticket", + name="token", field=models.CharField(max_length=64, null=True), ), migrations.AddField( - model_name='shopticket', - name='token', + model_name="shopticket", + name="token", field=models.CharField(max_length=64, null=True), ), migrations.AddField( - model_name='sponsorticket', - name='token', + model_name="sponsorticket", + name="token", field=models.CharField(max_length=64, null=True), ), ] diff --git a/src/tickets/migrations/0008_auto_20190718_2055.py b/src/tickets/migrations/0008_auto_20190718_2055.py index 3462307b..3bdc214d 100644 --- a/src/tickets/migrations/0008_auto_20190718_2055.py +++ b/src/tickets/migrations/0008_auto_20190718_2055.py @@ -6,38 +6,32 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('tickets', '0007_save_token_to_db'), + ("tickets", "0007_save_token_to_db"), ] operations = [ migrations.RenameField( - model_name='discountticket', - old_name='checked_in', - new_name='used', + model_name="discountticket", old_name="checked_in", new_name="used", ), migrations.RenameField( - model_name='shopticket', - old_name='checked_in', - new_name='used', + model_name="shopticket", old_name="checked_in", new_name="used", ), migrations.RenameField( - model_name='sponsorticket', - old_name='checked_in', - new_name='used', + model_name="sponsorticket", old_name="checked_in", new_name="used", ), migrations.AlterField( - model_name='discountticket', - name='token', + model_name="discountticket", + name="token", field=models.CharField(max_length=64), ), migrations.AlterField( - model_name='shopticket', - name='token', + model_name="shopticket", + name="token", field=models.CharField(max_length=64), ), migrations.AlterField( - model_name='sponsorticket', - name='token', + model_name="sponsorticket", + name="token", field=models.CharField(max_length=64), ), ] diff --git a/src/tickets/migrations/0009_tickettype_includes_badge.py b/src/tickets/migrations/0009_tickettype_includes_badge.py index 82a5da1b..2cf553df 100644 --- a/src/tickets/migrations/0009_tickettype_includes_badge.py +++ b/src/tickets/migrations/0009_tickettype_includes_badge.py @@ -6,13 +6,13 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('tickets', '0008_auto_20190718_2055'), + ("tickets", "0008_auto_20190718_2055"), ] operations = [ migrations.AddField( - model_name='tickettype', - name='includes_badge', + model_name="tickettype", + name="includes_badge", field=models.BooleanField(default=False), ), ] diff --git a/src/tickets/migrations/0010_auto_20190724_2037.py b/src/tickets/migrations/0010_auto_20190724_2037.py index 414dfbd5..01e5a1aa 100644 --- a/src/tickets/migrations/0010_auto_20190724_2037.py +++ b/src/tickets/migrations/0010_auto_20190724_2037.py @@ -6,23 +6,23 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('tickets', '0009_tickettype_includes_badge'), + ("tickets", "0009_tickettype_includes_badge"), ] operations = [ migrations.AddField( - model_name='discountticket', - name='badge_token', + model_name="discountticket", + name="badge_token", field=models.CharField(max_length=64, null=True), ), migrations.AddField( - model_name='shopticket', - name='badge_token', + model_name="shopticket", + name="badge_token", field=models.CharField(max_length=64, null=True), ), migrations.AddField( - model_name='sponsorticket', - name='badge_token', + model_name="sponsorticket", + name="badge_token", field=models.CharField(max_length=64, null=True), ), ] diff --git a/src/tickets/migrations/0012_auto_20190724_2037.py b/src/tickets/migrations/0012_auto_20190724_2037.py index ae3ce0db..14b05012 100644 --- a/src/tickets/migrations/0012_auto_20190724_2037.py +++ b/src/tickets/migrations/0012_auto_20190724_2037.py @@ -6,23 +6,23 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('tickets', '0011_save_badge_token_to_db'), + ("tickets", "0011_save_badge_token_to_db"), ] operations = [ migrations.AlterField( - model_name='discountticket', - name='badge_token', + model_name="discountticket", + name="badge_token", field=models.CharField(max_length=64), ), migrations.AlterField( - model_name='shopticket', - name='badge_token', + model_name="shopticket", + name="badge_token", field=models.CharField(max_length=64), ), migrations.AlterField( - model_name='sponsorticket', - name='badge_token', + model_name="sponsorticket", + name="badge_token", field=models.CharField(max_length=64), ), ] diff --git a/src/tickets/migrations/0013_tickettype_single_ticket_per_product.py b/src/tickets/migrations/0013_tickettype_single_ticket_per_product.py index baca801d..fe2f6c05 100644 --- a/src/tickets/migrations/0013_tickettype_single_ticket_per_product.py +++ b/src/tickets/migrations/0013_tickettype_single_ticket_per_product.py @@ -6,13 +6,16 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('tickets', '0012_auto_20190724_2037'), + ("tickets", "0012_auto_20190724_2037"), ] operations = [ migrations.AddField( - model_name='tickettype', - name='single_ticket_per_product', - field=models.BooleanField(default=False, help_text='Only create one ticket for a product/order pair no matter the quantity. Useful for products which are bought in larger quantity (ie. village chairs)'), + model_name="tickettype", + name="single_ticket_per_product", + field=models.BooleanField( + default=False, + help_text="Only create one ticket for a product/order pair no matter the quantity. Useful for products which are bought in larger quantity (ie. village chairs)", + ), ), ] diff --git a/src/tickets/migrations/0014_auto_20190803_2241.py b/src/tickets/migrations/0014_auto_20190803_2241.py index 57b6fe3d..af56c345 100644 --- a/src/tickets/migrations/0014_auto_20190803_2241.py +++ b/src/tickets/migrations/0014_auto_20190803_2241.py @@ -6,38 +6,38 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('tickets', '0013_tickettype_single_ticket_per_product'), + ("tickets", "0013_tickettype_single_ticket_per_product"), ] operations = [ migrations.AlterField( - model_name='discountticket', - name='badge_token', + model_name="discountticket", + name="badge_token", field=models.CharField(blank=True, max_length=64), ), migrations.AlterField( - model_name='discountticket', - name='token', + model_name="discountticket", + name="token", field=models.CharField(blank=True, max_length=64), ), migrations.AlterField( - model_name='shopticket', - name='badge_token', + model_name="shopticket", + name="badge_token", field=models.CharField(blank=True, max_length=64), ), migrations.AlterField( - model_name='shopticket', - name='token', + model_name="shopticket", + name="token", field=models.CharField(blank=True, max_length=64), ), migrations.AlterField( - model_name='sponsorticket', - name='badge_token', + model_name="sponsorticket", + name="badge_token", field=models.CharField(blank=True, max_length=64), ), migrations.AlterField( - model_name='sponsorticket', - name='token', + model_name="sponsorticket", + name="token", field=models.CharField(blank=True, max_length=64), ), ] diff --git a/src/tickets/models.py b/src/tickets/models.py index 08a0bdbc..10398c68 100644 --- a/src/tickets/models.py +++ b/src/tickets/models.py @@ -56,13 +56,12 @@ class BaseTicket(CampRelatedModel, UUIDModel): class Meta: abstract = True - camp_filter = 'ticket_type__camp' + camp_filter = "ticket_type__camp" @property def camp(self): return self.ticket_type.camp - def save(self, **kwargs): self.token = self._get_token() self.badge_token = self._get_badge_token() diff --git a/src/tickets/tests.py b/src/tickets/tests.py index 9016e32b..ea824ad0 100644 --- a/src/tickets/tests.py +++ b/src/tickets/tests.py @@ -6,20 +6,15 @@ from .models import ShopTicket class TicketTests(TestCase): - def test_correct_token_and_badge_token_are_different(self): ticket_type = TicketTypeFactory() orp = OrderProductRelationFactory() shop_ticket = ShopTicket.objects.create( - ticket_type=ticket_type, - product=orp.product, - order=orp.order, + ticket_type=ticket_type, product=orp.product, order=orp.order, ) self.assertNotEqual(shop_ticket.token, shop_ticket.badge_token) self.assertEqual(shop_ticket.token, shop_ticket._get_token()) self.assertEqual(shop_ticket.badge_token, shop_ticket._get_badge_token()) - - diff --git a/src/utils/admin.py b/src/utils/admin.py index 9d919579..f3a0813d 100644 --- a/src/utils/admin.py +++ b/src/utils/admin.py @@ -6,4 +6,4 @@ from .models import OutgoingEmail @admin.register(OutgoingEmail) class OutgoingEmailAdmin(admin.ModelAdmin): model = OutgoingEmail - list_display = ['subject', 'to_recipients'] + list_display = ["subject", "to_recipients"]