Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file.
242 changes: 242 additions & 0 deletions kompassi/events/kotaeexpo2026/forms.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,242 @@
from crispy_forms.layout import Fieldset, Layout
from django import forms
from django.db.models import Q

from kompassi.core.utils import horizontal_form_helper, indented_without_label
from kompassi.labour.forms import AlternativeFormMixin, SignupForm
from kompassi.labour.models import JobCategory, Signup

from .models import SignupExtra


class SignupExtraForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.helper = horizontal_form_helper()
self.helper.form_tag = False
self.helper.layout = Layout(
"shift_type",
"total_work",
indented_without_label("night_shift"),
indented_without_label("overseer"),
"work_days",
Fieldset(
"Työtodistus",
indented_without_label("want_certificate"),
),
Fieldset(
"Millä kielellä olet valmis palvelemaan asiakkaita?",
"known_language",
"known_language_other",
),
Fieldset(
"Lisätiedot",
"special_diet",
"special_diet_other",
"accommodation",
"prior_experience",
"shift_wishes",
"free_text",
),
)

class Meta:
model = SignupExtra
fields = (
"shift_type",
"total_work",
"night_shift",
"overseer",
"work_days",
"want_certificate",
"known_language",
"known_language_other",
"special_diet",
"special_diet_other",
"accommodation",
"prior_experience",
"shift_wishes",
"free_text",
)

widgets = dict(
known_language=forms.CheckboxSelectMultiple,
special_diet=forms.CheckboxSelectMultiple,
accommodation=forms.CheckboxSelectMultiple,
work_days=forms.CheckboxSelectMultiple,
)


class OrganizerSignupForm(forms.ModelForm, AlternativeFormMixin):
def __init__(self, *args, **kwargs):
kwargs.pop("event")
admin = kwargs.pop("admin")

if admin:
raise AssertionError("must not be admin")

super().__init__(*args, **kwargs)

self.helper = horizontal_form_helper()
self.helper.form_tag = False
self.helper.layout = Layout(
Fieldset(
"Tehtävän tiedot",
"job_title",
),
)

self.fields["job_title"].help_text = "Mikä on vastuualueesi? Printataan badgeen."
self.fields["job_title"].required = True

class Meta:
model = Signup
fields = ("job_title",)

widgets = dict(
job_categories=forms.CheckboxSelectMultiple,
)

def get_excluded_m2m_field_defaults(self):
return dict(job_categories=JobCategory.objects.filter(event__slug="kotaeexpo2026", name="Vastaava"))

def get_excluded_field_defaults(self):
return dict(
total_work="yli10h",
)


class OrganizerSignupExtraForm(forms.ModelForm, AlternativeFormMixin):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.helper = horizontal_form_helper()
self.helper.form_tag = False
self.helper.layout = Layout(
Fieldset(
"Lisätiedot",
"special_diet",
"special_diet_other",
"accommodation",
"email_alias",
),
)

class Meta:
model = SignupExtra
fields = (
"special_diet",
"special_diet_other",
"accommodation",
"email_alias",
)

widgets = dict(
special_diet=forms.CheckboxSelectMultiple,
accommodation=forms.CheckboxSelectMultiple,
)

def get_excluded_field_defaults(self):
return dict(
shift_type="kaikkikay",
total_work="yli10h",
night_shift=False,
overseer=False,
want_certificate=False,
prior_experience="",
free_text="Syötetty käyttäen coniitin ilmoittautumislomaketta",
)


class SpecialistSignupForm(SignupForm, AlternativeFormMixin):
def get_job_categories_query(self, event, admin=False):
if admin:
raise AssertionError("must not be admin")

return Q(event__slug="kotaeexpo2026", public=False) & ~Q(slug="vastaava")

def get_excluded_field_defaults(self):
return dict(
notes="Syötetty käyttäen erikoistehtävien ilmoittautumislomaketta",
)


class SpecialistSignupExtraForm(forms.ModelForm, AlternativeFormMixin):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.helper = horizontal_form_helper()
self.helper.form_tag = False
self.helper.layout = Layout(
"shift_type",
"total_work",
indented_without_label("night_shift"),
indented_without_label("overseer"),
"work_days",
Fieldset(
"Työtodistus",
indented_without_label("want_certificate"),
),
Fieldset(
"Millä kielellä olet valmis palvelemaan asiakkaita?",
"known_language",
"known_language_other",
),
Fieldset(
"Lisätiedot",
"special_diet",
"special_diet_other",
"accommodation",
"prior_experience",
"shift_wishes",
"free_text",
),
)

