Début de la mise en place du VLAN gratuit

darcs-hash:20080903204822-ffbb2-f1ba3162718ce45385b2b160c149e2cb8740cefe.gz
This commit is contained in:
Nicolas Dandrimont 2008-09-03 22:48:22 +02:00
parent 6f6527d2c1
commit 04f0caf4be

View file

@ -290,10 +290,11 @@ class CransLdap:
['etudes', 'paiement', 'carteEtudiant', 'aid', 'postalAddress', ['etudes', 'paiement', 'carteEtudiant', 'aid', 'postalAddress',
'historique', 'blacklist', 'droits', 'uidNumber', 'uid', 'info', 'historique', 'blacklist', 'droits', 'uidNumber', 'uid', 'info',
'solde', 'controle', 'contourneGreylist', 'rewriteMailHeaders', 'solde', 'controle', 'contourneGreylist', 'rewriteMailHeaders',
'ablacklist', 'homepageAlias', 'mailInvalide', 'charteMA'], \ 'ablacklist', 'homepageAlias', 'mailInvalide', 'charteMA',
'adherentPayant'], \
'club': \ 'club': \
['cid', 'responsable', 'paiement', 'historique', 'blacklist', ['cid', 'responsable', 'paiement', 'historique', 'blacklist',
'mailAlias', 'info', 'controle', 'ablacklist'], \ 'mailAlias', 'info', 'controle', 'ablacklist', 'imprimeurClub'], \
'machineFixe': non_auto_search_machines_champs, 'machineFixe': non_auto_search_machines_champs,
'machineCrans': non_auto_search_machines_champs + ['prise'], 'machineCrans': non_auto_search_machines_champs + ['prise'],
'borneWifi': non_auto_search_machines_champs + \ 'borneWifi': non_auto_search_machines_champs + \
@ -2022,6 +2023,19 @@ class Adherent(BaseProprietaire):
# renvoie la valeur trouvée dans la base # renvoie la valeur trouvée dans la base
return bool(self._data.get('charteMA', [])) return bool(self._data.get('charteMA', []))
def adherentPayant(self, valeur = None):
"""
L'adhérent paie sa cotisation (a droit au WiFi, à un compte Crans, ... True par défaut
"""
if isinstance(valeur, bool):
self._set('adherentPayant', valeur and [] or ['FALSE'])
else if valeur is not None:
raise ValueError, u"adherentPayant prend un booléen comme argument"
# bool d'une liste non vide est true, on inverse donc (la base ne peut contenir que FALSE)
return not bool(self._data.get('adherentPayant', []))
def supprimer_compte(self): def supprimer_compte(self):
""" """
Supprime le compte sur zamok. Penser à définir l'adresse mail après. Supprime le compte sur zamok. Penser à définir l'adresse mail après.
@ -2108,6 +2122,9 @@ class Adherent(BaseProprietaire):
l, login = preattr(login) l, login = preattr(login)
login = login.lower() login = login.lower()
if login and not self.adherentPayant():
raise ValueError(u"L'adhérent ne paie pas de cotisation, il n'a pas droit à un compte.")
if 'posixAccount' in self._data['objectClass']: if 'posixAccount' in self._data['objectClass']:
if login != self._data['uid']: if login != self._data['uid']:
# A déja un compte # A déja un compte
@ -2768,11 +2785,15 @@ class Machine(BaseClasseCrans):
net = [ '0.0.0.0/0' ] net = [ '0.0.0.0/0' ]
pool_ip = lister_ip_dispo('all') pool_ip = lister_ip_dispo('all')
else: else:
try: if self.proprietaire().adherentPayant():
net = config.NETs[self.proprietaire().chbre()[0].lower()] try:
pool_ip = lister_ip_dispo(self.proprietaire().chbre()[0].lower()) net = config.NETs[self.proprietaire().chbre()[0].lower()]
except: pool_ip = lister_ip_dispo(self.proprietaire().chbre()[0].lower())
raise RuntimeError(u'Impossible de trouver le réseau où placer la machine.') except:
raise RuntimeError(u'Impossible de trouver le réseau où placer la machine.')
else:
net = config.NETs["gratuit"]
pool_ip = lister_ip_dispo("gratuit")
if ip == '<automatique>': if ip == '<automatique>':
# On va prendre choisir une IP au hasard dans le pool des IP dispo # On va prendre choisir une IP au hasard dans le pool des IP dispo