notifications: add an origin attribute to notifications (#17106)

This commit is contained in:
Frédéric Péters 2017-06-22 13:07:00 +02:00
parent 934f310fb2
commit 27f9a5e7dd
4 changed files with 26 additions and 1 deletions

View File

@ -26,6 +26,7 @@ class NotificationSerializer(serializers.Serializer):
id = serializers.SlugField(required=False, allow_null=True)
body = serializers.CharField(required=False, allow_blank=False)
url = serializers.URLField(required=False, allow_blank=True)
origin = serializers.CharField(required=False, allow_blank=True)
start_timestamp = serializers.DateTimeField(required=False, allow_null=True)
end_timestamp = serializers.DateTimeField(required=False, allow_null=True)
duration = serializers.IntegerField(required=False, allow_null=True, min_value=0)
@ -48,6 +49,7 @@ class Add(GenericAPIView):
id=data.get('id'),
body=data.get('body'),
url=data.get('url'),
origin=data.get('origin'),
start_timestamp=data.get('start_timestamp'),
end_timestamp=data.get('end_timestamp'),
duration=data.get('duration')

View File

@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('notifications', '0002_notificationscell_last_update_timestamp'),
]
operations = [
migrations.AddField(
model_name='notification',
name='origin',
field=models.CharField(max_length=100, verbose_name='Origin', blank=True),
),
]

View File

@ -43,6 +43,7 @@ class Notification(models.Model):
summary = models.CharField(_('Label'), max_length=140)
body = models.TextField(_('Body'), default='', blank=True)
url = models.URLField(_('URL'), default='', blank=True)
origin = models.CharField(_('Origin'), max_length=100, blank=True)
start_timestamp = models.DateTimeField(_('Start date and time'))
end_timestamp = models.DateTimeField(_('End date and time'))
acked = models.BooleanField(_('Acked'), default=False)
@ -58,7 +59,7 @@ class Notification(models.Model):
return self.external_id or str(self.pk)
@classmethod
def notify(cls, user, summary, id=None, body=None, url=None,
def notify(cls, user, summary, id=None, body=None, url=None, origin=None,
start_timestamp=None, duration=None, end_timestamp=None):
'''
Create a new notification:
@ -77,6 +78,7 @@ class Notification(models.Model):
notification.summary = summary
notification.body = body or ''
notification.url = url or ''
notification.origin = origin or ''
notification.start_timestamp = start_timestamp or now()
if duration:
if not isinstance(duration, timedelta):

View File

@ -153,6 +153,7 @@ def test_notification_ws(user):
'summary': 'bar',
'url': 'http://www.example.net',
'body': 'foobar',
'origin': 'blah',
'start_timestamp': '2016-11-11T11:11',
'end_timestamp': '2016-12-12T12:12',
}
@ -160,6 +161,7 @@ def test_notification_ws(user):
assert result.summary == notif['summary']
assert result.url == notif['url']
assert result.body == notif['body']
assert result.origin == notif['origin']
assert result.start_timestamp.isoformat()[:19] == '2016-11-11T11:11:00'
assert result.end_timestamp.isoformat()[:19] == '2016-12-12T12:12:00'