upgrade to django4

v1-0-stable
Christian Merten 4 years ago
parent 6a39073ac0
commit 075aa02207

@ -36,6 +36,9 @@ MEDIA_ROOT = os.environ.get('DJANGO_MEDIA_ROOT',
os.path.join((os.path.join(BASE_DIR, os.pardir)), "media")) os.path.join((os.path.join(BASE_DIR, os.pardir)), "media"))
MEDIA_MEMBERLISTS = 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 # prevent large files from being unreadable by the server
# see # see
# https://stackoverflow.com/questions/51439689/django-nginx-error-403-forbidden-when-serving-media-files-over-some-size # 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', 'ludwigsburgalpin.apps.LudwigsburgalpinConfig',
#'easy_select2', #'easy_select2',
'djcelery_email', 'djcelery_email',
'djcelery', #'jet',
'jet',
'django.contrib.admin', 'django.contrib.admin',
'django.contrib.auth', 'django.contrib.auth',
'django.contrib.contenttypes', 'django.contrib.contenttypes',

@ -13,12 +13,12 @@ Including another URLconf
1. Import the include() function: from django.conf.urls import url, include 1. Import the include() function: from django.conf.urls import url, include
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) 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.contrib import admin
from django.conf.urls.static import static from django.conf.urls.static import static
from django.conf.urls.i18n import i18n_patterns from django.conf.urls.i18n import i18n_patterns
from django.conf import settings 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 from django.views.generic.base import RedirectView
urlpatterns = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) urlpatterns = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
@ -27,13 +27,13 @@ admin.site.index_title = _('Startpage')
admin.site.site_header = 'Kompass' admin.site.site_header = 'Kompass'
urlpatterns += i18n_patterns( urlpatterns += i18n_patterns(
url(r'^kompass/', admin.site.urls), re_path(r'^kompass/', admin.site.urls),
url(r'^jet/', include('jet.urls', 'jet')), # Django JET URLS #re_path(r'^jet/', include('jet.urls', 'jet')), # Django JET URLS
url(r'^admin/', RedirectView.as_view(url='/kompass')), re_path(r'^admin/', RedirectView.as_view(url='/kompass')),
url(r'^newsletter/', include('mailer.urls', namespace="mailer")), re_path(r'^newsletter/', include('mailer.urls', namespace="mailer")),
url(r'^LBAlpin/Programm/2020', include('ludwigsburgalpin.urls', re_path(r'^LBAlpin/Programm/2020', include('ludwigsburgalpin.urls',
namespace="ludwigsburgalpin")), namespace="ludwigsburgalpin")),
url(r'^$', include('startpage.urls')), re_path(r'^$', include('startpage.urls')),
) )
# TODO: django serving from MEDIA_URL should be disabled in production stage # TODO: django serving from MEDIA_URL should be disabled in production stage

@ -1,9 +1,9 @@
from django.conf.urls import url from django.urls import re_path
from . import views from . import views
app_name = "ludwigsburgalpin" app_name = "ludwigsburgalpin"
urlpatterns = [ urlpatterns = [
url(r'^$', views.index, name='index') re_path(r'^$', views.index, name='index')
# url(r'^subscribe', views.subscribe, name='subscribe'), # re_path(r'^subscribe', views.subscribe, name='subscribe'),
] ]

@ -1,6 +1,6 @@
from django.contrib import admin, messages from django.contrib import admin, messages
from django.contrib.admin import helpers 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.shortcuts import render
from django.db import models from django.db import models
from django import forms from django import forms

@ -1,5 +1,5 @@
from django.apps import AppConfig from django.apps import AppConfig
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
class MailerConfig(AppConfig): class MailerConfig(AppConfig):

