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
|
return value
|
||||||
|
|
||||||
def set(self, key, value):
|
def set(self, key, value):
|
||||||
|
if value == None:
|
||||||
|
self._new[key] = [None]
|
||||||
|
return
|
||||||
|
|
||||||
converted_value = value
|
converted_value = value
|
||||||
if isinstance(value, bool):
|
if isinstance(value, bool):
|
||||||
if value == True:
|
if value == True:
|
||||||
converted_value = 'TRUE'
|
converted_value = 'TRUE'
|
||||||
else:
|
else:
|
||||||
converted_value = 'FALSE'
|
converted_value = 'FALSE'
|
||||||
|
|
||||||
self._new[key] = [converted_value.encode('latin-1')]
|
self._new[key] = [converted_value.encode('latin-1')]
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
|
|
@ -76,12 +81,17 @@ class MemberValues(object):
|
||||||
action = ldap.MOD_ADD
|
action = ldap.MOD_ADD
|
||||||
mod_attrs.append((action, '%s' % new_key, new_value ))
|
mod_attrs.append((action, '%s' % new_key, new_value ))
|
||||||
continue
|
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.
|
# Set the attribute and wait for the LDAP server to complete.
|
||||||
if self._old[new_key][0] != new_value[0]:
|
if self._old[new_key][0] != new_value[0]:
|
||||||
action = ldap.MOD_REPLACE
|
action = ldap.MOD_REPLACE
|
||||||
mod_attrs.append((action, '%s' % new_key, new_value ))
|
mod_attrs.append((action, '%s' % new_key, new_value ))
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
|
||||||
print "modattrs: ",mod_attrs
|
print "modattrs: ",mod_attrs
|
||||||
result = l.modify_s(dn, 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'))
|
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):
|
class AdminForm(forms.Form):
|
||||||
username = forms.ChoiceField(choices=[])
|
username = forms.ChoiceField(choices=[])
|
||||||
password1 = forms.CharField(max_length=255, widget=forms.PasswordInput,
|
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):
|
class UserProfile(models.Model):
|
||||||
user = models.OneToOneField(User, editable=False)
|
user = models.OneToOneField(User, editable=False)
|
||||||
uid = models.CharField("User-ID",
|
uid = models.CharField(verbose_name="User-ID",
|
||||||
max_length=8,
|
max_length=8,
|
||||||
null=True,
|
null=True,
|
||||||
default=None)
|
default=None)
|
||||||
sippin = models.CharField("SIP PIN",
|
sippin = models.CharField(verbose_name="SIP PIN",
|
||||||
max_length=255,
|
max_length=255,
|
||||||
null=True,
|
null=True,
|
||||||
blank=True,
|
blank=True,
|
||||||
default=None)
|
default=None)
|
||||||
gastropin = models.CharField("Gastro PIN",
|
gastropin = models.CharField(verbose_name="Gastro PIN",
|
||||||
max_length=255,
|
max_length=255,
|
||||||
null=True,
|
null=True,
|
||||||
blank=True,
|
blank=True,
|
||||||
default=None)
|
default=None)
|
||||||
rfid = models.CharField("RFID",
|
rfid = models.CharField(verbose_name="RFID",
|
||||||
max_length=255,
|
max_length=255,
|
||||||
null=True,
|
null=True,
|
||||||
blank=True,
|
blank=True,
|
||||||
default=None)
|
default=None)
|
||||||
macaddress = models.CharField("MAC-Address",
|
macaddress = models.CharField(verbose_name="MAC-Address",
|
||||||
max_length=255,
|
max_length=255,
|
||||||
null=True,
|
null=True,
|
||||||
blank=True,
|
blank=True,
|
||||||
default=None)
|
default=None)
|
||||||
clabpin = models.CharField("c-lab PIN",
|
clabpin = models.CharField(verbose_name="c-lab PIN",
|
||||||
max_length=255,
|
max_length=255,
|
||||||
null=True,
|
null=True,
|
||||||
blank=True,
|
blank=True,
|
||||||
default=None)
|
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_member = models.BooleanField(default=False, editable=False)
|
||||||
is_ldap_admin = models.BooleanField(default=False, editable=False)
|
is_ldap_admin = models.BooleanField(default=False, editable=False)
|
||||||
is_circle_member = 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'^password/$', 'account.views.password', name='password'),
|
||||||
url(r'^sippin/$', 'account.views.sippin', name='sippin'),
|
url(r'^sippin/$', 'account.views.sippin', name='sippin'),
|
||||||
url(r'^clabpin/$', 'account.views.clabpin', name='clabpin'),
|
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'^admin/$', 'account.views.admin', name='admin'),
|
||||||
url(r'^memberstatus/$', 'account.views.memberstatus', name='memberstatus'),
|
url(r'^memberstatus/$', 'account.views.memberstatus', name='memberstatus'),
|
||||||
url(r'^$', 'account.views.home', name="home"),
|
url(r'^$', 'account.views.home', name="home"),
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ from django.shortcuts import render
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import ugettext as _
|
||||||
|
|
||||||
from forms import GastroPinForm, WlanPresenceForm, LoginForm, PasswordForm, \
|
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 cbase_members import retrieve_member, MemberValues
|
||||||
from password_encryption import *
|
from password_encryption import *
|
||||||
|
|
||||||
|
|
@ -226,7 +226,10 @@ def set_ldap_field(request, form_type, field_names, template_name):
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
|
|
||||||
for form_field, ldap_field in field_names:
|
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)
|
initial[form_field] = member.get(ldap_field)
|
||||||
member.save()
|
member.save()
|
||||||
new_form = form_type(initial=initial)
|
new_form = form_type(initial=initial)
|
||||||
|
|
@ -256,6 +259,11 @@ def rfid(request):
|
||||||
def nrf24(request):
|
def nrf24(request):
|
||||||
return set_ldap_field(request, NRF24Form, [('nrf24', 'nrf24')], 'nrf24.html')
|
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
|
@login_required
|
||||||
def admin(request):
|
def admin(request):
|
||||||
admin_member = retrieve_member(request)
|
admin_member = retrieve_member(request)
|
||||||
|
|
|
||||||
|
|
@ -161,6 +161,7 @@ AUTH_LDAP_PROFILE_ATTR_MAP = {
|
||||||
"rfid": "rfid",
|
"rfid": "rfid",
|
||||||
"macaddress": "macAddress",
|
"macaddress": "macAddress",
|
||||||
"clabpin": "c-labPIN",
|
"clabpin": "c-labPIN",
|
||||||
|
"preferred_email": "preferredEmail",
|
||||||
}
|
}
|
||||||
|
|
||||||
AUTHENTICATION_BACKENDS = (
|
AUTHENTICATION_BACKENDS = (
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue