Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Invalid redirect fix and enhanced registration form #170

Merged
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
4 changes: 2 additions & 2 deletions teknologr/members/static/js/group.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ $(document).ready(function () {
selector: "#add-g-form",
method: "POST",
url: "/api/groups/",
newLocation: (_, msg) => `/admin/grouptypes/${msg.grouptype}/${msg.id}/`,
newLocation: (_, msg) => `/admin/grouptypes/${msg.grouptype.id}/${msg.id}/`,
});
// Remove a group from the list
add_request_listener({
Expand All @@ -36,7 +36,7 @@ $(document).ready(function () {
method: "PUT",
url: element => `/api/groups/${element.data("id")}/`,
// Can not just reload the page in case the grouptype was edited
newLocation: (_, msg) => `/admin/grouptypes/${msg.grouptype}/${msg.id}/`,
newLocation: (_, msg) => `/admin/grouptypes/${msg.grouptype.id}/${msg.id}/`,
});
// Add members to the selected group
add_request_listener({
Expand Down
12 changes: 11 additions & 1 deletion teknologr/registration/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ def __init__(self, *args, **kwargs):
self.fields['preferred_name'].required = False
self.fields['mother_tongue'].required = False
self.fields['username'].required = False
# Specify required fields
self.fields['country'].required = True

def _set_attributes(self):
for fname, f in self.fields.items():
Expand All @@ -59,8 +61,16 @@ def _set_programme_choices(self):

def clean(self):
cleaned_data = super().clean()
enrolment_year = cleaned_data.get('enrolment_year')

preferred_name = cleaned_data.get('preferred_name')
if preferred_name and preferred_name not in cleaned_data.get('given_names'):
raise forms.ValidationError(
'Tilltalsnamnet måste vara ett av förnamnen',
code='invalid',
params={'preferred_name': preferred_name}
)

enrolment_year = cleaned_data.get('enrolment_year')
if enrolment_year and enrolment_year > datetime.now().year:
raise forms.ValidationError(
_('Enrolment year is larger than current year: %(enrolment_year)d'),
Expand Down
6 changes: 3 additions & 3 deletions teknologr/registration/labels.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# -*- coding: utf-8 -*-
MEMBERSHIP_FORM_LABELS = {
'surname': 'Efternamn',
'given_names': 'Förnamn',
'preferred_name': 'Tilltalsnamn',
'given_names': 'Förnamn (samtliga)',
'preferred_name': 'Tilltalsnamn (ett av förnamnen)',
'street_address': 'Gatuadress',
'postal_code': 'Postnummer',
'city': 'Postanstalt',
Expand All @@ -12,7 +12,7 @@
'birth_date': 'Födelsedatum',
'student_id': 'Studienummer',
'enrolment_year': 'Inskrivningsår vid Aalto-universitetet',
'username': 'Användarnamn för TF-Konto',
'username': 'Användarnamn vid Aalto-universitetet',
'motivation': 'Motivering till medlemskapet',
# Keep these empty as the Bootstrap4 module for Django is not predictable for checkboxes (i.e. manual labelling)
'subscribed_to_modulen': '',
Expand Down
13 changes: 5 additions & 8 deletions teknologr/registration/templates/info.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,19 @@ <h4 id="extra-information">
</h4>
<div id="collapse-info" class="collapse mt-3">
<p>
Efter medlemsansökan behöver du inte göra något annat än att vänta på en inbjudan till Nationsmöte (Namö)!
Efter medlemsansökan behöver du inte göra något annat än att vänta på en inbjudan till nästa nationsmöte (Namö)!
</p>
<p>
För att bli en nationsmedlem krävs att du deltar i ett Namö och blir invald, en inbjudan til Namö skickas per e-post.
När du har blivit invald så sätts du automatiskt med på e-post listor (vart det skickas flera inbjudan till Namön och viktig information gällande TF, man kan avanmäla sig senare).
För att bli en ordinarie medlem av nationen krävs att du deltar i ett Namö och blir invald. En inbjudan till Namö skickas åt alla aspirerande medlemmar per e-post. När du har blivit invald sätts du automatiskt med på TF:s e-postlista, genom vilket du i framtiden får viktig information gällande TF.
</p>
<p>
Dessutom som medlem har du rättigheter till IT-lov (var rättigheter till våra sidor, olika tjänster, och prenumeration på info- och veckomail ingår), vilka kan ansökas online på
<a href="https://medlem.tf.fi">TFs medlems sidor.</a>
Som medlem har du dessutom rättighet att få ett användarkonto till TF:s hemsidor och tjänster. Prenumeration på info- och veckomail ingår i dessa rättigheter, vilka kan ansökas online på <a href="https://medlem.tf.fi">TFs medlems sidor.</a>
</p>
<p>
Som medlem har du också rättighet till nyckel till Urdsgjallars medlemsutrymmen, TFs egna hus!
Nyckeln kan fås emot pant under kopieringskaffe som ordnas alltid efter Namö.
Som medlem har du också rättighet till nyckel till Urdsgjallars medlemsutrymmen, TF:s egna hus! Nyckeln kan köpas av disponenten (disponent[at]tf.fi) under kopieringskaffe som ordnas efter varje Namö.
</p>
<p>
Ifall du har flera frågor kring ansökan eller andra lov så kan du kontakta Phuxivatorn (phuxivator[at]tf.fi) eller Infochefen (infochef[at]tf.fi) respektivt.
Ifall du har flera frågor kring ansökan eller andra lov så kan du kontakta Phuxivatorn (phuxivator[at]tf.fi) eller Infochefen (infochef[at]tf.fi).
</p>
</div>
</div>
Expand Down
24 changes: 13 additions & 11 deletions teknologr/registration/templates/registration.html
Original file line number Diff line number Diff line change
Expand Up @@ -57,27 +57,29 @@

<!-- Username -->
<div id="username" class="row">
{% bootstrap_field form.username form_group_class="form-group col-md-6" placeholder="Skolans användarnamn" bound_css_class="" %}
{% bootstrap_field form.username form_group_class="form-group col-md-8" placeholder="Universitetets användarnamn" bound_css_class="" addon_after='<a class="a-tooltip" href="javascript:;" data-toggle="tooltip" data-placement="top" title="Används för att skapa ett konto till TF:s hemsidor åt dig med samma användarnamn."><i class="fa fa-question-circle" aria-hidden="true"></i></a>' %}
</div>

<!-- Mother tongue -->
<div id="language" class="row justify-content-center align-items-center mb-4 mt-4">
<div id="language" class="row mt-4">
<strong class="col-md-4">
Modersmål:
<a class="a-tooltip" href="javascript:;" data-toggle="tooltip" data-placement="top" title="Modersmålet samlas in för statistik, men är dock valfritt.">
<i class="fa fa-question-circle" aria-hidden="true"></i>
</a>
</strong>
</div>
<div class="row mb-4">
<div class="col-md-8">
<strong class="col-md-4">
Modersmål:
<a class="a-tooltip" href="javascript:;" data-toggle="tooltip" data-placement="top" title="Modersmålet samlas in för statistik, men är dock valfritt.">
<i class="fa fa-question-circle" aria-hidden="true"></i>
</a>
</strong>
<label class="radio-inline col-md-3">
<label class="radio-inline col-md-4 m-0 p-0">
<input type="radio" name="language" value="Svenska">
Svenska
</label>
<label class="radio-inline col-md-3">
<label class="radio-inline col-md-4 m-0 p-0">
<input type="radio" name="language" value="Finska">
Finska
</label>
<label id="language-extra" class="radio-inline col-md-2">
<label id="language-extra" class="radio-inline col-md-3 m-0 p-0">
<input type="radio" name="language" value="extra">
Övrig:
</label>
Expand Down
14 changes: 14 additions & 0 deletions teknologr/registration/tests_views.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@

from rest_framework import status
from api.tests import BaseAPITest

class GetPageTests():
def test_get_for_anonymous_users(self):
response = self.get_all()
self.check_status_code(response, status.HTTP_200_OK)


class RegistrationViewTest(BaseAPITest, GetPageTests):
def setUp(self):
super().setUp()
self.api_path = '/registration/#collapse-info'
11 changes: 6 additions & 5 deletions teknologr/registration/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,27 +20,28 @@ def get(self, request):


class SubmitView(BaseView):
template = 'submit.html'

def get(self, request, **kwargs):
previous_context = request.session.pop('context', None)
if not previous_context:
return redirect('registration:home')

return render(request, self.template, previous_context)
return render(request, 'submit.html', previous_context)

def post(self, request):
form = RegistrationForm(request.POST)
if form.is_valid():
registration = form.instance

next_context = {
'name': registration.preferred_name or registration.given_names.split(' ')[0],
'name': registration.preferred_name or registration.given_names.split()[0],
'email': registration.email,
}

# FIXME: handle situation where email is not sent (e.g. admin log tool)
mailApplicantSubmission(next_context)
try:
mailApplicantSubmission(next_context)
except:
pass

registration.save()

Expand Down