|
|
|
@ -406,8 +406,7 @@ class User(FieldPermissionModelMixin, AbstractBaseUser, PermissionsMixin): |
|
|
|
""" Renvoie le solde d'un user. Vérifie que l'option solde est |
|
|
|
activé, retourne 0 sinon. |
|
|
|
Somme les crédits de solde et retire les débit payés par solde""" |
|
|
|
options, _created = OptionalUser.objects.get_or_create() |
|
|
|
user_solde = options.user_solde |
|
|
|
user_solde = OptionalUser.get_cached_value('user_solde') |
|
|
|
if user_solde: |
|
|
|
solde_objects = Paiement.objects.filter(moyen='Solde') |
|
|
|
somme_debit = Vente.objects.filter( |
|
|
|
@ -531,24 +530,22 @@ class User(FieldPermissionModelMixin, AbstractBaseUser, PermissionsMixin): |
|
|
|
def notif_inscription(self): |
|
|
|
""" Prend en argument un objet user, envoie un mail de bienvenue """ |
|
|
|
template = loader.get_template('users/email_welcome') |
|
|
|
assooptions, _created = AssoOption.objects.get_or_create() |
|
|
|
mailmessageoptions, _created = MailMessageOption\ |
|
|
|
.objects.get_or_create() |
|
|
|
general_options, _created = GeneralOption.objects.get_or_create() |
|
|
|
context = Context({ |
|
|
|
'nom': self.get_full_name(), |
|
|
|
'asso_name': assooptions.name, |
|
|
|
'asso_email': assooptions.contact, |
|
|
|
'asso_name': AssoOption.get_cached_value('name'), |
|
|
|
'asso_email': AssoOption.get_cached_value('contact'), |
|
|
|
'welcome_mail_fr': mailmessageoptions.welcome_mail_fr, |
|
|
|
'welcome_mail_en': mailmessageoptions.welcome_mail_en, |
|
|
|
'pseudo': self.pseudo, |
|
|
|
}) |
|
|
|
send_mail( |
|
|
|
'Bienvenue au %(name)s / Welcome to %(name)s' % { |
|
|
|
'name': assooptions.name |
|
|
|
'name': AssoOption.get_cached_value('name') |
|
|
|
}, |
|
|
|
'', |
|
|
|
general_options.email_from, |
|
|
|
GeneralOption.get_cached_value('email_from'), |
|
|
|
[self.email], |
|
|
|
html_message=template.render(context) |
|
|
|
) |
|
|
|
@ -562,22 +559,20 @@ class User(FieldPermissionModelMixin, AbstractBaseUser, PermissionsMixin): |
|
|
|
req.user = self |
|
|
|
req.save() |
|
|
|
template = loader.get_template('users/email_passwd_request') |
|
|
|
options, _created = AssoOption.objects.get_or_create() |
|
|
|
general_options, _created = GeneralOption.objects.get_or_create() |
|
|
|
context = { |
|
|
|
'name': req.user.get_full_name(), |
|
|
|
'asso': options.name, |
|
|
|
'asso_mail': options.contact, |
|
|
|
'site_name': general_options.site_name, |
|
|
|
'asso': AssoOption.get_cached_value('name'), |
|
|
|
'asso_mail': AssoOption.get_cached_value('contact'), |
|
|
|
'site_name': GeneralOption.get_cached_value('site_name'), |
|
|
|
'url': request.build_absolute_uri( |
|
|
|
reverse('users:process', kwargs={'token': req.token})), |
|
|
|
'expire_in': str(general_options.req_expire_hrs) + ' heures', |
|
|
|
'expire_in': str(GeneralOption.get_cached_value('req_expire_hrs')) + ' heures', |
|
|
|
} |
|
|
|
send_mail( |
|
|
|
'Changement de mot de passe du %(name)s / Password\ |
|
|
|
renewal for %(name)s' % {'name': options.name}, |
|
|
|
renewal for %(name)s' % {'name': AssoOption.get_cached_value('name')}, |
|
|
|
template.render(context), |
|
|
|
general_options.email_from, |
|
|
|
GeneralOption.get_cached_value('email_from'), |
|
|
|
[req.user.email], |
|
|
|
fail_silently=False |
|
|
|
) |
|
|
|
@ -587,8 +582,7 @@ class User(FieldPermissionModelMixin, AbstractBaseUser, PermissionsMixin): |
|
|
|
""" Fonction appellée par freeradius. Enregistre la mac pour |
|
|
|
une machine inconnue sur le compte de l'user""" |
|
|
|
all_interfaces = self.user_interfaces(active=False) |
|
|
|
options, _created = OptionalMachine.objects.get_or_create() |
|
|
|
if all_interfaces.count() > options.max_lambdauser_interfaces: |
|
|
|
if all_interfaces.count() > OptionalMachine.get_cached_value('max_lambdauser_interfaces'): |
|
|
|
return False, "Maximum de machines enregistrees atteinte" |
|
|
|
if not nas_type: |
|
|
|
return False, "Re2o ne sait pas à quel machinetype affecter cette\ |
|
|
|
@ -621,20 +615,18 @@ class User(FieldPermissionModelMixin, AbstractBaseUser, PermissionsMixin): |
|
|
|
"""Notification mail lorsque une machine est automatiquement |
|
|
|
ajoutée par le radius""" |
|
|
|
template = loader.get_template('users/email_auto_newmachine') |
|
|
|
assooptions, _created = AssoOption.objects.get_or_create() |
|
|
|
general_options, _created = GeneralOption.objects.get_or_create() |
|
|
|
context = Context({ |
|
|
|
'nom': self.get_full_name(), |
|
|
|
'mac_address' : interface.mac_address, |
|
|
|
'asso_name': assooptions.name, |
|
|
|
'asso_name': AssoOption.get_cached_value('name'), |
|
|
|
'interface_name' : interface.domain, |
|
|
|
'asso_email': assooptions.contact, |
|
|
|
'asso_email': AssoOption.get_cached_value('contact'), |
|
|
|
'pseudo': self.pseudo, |
|
|
|
}) |
|
|
|
send_mail( |
|
|
|
"Ajout automatique d'une machine / New machine autoregistered", |
|
|
|
'', |
|
|
|
general_options.email_from, |
|
|
|
GeneralOption.get_cached_value('email_from'), |
|
|
|
[self.email], |
|
|
|
html_message=template.render(context) |
|
|
|
) |
|
|
|
@ -683,11 +675,10 @@ class User(FieldPermissionModelMixin, AbstractBaseUser, PermissionsMixin): |
|
|
|
:return: a message and a boolean which is True if the user can create |
|
|
|
an user or if the `options.all_can_create` is set. |
|
|
|
""" |
|
|
|
options, _created = OptionalUser.objects.get_or_create() |
|
|
|
if(not user_request.is_authenticated and not options.self_adhesion): |
|
|
|
if(not user_request.is_authenticated and not OptionalUser.get_cached_value('self_adhesion')): |
|
|
|
return False, None |
|
|
|
else: |
|
|
|
if(options.all_can_create or options.self_adhesion): |
|
|
|
if(OptionalUser.get_cached_value('all_can_create') or OptionalUser.get_cached_value('self_adhesion')): |
|
|
|
return True, None |
|
|
|
else: |
|
|
|
return user_request.has_perm('users.add_user'), u"Vous n'avez pas le\ |
|
|
|
@ -710,7 +701,6 @@ class User(FieldPermissionModelMixin, AbstractBaseUser, PermissionsMixin): |
|
|
|
else: |
|
|
|
return False, u"Vous n'avez pas le droit d'éditer ce club" |
|
|
|
else: |
|
|
|
options, _created = AssoOption.objects.get_or_create() |
|
|
|
if self == user_request: |
|
|
|
return True, None |
|
|
|
elif user_request.has_perm('users.change_all_users'): |
|
|
|
@ -718,7 +708,7 @@ class User(FieldPermissionModelMixin, AbstractBaseUser, PermissionsMixin): |
|
|
|
elif user_request.has_perm('users.change_user'): |
|
|
|
if self.groups.filter(listright__critical=True): |
|
|
|
return False, u"Utilisateurs avec droits critiques, ne peut etre édité" |
|
|
|
elif self == options.utilisateur_asso: |
|
|
|
elif self == AssoOption.get_cached_value('utilisateur_asso'): |
|
|
|
return False, u"Impossible d'éditer l'utilisateur asso sans droit change_all_users" |
|
|
|
else: |
|
|
|
return True, None |
|
|
|
@ -1265,19 +1255,17 @@ class Ban(models.Model): |
|
|
|
|
|
|
|
def notif_ban(self): |
|
|
|
""" Prend en argument un objet ban, envoie un mail de notification """ |
|
|
|
general_options, _created = GeneralOption.objects.get_or_create() |
|
|
|
template = loader.get_template('users/email_ban_notif') |
|
|
|
options, _created = AssoOption.objects.get_or_create() |
|
|
|
context = Context({ |
|
|
|
'name': self.user.get_full_name(), |
|
|
|
'raison': self.raison, |
|
|
|
'date_end': self.date_end, |
|
|
|
'asso_name': options.name, |
|
|
|
'asso_name': AssoOption.get_cached_value('name'), |
|
|
|
}) |
|
|
|
send_mail( |
|
|
|
'Deconnexion disciplinaire', |
|
|
|
template.render(context), |
|
|
|
general_options.email_from, |
|
|
|
GeneralOption.get_cached_value('email_from'), |
|
|
|
[self.user.email], |
|
|
|
fail_silently=False |
|
|
|
) |
|
|
|
@ -1499,9 +1487,8 @@ class Request(models.Model): |
|
|
|
|
|
|
|
def save(self): |
|
|
|
if not self.expires_at: |
|
|
|
options, _created = GeneralOption.objects.get_or_create() |
|
|
|
self.expires_at = timezone.now() \ |
|
|
|
+ datetime.timedelta(hours=options.req_expire_hrs) |
|
|
|
+ datetime.timedelta(hours=GeneralOption.get_cached_value('req_expire_hrs')) |
|
|
|
if not self.token: |
|
|
|
self.token = str(uuid.uuid4()).replace('-', '') # remove hyphens |
|
|
|
super(Request, self).save() |
|
|
|
|