diff --git a/account/forms.py b/account/forms.py index ce32ab5..5aa1664 100644 --- a/account/forms.py +++ b/account/forms.py @@ -4,6 +4,7 @@ import re from django import forms +from django.contrib.auth import authenticate from django.utils.translation import ugettext as _ @@ -11,8 +12,24 @@ class LoginForm(forms.Form): username = forms.CharField(max_length=255) password = forms.CharField(max_length=255, widget=forms.PasswordInput) + def clean(self): + username = self.cleaned_data.get('username') + password = self.cleaned_data.get('password') + user = authenticate(username=username, password=password) + if not user or not user.is_active: + raise forms.ValidationError(_('Sorry, that login was invalid. ' + 'Please try again.'), code='invalid_login') + return self.cleaned_data + + def login(self, request): + username = self.cleaned_data.get('username') + password = self.cleaned_data.get('password') + user = authenticate(username=username, password=password) + return user + class GastroPinField(forms.CharField): + widget = forms.PasswordInput def validate(self, value): """ Check if the value is all numeric and 4 - 6 chars long. @@ -23,34 +40,60 @@ class GastroPinField(forms.CharField): class GastroPinForm(forms.Form): - gastropin = GastroPinField() + gastropin1 = GastroPinField(label=_('New Gastro-PIN')) + gastropin2 = GastroPinField(label=_('Repeat Gastro-PIN')) + + def clean(self): + cleaned_data = super(GastroPinForm, self).clean() + gastropin1 = cleaned_data.get("gastropin1") + gastropin2 = cleaned_data.get("gastropin2") + if gastropin1 != gastropin2: + raise forms.ValidationError( + _('The PINs entered were not identical.'), + code='not_identical') + class WlanPresenceForm(forms.Form): # Boolean fields must never be required. presence = forms.BooleanField(required=False, - help_text=_('Enable WiFi presence?')) + label=_('Enable WiFi presence')) class PasswordForm(forms.Form): password1 = forms.CharField(max_length=255, widget=forms.PasswordInput, - help_text=_('New password')) + label=_('New password')) password2 = forms.CharField(max_length=255, widget=forms.PasswordInput, - help_text=_('Repeat password')) + label=_('Repeat password')) class RFIDForm(forms.Form): - rfid = forms.CharField(max_length=255, help_text=_('Your RFID')) + rfid = forms.CharField(max_length=255, label=_('Your RFID'), + help_text=_('Find out your RFID by holding your RFID tag to the ' + 'reader in the airlock.')) class SIPPinForm(forms.Form): - sippin = forms.CharField(max_length=255, help_text=_('Your SIP PIN')) + sippin1 = GastroPinField(label=_('Your SIP PIN')) + sippin2 = GastroPinField(label=_('Repeat SIP PIN')) + + def clean(self): + cleaned_data = super(SIPPinForm, self).clean() + sippin1 = cleaned_data.get("sippin1") + sippin2 = cleaned_data.get("sippin2") + if sippin1 != sippin2: + raise forms.ValidationError( + _('The PINs entered were not identical.'), + code='not_identical') class NRF24Form(forms.Form): nrf24 = forms.CharField(max_length=255, - help_text=_('Your NRF24 identification')) + label = _('NRF24-ID'), + help_text=_("Your r0ket's NRF24 identification")) class CLabPinForm(forms.Form): - c_lab_pin = GastroPinField(help_text=_('Your c-lab PIN')) \ No newline at end of file + c_lab_pin1 = GastroPinField(label=_('New c-lab PIN')) + c_lab_pin2 = GastroPinField(label=_('Repeat c-lab PIN'), + help_text=_('Numerical only, 4 to 6 digits')) \ No newline at end of file diff --git a/account/templates/clabpin.html b/account/templates/clabpin.html index 13213ef..0525404 100644 --- a/account/templates/clabpin.html +++ b/account/templates/clabpin.html @@ -9,7 +9,6 @@ {% endblock %} {% block form_fields %} - {{ form.non_field_errors }}
{% csrf_token %} {{ form|crispy }} diff --git a/account/templates/gastropin.html b/account/templates/gastropin.html index 67f7b9d..593f7fb 100644 --- a/account/templates/gastropin.html +++ b/account/templates/gastropin.html @@ -14,7 +14,6 @@ {% endblock %} {% block form_fields %} - {{ form.non_field_errors }} {% csrf_token %} {{ form|crispy }} diff --git a/account/templates/login.html b/account/templates/login.html index 8539c65..0315f96 100644 --- a/account/templates/login.html +++ b/account/templates/login.html @@ -11,6 +11,7 @@

Login

+ {% csrf_token %} {{ form|crispy }} diff --git a/account/templates/nrf24.html b/account/templates/nrf24.html index 458877a..3f1617d 100644 --- a/account/templates/nrf24.html +++ b/account/templates/nrf24.html @@ -5,11 +5,11 @@ {% block form_title %}{% trans "NRF24"%}{% endblock %} {% block form_description %} -

{% blocktrans %}The NRF24 identification is used for your R0K3T!{% endblocktrans %}

+

{% blocktrans %}The NRF24 identification is used to interface with the + CCC's r0ket badge.{% endblocktrans %}

{% endblock %} {% block form_fields %} - {{ form.non_field_errors }} {% csrf_token %} {{ form|crispy }} diff --git a/account/templates/rfid.html b/account/templates/rfid.html index 40e4636..7e640e8 100644 --- a/account/templates/rfid.html +++ b/account/templates/rfid.html @@ -5,12 +5,18 @@ {% block form_title %}{% trans "RFID"%}{% endblock %} {% block form_description %} -

{% blocktrans %}Blabla testblab bla bla blub{% endblocktrans %}

+

{% blocktrans %}A Radio Frequency Identification (RFID) tag can be used + to announce your presence to other c-base members when you arrive. + Place your RFID tag on the RFID reader in the airlock terminal. + If you configured your RFID correctly, the airlock terminal will greet + you and show additional information. If you place your RFID tag in the + reader again when leaving, you will be logged out.{% endblocktrans %}

{% endblock %} {% block form_fields %} {{ form.non_field_errors }} - + {% csrf_token %} {{ form|crispy }} diff --git a/account/templates/sippin.html b/account/templates/sippin.html index b894a1d..2ff7d29 100644 --- a/account/templates/sippin.html +++ b/account/templates/sippin.html @@ -9,7 +9,6 @@ {% endblock %} {% block form_fields %} - {{ form.non_field_errors }} {% csrf_token %} {{ form|crispy }} diff --git a/account/views.py b/account/views.py index 222e886..5eede90 100644 --- a/account/views.py +++ b/account/views.py @@ -33,13 +33,6 @@ def landingpage(request): #return render_to_response("dashboard.html", locals()) return render(request, 'base.html', {'form': form, 'admins': admins}) -@login_required -def home(request): - member = retrieve_member(request) - context = {'member': member.to_dict()} - print context - return render(request, 'start.html', context) - def auth_login(request): redirect_to = request.GET.get('next', '') or '/' if request.method == 'POST': @@ -47,7 +40,7 @@ def auth_login(request): if form.is_valid(): username = form.cleaned_data['username'] password = form.cleaned_data['password'] - user = authenticate(username=username, password=password) + user = form.login(request) if user is not None: if user.is_active: login(request, user) @@ -55,19 +48,29 @@ def auth_login(request): User.objects.get_or_create(username=username) if created: member.save() + # save password in the session for later use with LDAP request.session['ldap_password'] = password + # TODO: Change the + response = HttpResponseRedirect(redirect_to) response.set_cookie('sessionkey', 'bla') return response else: - print 'user is none' + return render(request, 'login.html', {'form': form}) else: form = LoginForm() return render_to_response('login.html', RequestContext(request, locals())) +@login_required +def home(request): + member = retrieve_member(request) + context = {'member': member.to_dict()} + print context + return render(request, 'start.html', context) + @login_required def auth_logout(request): redirect_to = request.GET.get('next', '') or '/' @@ -117,7 +120,7 @@ def set_ldap_field(request, form_type, field_names, template_name): 'form': new_form, 'member': member.to_dict()}) else: return render(request, template_name, - {'form:': form, 'member': member.to_dict()}) + {'form': form, 'member': member.to_dict()}) else: for form_field, ldap_field in field_names: initial[form_field] = member.get(ldap_field) @@ -145,6 +148,6 @@ def password(request): @login_required def clabpin(request): - return set_ldap_field(request, CLabPinForm, [('c_lab_pin', 'c-labPIN')], + return set_ldap_field(request, CLabPinForm, [('c_lab_pin1', 'c-labPIN')], 'clabpin.html') diff --git a/cbmi/templates/base.html b/cbmi/templates/base.html index e30f8b3..2332142 100644 --- a/cbmi/templates/base.html +++ b/cbmi/templates/base.html @@ -22,6 +22,13 @@ body { padding-top: 60px; /* 60px to make the container go all the way to the bottom of the topbar */ } + .asteriskField { + color: #ff1111; + margin-left: 3px; + } + .formRequired { + margin-top: 0px; + }