예제 #1
0
    def test_new_discussion_with_extras(self):
        user = self.login()
        dataset = Dataset.objects.create(title='Test dataset',
                                         extras={'key': 'value'})

        with 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)

        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.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)
예제 #2
0
    def test_new_discussion(self):
        self.app.config['USE_METRICS'] = True
        user = self.login()
        dataset = Dataset.objects.create(title='Test dataset')

        with assert_emit(on_new_discussion):
            response = self.post(
                url_for('api.discussions'), {
                    'title': 'test title',
                    'comment': 'bla bla',
                    'subject': {
                        'class': 'Dataset',
                        'id': dataset.id,
                    }
                })
        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')

        message = discussion.discussion[0]
        self.assertEqual(message.content, 'bla bla')
        self.assertEqual(message.posted_by, user)
        self.assertIsNotNone(message.posted_on)
예제 #3
0
 def mark_as_deleted(self):
     copied_user = copy(self)
     self.email = '{}@deleted'.format(self.id)
     self.password = None
     self.active = False
     self.first_name = 'DELETED'
     self.last_name = 'DELETED'
     self.avatar = None
     self.avatar_url = None
     self.website = None
     self.about = None
     self.deleted = datetime.now()
     self.save()
     for organization in self.organizations:
         organization.members = [
             member for member in organization.members
             if member.user != self
         ]
         organization.save()
     for discussion in Discussion.objects(discussion__posted_by=self):
         for message in discussion.discussion:
             if message.posted_by == self:
                 message.content = 'DELETED'
         discussion.save()
     Follow.objects(follower=self).delete()
     Follow.objects(following=self).delete()
     mail.send(_('Account deletion'), copied_user, 'account_deleted')
예제 #4
0
 def get(self, org):
     '''List organization discussions'''
     reuses = Reuse.objects(organization=org).only('id')
     datasets = Dataset.objects(organization=org).only('id')
     subjects = list(reuses) + list(datasets)
     qs = Discussion.objects(subject__in=subjects).order_by('-created')
     return list(qs)
예제 #5
0
    def test_new_discussion(self):
        user = self.login()
        dataset = Dataset.objects.create(title='Test dataset')

        with self.assert_emit(on_new_discussion):
            response = self.post(url_for('api.discussions'), {
                'title': 'test title',
                'comment': 'bla bla',
                'subject': dataset.id
            })
        self.assertStatus(response, 201)

        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')

        message = discussion.discussion[0]
        self.assertEqual(message.content, 'bla bla')
        self.assertEqual(message.posted_by, user)
        self.assertIsNotNone(message.posted_on)
예제 #6
0
파일: models.py 프로젝트: odtvince/udata
 def mark_as_deleted(self):
     copied_user = copy(self)
     self.email = '{}@deleted'.format(self.id)
     self.password = None
     self.active = False
     self.first_name = 'DELETED'
     self.last_name = 'DELETED'
     self.avatar = None
     self.avatar_url = None
     self.website = None
     self.about = None
     self.extras = None
     self.deleted = datetime.now()
     self.save()
     for organization in self.organizations:
         organization.members = [member
                                 for member in organization.members
                                 if member.user != self]
         organization.save()
     for discussion in Discussion.objects(discussion__posted_by=self):
         for message in discussion.discussion:
             if message.posted_by == self:
                 message.content = 'DELETED'
         discussion.save()
     Follow.objects(follower=self).delete()
     Follow.objects(following=self).delete()
     mail.send(_('Account deletion'), copied_user, 'account_deleted')
예제 #7
0
    def test_new_discussion(self):
        user = self.login()
        dataset = Dataset.objects.create(title='Test dataset')

        response = self.post(url_for('api.discussions'), {
            'title': 'test title',
            'comment': 'bla bla',
            'subject': dataset.id
        })
        self.assertStatus(response, 201)

        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')

        message = discussion.discussion[0]
        self.assertEqual(message.content, 'bla bla')
        self.assertEqual(message.posted_by, user)
        self.assertIsNotNone(message.posted_on)
예제 #8
0
파일: api.py 프로젝트: opendatateam/udata
 def get(self, org):
     '''List organization discussions'''
     reuses = Reuse.objects(organization=org).only('id')
     datasets = Dataset.objects(organization=org).only('id')
     subjects = list(reuses) + list(datasets)
     qs = Discussion.objects(subject__in=subjects).order_by('-created')
     return list(qs)
예제 #9
0
파일: api.py 프로젝트: javanna2000/udata
 def get(self, org):
     """List organization discussions"""
     reuses_ids = [r.id for r in Reuse.objects(organization=org).only("id")]
     datasets_ids = [d.id for d in Dataset.objects(organization=org).only("id")]
     ids = reuses_ids + datasets_ids
     qs = Discussion.objects(subject__in=ids).order_by("-created")
     return list(qs)
예제 #10
0
    def test_new_discussion_with_extras(self):
        user = self.login()
        dataset = Dataset.objects.create(title='Test dataset',
                                         extras={'key': 'value'})

        with 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)

        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.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)
예제 #11
0
 def get(self, org):
     '''List organization discussions'''
     reuses_ids = [r.id for r in Reuse.objects(organization=org).only('id')]
     datasets_ids = [d.id
                     for d in Dataset.objects(organization=org).only('id')]
     ids = reuses_ids + datasets_ids
     qs = Discussion.objects(subject__in=ids).order_by('-created')
     return list(qs)
예제 #12
0
    def test_delete_discussion(self):
        owner = self.login(AdminFactory())
        user = UserFactory()
        dataset = Dataset.objects.create(title='Test dataset', owner=owner)
        message = Message(content='bla bla', posted_by=user)
        discussion = Discussion.objects.create(subject=dataset,
                                               user=user,
                                               title='test discussion',
                                               discussion=[message])
        on_new_discussion.send(discussion)  # Updating metrics.
        self.assertEqual(Discussion.objects(subject=dataset).count(), 1)

        with self.assert_emit(on_discussion_deleted):
            response = self.delete(url_for('api.discussion', id=discussion.id))
        self.assertStatus(response, 204)

        dataset.reload()
        self.assertEqual(dataset.metrics['discussions'], 0)
        self.assertEqual(Discussion.objects(subject=dataset).count(), 0)
예제 #13
0
    def test_delete_discussion(self):
        self.app.config['USE_METRICS'] = True
        owner = self.login(AdminFactory())
        user = UserFactory()
        dataset = Dataset.objects.create(title='Test dataset', owner=owner)
        message = Message(content='bla bla', posted_by=user)
        discussion = Discussion.objects.create(
            subject=dataset,
            user=user,
            title='test discussion',
            discussion=[message]
        )
        on_new_discussion.send(discussion)  # Updating metrics.
        self.assertEqual(Discussion.objects(subject=dataset).count(), 1)

        with assert_emit(on_discussion_deleted):
            response = self.delete(url_for('api.discussion', id=discussion.id))
        self.assertStatus(response, 204)

        dataset.reload()
        self.assertEqual(dataset.metrics['discussions'], 0)
        self.assertEqual(Discussion.objects(subject=dataset).count(), 0)