@ -1,8 +1,8 @@
from django.db import models from django.db import models
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django import forms from django import forms
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
from django.utils.translation import ugettext from django.utils.translation import gettext
from .mailutils import send, get_content, NOT_SENT, SENT, PARTLY_SENT, mail_root from .mailutils import send, get_content, NOT_SENT, SENT, PARTLY_SENT, mail_root
from utils import RestrictedFileField from utils import RestrictedFileField
from jdav_web.celery import app from jdav_web.celery import app
@ -71,10 +71,12 @@ class Message(models.Model):
blank=True) blank=True)
to_freizeit = models.ForeignKey('members.Freizeit', to_freizeit = models.ForeignKey('members.Freizeit',
verbose_name=_('to freizeit'), verbose_name=_('to freizeit'),
on_delete=models.CASCADE,
blank=True, blank=True,
null=True) null=True)
to_notelist = models.ForeignKey('members.MemberNoteList', to_notelist = models.ForeignKey('members.MemberNoteList',
verbose_name=_('to notes list'), verbose_name=_('to notes list'),
on_delete=models.CASCADE,
blank=True, blank=True,
null=True) null=True)
to_members = models.ManyToManyField('members.Member', to_members = models.ManyToManyField('members.Member',

@ -1,10 +1,10 @@
from django.conf.urls import url from django.urls import re_path
from . import views from . import views
app_name = "mailer" app_name = "mailer"
urlpatterns = [ urlpatterns = [
url(r'^$', views.index, name='index'), re_path(r'^$', views.index, name='index'),
# url(r'^subscribe', views.subscribe, name='subscribe'), # url(r'^subscribe', views.subscribe, name='subscribe'),
url(r'^unsubscribe', views.unsubscribe, name='unsubscribe'), re_path(r'^unsubscribe', views.unsubscribe, name='unsubscribe'),
] ]

@ -1,6 +1,6 @@
from django.shortcuts import render from django.shortcuts import render
from django import forms 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.urls import reverse
from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect
from .mailutils import send as send_mail, mail_root, get_unsubscribe_link from .mailutils import send as send_mail, mail_root, get_unsubscribe_link

@ -1,5 +1,5 @@
from django.contrib import admin 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.contrib.admin import SimpleListFilter
from django.db import models from django.db import models
from django import forms from django import forms

@ -1,5 +1,5 @@
from django.apps import AppConfig from django.apps import AppConfig
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
class MaterialConfig(AppConfig): class MaterialConfig(AppConfig):

@ -2,7 +2,7 @@ from datetime import datetime
from django.db import models from django.db import models
from django.utils import timezone 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 # maximum time in years of a material part until being replaced
MAX_TIME_MATERIAL = 5 MAX_TIME_MATERIAL = 5
@ -82,7 +82,7 @@ class MaterialPart(models.Model):
class Ownership(models.Model): class Ownership(models.Model):
"""Represents the connection between a MaterialPart and a Member""" """Represents the connection between a MaterialPart and a Member"""
material = models.ForeignKey(MaterialPart, on_delete=models.CASCADE) 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) count = models.IntegerField(_('count'), default=1)
def __str__(self): def __str__(self):

@ -13,7 +13,7 @@ from django.contrib import admin, messages
from django.contrib.admin import DateFieldListFilter from django.contrib.admin import DateFieldListFilter
from django.contrib.contenttypes.admin import GenericTabularInline from django.contrib.contenttypes.admin import GenericTabularInline
from django.utils.html import format_html 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,\ from django.db.models import TextField, ManyToManyField, ForeignKey, Count,\
Sum, Case, Q, F, When, Value, IntegerField, Subquery, OuterRef Sum, Case, Q, F, When, Value, IntegerField, Subquery, OuterRef
from django.forms import Textarea, RadioSelect, TypedChoiceField from django.forms import Textarea, RadioSelect, TypedChoiceField
@ -214,12 +214,10 @@ class ActivityCategoryAdmin(admin.ModelAdmin):
class FreizeitAdminForm(forms.ModelForm): class FreizeitAdminForm(forms.ModelForm):
difficulty = TypedChoiceField(Freizeit.difficulty_choices, difficulty = TypedChoiceField(choices=Freizeit.difficulty_choices,
#widget=RadioSelect,
coerce=int, coerce=int,
label=_('Difficulty')) label=_('Difficulty'))
tour_type = TypedChoiceField(Freizeit.tour_type_choices, tour_type = TypedChoiceField(choices=Freizeit.tour_type_choices,
#widget=RadioSelect,
coerce=int, coerce=int,
label=_('Tour type')) label=_('Tour type'))

@ -1,5 +1,5 @@
from django.apps import AppConfig from django.apps import AppConfig
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import gettext_lazy as _
class MembersConfig(AppConfig): class MembersConfig(AppConfig):

@ -1,7 +1,7 @@
from datetime import datetime from datetime import datetime
import uuid import uuid
from django.db import models 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.utils import timezone
from django.urls import reverse from django.urls import reverse
from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation
@ -220,8 +220,8 @@ class OldMemberOnList(models.Model):
""" """
Connects members to a list of members. 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)
memberlist = models.ForeignKey(MemberList) memberlist = models.ForeignKey(MemberList, on_delete=models.CASCADE)
comments = models.TextField(_('Comment'), default='', blank=True) comments = models.TextField(_('Comment'), default='', blank=True)
def __str__(self): def __str__(self):
@ -236,7 +236,7 @@ class NewMemberOnList(models.Model):
""" """
Connects members to a list of members. 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, content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE,
default=ContentType('members', 'Freizeit').pk) default=ContentType('members', 'Freizeit').pk)
object_id = models.PositiveIntegerField() object_id = models.PositiveIntegerField()
@ -323,7 +323,7 @@ class Klettertreff(models.Model):
location = models.CharField(_('Location'), default='', max_length=60) location = models.CharField(_('Location'), default='', max_length=60)
topic = models.CharField(_('Topic'), default='', max_length=60) topic = models.CharField(_('Topic'), default='', max_length=60)
jugendleiter = models.ManyToManyField(Member) 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): def __str__(self):
return self.location + ' ' + self.date.strftime('%d.%m.%Y') return self.location + ' ' + self.date.strftime('%d.%m.%Y')
@ -354,8 +354,8 @@ class Klettertreff(models.Model):
class KlettertreffAttendee(models.Model): class KlettertreffAttendee(models.Model):
"""Connects members to Klettertreffs.""" """Connects members to Klettertreffs."""
member = models.ForeignKey(Member, verbose_name=_('Member')) member = models.ForeignKey(Member, verbose_name=_('Member'), on_delete=models.CASCADE)
klettertreff = models.ForeignKey(Klettertreff) klettertreff = models.ForeignKey(Klettertreff, on_delete=models.CASCADE)
def __str__(self): def __str__(self):
return str(self.member) return str(self.member)

@ -8,10 +8,10 @@ def blToColor(bl):
else: else:
return 'red' return 'red'
@register.assignment_tag @register.simple_tag
def has_attendee_wrapper(klettertreff, member): def has_attendee_wrapper(klettertreff, member):
return blToColor(klettertreff.has_attendee(member)) return blToColor(klettertreff.has_attendee(member))
@register.assignment_tag @register.simple_tag
def has_jugendleiter_wrapper(klettertreff, jugendleiter): def has_jugendleiter_wrapper(klettertreff, jugendleiter):
return blToColor(klettertreff.has_jugendleiter(jugendleiter)) return blToColor(klettertreff.has_jugendleiter(jugendleiter))

@ -1,7 +1,7 @@
from django.conf.urls import url from django.urls import re_path
from . import views from . import views
urlpatterns = [ urlpatterns = [
url(r'^$', views.index, name='index') re_path(r'^$', views.index, name='index')
] ]

@ -1,6 +1,6 @@
from django.db import models from django.db import models
from django.core.exceptions import ValidationError 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): class RestrictedFileField(models.FileField):

@ -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
Loading…
Cancel
Save