diff --git a/.flake8 b/.flake8
new file mode 100644
index 00000000..32ca9a99
--- /dev/null
+++ b/.flake8
@@ -0,0 +1,4 @@
+[flake8]
+max-line-length = 88
+ignore = E501 W503
+
diff --git a/.isort.cfg b/.isort.cfg
new file mode 100644
index 00000000..a444a042
--- /dev/null
+++ b/.isort.cfg
@@ -0,0 +1,7 @@
+[settings]
+multi_line_output=3
+include_trailing_comma=True
+force_grid_wrap=0
+use_parentheses=True
+line_length=88
+
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 515c10f9..5c993f52 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -4,4 +4,11 @@ repos:
hooks:
- id: "black"
language_version: "python3.7"
-
+ - repo: "https://github.com/pre-commit/pre-commit-hooks"
+ rev: "v2.3.0"
+ hooks:
+ - id: "flake8"
+ - repo: "https://github.com/pre-commit/mirrors-isort"
+ rev: "v4.3.21"
+ hooks:
+ - id: "isort"
diff --git a/src/backoffice/templates/chain_list_backoffice.html b/src/backoffice/templates/chain_list_backoffice.html
index afe629f4..87440018 100644
--- a/src/backoffice/templates/chain_list_backoffice.html
+++ b/src/backoffice/templates/chain_list_backoffice.html
@@ -1,5 +1,5 @@
{% extends 'base.html' %}
-{% load staticfiles %}
+{% load static %}
{% load bootstrap3 %}
{% block extra_head %}
diff --git a/src/backoffice/templates/expense_list_backoffice.html b/src/backoffice/templates/expense_list_backoffice.html
index cd90805d..4af1d732 100644
--- a/src/backoffice/templates/expense_list_backoffice.html
+++ b/src/backoffice/templates/expense_list_backoffice.html
@@ -1,5 +1,5 @@
{% extends 'base.html' %}
-{% load staticfiles %}
+{% load static %}
{% block extra_head %}
diff --git a/src/backoffice/templates/reimbursement_list_backoffice.html b/src/backoffice/templates/reimbursement_list_backoffice.html
index f0519888..18296392 100644
--- a/src/backoffice/templates/reimbursement_list_backoffice.html
+++ b/src/backoffice/templates/reimbursement_list_backoffice.html
@@ -1,5 +1,5 @@
{% extends 'base.html' %}
-{% load staticfiles %}
+{% load static %}
{% block extra_head %}
diff --git a/src/backoffice/templates/revenue_list_backoffice.html b/src/backoffice/templates/revenue_list_backoffice.html
index cd18fbbe..88a398aa 100644
--- a/src/backoffice/templates/revenue_list_backoffice.html
+++ b/src/backoffice/templates/revenue_list_backoffice.html
@@ -1,5 +1,5 @@
{% extends 'base.html' %}
-{% load staticfiles %}
+{% load static %}
{% block extra_head %}
diff --git a/src/backoffice/urls.py b/src/backoffice/urls.py
index 1a06abb8..b24d15e5 100644
--- a/src/backoffice/urls.py
+++ b/src/backoffice/urls.py
@@ -1,6 +1,34 @@
-from django.urls import path, include
-from .views import *
+from django.urls import include, path
+from .views import (
+ ApproveNamesView,
+ BackofficeIndexView,
+ BadgeHandoutView,
+ ChainDetailView,
+ ChainListView,
+ CredebtorDetailView,
+ EventProposalManageView,
+ ExpenseDetailView,
+ ExpenseListView,
+ ManageProposalsView,
+ MerchandiseOrdersView,
+ MerchandiseToOrderView,
+ ProductHandoutView,
+ ReimbursementCreateUserSelectView,
+ ReimbursementCreateView,
+ ReimbursementDeleteView,
+ ReimbursementDetailView,
+ ReimbursementListView,
+ ReimbursementUpdateView,
+ RevenueDetailView,
+ RevenueListView,
+ ScanTicketsView,
+ ShopTicketOverview,
+ SpeakerProposalManageView,
+ TicketCheckinView,
+ VillageOrdersView,
+ VillageToOrderView,
+)
app_name = "backoffice"
@@ -9,7 +37,7 @@ urlpatterns = [
# infodesk
path(
"infodesk/",
- include([path("", ScanTicketsView.as_view(), name="scan_tickets"),]),
+ 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"),
diff --git a/src/backoffice/views.py b/src/backoffice/views.py
index 4185ffcd..322ea296 100644
--- a/src/backoffice/views.py
+++ b/src/backoffice/views.py
@@ -8,20 +8,27 @@ from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.auth.models import User
from django.core.files import File
from django.db.models import Sum
-from django.shortcuts import redirect, get_object_or_404
+from django.shortcuts import get_object_or_404, redirect
from django.urls import reverse
from django.utils import timezone
-from django.views.generic import TemplateView, ListView, DetailView
-from django.views.generic.edit import CreateView, UpdateView, DeleteView
+from django.views.generic import DetailView, ListView, TemplateView
+from django.views.generic.edit import CreateView, DeleteView, UpdateView
from camps.mixins import CampViewMixin
from economy.models import Chain, Credebtor, Expense, Reimbursement, Revenue
from profiles.models import Profile
-from program.models import SpeakerProposal, EventProposal
-from shop.models import OrderProductRelation, Order
+from program.models import EventProposal, SpeakerProposal
+from shop.models import Order, OrderProductRelation
from teams.models import Team
-from tickets.models import ShopTicket, SponsorTicket, DiscountTicket, TicketType
-from .mixins import *
+from tickets.models import DiscountTicket, ShopTicket, SponsorTicket, TicketType
+
+from .mixins import (
+ ContentTeamPermissionMixin,
+ EconomyTeamPermissionMixin,
+ InfoTeamPermissionMixin,
+ OrgaTeamPermissionMixin,
+ RaisePermissionRequiredMixin,
+)
logger = logging.getLogger("bornhack.%s" % __name__)
@@ -236,7 +243,7 @@ class VillageToOrderView(CampViewMixin, OrgaTeamPermissionMixin, TemplateView):
################################
-###### CHAINS & CREDEBTORS #####
+# CHAINS & CREDEBTORS
class ChainListView(CampViewMixin, EconomyTeamPermissionMixin, ListView):
@@ -257,7 +264,7 @@ class CredebtorDetailView(CampViewMixin, EconomyTeamPermissionMixin, DetailView)
################################
-########### EXPENSES ###########
+# EXPENSES
class ExpenseListView(CampViewMixin, EconomyTeamPermissionMixin, ListView):
@@ -306,7 +313,7 @@ class ExpenseDetailView(CampViewMixin, EconomyTeamPermissionMixin, UpdateView):
######################################
-########### REIMBURSEMENTS ###########
+# REIMBURSEMENTS
class ReimbursementListView(CampViewMixin, EconomyTeamPermissionMixin, ListView):
@@ -497,7 +504,7 @@ class ReimbursementDeleteView(CampViewMixin, EconomyTeamPermissionMixin, DeleteV
################################
-########### REVENUES ###########
+# REVENUES
class RevenueListView(CampViewMixin, EconomyTeamPermissionMixin, ListView):
diff --git a/src/bar/admin.py b/src/bar/admin.py
index 4fd383da..a7a40753 100644
--- a/src/bar/admin.py
+++ b/src/bar/admin.py
@@ -1,5 +1,6 @@
from django.contrib import admin
-from .models import ProductCategory, Product
+
+from .models import Product, ProductCategory
@admin.register(ProductCategory)
diff --git a/src/bar/migrations/0001_initial.py b/src/bar/migrations/0001_initial.py
index e7e39432..ec04f827 100644
--- a/src/bar/migrations/0001_initial.py
+++ b/src/bar/migrations/0001_initial.py
@@ -2,8 +2,8 @@
# Generated by Django 1.10.5 on 2017-08-25 23:28
from __future__ import unicode_literals
-from django.db import migrations, models
import django.db.models.deletion
+from django.db import migrations, models
class Migration(migrations.Migration):
diff --git a/src/bar/migrations/0002_auto_20170916_2128.py b/src/bar/migrations/0002_auto_20170916_2128.py
index c4796e43..82d1df38 100644
--- a/src/bar/migrations/0002_auto_20170916_2128.py
+++ b/src/bar/migrations/0002_auto_20170916_2128.py
@@ -2,8 +2,8 @@
# Generated by Django 1.10.5 on 2017-09-16 19:28
from __future__ import unicode_literals
-from django.db import migrations, models
import django.db.models.deletion
+from django.db import migrations, models
class Migration(migrations.Migration):
diff --git a/src/bar/migrations/0003_auto_20180318_0906.py b/src/bar/migrations/0003_auto_20180318_0906.py
index eb353e6d..d79a45c6 100644
--- a/src/bar/migrations/0003_auto_20180318_0906.py
+++ b/src/bar/migrations/0003_auto_20180318_0906.py
@@ -2,8 +2,8 @@
# Generated by Django 1.10.5 on 2018-03-18 08:06
from __future__ import unicode_literals
-from django.db import migrations, models
import django.db.models.deletion
+from django.db import migrations, models
class Migration(migrations.Migration):
diff --git a/src/bar/models.py b/src/bar/models.py
index 30d315cf..0694ed4f 100644
--- a/src/bar/models.py
+++ b/src/bar/models.py
@@ -1,4 +1,5 @@
from django.db import models
+
from utils.models import CampRelatedModel
diff --git a/src/bar/views.py b/src/bar/views.py
index a5e3acf8..6b4ebc63 100644
--- a/src/bar/views.py
+++ b/src/bar/views.py
@@ -1,7 +1,9 @@
-from camps.mixins import CampViewMixin
-from .models import ProductCategory
from django.views.generic import ListView
+from camps.mixins import CampViewMixin
+
+from .models import ProductCategory
+
class MenuView(CampViewMixin, ListView):
model = ProductCategory
diff --git a/src/bornhack/asgi.py b/src/bornhack/asgi.py
index 71715143..34df5da8 100644
--- a/src/bornhack/asgi.py
+++ b/src/bornhack/asgi.py
@@ -3,6 +3,7 @@ ASGI entrypoint. Configures Django and then runs the application
defined in the ASGI_APPLICATION setting.
"""
import os
+
import django
from channels.routing import get_default_application
diff --git a/src/bornhack/routing.py b/src/bornhack/routing.py
index 67c41503..672f3a1f 100644
--- a/src/bornhack/routing.py
+++ b/src/bornhack/routing.py
@@ -1,10 +1,9 @@
+from channels.auth import AuthMiddlewareStack
+from channels.routing import ProtocolTypeRouter, URLRouter
from django.conf.urls import url
-from channels.routing import ProtocolTypeRouter, URLRouter
-from channels.auth import AuthMiddlewareStack
from program.consumers import ScheduleConsumer
-
application = ProtocolTypeRouter(
{
"websocket": AuthMiddlewareStack(
diff --git a/src/bornhack/schema.py b/src/bornhack/schema.py
index 87822abc..0eba4bfe 100644
--- a/src/bornhack/schema.py
+++ b/src/bornhack/schema.py
@@ -1,10 +1,8 @@
-from graphene import relay, Schema, ObjectType
-
+from graphene import ObjectType, Schema, relay
from graphene_django import DjangoObjectType
from graphene_django.filter import DjangoFilterConnectionField
from camps.models import Camp
-
from program.schema import ProgramQuery
diff --git a/src/bornhack/urls.py b/src/bornhack/urls.py
index 58dacb0f..3cc9b032 100644
--- a/src/bornhack/urls.py
+++ b/src/bornhack/urls.py
@@ -1,19 +1,26 @@
from allauth.account.views import LoginView, LogoutView
+from django.conf import settings
from django.conf.urls import include
from django.contrib import admin
from django.contrib.auth.decorators import login_required
from django.urls import path
from django.views.decorators.csrf import csrf_exempt
+from django.views.generic import TemplateView
from graphene_django.views import GraphQLView
from bar.views import MenuView
-from camps.views import *
+from camps.views import CampDetailView, CampListView, CampRedirectView
from feedback.views import FeedbackCreate
-from info.views import *
-from people.views import *
-from program.views import *
-from sponsors.views import *
-from villages.views import *
+from info.views import CampInfoView
+from people.views import PeopleView
+from sponsors.views import SponsorsView
+from villages.views import (
+ VillageCreateView,
+ VillageDeleteView,
+ VillageDetailView,
+ VillageListView,
+ VillageUpdateView,
+)
# require 2fa token entry (if enabled on admin account) when logging into /admin by using allauth login form
admin.site.login = login_required(admin.site.login)
diff --git a/src/camps/admin.py b/src/camps/admin.py
index 689f4d21..6a02bb40 100644
--- a/src/camps/admin.py
+++ b/src/camps/admin.py
@@ -1,4 +1,5 @@
from django.contrib import admin
+
from . import models
diff --git a/src/camps/factories.py b/src/camps/factories.py
index ae47f5b4..8edec112 100644
--- a/src/camps/factories.py
+++ b/src/camps/factories.py
@@ -1,6 +1,5 @@
import factory
from django.utils import timezone
-
from factory.django import DjangoModelFactory
from psycopg2._range import DateTimeTZRange
diff --git a/src/camps/management/commands/createcamp.py b/src/camps/management/commands/createcamp.py
index 4a5ff757..4f49d01b 100644
--- a/src/camps/management/commands/createcamp.py
+++ b/src/camps/management/commands/createcamp.py
@@ -1,8 +1,9 @@
# coding: utf-8
+import os
+
+from django.conf import settings
from django.core.management.base import BaseCommand
from django.utils import timezone
-from django.conf import settings
-import os
class Command(BaseCommand):
diff --git a/src/camps/migrations/0001_initial.py b/src/camps/migrations/0001_initial.py
index f00a8c61..c01e7442 100644
--- a/src/camps/migrations/0001_initial.py
+++ b/src/camps/migrations/0001_initial.py
@@ -1,9 +1,10 @@
# -*- coding: utf-8 -*-
-from django.db import models, migrations
import uuid
+
from django.conf import settings
+from django.db import migrations, models
class Migration(migrations.Migration):
diff --git a/src/camps/migrations/0002_auto_20160117_1718.py b/src/camps/migrations/0002_auto_20160117_1718.py
index 347c60df..5d16d80d 100644
--- a/src/camps/migrations/0002_auto_20160117_1718.py
+++ b/src/camps/migrations/0002_auto_20160117_1718.py
@@ -2,8 +2,8 @@
# Generated by Django 1.9.1 on 2016-01-17 17:18
-from django.db import migrations, models
import django.db.models.deletion
+from django.db import migrations, models
class Migration(migrations.Migration):
diff --git a/src/camps/migrations/0007_auto_20161212_1803.py b/src/camps/migrations/0007_auto_20161212_1803.py
index 3d31a451..16d5cc9e 100644
--- a/src/camps/migrations/0007_auto_20161212_1803.py
+++ b/src/camps/migrations/0007_auto_20161212_1803.py
@@ -3,9 +3,10 @@
import datetime
+
+import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
-import django.db.models.deletion
from django.utils.timezone import utc
diff --git a/src/camps/migrations/0009_auto_20161220_1645.py b/src/camps/migrations/0009_auto_20161220_1645.py
index 02682fb2..5eb2dc1e 100644
--- a/src/camps/migrations/0009_auto_20161220_1645.py
+++ b/src/camps/migrations/0009_auto_20161220_1645.py
@@ -3,6 +3,7 @@
import datetime
+
from django.db import migrations, models
from django.utils.timezone import utc
diff --git a/src/camps/mixins.py b/src/camps/mixins.py
index e91bcf97..dafa8c67 100644
--- a/src/camps/mixins.py
+++ b/src/camps/mixins.py
@@ -1,6 +1,6 @@
-from camps.models import Camp
from django.shortcuts import get_object_or_404
-from django.utils.functional import cached_property
+
+from camps.models import Camp
class CampViewMixin(object):
diff --git a/src/camps/models.py b/src/camps/models.py
index 3e15d424..cfb06e84 100644
--- a/src/camps/models.py
+++ b/src/camps/models.py
@@ -1,13 +1,14 @@
-from django.db import models
-from utils.models import UUIDModel, CreatedUpdatedModel
-from program.models import EventType, EventLocation
-from django.contrib.postgres.fields import DateTimeRangeField
-from psycopg2.extras import DateTimeTZRange
-from django.core.exceptions import ValidationError
-from datetime import timedelta
-from django.utils import timezone
-from django.urls import reverse
import logging
+from datetime import timedelta
+
+from django.contrib.postgres.fields import DateTimeRangeField
+from django.core.exceptions import ValidationError
+from django.db import models
+from django.urls import reverse
+from psycopg2.extras import DateTimeTZRange
+
+from program.models import EventLocation, EventType
+from utils.models import CreatedUpdatedModel, UUIDModel
logger = logging.getLogger("bornhack.%s" % __name__)
diff --git a/src/camps/utils.py b/src/camps/utils.py
index 81212b7f..5958a16b 100644
--- a/src/camps/utils.py
+++ b/src/camps/utils.py
@@ -1,6 +1,7 @@
-from camps.models import Camp
-from django.utils import timezone
from django.contrib import admin
+from django.utils import timezone
+
+from camps.models import Camp
def get_current_camp():
diff --git a/src/camps/views.py b/src/camps/views.py
index 31083555..f975c90f 100644
--- a/src/camps/views.py
+++ b/src/camps/views.py
@@ -1,12 +1,14 @@
-from django.views.generic import ListView, DetailView
-from django.utils import timezone
-from .models import Camp
-from django.shortcuts import redirect
-from .mixins import CampViewMixin
-from django.views import View
-from django.conf import settings
import logging
+from django.conf import settings
+from django.shortcuts import redirect
+from django.utils import timezone
+from django.views import View
+from django.views.generic import DetailView, ListView
+
+from .mixins import CampViewMixin
+from .models import Camp
+
logger = logging.getLogger("bornhack.%s" % __name__)
diff --git a/src/economy/admin.py b/src/economy/admin.py
index d4d2741d..d5360d52 100644
--- a/src/economy/admin.py
+++ b/src/economy/admin.py
@@ -2,8 +2,8 @@ from django.contrib import admin
from .models import Chain, Credebtor, Expense, Reimbursement, Revenue
-
-### chains and credebtors
+###############################
+# chains and credebtors
@admin.register(Chain)
@@ -14,13 +14,14 @@ class ChainAdmin(admin.ModelAdmin):
@admin.register(Credebtor)
-class ChainAdmin(admin.ModelAdmin):
+class CredebtorAdmin(admin.ModelAdmin):
list_filter = ["chain", "name"]
list_display = ["chain", "name", "notes"]
search_fields = ["chain", "name", "notes"]
-### expenses
+###############################
+# expenses
def approve_expenses(modeladmin, request, queryset):
@@ -64,7 +65,8 @@ class ExpenseAdmin(admin.ModelAdmin):
actions = [approve_expenses, reject_expenses]
-### revenues
+###############################
+# revenues
def approve_revenues(modeladmin, request, queryset):
@@ -99,7 +101,8 @@ class RevenueAdmin(admin.ModelAdmin):
actions = [approve_revenues, reject_revenues]
-### reimbursements
+###############################
+# reimbursements
@admin.register(Reimbursement)
diff --git a/src/economy/forms.py b/src/economy/forms.py
index 4e40e918..c31a9dfb 100644
--- a/src/economy/forms.py
+++ b/src/economy/forms.py
@@ -1,6 +1,8 @@
-import os, magic, copy
+import copy
+import magic
from django import forms
+
from .models import Expense, Revenue
diff --git a/src/economy/migrations/0001_initial.py b/src/economy/migrations/0001_initial.py
index 346d4276..5700525f 100644
--- a/src/economy/migrations/0001_initial.py
+++ b/src/economy/migrations/0001_initial.py
@@ -1,9 +1,10 @@
# Generated by Django 2.0.4 on 2018-08-29 22:14
+import uuid
+
+import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
-import django.db.models.deletion
-import uuid
class Migration(migrations.Migration):
diff --git a/src/economy/migrations/0002_revenue.py b/src/economy/migrations/0002_revenue.py
index 275e08d7..1085feac 100644
--- a/src/economy/migrations/0002_revenue.py
+++ b/src/economy/migrations/0002_revenue.py
@@ -1,9 +1,10 @@
# Generated by Django 2.0.4 on 2018-09-16 13:27
+import uuid
+
+import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
-import django.db.models.deletion
-import uuid
class Migration(migrations.Migration):
diff --git a/src/economy/migrations/0003_auto_20180917_1933.py b/src/economy/migrations/0003_auto_20180917_1933.py
index fb68778e..e6870582 100644
--- a/src/economy/migrations/0003_auto_20180917_1933.py
+++ b/src/economy/migrations/0003_auto_20180917_1933.py
@@ -1,7 +1,7 @@
# Generated by Django 2.0.4 on 2018-09-17 17:33
-from django.db import migrations, models
import django.db.models.deletion
+from django.db import migrations, models
class Migration(migrations.Migration):
diff --git a/src/economy/migrations/0004_auto_20181120_1835.py b/src/economy/migrations/0004_auto_20181120_1835.py
index 0f3b2106..1a035868 100644
--- a/src/economy/migrations/0004_auto_20181120_1835.py
+++ b/src/economy/migrations/0004_auto_20181120_1835.py
@@ -1,8 +1,8 @@
# Generated by Django 2.1.3 on 2018-11-20 17:35
+import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
-import django.db.models.deletion
class Migration(migrations.Migration):
diff --git a/src/economy/migrations/0008_auto_20190327_1721.py b/src/economy/migrations/0008_auto_20190327_1721.py
index 3cc12c4e..59c91dd9 100644
--- a/src/economy/migrations/0008_auto_20190327_1721.py
+++ b/src/economy/migrations/0008_auto_20190327_1721.py
@@ -1,9 +1,10 @@
# Generated by Django 2.1.7 on 2019-03-27 16:21
-from django.db import migrations, models
-import django.db.models.deletion
import uuid
+import django.db.models.deletion
+from django.db import migrations, models
+
class Migration(migrations.Migration):
diff --git a/src/economy/migrations/0010_auto_20190330_1045.py b/src/economy/migrations/0010_auto_20190330_1045.py
index 6790f971..5183a7e0 100644
--- a/src/economy/migrations/0010_auto_20190330_1045.py
+++ b/src/economy/migrations/0010_auto_20190330_1045.py
@@ -1,7 +1,7 @@
# Generated by Django 2.1.7 on 2019-03-30 09:45
-from django.db import migrations, models
import django.db.models.deletion
+from django.db import migrations, models
class Migration(migrations.Migration):
diff --git a/src/economy/mixins.py b/src/economy/mixins.py
index c7595e0b..f5962569 100644
--- a/src/economy/mixins.py
+++ b/src/economy/mixins.py
@@ -1,5 +1,5 @@
-from django.http import HttpResponseRedirect, Http404
-from django.shortcuts import redirect, get_object_or_404
+from django.http import Http404
+from django.shortcuts import get_object_or_404
from .models import Chain, Credebtor
diff --git a/src/economy/models.py b/src/economy/models.py
index df00ee24..265e5502 100644
--- a/src/economy/models.py
+++ b/src/economy/models.py
@@ -1,14 +1,20 @@
import os
-from django.db import models
-from django.conf import settings
-from django.db import models
from django.contrib import messages
from django.core.exceptions import ValidationError
+from django.db import models
from django.utils.text import slugify
from utils.models import CampRelatedModel, CreatedUpdatedModel, UUIDModel
-from .email import *
+
+from .email import (
+ send_accountingsystem_expense_email,
+ send_accountingsystem_revenue_email,
+ send_expense_approved_email,
+ send_expense_rejected_email,
+ send_revenue_approved_email,
+ send_revenue_rejected_email,
+)
class ChainManager(models.Manager):
@@ -135,7 +141,7 @@ class Revenue(CampRelatedModel, UUIDModel):
"""
The Revenue model represents any type of income for BornHack.
- Most Revenue objects will have a FK to the Invoice model,
+ Most Revenue objects will have a FK to the Invoice model,
but only if the revenue relates directly to an Invoice in our system.
Other Revenue objects (such as money returned from bottle deposits) will
@@ -219,9 +225,9 @@ class Revenue(CampRelatedModel, UUIDModel):
@property
def approval_status(self):
- if self.approved == None:
+ if self.approved is None:
return "Pending approval"
- elif self.approved == True:
+ elif self.approved:
return "Approved"
else:
return "Rejected"
@@ -350,9 +356,9 @@ class Expense(CampRelatedModel, UUIDModel):
@property
def approval_status(self):
- if self.approved == None:
+ if self.approved is None:
return "Pending approval"
- elif self.approved == True:
+ elif self.approved:
return "Approved"
else:
return "Rejected"
@@ -400,7 +406,7 @@ class Expense(CampRelatedModel, UUIDModel):
class Reimbursement(CampRelatedModel, UUIDModel):
"""
- A reimbursement covers one or more expenses.
+ A reimbursement covers one or more expenses.
"""
camp = models.ForeignKey(
diff --git a/src/economy/templates/dashboard.html b/src/economy/templates/dashboard.html
index 175ef064..2bd5ac18 100644
--- a/src/economy/templates/dashboard.html
+++ b/src/economy/templates/dashboard.html
@@ -1,5 +1,5 @@
{% extends 'base.html' %}
-{% load staticfiles %}
+{% load static %}
{% block title %}
Economy | {{ block.super }}
diff --git a/src/economy/templates/expense_list.html b/src/economy/templates/expense_list.html
index ab659626..c4c162ab 100644
--- a/src/economy/templates/expense_list.html
+++ b/src/economy/templates/expense_list.html
@@ -1,5 +1,5 @@
{% extends 'base.html' %}
-{% load staticfiles %}
+{% load static %}
{% block title %}
Expenses | {{ block.super }}
diff --git a/src/economy/templates/reimbursement_list.html b/src/economy/templates/reimbursement_list.html
index 823a824e..b3ae9b5e 100644
--- a/src/economy/templates/reimbursement_list.html
+++ b/src/economy/templates/reimbursement_list.html
@@ -1,5 +1,5 @@
{% extends 'base.html' %}
-{% load staticfiles %}
+{% load static %}
{% block title %}
Expenses | {{ block.super }}
diff --git a/src/economy/templates/revenue_list.html b/src/economy/templates/revenue_list.html
index 22848241..4afacf30 100644
--- a/src/economy/templates/revenue_list.html
+++ b/src/economy/templates/revenue_list.html
@@ -1,5 +1,5 @@
{% extends 'base.html' %}
-{% load staticfiles %}
+{% load static %}
{% block title %}
Revenues | {{ block.super }}
diff --git a/src/economy/urls.py b/src/economy/urls.py
index c17be40e..ccf71d2f 100644
--- a/src/economy/urls.py
+++ b/src/economy/urls.py
@@ -1,5 +1,26 @@
-from django.urls import path, include
-from .views import *
+from django.urls import include, path
+
+from .views import (
+ ChainCreateView,
+ ChainListView,
+ CredebtorCreateView,
+ CredebtorListView,
+ EconomyDashboardView,
+ ExpenseCreateView,
+ ExpenseDeleteView,
+ ExpenseDetailView,
+ ExpenseInvoiceView,
+ ExpenseListView,
+ ExpenseUpdateView,
+ ReimbursementDetailView,
+ ReimbursementListView,
+ RevenueCreateView,
+ RevenueDeleteView,
+ RevenueDetailView,
+ RevenueInvoiceView,
+ RevenueListView,
+ RevenueUpdateView,
+)
app_name = "economy"
diff --git a/src/economy/views.py b/src/economy/views.py
index 48f371cd..7c9324bc 100644
--- a/src/economy/views.py
+++ b/src/economy/views.py
@@ -1,29 +1,40 @@
-import os, magic
+import os
-from django.shortcuts import render, redirect
+import magic
from django.conf import settings
from django.contrib import messages
from django.contrib.auth.mixins import LoginRequiredMixin
-from django.http import HttpResponseRedirect, HttpResponse, Http404
+from django.db.models import Sum
+from django.http import HttpResponse, HttpResponseRedirect
+from django.shortcuts import redirect
from django.urls import reverse
from django.views.generic import (
CreateView,
- ListView,
DetailView,
+ ListView,
TemplateView,
UpdateView,
- DeleteView,
)
-from django.contrib.auth.mixins import PermissionRequiredMixin
-from django.db.models import Sum
from camps.mixins import CampViewMixin
+from teams.models import Team
from utils.email import add_outgoing_email
from utils.mixins import RaisePermissionRequiredMixin
-from teams.models import Team
-from .models import *
-from .mixins import *
-from .forms import *
+
+from .forms import (
+ ExpenseCreateForm,
+ ExpenseUpdateForm,
+ RevenueCreateForm,
+ RevenueUpdateForm,
+)
+from .mixins import (
+ ChainViewMixin,
+ CredebtorViewMixin,
+ ExpensePermissionMixin,
+ ReimbursementPermissionMixin,
+ RevenuePermissionMixin,
+)
+from .models import Chain, Credebtor, Expense, Reimbursement, Revenue
class EconomyDashboardView(LoginRequiredMixin, CampViewMixin, TemplateView):
@@ -89,7 +100,8 @@ class EconomyDashboardView(LoginRequiredMixin, CampViewMixin, TemplateView):
return context
-########### Chain/Creditor related views ###############
+############################################
+# Chain/Credebtor related views
class ChainCreateView(CampViewMixin, RaisePermissionRequiredMixin, CreateView):
@@ -174,7 +186,8 @@ class CredebtorListView(
return context
-########### Expense related views ###############
+############################################
+# Expense related views
class ExpenseListView(LoginRequiredMixin, CampViewMixin, ListView):
@@ -322,7 +335,8 @@ class ExpenseInvoiceView(CampViewMixin, ExpensePermissionMixin, DetailView):
return response
-########### Reimbursement related views ###############
+############################################
+# Reimbursement related views
class ReimbursementListView(LoginRequiredMixin, CampViewMixin, ListView):
@@ -339,7 +353,8 @@ class ReimbursementDetailView(CampViewMixin, ReimbursementPermissionMixin, Detai
template_name = "reimbursement_detail.html"
-########### Revenue related views ###############
+############################################
+# Revenue related views
class RevenueListView(LoginRequiredMixin, CampViewMixin, ListView):
diff --git a/src/events/admin.py b/src/events/admin.py
index 39044e4b..f352d655 100644
--- a/src/events/admin.py
+++ b/src/events/admin.py
@@ -1,5 +1,6 @@
from django.contrib import admin
-from .models import Type, Routing
+
+from .models import Routing, Type
@admin.register(Type)
diff --git a/src/events/handler.py b/src/events/handler.py
index 87e4adfa..cbe5ba2d 100644
--- a/src/events/handler.py
+++ b/src/events/handler.py
@@ -1,8 +1,7 @@
-from django.utils import timezone
-from datetime import timedelta
-from ircbot.utils import add_irc_message
import logging
+from ircbot.utils import add_irc_message
+
logger = logging.getLogger("bornhack.%s" % __name__)
@@ -93,3 +92,4 @@ def team_email_notification(
recipient_list = [resp.email for resp in team.responsible_members.all()]
# TODO: actually send the email here
+ logger.debug(f"sending test email to {recipient_list}")
diff --git a/src/events/migrations/0001_initial.py b/src/events/migrations/0001_initial.py
index 16449291..7dcdcd79 100644
--- a/src/events/migrations/0001_initial.py
+++ b/src/events/migrations/0001_initial.py
@@ -2,8 +2,8 @@
# Generated by Django 1.10.5 on 2018-03-18 13:16
from __future__ import unicode_literals
-from django.db import migrations, models
import django.db.models.deletion
+from django.db import migrations, models
class Migration(migrations.Migration):
diff --git a/src/events/models.py b/src/events/models.py
index 79f9e85e..71cd17e6 100644
--- a/src/events/models.py
+++ b/src/events/models.py
@@ -1,6 +1,7 @@
from django.db import models
-from utils.models import CreatedUpdatedModel
+
from teams.models import Team
+from utils.models import CreatedUpdatedModel
class Type(CreatedUpdatedModel):
diff --git a/src/events/tests.py b/src/events/tests.py
deleted file mode 100644
index 7ce503c2..00000000
--- a/src/events/tests.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from django.test import TestCase
-
-# Create your tests here.
diff --git a/src/events/views.py b/src/events/views.py
deleted file mode 100644
index 91ea44a2..00000000
--- a/src/events/views.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from django.shortcuts import render
-
-# Create your views here.
diff --git a/src/feedback/migrations/0001_initial.py b/src/feedback/migrations/0001_initial.py
index 85fc5d88..ccc715c0 100644
--- a/src/feedback/migrations/0001_initial.py
+++ b/src/feedback/migrations/0001_initial.py
@@ -1,9 +1,10 @@
# Generated by Django 2.1 on 2018-08-20 13:13
+import uuid
+
+import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
-import django.db.models.deletion
-import uuid
class Migration(migrations.Migration):
diff --git a/src/feedback/migrations/0002_feedback_camp.py b/src/feedback/migrations/0002_feedback_camp.py
index 9c0fbe90..5dd4acf5 100644
--- a/src/feedback/migrations/0002_feedback_camp.py
+++ b/src/feedback/migrations/0002_feedback_camp.py
@@ -1,7 +1,7 @@
# Generated by Django 2.1 on 2018-08-20 13:51
-from django.db import migrations, models
import django.db.models.deletion
+from django.db import migrations, models
class Migration(migrations.Migration):
diff --git a/src/feedback/models.py b/src/feedback/models.py
index d30cc631..262f5c45 100644
--- a/src/feedback/models.py
+++ b/src/feedback/models.py
@@ -1,6 +1,6 @@
from django.db import models
-from utils.models import UUIDModel, CreatedUpdatedModel, CampRelatedModel
+from utils.models import CampRelatedModel, UUIDModel
class Feedback(CampRelatedModel, UUIDModel):
diff --git a/src/feedback/tests.py b/src/feedback/tests.py
deleted file mode 100644
index 7ce503c2..00000000
--- a/src/feedback/tests.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from django.test import TestCase
-
-# Create your tests here.
diff --git a/src/feedback/views.py b/src/feedback/views.py
index d5559a64..c78769ee 100644
--- a/src/feedback/views.py
+++ b/src/feedback/views.py
@@ -6,6 +6,7 @@ from django.views.generic import CreateView
from camps.mixins import CampViewMixin
from tokens.models import Token
+
from .models import Feedback
diff --git a/src/info/admin.py b/src/info/admin.py
index b630843e..f2b80031 100644
--- a/src/info/admin.py
+++ b/src/info/admin.py
@@ -1,6 +1,7 @@
from django.contrib import admin
from reversion.admin import VersionAdmin
-from .models import InfoItem, InfoCategory
+
+from .models import InfoCategory, InfoItem
@admin.register(InfoItem)
diff --git a/src/info/migrations/0001_initial.py b/src/info/migrations/0001_initial.py
index 599ea194..00889431 100644
--- a/src/info/migrations/0001_initial.py
+++ b/src/info/migrations/0001_initial.py
@@ -2,8 +2,8 @@
# Generated by Django 1.10.4 on 2016-12-24 22:11
-from django.db import migrations, models
import django.db.models.deletion
+from django.db import migrations, models
class Migration(migrations.Migration):
diff --git a/src/info/migrations/0004_infocategory_team.py b/src/info/migrations/0004_infocategory_team.py
index 12660760..b365f8a3 100644
--- a/src/info/migrations/0004_infocategory_team.py
+++ b/src/info/migrations/0004_infocategory_team.py
@@ -1,7 +1,7 @@
# Generated by Django 2.0.4 on 2018-05-04 21:11
-from django.db import migrations, models
import django.db.models.deletion
+from django.db import migrations, models
class Migration(migrations.Migration):
diff --git a/src/info/migrations/0005_add_teams_to_categories.py b/src/info/migrations/0005_add_teams_to_categories.py
index 60240be1..6d026ee3 100644
--- a/src/info/migrations/0005_add_teams_to_categories.py
+++ b/src/info/migrations/0005_add_teams_to_categories.py
@@ -1,7 +1,7 @@
# Generated by Django 2.0.4 on 2018-05-08 07:42
-from django.db import migrations
from django.core.exceptions import ObjectDoesNotExist
+from django.db import migrations
def add_teams_to_categories(apps, schema_editor):
diff --git a/src/info/migrations/0006_auto_20180520_1113.py b/src/info/migrations/0006_auto_20180520_1113.py
index 66a3329c..58649f9c 100644
--- a/src/info/migrations/0006_auto_20180520_1113.py
+++ b/src/info/migrations/0006_auto_20180520_1113.py
@@ -1,7 +1,7 @@
# Generated by Django 2.0.4 on 2018-05-20 16:13
-from django.db import migrations, models
import django.db.models.deletion
+from django.db import migrations, models
class Migration(migrations.Migration):
diff --git a/src/info/migrations/0007_auto_20180520_1511.py b/src/info/migrations/0007_auto_20180520_1511.py
index 6fcef49a..410addbd 100644
--- a/src/info/migrations/0007_auto_20180520_1511.py
+++ b/src/info/migrations/0007_auto_20180520_1511.py
@@ -1,7 +1,7 @@
# Generated by Django 2.0.4 on 2018-05-20 20:11
-from django.db import migrations, models
import django.db.models.deletion
+from django.db import migrations, models
class Migration(migrations.Migration):
diff --git a/src/info/models.py b/src/info/models.py
index 031b4c47..e7c4cc29 100644
--- a/src/info/models.py
+++ b/src/info/models.py
@@ -1,8 +1,8 @@
-from django.db import models
-from utils.models import CampRelatedModel
-from django.core.exceptions import ValidationError
-
import reversion
+from django.core.exceptions import ValidationError
+from django.db import models
+
+from utils.models import CampRelatedModel
class InfoCategory(CampRelatedModel):
diff --git a/src/info/views.py b/src/info/views.py
index 15b98587..35651573 100644
--- a/src/info/views.py
+++ b/src/info/views.py
@@ -1,7 +1,9 @@
from django.views.generic import ListView
-from .models import *
+
from camps.mixins import CampViewMixin
+from .models import InfoCategory
+
class CampInfoView(CampViewMixin, ListView):
model = InfoCategory
diff --git a/src/ircbot/admin.py b/src/ircbot/admin.py
index ac9622bb..20b7fe97 100644
--- a/src/ircbot/admin.py
+++ b/src/ircbot/admin.py
@@ -1,4 +1,5 @@
from django.contrib import admin
+
from .models import OutgoingIrcMessage
admin.site.register(OutgoingIrcMessage)
diff --git a/src/ircbot/irc3module.py b/src/ircbot/irc3module.py
index 5909734d..700b32a4 100644
--- a/src/ircbot/irc3module.py
+++ b/src/ircbot/irc3module.py
@@ -1,12 +1,13 @@
-import irc3, re
-from ircbot.models import OutgoingIrcMessage
-from teams.models import Team, TeamMember
+import logging
+import re
+
+import irc3
from django.conf import settings
from django.utils import timezone
-from events.models import Routing
-from teams.utils import get_team_from_irc_channel
-import logging
+from ircbot.models import OutgoingIrcMessage
+from teams.models import Team, TeamMember
+from teams.utils import get_team_from_irc_channel
logger = logging.getLogger("bornhack.%s" % __name__)
@@ -24,7 +25,7 @@ class Plugin(object):
self.bot = bot
###############################################################################################
- ### builtin irc3 event methods
+ # builtin irc3 event methods
def server_ready(self, **kwargs):
"""triggered after the server sent the MOTD (require core plugin)"""
@@ -54,7 +55,7 @@ class Plugin(object):
logger.debug("inside connection_made(), kwargs: %s" % kwargs)
###############################################################################################
- ### decorated irc3 event methods
+ # decorated irc3 event methods
@irc3.event(irc3.rfc.JOIN_PART_QUIT)
def on_join_part_quit(self, **kwargs):
@@ -104,7 +105,7 @@ class Plugin(object):
logger.debug("inside on_kick(), kwargs: %s" % kwargs)
###############################################################################################
- ### custom irc3 methods below here
+ # custom irc3 methods below here
@irc3.extend
def do_stuff(self):
@@ -158,7 +159,7 @@ class Plugin(object):
logger.warning("skipping message to %s" % msg.target)
###############################################################################################
- ### irc channel methods
+ # irc channel methods
@irc3.extend
def check_irc_channels(self):
@@ -377,7 +378,7 @@ class Plugin(object):
self.bot.setup_public_channel(team.public_irc_channel_name)
###############################################################################################
- ### services (ChanServ & NickServ) methods
+ # services (ChanServ & NickServ) methods
@irc3.extend
def handle_chanserv_privmsg(self, **kwargs):
@@ -429,7 +430,6 @@ class Plugin(object):
if match:
# the irc channel is now registered
channel = match.group(1)
- botnick = match.group(2)
logger.debug(
"Channel %s was registered with ChanServ, looking up Team..." % channel
)
diff --git a/src/ircbot/ircworker.py b/src/ircbot/ircworker.py
index 38e05d43..db888029 100644
--- a/src/ircbot/ircworker.py
+++ b/src/ircbot/ircworker.py
@@ -1,7 +1,7 @@
-from django.conf import settings
import logging
+
import irc3
-from events.models import Routing
+from django.conf import settings
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("bornhack.%s" % __name__)
@@ -33,5 +33,5 @@ def do_work():
try:
irc3.IrcBot(**config).run(forever=True)
except Exception as E:
- logger.exception("Got exception inside do_work for %s" % self.workermodule)
+ logger.exception("Got exception inside irc3.IrcBot.run()")
raise E
diff --git a/src/ircbot/migrations/0002_outgoingircmessage_timeout.py b/src/ircbot/migrations/0002_outgoingircmessage_timeout.py
index 9ee22912..cf2791fa 100644
--- a/src/ircbot/migrations/0002_outgoingircmessage_timeout.py
+++ b/src/ircbot/migrations/0002_outgoingircmessage_timeout.py
@@ -3,6 +3,7 @@
from __future__ import unicode_literals
import datetime
+
from django.db import migrations, models
from django.utils.timezone import utc
diff --git a/src/ircbot/models.py b/src/ircbot/models.py
index c52e78ff..8f643d04 100644
--- a/src/ircbot/models.py
+++ b/src/ircbot/models.py
@@ -1,8 +1,9 @@
from django.core.exceptions import ValidationError
-from utils.models import CreatedUpdatedModel
from django.db import models
from django.utils import timezone
+from utils.models import CreatedUpdatedModel
+
class OutgoingIrcMessage(CreatedUpdatedModel):
target = models.CharField(max_length=100)
diff --git a/src/ircbot/utils.py b/src/ircbot/utils.py
index a5388f00..e1969120 100644
--- a/src/ircbot/utils.py
+++ b/src/ircbot/utils.py
@@ -1,7 +1,7 @@
-from django.conf import settings
-from django.utils import timezone
-from datetime import timedelta
import logging
+from datetime import timedelta
+
+from django.utils import timezone
logger = logging.getLogger("bornhack.%s" % __name__)
diff --git a/src/news/models.py b/src/news/models.py
index 46d17837..b05fe6ba 100644
--- a/src/news/models.py
+++ b/src/news/models.py
@@ -1,6 +1,6 @@
from django.db import models
-from django.utils.text import slugify
from django.urls import reverse
+from django.utils.text import slugify
from utils.models import CreatedUpdatedModel
diff --git a/src/news/urls.py b/src/news/urls.py
index a9786537..71fdae56 100644
--- a/src/news/urls.py
+++ b/src/news/urls.py
@@ -1,4 +1,5 @@
from django.urls import path
+
from . import views
app_name = "news"
diff --git a/src/news/views.py b/src/news/views.py
index a2a48385..5d82c001 100644
--- a/src/news/views.py
+++ b/src/news/views.py
@@ -1,6 +1,6 @@
-from django.views.generic import ListView, DetailView
-from django.utils import timezone
from django.contrib.syndication.views import Feed
+from django.utils import timezone
+from django.views.generic import DetailView, ListView
from .models import NewsItem
diff --git a/src/people/views.py b/src/people/views.py
index c79eb27f..00330ac9 100644
--- a/src/people/views.py
+++ b/src/people/views.py
@@ -1,4 +1,5 @@
from django.views.generic import ListView
+
from camps.models import Camp
diff --git a/src/profiles/admin.py b/src/profiles/admin.py
index 7fe243a1..c7a6d474 100644
--- a/src/profiles/admin.py
+++ b/src/profiles/admin.py
@@ -1,4 +1,5 @@
from django.contrib import admin
+
from .models import Profile
diff --git a/src/profiles/apps.py b/src/profiles/apps.py
index dcd296dd..0688da1e 100644
--- a/src/profiles/apps.py
+++ b/src/profiles/apps.py
@@ -1,8 +1,10 @@
-from django.apps import AppConfig
-from django.db.models.signals import pre_save, post_save
-from .signal_handlers import create_profile, profile_pre_save
import logging
+from django.apps import AppConfig
+from django.db.models.signals import post_save, pre_save
+
+from .signal_handlers import create_profile, profile_pre_save
+
logger = logging.getLogger("bornhack.%s" % __name__)
diff --git a/src/profiles/migrations/0001_initial.py b/src/profiles/migrations/0001_initial.py
index 0f1b8e02..bb60ad91 100644
--- a/src/profiles/migrations/0001_initial.py
+++ b/src/profiles/migrations/0001_initial.py
@@ -1,10 +1,11 @@
# -*- coding: utf-8 -*-
-from django.db import models, migrations
-from django.conf import settings
import uuid
+from django.conf import settings
+from django.db import migrations, models
+
class Migration(migrations.Migration):
diff --git a/src/profiles/models.py b/src/profiles/models.py
index 597ad371..b47c5b6a 100644
--- a/src/profiles/models.py
+++ b/src/profiles/models.py
@@ -2,7 +2,7 @@ from django.contrib.auth.models import User
from django.db import models
from django.utils.translation import ugettext_lazy as _
-from utils.models import UUIDModel, CreatedUpdatedModel
+from utils.models import CreatedUpdatedModel, UUIDModel
class Profile(CreatedUpdatedModel, UUIDModel):
diff --git a/src/profiles/signal_handlers.py b/src/profiles/signal_handlers.py
index c25b9901..18616e4a 100644
--- a/src/profiles/signal_handlers.py
+++ b/src/profiles/signal_handlers.py
@@ -1,7 +1,7 @@
-from django.db.models.signals import post_save, pre_save
-from events.handler import handle_team_event
import logging
+from events.handler import handle_team_event
+
logger = logging.getLogger("bornhack.%s" % __name__)
diff --git a/src/profiles/views.py b/src/profiles/views.py
index 6b3ef9a9..6477e38f 100644
--- a/src/profiles/views.py
+++ b/src/profiles/views.py
@@ -1,7 +1,7 @@
-from django.contrib.auth.mixins import LoginRequiredMixin
-from django.views.generic import DetailView, UpdateView
-from django.urls import reverse_lazy
from django.contrib import messages
+from django.contrib.auth.mixins import LoginRequiredMixin
+from django.urls import reverse_lazy
+from django.views.generic import DetailView, UpdateView
from . import models
diff --git a/src/program/admin.py b/src/program/admin.py
index 285bb8f3..fbedcded 100644
--- a/src/program/admin.py
+++ b/src/program/admin.py
@@ -1,19 +1,18 @@
from django.contrib import admin, messages
from django.core.exceptions import ValidationError
-
from .models import (
Event,
- Speaker,
- EventType,
EventInstance,
EventLocation,
- EventTrack,
- SpeakerProposal,
EventProposal,
+ EventTrack,
+ EventType,
Favorite,
- UrlType,
+ Speaker,
+ SpeakerProposal,
Url,
+ UrlType,
)
diff --git a/src/program/apps.py b/src/program/apps.py
index 63b93945..7890bd8d 100644
--- a/src/program/apps.py
+++ b/src/program/apps.py
@@ -6,7 +6,7 @@ class ProgramConfig(AppConfig):
name = "program"
def ready(self):
- from .models import Speaker, SpeakerProposal, EventProposal
+ from .models import Speaker
from .signal_handlers import (
check_speaker_event_camp_consistency,
check_speaker_camp_change,
diff --git a/src/program/consumers.py b/src/program/consumers.py
index bfcf6b7f..e41648d1 100644
--- a/src/program/consumers.py
+++ b/src/program/consumers.py
@@ -1,13 +1,14 @@
from channels.generic.websocket import JsonWebsocketConsumer
from camps.models import Camp
+
from .models import (
Event,
EventInstance,
- Favorite,
EventLocation,
- EventType,
EventTrack,
+ EventType,
+ Favorite,
Speaker,
)
diff --git a/src/program/email.py b/src/program/email.py
index 573cc88b..4e0b3a65 100644
--- a/src/program/email.py
+++ b/src/program/email.py
@@ -1,8 +1,9 @@
+import logging
+
from django.core.exceptions import ObjectDoesNotExist
-from utils.email import add_outgoing_email
from teams.models import Team
-import logging
+from utils.email import add_outgoing_email
logger = logging.getLogger("bornhack.%s" % __name__)
diff --git a/src/program/forms.py b/src/program/forms.py
index 614c2669..c0ac4f1d 100644
--- a/src/program/forms.py
+++ b/src/program/forms.py
@@ -3,7 +3,7 @@ import logging
from django import forms
from django.core.exceptions import ImproperlyConfigured
-from .models import SpeakerProposal, EventProposal, EventTrack, Url, UrlType
+from .models import EventProposal, EventTrack, SpeakerProposal, Url, UrlType
logger = logging.getLogger("bornhack.%s" % __name__)
diff --git a/src/program/management/commands/notification_worker.py b/src/program/management/commands/notification_worker.py
index e90ab5c6..b5147a66 100644
--- a/src/program/management/commands/notification_worker.py
+++ b/src/program/management/commands/notification_worker.py
@@ -1,14 +1,14 @@
-from django.core.management.base import BaseCommand
-from django.conf import settings
-from django.utils import timezone
-from time import sleep
-import irc3, sys, asyncio
-from ircbot.models import OutgoingIrcMessage
-from camps.utils import get_current_camp
-from django.utils import timezone
-from program.models import EventInstance
-from datetime import timedelta
import logging
+from datetime import timedelta
+from time import sleep
+
+from django.conf import settings
+from django.core.management.base import BaseCommand
+from django.utils import timezone
+
+from camps.utils import get_current_camp
+from ircbot.models import OutgoingIrcMessage
+from program.models import EventInstance
logger = logging.getLogger("bornhack.%s" % __name__)
diff --git a/src/program/migrations/0001_initial.py b/src/program/migrations/0001_initial.py
index 3fee01c5..6f402138 100644
--- a/src/program/migrations/0001_initial.py
+++ b/src/program/migrations/0001_initial.py
@@ -2,8 +2,8 @@
# Generated by Django 1.9.6 on 2016-07-13 19:38
-from django.db import migrations, models
import django.db.models.deletion
+from django.db import migrations, models
class Migration(migrations.Migration):
diff --git a/src/program/migrations/0010_auto_20161212_1809.py b/src/program/migrations/0010_auto_20161212_1809.py
index 1019ba9d..38831193 100644
--- a/src/program/migrations/0010_auto_20161212_1809.py
+++ b/src/program/migrations/0010_auto_20161212_1809.py
@@ -2,8 +2,8 @@
# Generated by Django 1.10.4 on 2016-12-12 18:09
-from django.db import migrations, models
import django.db.models.deletion
+from django.db import migrations, models
class Migration(migrations.Migration):
diff --git a/src/program/migrations/0013_auto_20170121_1312.py b/src/program/migrations/0013_auto_20170121_1312.py
index dd8daabb..39e01e90 100644
--- a/src/program/migrations/0013_auto_20170121_1312.py
+++ b/src/program/migrations/0013_auto_20170121_1312.py
@@ -2,8 +2,8 @@
# Generated by Django 1.10.5 on 2017-01-21 12:12
-from django.db import migrations, models
import django.db.models.deletion
+from django.db import migrations, models
class Migration(migrations.Migration):
diff --git a/src/program/migrations/0014_speaker_camp.py b/src/program/migrations/0014_speaker_camp.py
index 6f41290e..c681fdc3 100644
--- a/src/program/migrations/0014_speaker_camp.py
+++ b/src/program/migrations/0014_speaker_camp.py
@@ -2,8 +2,8 @@
# Generated by Django 1.10.5 on 2017-01-22 13:39
-from django.db import migrations, models
import django.db.models.deletion
+from django.db import migrations, models
class Migration(migrations.Migration):
diff --git a/src/program/migrations/0019_auto_20170205_1940.py b/src/program/migrations/0019_auto_20170205_1940.py
index 5743b48b..ff5c42cb 100644
--- a/src/program/migrations/0019_auto_20170205_1940.py
+++ b/src/program/migrations/0019_auto_20170205_1940.py
@@ -2,8 +2,8 @@
# Generated by Django 1.10.5 on 2017-02-05 18:40
from __future__ import unicode_literals
-from django.db import migrations, models
import django.db.models.deletion
+from django.db import migrations, models
class Migration(migrations.Migration):
diff --git a/src/program/migrations/0020_auto_20170205_1940.py b/src/program/migrations/0020_auto_20170205_1940.py
index ec96fe07..6dae74d0 100644
--- a/src/program/migrations/0020_auto_20170205_1940.py
+++ b/src/program/migrations/0020_auto_20170205_1940.py
@@ -2,8 +2,8 @@
# Generated by Django 1.10.5 on 2017-02-05 18:40
from __future__ import unicode_literals
-from django.db import migrations, models
import django.db.models.deletion
+from django.db import migrations, models
class Migration(migrations.Migration):
diff --git a/src/program/migrations/0023_auto_20170218_1243.py b/src/program/migrations/0023_auto_20170218_1243.py
index 8d3d6f02..c64f8372 100644
--- a/src/program/migrations/0023_auto_20170218_1243.py
+++ b/src/program/migrations/0023_auto_20170218_1243.py
@@ -3,6 +3,7 @@
from __future__ import unicode_literals
from django.db import migrations, models
+
import program.models
diff --git a/src/program/migrations/0026_speaker_user.py b/src/program/migrations/0026_speaker_user.py
index ac6c1466..7cd95345 100644
--- a/src/program/migrations/0026_speaker_user.py
+++ b/src/program/migrations/0026_speaker_user.py
@@ -2,9 +2,9 @@
# Generated by Django 1.10.5 on 2017-03-06 19:20
from __future__ import unicode_literals
+import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
-import django.db.models.deletion
class Migration(migrations.Migration):
diff --git a/src/program/migrations/0030_auto_20170312_1230.py b/src/program/migrations/0030_auto_20170312_1230.py
index 863f6cb6..cb5d75ba 100644
--- a/src/program/migrations/0030_auto_20170312_1230.py
+++ b/src/program/migrations/0030_auto_20170312_1230.py
@@ -2,11 +2,13 @@
# Generated by Django 1.10.5 on 2017-03-12 11:30
from __future__ import unicode_literals
+import uuid
+
+import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
-import django.db.models.deletion
+
import program.models
-import uuid
class Migration(migrations.Migration):
diff --git a/src/program/migrations/0033_auto_20170312_1857.py b/src/program/migrations/0033_auto_20170312_1857.py
index 93f722bb..a1a524cf 100644
--- a/src/program/migrations/0033_auto_20170312_1857.py
+++ b/src/program/migrations/0033_auto_20170312_1857.py
@@ -2,11 +2,13 @@
# Generated by Django 1.10.5 on 2017-03-12 17:57
from __future__ import unicode_literals
+import uuid
+
+import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
-import django.db.models.deletion
+
import program.models
-import uuid
class Migration(migrations.Migration):
diff --git a/src/program/migrations/0034_auto_20170314_2012.py b/src/program/migrations/0034_auto_20170314_2012.py
index 8a674835..a9316514 100644
--- a/src/program/migrations/0034_auto_20170314_2012.py
+++ b/src/program/migrations/0034_auto_20170314_2012.py
@@ -3,6 +3,7 @@
from __future__ import unicode_literals
from django.db import migrations, models
+
import program.models
diff --git a/src/program/migrations/0036_auto_20170316_0004.py b/src/program/migrations/0036_auto_20170316_0004.py
index b8931394..fcb4e303 100644
--- a/src/program/migrations/0036_auto_20170316_0004.py
+++ b/src/program/migrations/0036_auto_20170316_0004.py
@@ -3,6 +3,7 @@
from __future__ import unicode_literals
from django.db import migrations, models
+
import program.models
diff --git a/src/program/migrations/0038_favorite.py b/src/program/migrations/0038_favorite.py
index f3f5e2bf..678be7bd 100644
--- a/src/program/migrations/0038_favorite.py
+++ b/src/program/migrations/0038_favorite.py
@@ -2,9 +2,9 @@
# Generated by Django 1.11 on 2017-04-15 23:21
from __future__ import unicode_literals
+import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
-import django.db.models.deletion
class Migration(migrations.Migration):
diff --git a/src/program/migrations/0045_event_proposal.py b/src/program/migrations/0045_event_proposal.py
index 54053167..64a42120 100644
--- a/src/program/migrations/0045_event_proposal.py
+++ b/src/program/migrations/0045_event_proposal.py
@@ -2,8 +2,8 @@
# Generated by Django 1.10.5 on 2017-08-22 08:30
from __future__ import unicode_literals
-from django.db import migrations, models
import django.db.models.deletion
+from django.db import migrations, models
class Migration(migrations.Migration):
diff --git a/src/program/migrations/0046_auto_20180318_0906.py b/src/program/migrations/0046_auto_20180318_0906.py
index 486612cf..62af0417 100644
--- a/src/program/migrations/0046_auto_20180318_0906.py
+++ b/src/program/migrations/0046_auto_20180318_0906.py
@@ -2,9 +2,9 @@
# Generated by Django 1.10.5 on 2018-03-18 08:06
from __future__ import unicode_literals
+import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
-import django.db.models.deletion
class Migration(migrations.Migration):
diff --git a/src/program/migrations/0047_auto_20180415_1159.py b/src/program/migrations/0047_auto_20180415_1159.py
index d847e274..ed5449c2 100644
--- a/src/program/migrations/0047_auto_20180415_1159.py
+++ b/src/program/migrations/0047_auto_20180415_1159.py
@@ -1,8 +1,8 @@
# Generated by Django 2.0.4 on 2018-04-15 16:59
+import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
-import django.db.models.deletion
class Migration(migrations.Migration):
diff --git a/src/program/migrations/0048_auto_20180512_1625.py b/src/program/migrations/0048_auto_20180512_1625.py
index f4ac22ad..8387e107 100644
--- a/src/program/migrations/0048_auto_20180512_1625.py
+++ b/src/program/migrations/0048_auto_20180512_1625.py
@@ -1,8 +1,8 @@
# Generated by Django 2.0.4 on 2018-05-12 14:25
+import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
-import django.db.models.deletion
class Migration(migrations.Migration):
diff --git a/src/program/migrations/0051_auto_20180512_1801.py b/src/program/migrations/0051_auto_20180512_1801.py
index 70908f20..3fb74102 100644
--- a/src/program/migrations/0051_auto_20180512_1801.py
+++ b/src/program/migrations/0051_auto_20180512_1801.py
@@ -1,7 +1,7 @@
# Generated by Django 2.0.4 on 2018-05-12 16:01
-from django.db import migrations, models
import django.db.models.deletion
+from django.db import migrations, models
class Migration(migrations.Migration):
diff --git a/src/program/migrations/0055_auto_20180521_2354.py b/src/program/migrations/0055_auto_20180521_2354.py
index 5b3178dc..fd1cb103 100644
--- a/src/program/migrations/0055_auto_20180521_2354.py
+++ b/src/program/migrations/0055_auto_20180521_2354.py
@@ -1,7 +1,7 @@
# Generated by Django 2.0.4 on 2018-05-21 21:54
-from django.db import migrations, models
import django.db.models.deletion
+from django.db import migrations, models
class Migration(migrations.Migration):
diff --git a/src/program/migrations/0059_auto_20180523_2241.py b/src/program/migrations/0059_auto_20180523_2241.py
index 93bbace5..a974ecb8 100644
--- a/src/program/migrations/0059_auto_20180523_2241.py
+++ b/src/program/migrations/0059_auto_20180523_2241.py
@@ -1,8 +1,9 @@
# Generated by Django 2.0.4 on 2018-05-23 20:41
-from django.db import migrations, models
import uuid
+from django.db import migrations, models
+
class Migration(migrations.Migration):
diff --git a/src/program/migrations/0060_auto_20180603_1455.py b/src/program/migrations/0060_auto_20180603_1455.py
index eee2860a..14b34471 100644
--- a/src/program/migrations/0060_auto_20180603_1455.py
+++ b/src/program/migrations/0060_auto_20180603_1455.py
@@ -1,8 +1,8 @@
# Generated by Django 2.0.4 on 2018-06-03 12:55
+import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
-import django.db.models.deletion
class Migration(migrations.Migration):
diff --git a/src/program/migrations/0061_auto_20180603_1525.py b/src/program/migrations/0061_auto_20180603_1525.py
index 9ad33ddf..d4f475b6 100644
--- a/src/program/migrations/0061_auto_20180603_1525.py
+++ b/src/program/migrations/0061_auto_20180603_1525.py
@@ -1,7 +1,7 @@
# Generated by Django 2.0.4 on 2018-06-03 13:25
-from django.db import migrations, models
import django.db.models.deletion
+from django.db import migrations, models
class Migration(migrations.Migration):
diff --git a/src/program/mixins.py b/src/program/mixins.py
index 1de73fd3..8f86978b 100644
--- a/src/program/mixins.py
+++ b/src/program/mixins.py
@@ -1,9 +1,10 @@
-from django.views.generic.detail import SingleObjectMixin
-from django.shortcuts import redirect, get_object_or_404
-from django.urls import reverse
-from . import models
from django.contrib import messages
-from django.http import Http404, HttpResponse
+from django.http import Http404
+from django.shortcuts import get_object_or_404, redirect
+from django.urls import reverse
+from django.views.generic.detail import SingleObjectMixin
+
+from . import models
class EnsureCFPOpenMixin(object):
diff --git a/src/program/models.py b/src/program/models.py
index b3fddbaa..6238a790 100644
--- a/src/program/models.py
+++ b/src/program/models.py
@@ -1,25 +1,19 @@
-import uuid
-import os
-import icalendar
import logging
+import uuid
from datetime import timedelta
-from django.contrib.postgres.fields import DateTimeRangeField, ArrayField
-from django.contrib import messages
-from django.db import models
-from django.core.exceptions import ObjectDoesNotExist, ValidationError
-from django.utils.text import slugify
-from django.conf import settings
-from django.urls import reverse_lazy
-from django.core.files.storage import FileSystemStorage
-from django.urls import reverse
+import icalendar
from django.apps import apps
-from django.core.files.base import ContentFile
-from django.contrib.contenttypes.fields import GenericForeignKey
-from django.contrib.contenttypes.models import ContentType
-
-from utils.models import CreatedUpdatedModel, CampRelatedModel
+from django.conf import settings
+from django.contrib import messages
+from django.contrib.postgres.fields import DateTimeRangeField
+from django.core.exceptions import ObjectDoesNotExist, ValidationError
+from django.core.files.storage import FileSystemStorage
+from django.db import models
+from django.urls import reverse_lazy
+from django.utils.text import slugify
+from utils.models import CampRelatedModel, CreatedUpdatedModel
logger = logging.getLogger("bornhack.%s" % __name__)
@@ -170,7 +164,7 @@ class UserSubmittedModel(CampRelatedModel):
PROPOSAL_APPROVED = "approved"
PROPOSAL_REJECTED = "rejected"
- PROPOSAL_STATUSES = [PROPOSAL_PENDING, PROPOSAL_APPROVED, PROPOSAL_REJECTED]
+ ROPOSAL_STATUSES = [PROPOSAL_PENDING, PROPOSAL_APPROVED, PROPOSAL_REJECTED]
PROPOSAL_STATUS_CHOICES = [
(PROPOSAL_PENDING, "Pending approval"),
diff --git a/src/program/multiform.py b/src/program/multiform.py
index a303d1ec..4c8d0459 100644
--- a/src/program/multiform.py
+++ b/src/program/multiform.py
@@ -26,13 +26,13 @@
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-from itertools import chain
+from collections import OrderedDict
from functools import reduce
+from itertools import chain
from operator import add
-from collections import OrderedDict
-from django.forms.utils import ErrorDict, ErrorList
-from django.core.exceptions import ValidationError, NON_FIELD_ERRORS
+from django.core.exceptions import NON_FIELD_ERRORS, ValidationError
+from django.forms.utils import ErrorList
from django.utils.safestring import mark_safe
diff --git a/src/program/schema.py b/src/program/schema.py
index 89d03634..cb141eee 100644
--- a/src/program/schema.py
+++ b/src/program/schema.py
@@ -1,15 +1,14 @@
import graphene
from graphene import relay
-
from graphene_django import DjangoObjectType
from graphene_django.filter import DjangoFilterConnectionField
from .models import (
Event,
- EventType,
+ EventInstance,
EventLocation,
EventTrack,
- EventInstance,
+ EventType,
Speaker,
Url,
UrlType,
diff --git a/src/program/signal_handlers.py b/src/program/signal_handlers.py
index f6f3dff8..1bf37b0a 100644
--- a/src/program/signal_handlers.py
+++ b/src/program/signal_handlers.py
@@ -1,13 +1,6 @@
import logging
-from datetime import timedelta
-
from django.core.exceptions import ValidationError
-from django.utils import timezone
-from django.conf import settings
-
-from .email import add_new_speakerproposal_email, add_new_eventproposal_email
-from .models import EventProposal, SpeakerProposal
logger = logging.getLogger("bornhack.%s" % __name__)
diff --git a/src/program/templates/noscript_schedule_view.html b/src/program/templates/noscript_schedule_view.html
index 01dbfff8..8ffcd497 100644
--- a/src/program/templates/noscript_schedule_view.html
+++ b/src/program/templates/noscript_schedule_view.html
@@ -1,7 +1,7 @@
{% extends 'program_base.html' %}
{% load commonmark %}
-{% load staticfiles %}
+{% load static %}
{% block program_content %}
diff --git a/src/program/templates/schedule_day.html b/src/program/templates/schedule_day.html
index 7233464d..692edca2 100644
--- a/src/program/templates/schedule_day.html
+++ b/src/program/templates/schedule_day.html
@@ -1,5 +1,5 @@
{% extends 'schedule_base.html' %}
-{% load staticfiles %}
+{% load static %}
{% block schedule_content %}
diff --git a/src/program/templates/schedule_overview.html b/src/program/templates/schedule_overview.html
index 3391ab54..53772ec6 100644
--- a/src/program/templates/schedule_overview.html
+++ b/src/program/templates/schedule_overview.html
@@ -1,7 +1,7 @@
{% extends 'program_base.html' %}
{% load commonmark %}
-{% load staticfiles %}
+{% load static %}
{% block extra_head %}