POC Campus Condorcet : corrections sur l'application d'inscription
This commit is contained in:
parent
15acf06d9d
commit
d2b9a94c93
|
@ -1,7 +1,9 @@
|
|||
from django.utils.translation import ugettext_lazy as _
|
||||
from django import forms
|
||||
from .utils import ldap_get_unites, ldap_get_etablissements, sso_attributes, \
|
||||
sso_select_attributes, sso_tupled_attributes, sso_strict_readonly_attributes
|
||||
sso_select_attributes, sso_tupled_attributes, \
|
||||
sso_strict_readonly_attributes, sso_needed_description_attributes, \
|
||||
ldap_get_description_etablissements, ldap_get_description_unites
|
||||
|
||||
|
||||
AFFILIATION_CHOICES = (
|
||||
|
@ -86,12 +88,34 @@ class RegistrationForm(forms.Form):
|
|||
self.fields[field].widget.attrs['readonly'] = True
|
||||
|
||||
if kwargs['initial'].get('yet_member', '') is False:
|
||||
extra_affiliation = (('affiliate', _('Affiliate')),)
|
||||
extra_affiliation = (('affiliate', 'affiliate'),)
|
||||
else:
|
||||
extra_affiliation = (('member', _('Member')),)
|
||||
extra_affiliation = (('member', 'member'),)
|
||||
self.fields['ep_affiliation'].choices = extra_affiliation
|
||||
self.fields['ep_affiliation'].widget.attrs['readonly'] = True
|
||||
|
||||
code_etablissement = kwargs['initial'].get('s_etablissement', '')
|
||||
if code_etablissement != '':
|
||||
self.fields['s_etablissement_description'].initial = ldap_get_description_etablissements(code_etablissement)
|
||||
self.fields['s_etablissement_description'].widget.attrs['readonly'] = True
|
||||
code_unite = kwargs['initial'].get('s_entite_affectation_principale', '')
|
||||
if code_unite != '':
|
||||
self.fields['s_entite_affectation_principale_description'].initial = ldap_get_description_unites(code_unite)
|
||||
#User shouldn't be able to define this field
|
||||
self.fields['s_entite_affectation_principale_description'].widget.attrs['readonly'] = True
|
||||
|
||||
code_hote_etablissement = kwargs['initial'].get('hote_etablissement', '')
|
||||
if code_hote_etablissement != '':
|
||||
self.fields['hote_etablissement'].choices = ((code_hote_etablissement, ldap_get_description_etablissements(code_hote_etablissement)),)
|
||||
self.fields['hote_etablissement'].widget.attrs['readonly'] = True
|
||||
self.fields['hote_unite'].widget.attrs['readonly'] = True
|
||||
code_hote_unite = kwargs['initial'].get('hote_unite', '')
|
||||
if code_hote_unite != '':
|
||||
self.fields['hote_unite'].choices = ((code_hote_unite, ldap_get_description_unites(code_hote_unite)),)
|
||||
#User shouldn't be able to define this field
|
||||
self.fields['hote_unite'].widget.attrs['readonly'] = True
|
||||
self.fields['hote_etablissement'].widget.attrs['readonly'] = True
|
||||
|
||||
nom = forms.CharField(max_length=100, label=_("Last name"))
|
||||
prenom = forms.CharField(max_length=100, label=_("First name"))
|
||||
email = forms.CharField(max_length=100, label=_("Email address"))
|
||||
|
@ -117,11 +141,15 @@ class RegistrationForm(forms.Form):
|
|||
# supannEtablissement
|
||||
s_etablissement = forms.CharField(
|
||||
required=False, max_length=100, label=_("Institution"))
|
||||
invite_unite = forms.CharField(
|
||||
required=False, label=_("Research entity or unit"), initial='')
|
||||
s_etablissement_description = forms.CharField(
|
||||
required=False, max_length=100, label=_("Institution"))
|
||||
#invite_unite = forms.CharField(
|
||||
# required=False, label=_("Research entity or unit"), initial='')
|
||||
# supannEntiteAffectationPrincipale
|
||||
s_entite_affectation_principale = forms.CharField(
|
||||
required=False, max_length=100, label=_("Assignment unit"))
|
||||
required=False, label=_("Unit"), initial='')
|
||||
s_entite_affectation_principale_description = forms.CharField(
|
||||
required=False, label=_("Unit"), initial='')
|
||||
# supannEntiteAffectation
|
||||
s_entite_affectation = forms.CharField(
|
||||
required=False, max_length=100, label=_("Assignment units"))
|
||||
|
@ -139,6 +167,12 @@ class RegistrationForm(forms.Form):
|
|||
hote_unite = forms.ChoiceField(
|
||||
required=False, choices=ldap_get_unites(),
|
||||
label=_("Research entity or unit"), initial=None)
|
||||
hote_etablissement_description = forms.ChoiceField(
|
||||
required=False, choices=ldap_get_etablissements(),
|
||||
label=_("Institution"), initial=None)
|
||||
hote_unite_description = forms.ChoiceField(
|
||||
required=False, choices=ldap_get_unites(),
|
||||
label=_("Research entity or unit"), initial=None)
|
||||
hote_commentaire = forms.CharField(
|
||||
widget=forms.Textarea(), max_length=999,
|
||||
label=_("Comments to your host"), required=False)
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('saml', '0004_supannuser_invite_unite'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='supannuser',
|
||||
name='invite_unite',
|
||||
),
|
||||
]
|
|
@ -20,7 +20,7 @@ class SupAnnUser(AbstractUser):
|
|||
s_entite_affectation = models.CharField(max_length=100, default="")
|
||||
s_emp_corps = models.CharField(max_length=100, default="")
|
||||
s_etablissement = models.CharField(max_length=100, default="")
|
||||
invite_unite = models.CharField(max_length=100, default="")
|
||||
#invite_unite = models.CharField(max_length=100, default="")
|
||||
s_liste_rouge = models.BooleanField(default=False)
|
||||
|
||||
REQUIRED_FIELDS = []
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import ldap
|
||||
import json
|
||||
import logging
|
||||
import unicodedata
|
||||
|
||||
from urllib2 import build_opener, urlopen, HTTPHandler, Request, HTTPError
|
||||
from random import randint
|
||||
|
@ -19,7 +20,7 @@ sso_attributes = [
|
|||
'prenom', 'nom', 'email', 'ep_principal_name', 'ep_primary_affiliation',
|
||||
'ep_affiliation', 's_etablissement', 's_entite_affectation_principale',
|
||||
's_entite_affectation', 's_emp_corps', 'hote_unite', 'hote_etablissement',
|
||||
's_liste_rouge', 'hote_commentaire', 'invite_unite']
|
||||
's_liste_rouge', 'hote_commentaire']
|
||||
|
||||
sso_select_attributes = [
|
||||
'ep_primary_affiliation', 'hote_unite', 'hote_etablissement']
|
||||
|
@ -28,7 +29,10 @@ sso_tupled_attributes = {
|
|||
's_emp_corps': 'EMP_CORPS_CHOICES'
|
||||
}
|
||||
|
||||
sso_strict_readonly_attributes = ['invite_unite']
|
||||
sso_needed_description_attributes = [
|
||||
's_etablissement', 'ep_primary_affiliation']
|
||||
|
||||
sso_strict_readonly_attributes = ['s_entite_affectation_principale']
|
||||
|
||||
supann_host_role_attribute = 'supannRoleGenerique'
|
||||
supann_host_role_value = '{SUPANN}R10' # 'Responsable de mission'
|
||||
|
@ -38,7 +42,7 @@ def sorting_key(tuple_input):
|
|||
if type(tuple_input[1]) is unicode:
|
||||
return tuple_input[1].encode('utf-8')
|
||||
else:
|
||||
return unicode(tuple_input[1], 'utf-8')
|
||||
return unicodedata.normalize('NFD', unicode(tuple_input[1], 'utf-8'))
|
||||
|
||||
def render_message(request, message):
|
||||
"""Renders a simple message to a base template"""
|
||||
|
@ -81,17 +85,32 @@ def ldap_init():
|
|||
def ldap_get_etablissements():
|
||||
"""Used to fill the choices in hote_etablissemnt form ChoiceField."""
|
||||
return ldap_get_attribute_from_subtree_nodes(
|
||||
structures_base, '(objectClass=supannOrg)', 'ou')
|
||||
structures_base, '(objectClass=supannOrg)', 'supannEtablissement')
|
||||
|
||||
def ldap_get_code_etablissements():
|
||||
return ldap_get_attribute_from_subtree_nodes(
|
||||
structures_base, '(objectClass=supannOrg)', 'supannEtablissement')
|
||||
|
||||
def ldap_get_description_etablissements(code):
|
||||
etablissements = ldap_get_attribute_from_subtree_nodes(
|
||||
structures_base, '(supannEtablissement=%s)'%code, 'description')
|
||||
if len(etablissements) == 2:
|
||||
return etablissements[-1][0]
|
||||
else:
|
||||
return ''
|
||||
|
||||
def ldap_get_unites():
|
||||
"""Used to fill the choices in hote_unite form ChoiceField."""
|
||||
return ldap_get_attribute_from_subtree_nodes(
|
||||
structures_base, '(supannTypeEntite=*)', 'ou')
|
||||
structures_base, '(!(objectClass=supannOrg))', 'supannCodeEntite')
|
||||
|
||||
def ldap_get_description_unites(code):
|
||||
unites = ldap_get_attribute_from_subtree_nodes(
|
||||
structures_base, '(supannCodeEntite=%s)'%code, 'description')
|
||||
if len(unites) == 2:
|
||||
return unites[-1][0]
|
||||
else:
|
||||
return ''
|
||||
|
||||
def ldap_get_affectations():
|
||||
"""
|
||||
|
@ -121,9 +140,8 @@ def ldap_get_attribute_from_subtree_nodes(subtree_base, filter, attribute):
|
|||
attribute_list = node_data.get(attribute)
|
||||
if attribute_list:
|
||||
attribute_value = attribute_list[0] # No need for multi-valued attributes
|
||||
# at the moment
|
||||
description = node_data.get('description', [_('No description')])[0]
|
||||
choices.append((attribute_value, description))
|
||||
description = node_data.get('description', [_('No description')])[0]
|
||||
choices.append((attribute_value, description))
|
||||
|
||||
choices.sort(key=sorting_key)
|
||||
return choices
|
||||
|
|
Reference in New Issue