notifications: add an origin attribute to notifications (#17106)
This commit is contained in:
parent
934f310fb2
commit
27f9a5e7dd
|
@ -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')
|
||||
|
|
|
@ -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),
|
||||
),
|
||||
]
|
|
@ -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):
|
||||
|
|
|
@ -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'
|
||||
|
||||
|
|
Loading…
Reference in New Issue