mirror of
https://gitlab2.federez.net/re2o/re2o
synced 2024-11-23 03:43:12 +00:00
Details, notamment pour faire plaisir à Mr Kermarec
This commit is contained in:
parent
2cb0e566dc
commit
54d3f2ffdc
4 changed files with 26 additions and 11 deletions
|
@ -12,7 +12,7 @@ https://docs.djangoproject.com/en/1.8/ref/settings/
|
||||||
|
|
||||||
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
||||||
import os
|
import os
|
||||||
from .settings_local import SECRET_KEY, DATABASES, DEBUG, ALLOWED_HOSTS, ASSO_NAME, ASSO_ADDRESS_LINE1, ASSO_ADDRESS_LINE2, ASSO_SIRET, ASSO_EMAIL, ASSO_PHONE, LOGO_PATH, services_urls, REQ_EXPIRE_HRS, REQ_EXPIRE_STR, EMAIL_FROM, SITE_NAME, LDAP_SETTINGS
|
from .settings_local import SECRET_KEY, DATABASES, DEBUG, ALLOWED_HOSTS, ASSO_NAME, ASSO_ADDRESS_LINE1, ASSO_ADDRESS_LINE2, ASSO_SIRET, ASSO_EMAIL, ASSO_PHONE, LOGO_PATH, services_urls, REQ_EXPIRE_HRS, REQ_EXPIRE_STR, EMAIL_FROM, SITE_NAME, LDAP
|
||||||
|
|
||||||
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||||
|
|
||||||
|
@ -129,7 +129,7 @@ STATIC_URL = '/static/'
|
||||||
STATIC_ROOT = os.path.join(BASE_DIR, 'static_files')
|
STATIC_ROOT = os.path.join(BASE_DIR, 'static_files')
|
||||||
|
|
||||||
RIGHTS_LINK = {
|
RIGHTS_LINK = {
|
||||||
'cableur' : ['bureau','infra','bofh','trésorier','bofh'],
|
'cableur' : ['bureau','infra','bofh','trésorier'],
|
||||||
'bofh' : ['bureau','trésorier'],
|
'bofh' : ['bureau','trésorier'],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@ class UserAdmin(admin.ModelAdmin):
|
||||||
|
|
||||||
class LdapUserAdmin(admin.ModelAdmin):
|
class LdapUserAdmin(admin.ModelAdmin):
|
||||||
list_display = ('name','uidNumber','loginShell')
|
list_display = ('name','uidNumber','loginShell')
|
||||||
|
exclude = ('user_password','sambat_nt_password')
|
||||||
search_fields = ('name',)
|
search_fields = ('name',)
|
||||||
|
|
||||||
class LdapUserGroupAdmin(admin.ModelAdmin):
|
class LdapUserGroupAdmin(admin.ModelAdmin):
|
||||||
|
|
|
@ -8,7 +8,7 @@ from django.dispatch import receiver
|
||||||
import ldapdb.models
|
import ldapdb.models
|
||||||
import ldapdb.models.fields
|
import ldapdb.models.fields
|
||||||
|
|
||||||
from re2o.settings import RIGHTS_LINK, REQ_EXPIRE_HRS, LDAP_SETTINGS
|
from re2o.settings import RIGHTS_LINK, REQ_EXPIRE_HRS, LDAP
|
||||||
import re, uuid
|
import re, uuid
|
||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
|
@ -103,7 +103,7 @@ class User(AbstractBaseUser):
|
||||||
pseudo = models.CharField(max_length=32, unique=True, help_text="Doit contenir uniquement des lettres, chiffres, ou tirets", validators=[linux_user_validator])
|
pseudo = models.CharField(max_length=32, unique=True, help_text="Doit contenir uniquement des lettres, chiffres, ou tirets", validators=[linux_user_validator])
|
||||||
email = models.EmailField()
|
email = models.EmailField()
|
||||||
school = models.ForeignKey('School', on_delete=models.PROTECT, null=False, blank=False)
|
school = models.ForeignKey('School', on_delete=models.PROTECT, null=False, blank=False)
|
||||||
shell = models.ForeignKey('ListShell', on_delete=models.PROTECT, null=False, blank=False, default=1)
|
shell = models.ForeignKey('ListShell', on_delete=models.PROTECT, null=True, blank=True)
|
||||||
comment = models.CharField(help_text="Commentaire, promo", max_length=255, blank=True)
|
comment = models.CharField(help_text="Commentaire, promo", max_length=255, blank=True)
|
||||||
room = models.OneToOneField('topologie.Room', on_delete=models.PROTECT, blank=True, null=True)
|
room = models.OneToOneField('topologie.Room', on_delete=models.PROTECT, blank=True, null=True)
|
||||||
pwd_ntlm = models.CharField(max_length=255)
|
pwd_ntlm = models.CharField(max_length=255)
|
||||||
|
@ -237,9 +237,10 @@ class User(AbstractBaseUser):
|
||||||
user_ldap.home_directory = '/home/' + self.pseudo
|
user_ldap.home_directory = '/home/' + self.pseudo
|
||||||
user_ldap.mail = self.email
|
user_ldap.mail = self.email
|
||||||
user_ldap.given_name = str(self.surname).lower() + '_' + str(self.name).lower()[:3]
|
user_ldap.given_name = str(self.surname).lower() + '_' + str(self.name).lower()[:3]
|
||||||
user_ldap.gid = LDAP_SETTINGS['user_gid']
|
user_ldap.gid = LDAP['user_gid']
|
||||||
user_ldap.user_password = self.password
|
user_ldap.user_password = self.password
|
||||||
user_ldap.sambat_nt_password = self.pwd_ntlm
|
user_ldap.sambat_nt_password = self.pwd_ntlm
|
||||||
|
user_ldap.loginShell = self.shell.shell
|
||||||
if access_refresh:
|
if access_refresh:
|
||||||
user_ldap.dialupAccess = str(self.has_access())
|
user_ldap.dialupAccess = str(self.has_access())
|
||||||
if mac_refresh:
|
if mac_refresh:
|
||||||
|
@ -377,7 +378,7 @@ class LdapUser(ldapdb.models.Model):
|
||||||
Class for representing an LDAP user entry.
|
Class for representing an LDAP user entry.
|
||||||
"""
|
"""
|
||||||
# LDAP meta-data
|
# LDAP meta-data
|
||||||
base_dn = LDAP_SETTINGS['base_user_dn']
|
base_dn = LDAP['base_user_dn']
|
||||||
object_classes = ['inetOrgPerson','top','posixAccount','sambaSamAccount','radiusprofile']
|
object_classes = ['inetOrgPerson','top','posixAccount','sambaSamAccount','radiusprofile']
|
||||||
|
|
||||||
# attributes
|
# attributes
|
||||||
|
@ -386,11 +387,11 @@ class LdapUser(ldapdb.models.Model):
|
||||||
uid = ldapdb.models.fields.CharField(db_column='uid', max_length=200)
|
uid = ldapdb.models.fields.CharField(db_column='uid', max_length=200)
|
||||||
uidNumber = ldapdb.models.fields.IntegerField(db_column='uidNumber', unique=True)
|
uidNumber = ldapdb.models.fields.IntegerField(db_column='uidNumber', unique=True)
|
||||||
sn = ldapdb.models.fields.CharField(db_column='sn', max_length=200)
|
sn = ldapdb.models.fields.CharField(db_column='sn', max_length=200)
|
||||||
loginShell = ldapdb.models.fields.CharField(db_column='loginShell', max_length=200, default="/bin/zsh")
|
loginShell = ldapdb.models.fields.CharField(db_column='loginShell', max_length=200, blank=True, null=True)
|
||||||
mail = ldapdb.models.fields.CharField(db_column='mail', max_length=200)
|
mail = ldapdb.models.fields.CharField(db_column='mail', max_length=200)
|
||||||
given_name = ldapdb.models.fields.CharField(db_column='givenName', max_length=200)
|
given_name = ldapdb.models.fields.CharField(db_column='givenName', max_length=200)
|
||||||
home_directory = ldapdb.models.fields.CharField(db_column='homeDirectory', max_length=200)
|
home_directory = ldapdb.models.fields.CharField(db_column='homeDirectory', max_length=200)
|
||||||
display_name = ldapdb.models.fields.CharField(db_column='displayName', max_length=200)
|
display_name = ldapdb.models.fields.CharField(db_column='displayName', max_length=200, blank=True, null=True)
|
||||||
dialupAccess = ldapdb.models.fields.CharField(db_column='dialupAccess')
|
dialupAccess = ldapdb.models.fields.CharField(db_column='dialupAccess')
|
||||||
sambaSID = ldapdb.models.fields.IntegerField(db_column='sambaSID', unique=True)
|
sambaSID = ldapdb.models.fields.IntegerField(db_column='sambaSID', unique=True)
|
||||||
user_password = ldapdb.models.fields.CharField(db_column='userPassword', max_length=200, blank=True, null=True)
|
user_password = ldapdb.models.fields.CharField(db_column='userPassword', max_length=200, blank=True, null=True)
|
||||||
|
@ -414,7 +415,7 @@ class LdapUserGroup(ldapdb.models.Model):
|
||||||
Class for representing an LDAP user entry.
|
Class for representing an LDAP user entry.
|
||||||
"""
|
"""
|
||||||
# LDAP meta-data
|
# LDAP meta-data
|
||||||
base_dn = LDAP_SETTINGS['base_usergroup_dn']
|
base_dn = LDAP['base_usergroup_dn']
|
||||||
object_classes = ['posixGroup']
|
object_classes = ['posixGroup']
|
||||||
|
|
||||||
# attributes
|
# attributes
|
||||||
|
@ -448,6 +449,19 @@ class BaseInfoForm(ModelForm):
|
||||||
'room',
|
'room',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
class EditInfoForm(BaseInfoForm):
|
||||||
|
class Meta(BaseInfoForm.Meta):
|
||||||
|
fields = [
|
||||||
|
'name',
|
||||||
|
'surname',
|
||||||
|
'pseudo',
|
||||||
|
'email',
|
||||||
|
'school',
|
||||||
|
'comment',
|
||||||
|
'room',
|
||||||
|
'shell',
|
||||||
|
]
|
||||||
|
|
||||||
class InfoForm(BaseInfoForm):
|
class InfoForm(BaseInfoForm):
|
||||||
force = forms.BooleanField(label="Forcer le déménagement ?", initial=False, required=False)
|
force = forms.BooleanField(label="Forcer le déménagement ?", initial=False, required=False)
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ from django.db import transaction
|
||||||
from reversion import revisions as reversion
|
from reversion import revisions as reversion
|
||||||
from users.models import User, Right, Ban, Whitelist, School, ListRight, Request
|
from users.models import User, Right, Ban, Whitelist, School, ListRight, Request
|
||||||
from users.models import DelRightForm, BanForm, WhitelistForm, DelSchoolForm, DelListRightForm, NewListRightForm
|
from users.models import DelRightForm, BanForm, WhitelistForm, DelSchoolForm, DelListRightForm, NewListRightForm
|
||||||
from users.models import InfoForm, BaseInfoForm, StateForm, RightForm, SchoolForm, ListRightForm
|
from users.models import EditInfoForm, InfoForm, BaseInfoForm, StateForm, RightForm, SchoolForm, ListRightForm
|
||||||
from cotisations.models import Facture
|
from cotisations.models import Facture
|
||||||
from machines.models import Machine, Interface
|
from machines.models import Machine, Interface
|
||||||
from users.forms import PassForm, ResetPasswordForm
|
from users.forms import PassForm, ResetPasswordForm
|
||||||
|
@ -109,7 +109,7 @@ def edit_info(request, userid):
|
||||||
if not request.user.has_perms(('cableur',)):
|
if not request.user.has_perms(('cableur',)):
|
||||||
user = BaseInfoForm(request.POST or None, instance=user)
|
user = BaseInfoForm(request.POST or None, instance=user)
|
||||||
else:
|
else:
|
||||||
user = InfoForm(request.POST or None, instance=user)
|
user = EditInfoForm(request.POST or None, instance=user)
|
||||||
if user.is_valid():
|
if user.is_valid():
|
||||||
with transaction.atomic(), reversion.create_revision():
|
with transaction.atomic(), reversion.create_revision():
|
||||||
user.save()
|
user.save()
|
||||||
|
|
Loading…
Reference in a new issue