Skip to content

Commit 838fe5b

Browse files
committed
Add better time selection fields
1 parent c9b0fb6 commit 838fe5b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+901
-56
lines changed

marathon/cms_plugins.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import datetime
2+
13
from cms.plugin_base import CMSPluginBase
24
from cms.plugin_pool import plugin_pool
35

@@ -47,8 +49,13 @@ def render(self, context, instance, placeholder):
4749
player_form.fields['discord'].widget.attrs['readonly'] = True
4850
else:
4951
player_form = PlayerForm(prefix='player')
52+
event_duration = (instance.event.end - instance.event.start).days
53+
event_days = []
54+
for d in range(event_duration + 1):
55+
event_days.append(instance.event.start + datetime.timedelta(days=d))
5056
context['require_authentication'] = True
5157
context['form'] = form
5258
context['player_form'] = player_form
5359
context['event'] = instance.event
60+
context['event_days'] = event_days
5461
return context

marathon/forms.py

Lines changed: 14 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
from django.forms import formset_factory
55
from django.utils.translation import gettext_lazy as _
66
from django.core.exceptions import ValidationError
7+
from pkg_resources import require
8+
79

810
from .models import Submission, Player
911

@@ -14,36 +16,14 @@ class Meta:
1416
model = Player
1517
exclude = ['user']
1618
widgets = {
17-
'allergies': forms.Textarea(attrs=TEXTAREA_ATTRS)
19+
'nickname': forms.TextInput(attrs={'placeholder': 'Nimimerkki pelaajalistaukseen'}),
20+
'discord': forms.TextInput(attrs={'placeholder': 'Nick'}),
21+
'gmail': forms.TextInput(attrs={'placeholder': 'etu.suku@gmail.com'}),
22+
'twitch': forms.TextInput(attrs={'placeholder': 'nimi_merkki'}),
1823
}
1924

2025

2126
class SubmissionForm(forms.ModelForm):
22-
gdpr = forms.BooleanField(required=True, label=_('Hyväksyn henkilötietojeni käsittelyn tietosuojaselosteen mukaisesti ja sitoudun noudattamaan turvallisen tilan periaatteita.'))
23-
24-
def clean_estimate(self):
25-
26-
estimate = self.cleaned_data['estimate']
27-
ptr = re.fullmatch(r'(?P<hours>[0-9]{1,2}):(?P<minutes>[0-5][0-9])', estimate)
28-
29-
if not ptr:
30-
raise ValidationError(_('aika-arvio muodossa hh:mm'))
31-
32-
hours = int(ptr.group('hours'))
33-
34-
if hours > 16:
35-
raise ValidationError(_('liian pitkä runi :/ kokeile jotain lyhempää!'))
36-
37-
minutes = int(ptr.group('minutes'))
38-
total = hours * 60 + minutes
39-
total_rounded = total + (5 - total) % 5
40-
41-
cleaned_hours = total_rounded // 60
42-
cleaned_minutes = total_rounded % 60
43-
cleaned_estimate = f'{cleaned_hours:02}:{cleaned_minutes:02}'
44-
45-
return cleaned_estimate
46-
4727
class Meta:
4828
model = Submission
4929
exclude = [
@@ -56,7 +36,15 @@ class Meta:
5636
'flashing_lights'
5737
]
5838
widgets = {
39+
'game_title': forms.TextInput(attrs={'placeholder': 'Sakarin Villapaitapeli'}),
40+
'publish_year': forms.NumberInput(attrs={'placeholder': '1969'}),
41+
'console': forms.TextInput(attrs={'placeholder': 'PC'}),
42+
'console_display': forms.TextInput(attrs={'placeholder': 'NES'}),
43+
'category': forms.TextInput(attrs={'placeholder': 'Any% NMS'}),
44+
'estimate': forms.TextInput(attrs={'placeholderHours': '1','placeholderMinutes': '30'}),
45+
'personal_best': forms.TextInput(attrs={'placeholderHours': '1','placeholderMinutes': '19'}),
5946
'time_constraints': forms.Textarea(attrs=TEXTAREA_ATTRS),
6047
'description': forms.Textarea(attrs=TEXTAREA_ATTRS),
6148
'priority': forms.NumberInput(attrs={'min': '1'}),
49+
'gdpr': forms.CheckboxInput(attrs={'required': True, 'pre_label': 'Tietosuoja'})
6250
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Generated by Django 3.2.23 on 2025-09-07 18:21
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('marathon', '0008_alter_submission_priority'),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name='submission',
15+
name='personal_best',
16+
field=models.CharField(max_length=20, null=True, verbose_name='Tämänhetkinen henkilökohtainen ennätyksesi'),
17+
),
18+
migrations.AlterField(
19+
model_name='submission',
20+
name='description',
21+
field=models.TextField(blank=True, verbose_name='miksi tämä runi?'),
22+
),
23+
migrations.AlterField(
24+
model_name='submission',
25+
name='estimate',
26+
field=models.CharField(help_text='Arviosi suorituksen kestosta. Ota arviossa huomioon terveisten lähettämiset ja mahdolliset virheet runissa.', max_length=20, verbose_name='aika-arvio'),
27+
),
28+
migrations.AlterField(
29+
model_name='submission',
30+
name='gdpr',
31+
field=models.BooleanField(default=False, verbose_name='Hyväksyn henkilötietojeni käsittelyn %%tietosuojaselosteen%% mukaisesti.'),
32+
),
33+
migrations.AlterField(
34+
model_name='submission',
35+
name='time_constraints',
36+
field=models.TextField(blank=True, help_text='Mikäli sinulle kelpaavat ajat muuttuvat, voit korjata tiedot ilmoittautumisen päätyttyä.', verbose_name='aikataulurajoitteet'),
37+
),
38+
]

