Beispiel #1
0
    def setUp(self):
        super(TestMarkAsRead, self).setUp()

        self.center = NotificationCenter()
        self.test_user = create(
            Builder('watcher').having(actorid=TEST_USER_ID))
        self.resource_a = create(
            Builder('resource').oguid('fd:123').watchers([self.test_user]))

        with freeze(pytz.UTC.localize(datetime(2014, 5, 7, 12, 30))):
            self.activity_1 = self.center.add_activity(
                Oguid('fd', '123'), 'task-added', {
                    'en': 'Kennzahlen 2014 erfassen'
                }, {
                    'en': 'Task added'
                }, {
                    'en': 'Task bla added by Hugo'
                }, 'hugo.boss', {
                    'en': None
                }).get('activity')

            self.activity_2 = self.center.add_activity(
                Oguid('fd', '123'), 'task-transition-open-in-progress', {
                    'en': 'Kennzahlen 2014 erfassen'
                }, {
                    'en': 'Task accepted'
                }, {
                    'en': 'Task bla accepted'
                }, 'hugo.boss', {
                    'en': None
                }).get('activity')

            self.notifications = self.center.get_users_notifications(
                TEST_USER_ID)
Beispiel #2
0
    def setUp(self):
        super(TestNotificationHandling, self).setUp()

        self.center = NotificationCenter()

        self.peter = create(Builder('ogds_user').id('peter'))
        self.peter = create(Builder('watcher').having(actorid='peter'))
        self.hugo = create(Builder('ogds_user').id('hugo'))
        self.hugo = create(Builder('watcher').having(actorid='hugo'))

        self.resource_a = create(
            Builder('resource').oguid('fd:123').watchers(
                [self.hugo, self.peter]))
        self.resource_b = create(
            Builder('resource').oguid('fd:456').watchers([self.hugo]))
        self.resource_c = create(
            Builder('resource').oguid('fd:789').watchers([self.peter]))

        self.activity_1 = self.center.add_activity(
            Oguid('fd', '123'), 'task-added', {
                'en': 'Kennzahlen 2014 erfassen'
            }, {
                'en': 'Task added'
            }, {
                'en': 'Task bla added by Peter'
            }, 'hugo.boss', {
                'en': None
            }).get('activity')
        self.activity_2 = self.center.add_activity(
            Oguid('fd', '123'), 'task-transition-open-in-progress', {
                'en': 'Kennzahlen 2015 erfassen'
            }, {
                'en': 'Task accepted'
            }, {
                'en': 'Task bla accepted by Peter'
            }, 'peter.mueller', {
                'en': None
            }).get('activity')

        self.activity_3 = self.center.add_activity(
            Oguid('fd', '456'), 'task-added', {
                'en': 'Besprechung Gesuch'
            }, {
                'en': 'Task added'
            }, {
                'en': 'Task for added by Peter'
            }, 'peter.mueller', {
                'en': None
            }).get('activity')

        self.activity_4 = self.center.add_activity(
            Oguid('fd', '789'), 'task-added', {
                'en': 'Vorbereitung Besprechung'
            }, {
                'en': 'Task added'
            }, {
                'en': 'Task bla accepted by Franz'
            }, 'franz.meier', {
                'en': None
            }).get('activity')
    def test_check_for_notification_default(self):
        setting = create(Builder('notification_default_setting')
                         .having(kind='task-added',
                                 mail_notification=False))
        setting.set_mail_notification_roles(
            [WATCHER_ROLE, TASK_RESPONSIBLE_ROLE])

        self.center.add_activity(
            Oguid('fd', '123'),
            'task-added',
            {'en': 'Kennzahlen 2014 erfassen'},
            {'en': 'Task added'},
            {'en': 'Task bla accepted by Peter'},
            'hugo.boss',
            {'en': None})

        self.assertEquals(0, len(self.dispatcher.notified))

        setting.mail_notification = True
        self.center.add_activity(
            Oguid('fd', '123'),
            'task-added',
            {'en': 'Kennzahlen 2014 erfassen'},
            {'en': 'Task added'},
            {'en': 'Task bla accepted by Peter'},
            'hugo.boss',
            {'en': None})

        self.assertEquals(2, len(self.dispatcher.notified))
    def test_fetch_return_resource_by_means_of_oguid(self):
        resource_a = create(Builder('resource').oguid('fd:123'))
        resource_b = create(Builder('resource').oguid('fd:456'))

        self.assertEquals(resource_a,
                          self.center.fetch_resource(Oguid('fd', '123')))
        self.assertEquals(resource_b,
                          self.center.fetch_resource(Oguid('fd', '456')))
    def test_adding(self):
        resource = self.center.add_resource(Oguid('fd', '123'))

        self.assertEquals(1, len(Resource.query.all()))
        resource = Resource.query.first()
        self.assertEquals(Oguid('fd', '123'), resource.oguid)
        self.assertEquals('fd', resource.admin_unit_id)
        self.assertEquals(123, resource.int_id)
    def test_adding_watcher_twice_to_resource_is_ignored(self):
        peter = create(Builder('watcher').having(actorid='peter'))
        resource = create(Builder('resource').oguid('fd:123'))

        self.center.add_watcher_to_resource(Oguid('fd', '123'), 'peter')
        self.center.add_watcher_to_resource(Oguid('fd', '123'), 'peter')

        self.assertEquals([peter], list(resource.watchers))
