diff --git a/jdav_web/jdav_web/settings.py b/jdav_web/jdav_web/settings.py index 4e05622..96ba20d 100644 --- a/jdav_web/jdav_web/settings.py +++ b/jdav_web/jdav_web/settings.py @@ -36,6 +36,9 @@ MEDIA_ROOT = os.environ.get('DJANGO_MEDIA_ROOT', os.path.join((os.path.join(BASE_DIR, os.pardir)), "media")) MEDIA_MEMBERLISTS = os.path.join((os.path.join(BASE_DIR, os.pardir)), "media") +# default primary key auto field type +DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' + # prevent large files from being unreadable by the server # see # https://stackoverflow.com/questions/51439689/django-nginx-error-403-forbidden-when-serving-media-files-over-some-size @@ -55,8 +58,7 @@ INSTALLED_APPS = [ 'ludwigsburgalpin.apps.LudwigsburgalpinConfig', #'easy_select2', 'djcelery_email', - 'djcelery', - 'jet', + #'jet', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', diff --git a/jdav_web/jdav_web/urls.py b/jdav_web/jdav_web/urls.py index f2399ee..25dac59 100644 --- a/jdav_web/jdav_web/urls.py +++ b/jdav_web/jdav_web/urls.py @@ -13,12 +13,12 @@ Including another URLconf 1. Import the include() function: from django.conf.urls import url, include 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) """ -from django.conf.urls import url, include +from django.urls import re_path, include from django.contrib import admin from django.conf.urls.static import static from django.conf.urls.i18n import i18n_patterns from django.conf import settings -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.views.generic.base import RedirectView urlpatterns = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) @@ -27,13 +27,13 @@ admin.site.index_title = _('Startpage') admin.site.site_header = 'Kompass' urlpatterns += i18n_patterns( - url(r'^kompass/', admin.site.urls), - url(r'^jet/', include('jet.urls', 'jet')), # Django JET URLS - url(r'^admin/', RedirectView.as_view(url='/kompass')), - url(r'^newsletter/', include('mailer.urls', namespace="mailer")), - url(r'^LBAlpin/Programm/2020', include('ludwigsburgalpin.urls', - namespace="ludwigsburgalpin")), - url(r'^$', include('startpage.urls')), + re_path(r'^kompass/', admin.site.urls), + #re_path(r'^jet/', include('jet.urls', 'jet')), # Django JET URLS + re_path(r'^admin/', RedirectView.as_view(url='/kompass')), + re_path(r'^newsletter/', include('mailer.urls', namespace="mailer")), + re_path(r'^LBAlpin/Programm/2020', include('ludwigsburgalpin.urls', + namespace="ludwigsburgalpin")), + re_path(r'^$', include('startpage.urls')), ) # TODO: django serving from MEDIA_URL should be disabled in production stage diff --git a/jdav_web/ludwigsburgalpin/urls.py b/jdav_web/ludwigsburgalpin/urls.py index 6ff1be7..ae54963 100644 --- a/jdav_web/ludwigsburgalpin/urls.py +++ b/jdav_web/ludwigsburgalpin/urls.py @@ -1,9 +1,9 @@ -from django.conf.urls import url +from django.urls import re_path from . import views app_name = "ludwigsburgalpin" urlpatterns = [ - url(r'^$', views.index, name='index') - # url(r'^subscribe', views.subscribe, name='subscribe'), + re_path(r'^$', views.index, name='index') + # re_path(r'^subscribe', views.subscribe, name='subscribe'), ] diff --git a/jdav_web/mailer/admin.py b/jdav_web/mailer/admin.py index 0ca297a..f25cddb 100644 --- a/jdav_web/mailer/admin.py +++ b/jdav_web/mailer/admin.py @@ -1,6 +1,6 @@ from django.contrib import admin, messages from django.contrib.admin import helpers -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.shortcuts import render from django.db import models from django import forms diff --git a/jdav_web/mailer/apps.py b/jdav_web/mailer/apps.py index 86c7e65..77c32f0 100644 --- a/jdav_web/mailer/apps.py +++ b/jdav_web/mailer/apps.py @@ -1,5 +1,5 @@ from django.apps import AppConfig -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class MailerConfig(AppConfig): diff --git a/jdav_web/mailer/models.py b/jdav_web/mailer/models.py index aeee21c..3317020 100644 --- a/jdav_web/mailer/models.py +++ b/jdav_web/mailer/models.py @@ -1,8 +1,8 @@ from django.db import models from django.core.exceptions import ValidationError from django import forms -from django.utils.translation import ugettext_lazy as _ -from django.utils.translation import ugettext +from django.utils.translation import gettext_lazy as _ +from django.utils.translation import gettext from .mailutils import send, get_content, NOT_SENT, SENT, PARTLY_SENT, mail_root from utils import RestrictedFileField from jdav_web.celery import app @@ -71,10 +71,12 @@ class Message(models.Model): blank=True) to_freizeit = models.ForeignKey('members.Freizeit', verbose_name=_('to freizeit'), + on_delete=models.CASCADE, blank=True, null=True) to_notelist = models.ForeignKey('members.MemberNoteList', verbose_name=_('to notes list'), + on_delete=models.CASCADE, blank=True, null=True) to_members = models.ManyToManyField('members.Member', diff --git a/jdav_web/mailer/urls.py b/jdav_web/mailer/urls.py index 63aee39..91f16e6 100644 --- a/jdav_web/mailer/urls.py +++ b/jdav_web/mailer/urls.py @@ -1,10 +1,10 @@ -from django.conf.urls import url +from django.urls import re_path from . import views app_name = "mailer" urlpatterns = [ - url(r'^$', views.index, name='index'), + re_path(r'^$', views.index, name='index'), # url(r'^subscribe', views.subscribe, name='subscribe'), - url(r'^unsubscribe', views.unsubscribe, name='unsubscribe'), + re_path(r'^unsubscribe', views.unsubscribe, name='unsubscribe'), ] diff --git a/jdav_web/mailer/views.py b/jdav_web/mailer/views.py index b8500d5..6530614 100644 --- a/jdav_web/mailer/views.py +++ b/jdav_web/mailer/views.py @@ -1,6 +1,6 @@ from django.shortcuts import render from django import forms -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.urls import reverse from django.http import HttpResponseRedirect from .mailutils import send as send_mail, mail_root, get_unsubscribe_link diff --git a/jdav_web/material/admin.py b/jdav_web/material/admin.py index d1a946a..83e06c9 100644 --- a/jdav_web/material/admin.py +++ b/jdav_web/material/admin.py @@ -1,5 +1,5 @@ from django.contrib import admin -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.contrib.admin import SimpleListFilter from django.db import models from django import forms diff --git a/jdav_web/material/apps.py b/jdav_web/material/apps.py index 047a5ab..c1ffb6e 100644 --- a/jdav_web/material/apps.py +++ b/jdav_web/material/apps.py @@ -1,5 +1,5 @@ from django.apps import AppConfig -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class MaterialConfig(AppConfig): diff --git a/jdav_web/material/models.py b/jdav_web/material/models.py index f6253e5..b545a9a 100644 --- a/jdav_web/material/models.py +++ b/jdav_web/material/models.py @@ -2,7 +2,7 @@ from datetime import datetime from django.db import models from django.utils import timezone -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ # maximum time in years of a material part until being replaced MAX_TIME_MATERIAL = 5 @@ -82,7 +82,7 @@ class MaterialPart(models.Model): class Ownership(models.Model): """Represents the connection between a MaterialPart and a Member""" material = models.ForeignKey(MaterialPart, on_delete=models.CASCADE) - owner = models.ForeignKey('members.Member', verbose_name=_('owner')) + owner = models.ForeignKey('members.Member', verbose_name=_('owner'), on_delete=models.CASCADE) count = models.IntegerField(_('count'), default=1) def __str__(self): diff --git a/jdav_web/members/admin.py b/jdav_web/members/admin.py index 89e72fa..bd52783 100644 --- a/jdav_web/members/admin.py +++ b/jdav_web/members/admin.py @@ -13,7 +13,7 @@ from django.contrib import admin, messages from django.contrib.admin import DateFieldListFilter from django.contrib.contenttypes.admin import GenericTabularInline from django.utils.html import format_html -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.db.models import TextField, ManyToManyField, ForeignKey, Count,\ Sum, Case, Q, F, When, Value, IntegerField, Subquery, OuterRef from django.forms import Textarea, RadioSelect, TypedChoiceField @@ -214,12 +214,10 @@ class ActivityCategoryAdmin(admin.ModelAdmin): class FreizeitAdminForm(forms.ModelForm): - difficulty = TypedChoiceField(Freizeit.difficulty_choices, - #widget=RadioSelect, + difficulty = TypedChoiceField(choices=Freizeit.difficulty_choices, coerce=int, label=_('Difficulty')) - tour_type = TypedChoiceField(Freizeit.tour_type_choices, - #widget=RadioSelect, + tour_type = TypedChoiceField(choices=Freizeit.tour_type_choices, coerce=int, label=_('Tour type')) diff --git a/jdav_web/members/apps.py b/jdav_web/members/apps.py index bc8b0c5..2839cc4 100644 --- a/jdav_web/members/apps.py +++ b/jdav_web/members/apps.py @@ -1,5 +1,5 @@ from django.apps import AppConfig -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class MembersConfig(AppConfig): diff --git a/jdav_web/members/models.py b/jdav_web/members/models.py index 852a85c..21ef23f 100644 --- a/jdav_web/members/models.py +++ b/jdav_web/members/models.py @@ -1,7 +1,7 @@ from datetime import datetime import uuid from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.utils import timezone from django.urls import reverse from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation @@ -220,8 +220,8 @@ class OldMemberOnList(models.Model): """ Connects members to a list of members. """ - member = models.ForeignKey(Member, verbose_name=_('Member')) - memberlist = models.ForeignKey(MemberList) + member = models.ForeignKey(Member, verbose_name=_('Member'), on_delete=models.CASCADE) + memberlist = models.ForeignKey(MemberList, on_delete=models.CASCADE) comments = models.TextField(_('Comment'), default='', blank=True) def __str__(self): @@ -236,7 +236,7 @@ class NewMemberOnList(models.Model): """ Connects members to a list of members. """ - member = models.ForeignKey(Member, verbose_name=_('Member')) + member = models.ForeignKey(Member, verbose_name=_('Member'), on_delete=models.CASCADE) content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE, default=ContentType('members', 'Freizeit').pk) object_id = models.PositiveIntegerField() @@ -323,7 +323,7 @@ class Klettertreff(models.Model): location = models.CharField(_('Location'), default='', max_length=60) topic = models.CharField(_('Topic'), default='', max_length=60) jugendleiter = models.ManyToManyField(Member) - group = models.ForeignKey(Group, default='', verbose_name=_('Group')) + group = models.ForeignKey(Group, default='', verbose_name=_('Group'), on_delete=models.CASCADE) def __str__(self): return self.location + ' ' + self.date.strftime('%d.%m.%Y') @@ -354,8 +354,8 @@ class Klettertreff(models.Model): class KlettertreffAttendee(models.Model): """Connects members to Klettertreffs.""" - member = models.ForeignKey(Member, verbose_name=_('Member')) - klettertreff = models.ForeignKey(Klettertreff) + member = models.ForeignKey(Member, verbose_name=_('Member'), on_delete=models.CASCADE) + klettertreff = models.ForeignKey(Klettertreff, on_delete=models.CASCADE) def __str__(self): return str(self.member) diff --git a/jdav_web/members/templatetags/overview_extras.py b/jdav_web/members/templatetags/overview_extras.py index 8106749..5127167 100644 --- a/jdav_web/members/templatetags/overview_extras.py +++ b/jdav_web/members/templatetags/overview_extras.py @@ -8,10 +8,10 @@ def blToColor(bl): else: return 'red' -@register.assignment_tag +@register.simple_tag def has_attendee_wrapper(klettertreff, member): return blToColor(klettertreff.has_attendee(member)) -@register.assignment_tag +@register.simple_tag def has_jugendleiter_wrapper(klettertreff, jugendleiter): return blToColor(klettertreff.has_jugendleiter(jugendleiter)) diff --git a/jdav_web/startpage/urls.py b/jdav_web/startpage/urls.py index 9cb3403..29516d1 100644 --- a/jdav_web/startpage/urls.py +++ b/jdav_web/startpage/urls.py @@ -1,7 +1,7 @@ -from django.conf.urls import url +from django.urls import re_path from . import views urlpatterns = [ - url(r'^$', views.index, name='index') + re_path(r'^$', views.index, name='index') ] diff --git a/jdav_web/utils.py b/jdav_web/utils.py index 9408155..cc062c5 100644 --- a/jdav_web/utils.py +++ b/jdav_web/utils.py @@ -1,6 +1,6 @@ from django.db import models from django.core.exceptions import ValidationError -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class RestrictedFileField(models.FileField): diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 7173d2d..0000000 --- a/requirements.txt +++ /dev/null @@ -1,29 +0,0 @@ -amqp==2.6.1 -anyjson==0.3.3 -billiard==3.6.4.0 -celery==4.4.1 -certifi==2021.5.30 -charset-normalizer==2.0.4 -Django==1.11 -django-appconf==1.0.3 -django-celery==3.3.0 -django-celery-email==1.1.5 -django-easy-select2==1.5.6 -django-jet==1.0.8 -django-multiselectfield==0.1.12 -idna==3.2 -importlib-metadata==4.8.1 -jet==1.0 -kombu==4.6.11 -mysqlclient==2.0.3 -Pillow==5.0.0 -pytz==2021.1 -redis==3.4.1 -requests==2.26.0 -six==1.16.0 -sqlparse==0.3.1 -typing-extensions==3.10.0.2 -urllib3==1.26.6 -vine==1.3.0 -XlsxWriter==1.2.8 -zipp==3.5.0