marathon/models.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,20 +65,25 @@ class Submission(models.Model):
6565
estimate = models.CharField(
6666
_('aika-arvio'),
6767
max_length=20,
68-
help_text=_('Arvioi suorituksen kestolle yläraja (tunnit:minuutit) alusta loppuun. Ota arviossa huomioon terveisten lähettämiset ja mahdolliset virheet runissa.'),
68+
help_text=_('Arviosi suorituksen kestosta. Ota arviossa huomioon terveisten lähettämiset ja mahdolliset virheet runissa.'),
6969
)
70-
description = models.TextField(_('perustelut'), blank=True)
70+
personal_best = models.CharField(
71+
_('Tämänhetkinen henkilökohtainen ennätyksesi'),
72+
max_length=20,
73+
null=True,
74+
)
75+
description = models.TextField(_('miksi tämä runi?'), blank=True)
7176
video_link = models.URLField(_('videolinkki'), blank=True)
7277
scoreboard_link = models.URLField(_('rankinglistalinkki'), blank=True)
7378

7479
# Extras
75-
time_constraints = models.TextField(_('aikataulurajoitteet'), blank=True)
80+
time_constraints = models.TextField(_('aikataulurajoitteet'), blank=True, help_text=_('Mikäli sinulle kelpaavat ajat muuttuvat, voit korjata tiedot ilmoittautumisen päätyttyä.'))
7681
for_children = models.BooleanField(_('sopiva lapsille'), default=False,
7782
help_text=_('Runin sisältö ja selostus ovat lapsiyleisölle sopivia'))
7883
flashing_lights = models.BooleanField(_('sisältää nopeasti vilkkuvia valoja'), default=False)
7984

8085
# Mandatory
81-
gdpr = models.BooleanField(default=False)
86+
gdpr = models.BooleanField(_('Hyväksyn henkilötietojeni käsittelyn %%tietosuojaselosteen%% mukaisesti.'),default=False)
8287

8388
priority = models.IntegerField(
8489
_('tärkeysjärjestys'),

marathon/views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,4 @@ def new_submission(request, event):
5050
raise Http404('Tämmöstä ei oo')
5151

5252
def thanks(request):
53-
return
53+
return

0 commit comments

Comments
 (0)