class Meta:
model = SignupExtra
fields = (
"shift_type",
"total_work",
"night_shift",
"overseer",
"work_days",
"want_certificate",
"known_language",
"known_language_other",
"special_diet",
"special_diet_other",
"accommodation",
"prior_experience",
"shift_wishes",
"free_text",
)

widgets = dict(
known_language=forms.CheckboxSelectMultiple,
special_diet=forms.CheckboxSelectMultiple,
accommodation=forms.CheckboxSelectMultiple,
work_days=forms.CheckboxSelectMultiple,
)


class ShiftWishesSurvey(forms.ModelForm):
def __init__(self, *args, **kwargs):
kwargs.pop("event")

super().__init__(*args, **kwargs)

self.helper = horizontal_form_helper()
self.helper.form_tag = False

@classmethod
def get_instance_for_event_and_person(cls, event, person):
return SignupExtra.objects.get(event=event, person=person)

class Meta:
model = SignupExtra
fields = (
"shift_wishes",
"accommodation",
)
widgets = dict(
accommodation=forms.CheckboxSelectMultiple,
)
118 changes: 118 additions & 0 deletions kompassi/events/kotaeexpo2026/forms/expense-claim-dimensions.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
- slug: account
title:
fi: Tiliöinti
en: Account
is_key_dimension: false
choices:
- slug: rent
title:
fi: 4100 Tilavuokrat
en: 4100 Venue rent
- slug: equipment-rental
title:
fi: 4200 Kalustevuokraus
en: 4200 Equipment rental
- slug: restaurants
title:
fi: 4300 Ravintolakulut
en: 4300 Restaurant expenses
- slug: performers
title:
fi: 5100 Esiintyjät
en: 5100 Performers
- slug: program
title:
fi: 5200 Ohjelma
en: 5200 Program
- slug: supplies
title:
fi: 5400 Tarvikkeet
en: 5400 Supplies
- slug: technology
title:
fi: 5500 Tekniikka
en: 5500 Technology
- slug: meeting-expenses
title:
fi: 6100 Kokouskulut
en: 6100 Meeting expenses
- slug: travel-and-accommodation-expenses
title:
fi: 6200 Matka- ja majoituskulut
en: 6200 Travel and accommodation expenses
- slug: advertising-and-marketing-expenses
title:
fi: 8100 Ilmoitus ja markkinointikulut
en: 8100 Advertising and marketing expenses
- slug: representation-expenses
title:
fi: 8200 Edustuskulut
en: 8200 Representation expenses
- slug: multi-year-acquisitions
title:
fi: 9100 Monivuotiset hankinnat
en: 9100 Multi-year acquisitions
- slug: other-event-expenses
title:
fi: 9200 Tapahtuman muut kulut
en: 9200 Other event expenses
- slug: financial-transaction-expenses
title:
fi: 9500 Rahaliikenteen kulut
en: 9500 Financial transaction expenses
- slug: loans-from-individuals
title:
fi: 9550 Lainat yksityishenkilöiltä
en: 9550 Loans from individuals
- slug: loans-from-associations
title:
fi: 9560 Lainat yhdistyksiltä
en: 9560 Loans from associations
- slug: loans-from-banks
title:
fi: 9570 Lainat pankilta
en: 9570 Loans from banks
- slug: insurances
title:
fi: 9700 Vakuutukset
en: 9700 Insurances
- slug: phone-connections
title:
fi: 9800 Puhelinliittymät
en: 9800 Phone connections
- slug: other-operating-expenses
title:
fi: 9900 Muut toiminnan menot
en: 9900 Other operating expenses

- slug: status
title:
fi: Maksun tila
en: Payment status
is_key_dimension: true
choices:
- slug: new
color: blue
title:
fi: Uusi
en: New
- slug: accepted
color: green
title:
fi: Hyväksytty
en: Accepted
- slug: paid
color: teal
title:
fi: Maksettu
en: Paid
- slug: info-requested
color: yellow
title:
fi: Lisätietoja pyydetty
en: Further details requested
- slug: rejected
color: red
title:
fi: Hylätty
en: Rejected
Loading
Loading