Compare commits

...

4 Commits

Author SHA1 Message Date
Sebastian Lohff fcd22f8231 Set Django to 4.0.1, add DB migrations
Now that we're somewhat Django4 compatible it's time to advertise our
newfound skill! Not all functionality has been tested, but it is
starting again.
2022-01-22 17:18:25 +01:00
Sebastian Lohff 0bd545a183 staticfiles template tag libary is called static 2022-01-22 17:17:12 +01:00
Sebastian Lohff 8308a883cd user.is_authenticated is no longer a method
Apparently this is now a property, so we don't need to call it. We can
just use it.
2022-01-22 17:16:43 +01:00
Sebastian Lohff 0ca4c2399f Fix url config for Django4
url() is no longer available, has to be replaced with path() or
re_path(). For proper include() we also need an app_name specified in
the urls.py we're including.
2022-01-22 17:11:10 +01:00
7 changed files with 95 additions and 58 deletions

View File

@ -1,4 +1,4 @@
from django.conf.urls import include, url from django.urls import include, path
from rest_framework import routers from rest_framework import routers
from .views import ContestViewSet, BandViewSet, FrequencyViewSet, EntryCategoryViewSet, ReferenceViewSet, QSOViewSet, \ from .views import ContestViewSet, BandViewSet, FrequencyViewSet, EntryCategoryViewSet, ReferenceViewSet, QSOViewSet, \
@ -15,6 +15,6 @@ router.register('shadowcalls', ShadowCallViewSet)
router.register('profile', UserProfileViewSet, basename='profile') router.register('profile', UserProfileViewSet, basename='profile')
urlpatterns = [ urlpatterns = [
url(r'^', include(router.urls)), path('', include(router.urls)),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')), path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),
] ]

View File

@ -0,0 +1,65 @@
# Generated by Django 4.0.1 on 2022-01-22 16:18
import django.contrib.auth.validators
import django.core.validators
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('contest', '0020_auto_20190122_2348'),
]
operations = [
migrations.AlterField(
model_name='qso',
name='otherNo',
field=models.IntegerField(blank=True, null=True, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(1000000)], verbose_name='No-R'),
),
migrations.AlterField(
model_name='qso',
name='ownNo',
field=models.IntegerField(validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(1000000)], verbose_name='No'),
),
migrations.AlterField(
model_name='user',
name='dncall',
field=models.CharField(blank=True, default='', help_text='If you have a DN call that you will offer to SWLs please enter it here', max_length=16, verbose_name='DN-Call'),
),
migrations.AlterField(
model_name='user',
name='extra2m70cm',
field=models.BooleanField(default=False, help_text='Will you bring an additional 2m/70cm TRX to lend to other participants?', verbose_name='Additional 2m/70cm TRX'),
),
migrations.AlterField(
model_name='user',
name='first_name',
field=models.CharField(blank=True, max_length=150, verbose_name='first name'),
),
migrations.AlterField(
model_name='user',
name='last_name',
field=models.CharField(blank=True, max_length=150, verbose_name='last name'),
),
migrations.AlterField(
model_name='user',
name='qrv2m',
field=models.BooleanField(default=False, help_text='Will you be QRV on 2m during the contest?', verbose_name='QRV on 2m'),
),
migrations.AlterField(
model_name='user',
name='qrv70cm',
field=models.BooleanField(default=False, help_text='Will you be QRV on 70cm during the contest?', verbose_name='QRV on 70cm'),
),
migrations.AlterField(
model_name='user',
name='regTime',
field=models.DateTimeField(blank=True, default=None, null=True),
),
migrations.AlterField(
model_name='user',
name='username',
field=models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username'),
),
]

View File