Beispiel #7
0
    def test_add_resource_if_not_exists(self):
        self.center.add_activity(Oguid('fd', '123'), 'task_added',
                                 {'en': 'Kennzahlen 2014 erfassen'},
                                 {'en': 'Task added'},
                                 {'en': 'Task bla added by Hugo'}, 'hugo.boss',
                                 {'en': None})

        resource = self.center.fetch_resource(Oguid('fd', '123'))
        self.assertEquals('fd', resource.admin_unit_id)
        self.assertEquals(123, resource.int_id)
Beispiel #8
0
    def setUp(self):
        super(TestMyNotifications, self).setUp()

        setting = NotificationDefault.query.filter_by(kind='task-added').one()
        setting.badge_notification_roles = [
            WATCHER_ROLE,
        ]
        setting = NotificationDefault.query.filter_by(
            kind='task-transition-open-in-progress').one()
        setting.badge_notification_roles = [
            WATCHER_ROLE,
        ]

        self.center = NotificationCenter(dispatchers=[BadgeIconDispatcher()])

        self.test_watcher = create(
            Builder('watcher').having(actorid=self.regular_user.getId()))

        self.resource_a = create(
            Builder('resource').oguid('fd:123').watchers([self.test_watcher]))
        self.resource_b = create(
            Builder('resource').oguid('fd:456').watchers([self.test_watcher]))

        self.activity_1 = self.center.add_activity(
            Oguid('fd', '123'), u'task-added', {
                'de': u'Kennzahlen 2014 \xfcbertragen'
            }, {
                'de': u'Aufgabe hinzugef\xfcgt'
            }, {
                'de': u'Neue Aufgabe hinzugef\xfcgt durch  B\xf6ss'
            }, self.dossier_responsible.getId(), {
                'de': None
            }).get('activity')
        self.activity_2 = self.center.add_activity(
            Oguid('fd', '123'), u'task-transition-open-in-progress', {
                'de': u'Kennzahlen 2014 \xfcbertragen'
            }, {
                'de': u'Aufgabe akzeptiert'
            }, {
                'de': u'Aufgabe akzeptiert durch Hugo B\xf6ss'
            }, self.secretariat_user.getId(), {
                'de': None
            }).get('activity')
        self.activity_3 = self.center.add_activity(
            Oguid('fd', '456'), u'task-added', {
                'de': u'Kennzahlen 2014 \xfcbertragen'
            }, {
                'de': u'Aufgabe hinzugef\xfcgt'
            }, {
                'de': u'Neue Aufgabe hinzugef\xfcgt durch Peter M\xfcller'
            }, self.dossier_responsible.getId(), {
                'de': None
            }).get('activity')
Beispiel #9
0
    def test_get_watchers_returns_a_list_of_resource_watchers(self):
        peter = create(Builder('watcher').having(actorid='peter'))
        hugo = create(Builder('watcher').having(actorid='hugo'))
        fritz = create(Builder('watcher').having(actorid='fritz'))

        resource_1 = create(Builder('resource')
                            .oguid('fd:123').watchers([hugo, fritz]))
        resource_2 = create(Builder('resource')
                            .oguid('fd:456').watchers([peter]))

        self.assertEquals([hugo, fritz], self.center.get_watchers(Oguid('fd', '123')))
        self.assertEquals([peter],
                          self.center.get_watchers(Oguid('fd', '456')))
Beispiel #10
0
    def test_comparison(self):
        self.assertEqual(Oguid('foo', 2),
                         Oguid('foo', 2))
        self.assertEqual('foo:2', Oguid('foo', 2))

        self.assertNotEqual(None, Oguid('foo', 2))
        self.assertNotEqual(Oguid('foo', 3), Oguid('foo', 2))
        self.assertNotEqual(Oguid('bar', 2), Oguid('foo', 2))
Beispiel #11
0
    def migrate_proposal_fields_to_plone_objects(self, sql_proposal):
        oguid = Oguid(sql_proposal.admin_unit_id, sql_proposal.int_id)
        proposal = oguid.resolve_object()
        for field_name in PROPOSAL_FIELDS:
            setattr(proposal, field_name, getattr(sql_proposal, field_name))

        submitted_oguid = Oguid(sql_proposal.submitted_admin_unit_id,
                                sql_proposal.submitted_int_id)
        submitted_proposal = submitted_oguid.resolve_object()
        if not submitted_proposal:
            return

        for field_name in SUBMITTED_PROPOSAL_FIELDS:
            setattr(submitted_proposal, field_name,
                    getattr(sql_proposal, field_name))
Beispiel #12
0
    def test_oguid_url_different_admin_unit(self):
        self.login(self.regular_user)

        oguid = Oguid('foo', 1234)
        self.assertEqual(
            'http://nohost/plone/@@resolve_oguid?oguid=foo:1234',
            oguid.get_url())
    def test_add_watcher_to_resource_creates_watcher_when_not_exitst(self):
        resource = create(Builder('resource').oguid('fd:123'))

        self.center.add_watcher_to_resource(Oguid('fd', '123'), 'peter')

        watcher = list(resource.watchers)[0]
        self.assertEquals('peter', watcher.actorid)
    def test_creates_notifications_for_each_resource_watcher(self):
        peter = create(Builder('watcher').having(actorid='peter'))
        hugo = create(Builder('watcher').having(actorid='hugo'))

        resource_a = create(Builder('resource').oguid('fd:123')
                            .watchers([hugo, peter]))

        activity = self.center.add_activity(
            Oguid('fd', '123'),
            'TASK_ADDED',
            {'en': 'Kennzahlen 2014 erfassen'},
            {'en': 'Task bla added'},
            {'en': 'Task bla added by Hugo'},
            'hugo.boss',
            {'en': None}).get('activity')

        notification = Notification.query.by_user('peter').first()
        self.assertEquals(activity, notification.activity)
        self.assertEquals(resource_a, notification.activity.resource)
        self.assertFalse(notification.is_read)

        notification = Notification.query.by_user('hugo').first()
        self.assertEquals(activity, notification.activity)
        self.assertEquals(resource_a, notification.activity.resource)
        self.assertFalse(notification.is_read)
    def test_add_watcher_to_resource_creates_resource_when_not_exitst(self):
        peter = create(Builder('watcher').having(actorid='peter'))

        self.center.add_watcher_to_resource(Oguid('fd', '123'), 'peter')

        resource = peter.resources[0]
        self.assertEquals('fd:123', resource.oguid)
    def setUp(self):
        super(TestMyNotifications, self).setUp()

        create(Builder('ogds_user').having(userid=u'peter.mueller',
                                           firstname=u'Peter',
                                           lastname=u'M\xfcller'))
        create(Builder('ogds_user').having(userid=u'hugo.boss',
                                           firstname=u'Hugo',
                                           lastname=u'B\xf6ss'))

        self.center = NotificationCenter()
        self.test_user = create(Builder('watcher')
                                .having(actorid=TEST_USER_ID))

        self.resource_a = create(Builder('resource')
                                 .oguid('fd:123')
                                 .watchers([self.test_user]))
        self.resource_b = create(Builder('resource')
                                 .oguid('fd:456')
                                 .watchers([self.test_user]))

        self.activity_1 = self.center.add_activity(
            Oguid('fd', '123'),
            u'task-added',
            {'de': u'Kennzahlen 2014 \xfcbertragen'},
            {'de': u'Aufgabe hinzugef\xfcgt'},
            {'de': u'Neue Aufgabe hinzugef\xfcgt durch Hugo B\xf6ss'},
            'hugo.boss',
            {'de': None}).get('activity')
        self.activity_2 = self.center.add_activity(
            Oguid('fd', '123'),
            u'task-transition-open-in-progress',
            {'de': u'Kennzahlen 2014 \xfcbertragen'},
            {'de': u'Aufgabe akzeptiert'},
            {'de': u'Aufgabe akzeptiert durch Hugo B\xf6ss'},
            'peter.mueller',
            {'de': None}).get('activity')
        self.activity_3 = self.center.add_activity(
            Oguid('fd', '456'),
            u'task-added',
            {'de': u'Kennzahlen 2014 \xfcbertragen'},
            {'de': u'Aufgabe hinzugef\xfcgt'},
            {'de': u'Neue Aufgabe hinzugef\xfcgt durch Peter M\xfcller'},
            'peter.mueller',
            {'de': None}).get('activity')
        transaction.commit()
Beispiel #17
0
    def test_if_setting_for_kind_does_not_exist_dispatcher_is_ignored(self):
        self.center.add_activity(Oguid('fd', '123'), 'task-added',
                                 {'en': 'Kennzahlen 2014 erfassen'},
                                 {'en': 'Task added'},
                                 {'en': 'Task bla accepted by Peter'},
                                 'hugo.boss', {'en': None})

        self.assertEquals(0, len(self.dispatcher.notified))
Beispiel #18
0
    def test_proposal_by_oguid_returns_proposal_with_string_param(self):
        proposal = create(Builder('proposal_model').having(
            int_id=1, admin_unit_id='unita'))
        create(Builder('proposal_model').having(
            int_id=2, admin_unit_id='unitb'))
        create(Builder('proposal_model').having(
            int_id=1, admin_unit_id='unitb'))

        self.assertEqual(proposal,
                         Proposal.query.get_by_oguid(Oguid('unita', 1)))
    def test_get_watchers_returns_a_list_of_resource_watchers(self):
        peter = create(Builder('watcher').having(actorid='peter'))
        hugo = create(Builder('watcher').having(actorid='hugo'))
        fritz = create(Builder('watcher').having(actorid='fritz'))

        resource_1 = create(Builder('resource')
                            .oguid('fd:123').watchers([hugo, fritz]))
        resource_2 = create(Builder('resource')
                            .oguid('fd:456').watchers([peter]))

        # A weakref gets reaped unless we keep a reference to the resources.
        # https://stackoverflow.com/questions/30044069/stale-association-proxy-parent-object-has-gone-out-of-scope-with-flask-sqlalc
        # So to squelch pyflakes we do trivial asserts on them here.
        self.assertEquals(123, resource_1.int_id)
        self.assertEquals(456, resource_2.int_id)

        self.assertEquals((hugo, fritz), self.center.get_watchers(Oguid('fd', '123')))
        self.assertEquals((peter,),
                          self.center.get_watchers(Oguid('fd', '456')))
    def test_remove_watcher_from_resource_will_remove_subscription_if_no_roles_left(self):
        resource = create(Builder('resource').oguid('fd:123'))
        watcher = create(Builder('watcher').having(actorid=u'peter'))
        create(Builder('subscription')
               .having(resource=resource, watcher=watcher, role=WATCHER_ROLE))

        self.center.remove_watcher_from_resource(
            Oguid('fd', '123'), 'peter', WATCHER_ROLE)

        self.assertEquals([], resource.watchers)
    def test_adding(self):
        person = create(Builder('person').having(
            firstname=u'peter', lastname=u'hans'))
        organization = create(Builder('organization').named('ACME'))
        orgrole = create(Builder('org_role').having(
            person=person, organization=organization, function=u'cheffe'))

        create(Builder('org_role_participation').having(
            org_role=orgrole,
            dossier_oguid=Oguid('foo', 1234)))
Beispiel #22
0
    def test_remove_watcher_from_resource(self):
        peter = create(Builder('watcher').having(actorid='peter'))
        hugo = create(Builder('watcher').having(actorid='hugo'))
        resource = create(
            Builder('resource').oguid('fd:123').watchers([hugo, peter]))

        self.center.remove_watcher_from_resource(Oguid('fd', '123'), 'peter',
                                                 WATCHER_ROLE)

        self.assertEquals([hugo], resource.watchers)
Beispiel #23
0
    def sync_title_to_meeting_dossier(self, meeting):
        dossier_oguid = Oguid(meeting.dossier_admin_unit_id,
                              meeting.dossier_int_id)
        dossier = dossier_oguid.resolve_object()

        if not dossier:
            return

        dossier.title = meeting.title
        dossier.reindexObject(idxs=['Title', 'SearchableText'])
    def test_copy_participation(self):
        peter = create(Builder('ogds_user').id('peter').as_contact_adapter())
        participation = create(Builder('ogds_user_participation').having(
            ogds_user=peter,
            dossier_oguid=Oguid('foo', 1234)))

        copied_participation = participation.copy()
        self.assertEqual(peter, copied_participation.ogds_user)
        self.assertEqual('foo', copied_participation.dossier_admin_unit_id)
        self.assertEqual(1234, copied_participation.dossier_int_id)
        self.assertEqual(0, len(copied_participation.roles))
    def test_participation_can_have_multiple_roles(self):
        participation = create(Builder('contact_participation').having(
            contact=self.contact,
            dossier_oguid=Oguid('foo', 1234)))
        role1 = create(Builder('participation_role').having(
            participation=participation,
            role=u'Sch\xf6ff'))
        role2 = create(Builder('participation_role').having(
            participation=participation,
            role=u'Hanswutscht'))

        self.assertEquals([role1, role2], participation.roles)
    def test_remove_watchers_from_resource_by_role_does_not_affect_other_resources(self):
        hugo = create(Builder('watcher').having(actorid='hugo'))

        create(Builder('resource').oguid('fd:123').watchers([hugo]))
        create(Builder('resource').oguid('fd:234').watchers([hugo]))

        self.assertEqual(2, Subscription.query.count())
        self.assertEqual(
            ['fd:123', 'fd:234'],
            [subscription.resource.oguid.id for subscription in Subscription.query.all()])

        self.center.remove_watchers_from_resource_by_role(
            Oguid('fd', '234'), WATCHER_ROLE)
Beispiel #27
0
    def test_only_watchers_with_configured_roles_are_dispatched(self):
        setting = create(
            Builder('notification_default_setting').having(
                kind='task-added', mail_notification_roles=[WATCHER_ROLE]))

        self.center.add_activity(Oguid('fd', '123'), 'task-added',
                                 {'en': 'Kennzahlen 2014 erfassen'},
                                 {'en': 'Task added'},
                                 {'en': 'Task bla accepted by Peter'},
                                 'hugo.boss', {'en': None})

        self.assertEquals(1, len(self.dispatcher.notified))
        self.assertEquals(u'hugo', self.dispatcher.notified[0].userid)
    def test_update_roles_removes_existing_no_longer_used_roles(self):
        participation = create(Builder('contact_participation').having(
            contact=self.contact,
            dossier_oguid=Oguid('foo', 1234)))
        create(Builder('participation_role').having(
            participation=participation,
            role=u'final-drawing'))
        create(Builder('participation_role').having(
            participation=participation,
            role=u'regard'))

        participation.update_roles(['regard'])
        self.assertEquals(['regard'],
                          [role.role for role in participation.roles])
Beispiel #29
0
    def test_does_not_create_an_notification_for_the_actor(self):
        peter = create(Builder('watcher').having(actorid='peter'))
        hugo = create(Builder('watcher').having(actorid='hugo'))

        create(Builder('resource').oguid('fd:123').watchers([hugo, peter]))

        self.center.add_activity(Oguid('fd', '123'), 'TASK_ADDED',
                                 {'en': 'Kennzahlen 2014 erfassen'},
                                 {'en': 'Task accepted'},
                                 {'en': 'Task bla added by Peter'}, 'peter',
                                 {'en': None})

        self.assertEquals(1, Notification.query.by_user('hugo').count())
        self.assertEquals(0, Notification.query.by_user('peter').count())
    def test_copy_participation(self):
        participation = create(Builder('contact_participation').having(
            contact=self.contact,
            dossier_oguid=Oguid('foo', 1234)))
        role = create(Builder('participation_role').having(
            participation=participation,
            role=u'Sch\xf6ff'))

        copied_participation = participation.copy()
        self.assertEqual(self.contact, copied_participation.contact)
        self.assertEqual('foo', copied_participation.dossier_admin_unit_id)
        self.assertEqual(1234, copied_participation.dossier_int_id)
        self.assertEqual(1, len(copied_participation.roles))
        copied_role = copied_participation.roles[0]
        self.assertEqual(u'Sch\xf6ff', copied_role.role)