phone: use mellon username as a phone line (#9598)

This commit is contained in:
Thomas NOËL 2016-02-04 02:54:51 +01:00
parent 201ad7ed04
commit e6536f2091
3 changed files with 44 additions and 3 deletions

View File

@ -0,0 +1,32 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('phone', '0003_auto_20151103_1202'),
]
operations = [
migrations.AlterField(
model_name='phonecall',
name='callee',
field=models.CharField(max_length=80, verbose_name='Callee'),
preserve_default=True,
),
migrations.AlterField(
model_name='phonecall',
name='caller',
field=models.CharField(max_length=80, verbose_name='Caller'),
preserve_default=True,
),
migrations.AlterField(
model_name='phoneline',
name='callee',
field=models.CharField(unique=True, max_length=80, verbose_name='Callee'),
preserve_default=True,
),
]

View File

@ -26,8 +26,8 @@ class PhoneCall(models.Model):
class Meta:
verbose_name = _('Phone Call')
caller = models.CharField(_('Caller'), max_length=20)
callee = models.CharField(_('Callee'), max_length=20)
caller = models.CharField(_('Caller'), max_length=80)
callee = models.CharField(_('Callee'), max_length=80)
start = models.DateTimeField(_('Start'), auto_now_add=True)
stop = models.DateTimeField(_('Stop'), null=True, blank=True)
data = models.TextField(_('Data'), blank=True)
@ -78,7 +78,7 @@ class PhoneCall(models.Model):
return '%02d:%02d' % (seconds//60, seconds%60)
class PhoneLine(models.Model):
callee = models.CharField(_('Callee'), unique=True, max_length=20)
callee = models.CharField(_('Callee'), unique=True, max_length=80)
users = models.ManyToManyField('auth.User', verbose_name=_('User'))
@classmethod

View File

@ -47,6 +47,15 @@ class Home(object):
class PhoneZone(TemplateView):
template_name = 'welco/phone_home.html'
def get(self, request, *args, **kwargs):
username = request.session.get('mellon_session', {}).get('username')
if username:
# user is from SSO, username is a phone line (callee), create a link to it
username = username[0].split('@', 1)[0][:80] # remove realm
if username:
PhoneLine.take(callee=username, user=self.request.user)
return super(PhoneZone, self).get(request, *args, **kwargs)
def get_context_data(self, **kwargs):
context = super(PhoneZone, self).get_context_data(**kwargs)
context['source_type'] = ContentType.objects.get_for_model(PhoneCall)