@ -1,35 +1,22 @@
"""cqtu URL Configuration from django.urls import re_path
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/1.10/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
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
import contest.views as contest_views import contest.views as contest_views
from contest.cbrparser import uploadCBR from contest.cbrparser import uploadCBR
app_name = 'context'
urlpatterns = [ urlpatterns = [
url(r'^$', contest_views.contestIndex, name='index'), re_path(r'^$', contest_views.contestIndex, name='index'),
url(r'^regref/$', contest_views.registerRefs, name='registerRefs'), re_path(r'^regref/$', contest_views.registerRefs, name='registerRefs'),
url(r'^regref/edit/(?P<uid>\d+)/$', contest_views.updateRef, {"shadow": False}, name='updateRef'), re_path(r'^regref/edit/(?P<uid>\d+)/$', contest_views.updateRef, {"shadow": False}, name='updateRef'),
url(r'^regref/shadow/edit/(?P<uid>\d+)/$', contest_views.updateRef, {"shadow": True}, name='updateShadowRef'), re_path(r'^regref/shadow/edit/(?P<uid>\d+)/$', contest_views.updateRef, {"shadow": True}, name='updateShadowRef'),
url(r'^regref/qsos/all/$', contest_views.viewAllQSOs, name='viewAllQSOs'), re_path(r'^regref/qsos/all/$', contest_views.viewAllQSOs, name='viewAllQSOs'),
url(r'^regref/qsos/user/(?P<uid>\d+)/$', contest_views.viewUserQSOs, name='viewUserQSOs'), re_path(r'^regref/qsos/user/(?P<uid>\d+)/$', contest_views.viewUserQSOs, name='viewUserQSOs'),
url(r'^overview/$', contest_views.overview, name='overview'), re_path(r'^overview/$', contest_views.overview, name='overview'),
url(r'^log/$', contest_views.log, name='log'), re_path(r'^log/$', contest_views.log, name='log'),
url(r'^log/edit/(?P<qsoid>\d+)/$', contest_views.logEdit, name='logEdit'), re_path(r'^log/edit/(?P<qsoid>\d+)/$', contest_views.logEdit, name='logEdit'),
url(r'^log/delete/(?P<qsoid>\d+)/$', contest_views.logDelete, name='logDelete'), re_path(r'^log/delete/(?P<qsoid>\d+)/$', contest_views.logDelete, name='logDelete'),
url(r'^uploadcbr/$', uploadCBR, name='uploadCBR'), re_path(r'^uploadcbr/$', uploadCBR, name='uploadCBR'),
url(r'^regref/recheckqsos/$', contest_views.recheckAllQSOs, name='recheckAllQSOs'), re_path(r'^regref/recheckqsos/$', contest_views.recheckAllQSOs, name='recheckAllQSOs'),
] ]

View File

@ -17,7 +17,7 @@ from .forms import UpdateRefForm, QSOForm, QSOFormWithTime, CustomUserCreationFo
def index(request): def index(request):
if request.user.is_authenticated(): if request.user.is_authenticated:
return HttpResponseRedirect(reverse("contest:index")) return HttpResponseRedirect(reverse("contest:index"))
return render(request, "index.html", {"loginForm": AuthenticationForm()}) return render(request, "index.html", {"loginForm": AuthenticationForm()})

View File

@ -1,19 +1,4 @@
"""cqtu URL Configuration from django.urls import include, path
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/1.10/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
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.contrib import admin from django.contrib import admin
from django.contrib.auth import views as auth_views from django.contrib.auth import views as auth_views
@ -21,13 +6,13 @@ from contest.views import index, register, profile
urlpatterns = [ urlpatterns = [
url('^$', index, name="index"), path('', index, name="index"),
url('^cqtufm2019/', include('contest.urls', namespace='contest')), path('cqtufm2019/', include('contest.urls', namespace='contest')),
url(r'^admin/', admin.site.urls), path('admin/', admin.site.urls),
url(r'^login/$', auth_views.login, name='login'), path('login/', auth_views.LoginView.as_view(), name='login'),
url(r'^logout/$', auth_views.logout, {'next_page': '/'}, name='logout'), path('logout/', auth_views.LogoutView.as_view(), {'next_page': '/'}, name='logout'),
url(r'^register/$', register, name='register'), path('register/', register, name='register'),
url(r'^profile/$', profile, name='profile'), path('profile/', profile, name='profile'),
url(r'^api/', include('api.urls')), path('api/', include('api.urls')),
] ]

View File

@ -1,4 +1,4 @@
Django<1.12 Django==4.0.1
django-crispy-forms django-crispy-forms
django-rest-framework django-rest-framework
django-filter django-filter

View File

@ -8,7 +8,7 @@
<meta name="description" content=""> <meta name="description" content="">
<meta name="author" content=""> <meta name="author" content="">
<link rel="icon" href="/favicon.ico"> <link rel="icon" href="/favicon.ico">
{% load staticfiles %} {% load static %}
<title>CQTUFM2019 - CQ TU FM Contest 2019</title> <title>CQTUFM2019 - CQ TU FM Contest 2019</title>