added preferred email view, added possibility to delete ldap keys (when a None is provided as value
This commit is contained in:
parent
2986d395b2
commit
eacbb841a7
7 changed files with 60 additions and 8 deletions
|
|
@ -51,12 +51,17 @@ class MemberValues(object):
|
|||
return value
|
||||
|
||||
def set(self, key, value):
|
||||
if value == None:
|
||||
self._new[key] = [None]
|
||||
return
|
||||
|
||||
converted_value = value
|
||||
if isinstance(value, bool):
|
||||
if value == True:
|
||||
converted_value = 'TRUE'
|
||||
else:
|
||||
converted_value = 'FALSE'
|
||||
|
||||
self._new[key] = [converted_value.encode('latin-1')]
|
||||
|
||||
def save(self):
|
||||
|
|
@ -76,12 +81,17 @@ class MemberValues(object):
|
|||
action = ldap.MOD_ADD
|
||||
mod_attrs.append((action, '%s' % new_key, new_value ))
|
||||
continue
|
||||
if self._old[new_key][0] != None and new_value == [None]:
|
||||
action = ldap.MOD_DELETE
|
||||
mod_attrs.append((action, '%s' % new_key, []))
|
||||
continue
|
||||
# Set the attribute and wait for the LDAP server to complete.
|
||||
if self._old[new_key][0] != new_value[0]:
|
||||
action = ldap.MOD_REPLACE
|
||||
mod_attrs.append((action, '%s' % new_key, new_value ))
|
||||
continue
|
||||
|
||||
|
||||
print "modattrs: ",mod_attrs
|
||||
result = l.modify_s(dn, mod_attrs)
|
||||
#
|
||||
|
|
|
|||
|
|
@ -146,6 +146,12 @@ class CLabPinForm(forms.Form):
|
|||
help_text=_('Numerical only, 4 to 8 digits'))
|
||||
|
||||
|
||||
class PreferredEmailForm(forms.Form):
|
||||
preferred_email = forms.CharField(max_length=255, required=False,
|
||||
label = _('Preferred e-mail'),
|
||||
help_text=_("Forward my mail to this address."))
|
||||
|
||||
|
||||
class AdminForm(forms.Form):
|
||||
username = forms.ChoiceField(choices=[])
|
||||
password1 = forms.CharField(max_length=255, widget=forms.PasswordInput,
|
||||
|
|
|
|||
|
|
@ -5,35 +5,39 @@ from account.signals import create_profile, delete_profile
|
|||
|
||||
class UserProfile(models.Model):
|
||||
user = models.OneToOneField(User, editable=False)
|
||||
uid = models.CharField("User-ID",
|
||||
uid = models.CharField(verbose_name="User-ID",
|
||||
max_length=8,
|
||||
null=True,
|
||||
default=None)
|
||||
sippin = models.CharField("SIP PIN",
|
||||
sippin = models.CharField(verbose_name="SIP PIN",
|
||||
max_length=255,
|
||||
null=True,
|
||||
blank=True,
|
||||
default=None)
|
||||
gastropin = models.CharField("Gastro PIN",
|
||||
gastropin = models.CharField(verbose_name="Gastro PIN",
|
||||
max_length=255,
|
||||
null=True,
|
||||
blank=True,
|
||||
default=None)
|
||||
rfid = models.CharField("RFID",
|
||||
rfid = models.CharField(verbose_name="RFID",
|
||||
max_length=255,
|
||||
null=True,
|
||||
blank=True,
|
||||
default=None)
|
||||
macaddress = models.CharField("MAC-Address",
|
||||
macaddress = models.CharField(verbose_name="MAC-Address",
|
||||
max_length=255,
|
||||
null=True,
|
||||
blank=True,
|
||||
default=None)
|
||||
clabpin = models.CharField("c-lab PIN",
|
||||
clabpin = models.CharField(verbose_name="c-lab PIN",
|
||||
max_length=255,
|
||||
null=True,
|
||||
blank=True,
|
||||
default=None)
|
||||
preferred_email = models.CharField(verbose_name="preferred e-mail address",
|
||||
max_length=1024,
|
||||
null=True,
|
||||
default=None)
|
||||
is_member = models.BooleanField(default=False, editable=False)
|
||||
is_ldap_admin = models.BooleanField(default=False, editable=False)
|
||||
is_circle_member = models.BooleanField(default=False, editable=False)
|
||||
|
|
|
|||
22
account/templates/preferred_email.html
Normal file
22
account/templates/preferred_email.html
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
{% extends "form_base.html" %}
|
||||
{% load i18n %}
|
||||
{% load crispy_forms_tags %}
|
||||
|
||||
{% block form_title %}{% trans "Preferred e-mail"%}{% endblock %}
|
||||
|
||||
{% block form_description %}
|
||||
<p>{% blocktrans %}The e-mail address that you want your c-base mail forwarded to.{% endblocktrans %}</p>
|
||||
{% endblock %}
|
||||
|
||||
{% block form_fields %}
|
||||
<form action="{% url 'preferred_email' %}" method="post" class="form-horizontal well">
|
||||
{% csrf_token %}
|
||||
{{ form|crispy }}
|
||||
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<button type="submit" class="btn btn-primary">{% trans "Save" %}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{% endblock form_fields %}
|
||||
|
|
@ -12,6 +12,7 @@ urlpatterns = patterns(
|
|||
url(r'^password/$', 'account.views.password', name='password'),
|
||||
url(r'^sippin/$', 'account.views.sippin', name='sippin'),
|
||||
url(r'^clabpin/$', 'account.views.clabpin', name='clabpin'),
|
||||
url(r'^preferred_email/$', 'account.views.preferred_email', name='preferred_email'),
|
||||
url(r'^admin/$', 'account.views.admin', name='admin'),
|
||||
url(r'^memberstatus/$', 'account.views.memberstatus', name='memberstatus'),
|
||||
url(r'^$', 'account.views.home', name="home"),
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ from django.shortcuts import render
|
|||
from django.utils.translation import ugettext as _
|
||||
|
||||
from forms import GastroPinForm, WlanPresenceForm, LoginForm, PasswordForm, \
|
||||
RFIDForm, NRF24Form, SIPPinForm, CLabPinForm, AdminForm
|
||||
RFIDForm, NRF24Form, SIPPinForm, CLabPinForm, AdminForm, PreferredEmailForm
|
||||
from cbase_members import retrieve_member, MemberValues
|
||||
from password_encryption import *
|
||||
|
||||
|
|
@ -226,7 +226,10 @@ def set_ldap_field(request, form_type, field_names, template_name):
|
|||
if form.is_valid():
|
||||
|
||||
for form_field, ldap_field in field_names:
|
||||
member.set(ldap_field, form.cleaned_data[form_field])
|
||||
if form.cleaned_data[form_field] == '':
|
||||
member.set(ldap_field, None)
|
||||
else:
|
||||
member.set(ldap_field, form.cleaned_data[form_field])
|
||||
initial[form_field] = member.get(ldap_field)
|
||||
member.save()
|
||||
new_form = form_type(initial=initial)
|
||||
|
|
@ -256,6 +259,11 @@ def rfid(request):
|
|||
def nrf24(request):
|
||||
return set_ldap_field(request, NRF24Form, [('nrf24', 'nrf24')], 'nrf24.html')
|
||||
|
||||
@login_required
|
||||
def preferred_email(request):
|
||||
return set_ldap_field(request, PreferredEmailForm, [('preferred_email', 'preferredEmail')],
|
||||
'preferred_email.html')
|
||||
|
||||
@login_required
|
||||
def admin(request):
|
||||
admin_member = retrieve_member(request)
|
||||
|
|
|
|||
|
|
@ -161,6 +161,7 @@ AUTH_LDAP_PROFILE_ATTR_MAP = {
|
|||
"rfid": "rfid",
|
||||
"macaddress": "macAddress",
|
||||
"clabpin": "c-labPIN",
|
||||
"preferred_email": "preferredEmail",
|
||||
}
|
||||
|
||||
AUTHENTICATION_BACKENDS = (
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue