Commit 37e768f5 authored by Daniel STAN's avatar Daniel STAN

[voip] commentaires et fonction delete

parent f1aca93d
......@@ -21,13 +21,28 @@ class Profile(models.Model):
('both', u'Nom et numéro de téléphone'),
]
""" Propriétaire du profil. Devrait être un compte Cr@ns """
user = models.OneToOneField(User, primary_key=True)
""" Mot de passe. Hashé en md5 avec un sel
(md5($num_asterisk:asterisk:$pass)) """
password = models.CharField(u"Mot de passe", max_length=32, null=False, blank=False)
""" Autoriser ou non la publication dans l'annuaire """
published = models.BooleanField(u"Publication dans l'annuaire")
""" Choix du format pour l'identification de l'appelant """
caller_id = models.CharField(u"Affichage de l'appelant", max_length=9, choices=CALLER_IDS)
""" Numéro de téléphone, on utilise un varchar afin de pouvoir placer des 0
initiaux et des éventuels #"""
num = models.CharField(u"Numéro de téléphone", max_length=10, null=False, blank=False)
def set_user(self, new_user):
""" Défini l'utilisateur propriétaire du profil. Cette fonction calcule
également le numéro de téléphone correspondant, à partir de la base LDAP.
IMPORTANT: changer d'utilisateur (donc de numéro de téléphone) casse
le mot de passe, qui devra être redéfini."""
self.user = new_user
try:
dn = conn_pool.CONNS[new_user.username].dn.split(',')[0]
......@@ -43,17 +58,26 @@ class Profile(models.Model):
self.num = sip_ext
def set_password(self, new_pass):
""" Définition du mot de passe.
IMPORTANT: le mot de passe est stocké hashé dans la base de donnée.
Il faut donc avoir préalablement défini le numéro de téléphone (et
donc l'utilisateur) avant d'appeler cette fonction.
"""
if self.num == '':
raise Exception('Set user/num first')
self.password = hashlib.md5("%s:asterisk:%s" % (self.num, new_pass)).hexdigest()
def __unicode__(self):
return self.user.username
return u'%s (%s)' % (self.user.username, self.num)
def asterisk_voicemail_config(self):
""" Génération de la ligne de conf asterisk activant la boîte vocale"""
return u"%(num)s => %(mail_pass)s,%(full_name)s,%(mail)s,,attach=%(attach)s|delete=%(delete)s" % {
'num':self.num,'mail_pass':4567,'full_name':self.user.get_full_name(),
'mail':self.user.username,'attach':'yes','delete':'no'}
def asterisk_config(self):
""" Génération du paragraphe de conf asterisk definissant l'utilisateur"""
return u""";%(uid)s
[%(num)s]
type=friend
......@@ -82,6 +106,7 @@ mailbox=%(num)s@666
def get_caller_id(self):
""" Calcule le texte descriptif de l'appelant """
if self.caller_id == 'full_name':
return self.user.get_full_name()
elif self.caller_id == 'number':
......
......@@ -5,4 +5,5 @@ import views
urlpatterns = patterns('',
url('^$', views.index, name="index"),
url('^edit/$', views.edit, name="edit"),
url('^delete/$', views.delete, name="delete"),
)
......@@ -5,6 +5,9 @@ from django.template import RequestContext
from models import Profile
from forms import ProfileForm
from django.views.generic.edit import DeleteView
from django.shortcuts import get_object_or_404
@login_required
def index(request):
......@@ -31,3 +34,10 @@ def edit(request):
form = ProfileForm(instance=profile)
return django.shortcuts.render(request, "voip/edit.html", {'form': form})
@login_required
def delete(request):
obj = get_object_or_404(Profile, user__exact=request.user)
if request.method == 'POST':
obj.delete()
return django.shortcuts.redirect('apps.accueil.views.view')
return django.shortcuts.render(request, "voip/delete.html")
{% extends "template.html" %}
{% block content %}
<h3>Suppression du compte SIP</h3>
<p>
Êtes-vous sûr de vouloir effacer votre compte téléphonique ?
<a href="{% url voip:index %}">Retour</a>
</p>
<form method="post">
{% csrf_token %}
<input type="submit" value="Oui" />
</form>
{% endblock %}
......@@ -11,6 +11,7 @@
<dt>Présentation de l'appelant</dt><dd>{{ profile.get_caller_id_display }}
({{ profile.get_caller_id }})</dd>
</dl>
<a href="{% url voip:edit %}">Éditer</a>
<a href="{% url voip:edit %}">Éditer</a>,
<a href="{% url voip:delete %}">Effacer</a> mon compte
</p>
{% endblock %}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment