Skip to content

Commit

Permalink
Add extras fields to discussion
Browse files Browse the repository at this point in the history
We need it for transport.data.gouv.fr
It'll be only accessible through API for now
  • Loading branch information
l-vincent-l committed Jan 10, 2018
1 parent 42ca18d commit a26a0ee
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 1 deletion.
2 changes: 2 additions & 0 deletions udata/core/discussions/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
'discussion': fields.Nested(message_fields),
'url': fields.UrlFor('api.discussion',
description='The discussion API URI'),
'extras': fields.Raw(description='Extra attributes as key-value pairs'),
})

start_discussion_fields = api.model('DiscussionStart', {
Expand All @@ -54,6 +55,7 @@
'subject': fields.Nested(api.model_reference,
description='The discussion target object',
required=True),
'extras': fields.Raw(description='Extras attributes as key-value pairs'),
})

comment_discussion_fields = api.model('DiscussionResponse', {
Expand Down
3 changes: 2 additions & 1 deletion udata/core/discussions/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,11 @@

class DiscussionCreateForm(ModelForm):
model_class = Discussion

title = fields.StringField(_('Title'), [validators.required()])
comment = fields.StringField(_('Comment'), [validators.required()])
subject = fields.ModelField(_('Subject'), [validators.required()])
extras = fields.ExtrasField(extras=Discussion.extras)


class DiscussionCommentForm(Form):
Expand Down
1 change: 1 addition & 0 deletions udata/core/discussions/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ class Discussion(db.Document):
created = db.DateTimeField(default=datetime.now, required=True)
closed = db.DateTimeField()
closed_by = db.ReferenceField('User')
extras = db.ExtrasField()

meta = {
'indexes': [
Expand Down
38 changes: 38 additions & 0 deletions udata/tests/test_discussions.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,44 @@ def test_new_discussion_missing_subject(self):
})
self.assertStatus(response, 400)

def test_new_discussion(self):
self.app.config['USE_METRICS'] = True
user = self.login()
dataset = Dataset.objects.create(title='Test dataset',
extras={'key': 'value'})

with self.assert_emit(on_new_discussion):
response = self.post(url_for('api.discussions'), {
'title': 'test title',
'comment': 'bla bla',
'subject': {
'class': 'Dataset',
'id': dataset.id,
},
'extras': {'key': 'value'}
})
self.assert201(response)

dataset.reload()
self.assertEqual(dataset.metrics['discussions'], 1)

discussions = Discussion.objects(subject=dataset)
self.assertEqual(len(discussions), 1)

discussion = discussions[0]
self.assertEqual(discussion.user, user)
self.assertEqual(len(discussion.discussion), 1)
self.assertIsNotNone(discussion.created)
self.assertIsNone(discussion.closed)
self.assertIsNone(discussion.closed_by)
self.assertEqual(discussion.title, 'test title')
self.assertEqual(discussion.extras, {u'key': u'value'})

message = discussion.discussion[0]
self.assertEqual(message.content, 'bla bla')
self.assertEqual(message.posted_by, user)
self.assertIsNotNone(message.posted_on)

def test_list_discussions(self):
dataset = Dataset.objects.create(title='Test dataset')
open_discussions = []
Expand Down

0 comments on commit a26a0ee

Please sign in to comment.