Exemplo n.º 1
0
    def test_imports_handle_unicode_values_properly(self):
        klaus = create(Builder('ldapuser')
                       .named('klaus.r\xc3\xbcegg')
                       .having(firstname='Klaus',
                               lastname='R\xc3\xbcegg',
                               l=['M\xc3\xbcnsingen'],  # noqa
                               o=['M\xc3\xbcller & Co'],  # noqa
                               ou=['M\xc3\xbcnster'],  # noqa
                               street=['F\xc3\xa4hrstrasse 13']))

        group = create(Builder('ldapgroup')
                       .named('f\xc3\xbchrung')
                       .with_members([klaus]))

        FAKE_LDAP_USERFOLDER.users = [klaus]
        FAKE_LDAP_USERFOLDER.groups = [group]

        updater = IOGDSUpdater(self.portal)

        updater.import_users()
        updater.import_groups()

        ogds_user = ogds_service().fetch_user(u'klaus.r\xfcegg')
        self.assertEquals(u'klaus.r\xfcegg', ogds_user.userid)
        self.assertEquals(u'Klaus', ogds_user.firstname)
        self.assertEquals(u'R\xfcegg', ogds_user.lastname)
        self.assertEquals(u'klaus.r\[email protected]', ogds_user.email)

        ogds_group = ogds_service().fetch_group(u'f\xfchrung')
        self.assertEquals(u'f\xfchrung', ogds_group.groupid)
Exemplo n.º 2
0
    def prepare_mail(self, subject=u'', to_userid=None, from_userid=None, data=None):
        if data is None:
            data = {}

        msg = MIMEMultipart('related')
        actor = ogds_service().fetch_user(from_userid) if from_userid else None

        if actor:
            msg['From'] = make_addr_header(actor.fullname(),
                                           actor.email, 'utf-8')
        else:
            msg['From'] = make_addr_header(
                u'OneGov GEVER', api.portal.get().email_from_address, 'utf-8')

        recipient = ogds_service().fetch_user(to_userid)
        msg['To'] = recipient.email
        msg['Subject'] = Header(subject, 'utf-8')

        # Break (potential) description out into a list element per newline
        if data.get('description'):
            data['description'] = data.get('description').splitlines()

        html = self.prepare_html(data)
        msg.attach(MIMEText(html.encode('utf-8'), 'html', 'utf-8'))
        return msg
Exemplo n.º 3
0
    def test_imports_handle_unicode_values_properly(self):
        klaus = create(
            Builder('ldapuser').named('klaus.r\xc3\xbcegg').having(
                firstname='Klaus',
                lastname='R\xc3\xbcegg',
                l=['M\xc3\xbcnsingen'],  # noqa
                o=['M\xc3\xbcller & Co'],  # noqa
                ou=['M\xc3\xbcnster'],  # noqa
                street=['F\xc3\xa4hrstrasse 13']))

        group = create(
            Builder('ldapgroup').named('f\xc3\xbchrung').with_members([klaus]))

        FAKE_LDAP_USERFOLDER.users = [klaus]
        FAKE_LDAP_USERFOLDER.groups = [group]

        updater = IOGDSUpdater(self.portal)

        updater.import_users()
        updater.import_groups()

        ogds_user = ogds_service().fetch_user(u'klaus.r\xfcegg')
        self.assertEquals(u'klaus.r\xfcegg', ogds_user.userid)
        self.assertEquals(u'Klaus', ogds_user.firstname)
        self.assertEquals(u'R\xfcegg', ogds_user.lastname)
        self.assertEquals(u'klaus.r\[email protected]', ogds_user.email)

        ogds_group = ogds_service().fetch_group(u'f\xfchrung')
        self.assertEquals(u'f\xfchrung', ogds_group.groupid)
Exemplo n.º 4
0
    def prepare_mail(self,
                     subject=u'',
                     to_userid=None,
                     from_userid=None,
                     data=None):
        if data is None:
            data = {}

        msg = MIMEMultipart('related')
        actor = ogds_service().fetch_user(from_userid) if from_userid else None

        if actor:
            msg['From'] = make_addr_header(actor.fullname(), actor.email,
                                           'utf-8')
        else:
            msg['From'] = make_addr_header(u'OneGov GEVER',
                                           api.portal.get().email_from_address,
                                           'utf-8')

        recipient = ogds_service().fetch_user(to_userid)
        msg['To'] = recipient.email
        msg['Subject'] = Header(subject, 'utf-8')

        # Break (potential) description out into a list element per newline
        if data.get('description'):
            data['description'] = data.get('description').splitlines()

        html = self.prepare_html(data)
        msg.attach(MIMEText(html.encode('utf-8'), 'html', 'utf-8'))
        return msg
Exemplo n.º 5
0
 def test_org_unit_created(self):
     self.assertEqual(1, len(ogds_service().all_org_units()))
     org_unit = ogds_service().fetch_org_unit('org')
     self.assertIsNotNone(org_unit)
     self.assertIsNotNone(org_unit.admin_unit)
     self.assertIsNotNone(org_unit.users_group)
     self.assertIsNotNone(org_unit.inbox_group)
Exemplo n.º 6
0
    def test_imports_users(self):
        FAKE_LDAP_USERFOLDER.users = [
            create(Builder('ldapuser').named('sk1m1')),
            create(Builder('ldapuser').named('john'))]

        updater = IOGDSUpdater(self.portal)

        updater.import_users()
        self.assertIsNotNone(ogds_service().fetch_user('sk1m1'))
        self.assertIsNotNone(ogds_service().fetch_user('john'))
    def test_imports_users(self):
        FAKE_LDAP_USERFOLDER.users = [
            create(Builder('ldapuser').named('sk1m1')),
            create(Builder('ldapuser').named('john'))]

        updater = IOGDSUpdater(self.portal)

        updater.import_users()
        self.assertIsNotNone(ogds_service().fetch_user('sk1m1'))
        self.assertIsNotNone(ogds_service().fetch_user('john'))
 def test_sql_changes_are_isolated_1(self):
     self.login(self.administrator)
     args = {
         'firstname': u'Leak',
         'lastname': u'Officer',
         'userid': 'leak.officer',
         'email': '*****@*****.**',
     }
     self.assertFalse(ogds_service().fetch_user(args['userid']),
                      'SQL changes seem not to be isolated between tests.')
     create(Builder('ogds_user').having(**args))
     self.assertTrue(ogds_service().fetch_user(args['userid']))
 def test_sql_changes_are_isolated_1(self):
     self.login(self.administrator)
     args = {
         'firstname': u'Leak',
         'lastname': u'Officer',
         'userid': 'leak.officer',
         'email': '*****@*****.**',
     }
     self.assertFalse(
         ogds_service().fetch_user(args['userid']),
         'SQL changes seem not to be isolated between tests.')
     create(Builder('ogds_user').having(**args))
     self.assertTrue(ogds_service().fetch_user(args['userid']))
    def test_flags_users_not_present_in_ldap_as_inactive(self):
        create(Builder('ogds_user').id('john.doe'))
        create(Builder('ogds_user').id('hugo.boss'))

        FAKE_LDAP_USERFOLDER.users = [
            create(Builder('ldapuser').named('hugo.boss')),
            create(Builder('ldapuser').named('new.user'))]

        updater = IOGDSUpdater(self.portal)

        updater.import_users()
        self.assertFalse(ogds_service().fetch_user('john.doe').active)
        self.assertTrue(ogds_service().fetch_user('hugo.boss').active)
        self.assertTrue(ogds_service().fetch_user('new.user').active)
Exemplo n.º 11
0
    def test_flags_users_not_present_in_ldap_as_inactive(self):
        create(Builder('ogds_user').id('john.doe'))
        create(Builder('ogds_user').id('hugo.boss'))

        FAKE_LDAP_USERFOLDER.users = [
            create(Builder('ldapuser').named('hugo.boss')),
            create(Builder('ldapuser').named('new.user'))]

        updater = IOGDSUpdater(self.portal)

        updater.import_users()
        self.assertFalse(ogds_service().fetch_user('john.doe').active)
        self.assertTrue(ogds_service().fetch_user('hugo.boss').active)
        self.assertTrue(ogds_service().fetch_user('new.user').active)
Exemplo n.º 12
0
    def prepare_mail(self, notification):
        msg = MIMEMultipart('alternative')

        actor = ogds_service().fetch_user(notification.activity.actor_id)
        msg['From'] = make_addr_header(actor.fullname(), actor.email, 'utf-8')

        recipient = ogds_service().fetch_user(notification.userid)
        msg['To'] = recipient.email
        msg['Subject'] = self.get_subject(notification)

        html = self.prepare_html(notification)
        msg.attach(MIMEText(html.encode('utf-8'), 'html', 'utf-8'))

        return msg
Exemplo n.º 13
0
    def prepare_mail(self, notification):
        msg = MIMEMultipart('alternative')

        actor = ogds_service().fetch_user(notification.activity.actor_id)
        msg['From'] = make_addr_header(actor.fullname(), actor.email, 'utf-8')

        recipient = ogds_service().fetch_user(notification.userid)
        msg['To'] = recipient.email
        msg['Subject'] = self.get_subject(notification)

        html = self.prepare_html(notification)
        msg.attach(MIMEText(html.encode('utf-8'), 'html', 'utf-8'))

        return msg
Exemplo n.º 14
0
    def get_properties(self):
        """Return user properties from OGDS.

        Always returns a minimal set of the properties 'ogg.user.userid' and
        'ogg.user.title' even when no ogds-user is found.

        XXX Also contains deprecated properties that will go away eventually.
        """
        user_id = self.get_user_id()
        ogds_user = ogds_service().fetch_user(user_id)
        fullname = ogds_user.fullname() if ogds_user else user_id

        # XXX deprecated properties
        properties = {'User.ID': user_id,
                      'User.FullName': fullname}

        self._add_property(properties, 'userid', user_id)
        self._add_property(properties, 'title', fullname)

        # abort early if there is no ogds user for some reason.
        if not ogds_user:
            return properties

        for attribute_name in self.ogds_user_attributes:
            value = getattr(ogds_user, attribute_name)
            self._add_property(properties, attribute_name, value)
        return properties
Exemplo n.º 15
0
    def test_imports_group_memberships(self):
        sk1m1 = create(Builder('ldapuser').named('sk1m1'))
        sk2m1 = create(Builder('ldapuser').named('sk2m1'))
        sk1m2 = create(Builder('ldapuser').named('sk1m2'))
        sk2m2 = create(Builder('ldapuser').named('sk2m2'))

        FAKE_LDAP_USERFOLDER.users = [sk1m1, sk2m1, sk1m2, sk2m2]
        FAKE_LDAP_USERFOLDER.groups = [
            create(Builder('ldapgroup')
                   .named('og_mandant1_users')
                   .with_members([sk1m1, sk2m1])),
            create(Builder('ldapgroup')
                   .named('og_mandant2_users')
                   .with_members([sk1m2, sk2m2])),
        ]

        updater = IOGDSUpdater(self.portal)

        updater.import_users()
        updater.import_groups()

        ogds = ogds_service()
        og_mandant1_users = ogds.fetch_group('og_mandant1_users')
        og_mandant2_users = ogds.fetch_group('og_mandant2_users')

        self.assertItemsEqual(
            [ogds.fetch_user('sk1m1'), ogds.fetch_user('sk2m1')],
            og_mandant1_users.users)
        self.assertItemsEqual(
            [ogds.fetch_user('sk1m2'), ogds.fetch_user('sk2m2')],
            og_mandant2_users.users)
Exemplo n.º 16
0
    def create_committee(
        self,
        title,
        repository_folder,
        group_id,
        group_title,
        responsibles,
    ):
        # XXX I would have expected the commitee builder to do all of that.
        ogds_members = map(
            ogds_service().find_user,
            map(methodcaller('getId'), responsibles),
        )

        create(
            Builder('ogds_group').having(
                groupid=group_id,
                users=ogds_members,
            ))

        create(
            Builder('group').with_groupid(group_id).having(
                title=group_title).with_members(*responsibles))

        committee = create(
            Builder('committee').titled(title).within(
                self.committee_container).having(
                    repository_folder=repository_folder,
                    group_id=group_id,
                ))

        return committee
Exemplo n.º 17
0
    def setUp(self):
        super(TestContactsVocabulary, self).setUp()

        self.peter_a = create(Builder('person')
                              .having(firstname=u'Peter',
                                      lastname=u'M\xfcller',
                                      former_contact_id=1111))
        self.peter_b = create(Builder('person')
                              .having(firstname=u'Peter',
                                      lastname=u'Fl\xfcckiger'))
        self.peter_c = create(Builder('person')
                              .having(firstname=u'Peter',
                                      lastname=u'Meier')
                              .having(is_active=False))
        self.meier_ag = create(Builder('organization')
                               .named(u'Meier AG')
                               .having(former_contact_id=2222))
        self.teamwork_ag = create(Builder('organization')
                                  .named(u'4teamwork AG'))
        self.school = create(Builder('organization')
                             .named(u'School')
                             .having(is_active=False))

        self.role1 = create(Builder('org_role')
                            .having(person=self.peter_a,
                                    organization=self.meier_ag,
                                    function='Developer'))
        self.role2 = create(Builder('org_role')
                            .having(person=self.peter_a,
                                    organization=self.teamwork_ag,
                                    function='Scheffe'))
        self.ogds_user = OgdsUserToContactAdapter(ogds_service().all_users()[0])
Exemplo n.º 18
0
    def test_inbox_group_gets_migrated(self):
        org_unit_id = self.org_unit.unit_id
        migrator = OGDSMigrator(self.portal, {"client1_inbox_users": "new_inbox_group"}, "move")
        migrator.migrate()

        org_unit = ogds_service().fetch_org_unit(org_unit_id)
        self.assertEquals("new_inbox_group", org_unit.inbox_group.groupid)
Exemplo n.º 19
0
 def key_value_provider(self):
     """yield the items
     key = orgunit id
     value = orgunit label
     """
     for org_unit in ogds_service().assigned_org_units():
         yield (org_unit.id(), org_unit.label())
Exemplo n.º 20
0
    def setUp(self):
        super(TestContactsSource, self).setUp()

        self.peter_a = create(
            Builder('person').having(firstname=u'Peter',
                                     lastname=u'M\xfcller',
                                     former_contact_id=1111))
        self.peter_b = create(
            Builder('person').having(firstname=u'Peter',
                                     lastname=u'Fl\xfcckiger'))
        self.peter_c = create(
            Builder('person').having(
                firstname=u'Peter', lastname=u'Meier').having(is_active=False))
        self.meier_ag = create(
            Builder('organization').named(u'Meier AG').having(
                former_contact_id=2222))
        self.teamwork_ag = create(
            Builder('organization').named(u'4teamwork AG'))
        self.school = create(
            Builder('organization').named(u'School').having(is_active=False))

        self.role1 = create(
            Builder('org_role').having(person=self.peter_a,
                                       organization=self.meier_ag,
                                       function='Developer'))
        self.role2 = create(
            Builder('org_role').having(person=self.peter_a,
                                       organization=self.teamwork_ag,
                                       function='Scheffe'))
        self.ogds_user = OgdsUserToContactAdapter(
            ogds_service().all_users()[0])

        self.source = ContactsSource(self.portal)
Exemplo n.º 21
0
    def send_digests(self):
        logger.info('Sending digests...')
        for userid, notifications in self.get_notifications().items():
            # skip when digest interval is not expired yet
            if not self.is_interval_expired(userid):
                continue

            today = api.portal.get_localized_time(date.today())
            user = ogds_service().fetch_user(userid)

            subject = translate(
                _(u'subject_digest',
                  default=u'Daily Digest for ${date}',
                  mapping={'date': today}),
                context=self.request)
            title = translate(
                _(u'title_daily_digest',
                  default=u'Daily Digest for ${username}',
                  mapping={'username': user.fullname()}),
                context=self.request)
            msg = self.prepare_mail(
                subject=subject,
                to_userid=userid,
                data={'notifications': self.prepare_data(notifications),
                      'public_url': get_current_admin_unit().public_url,
                      'title': title,
                      'today': today})

            self.send_mail(msg)
            self.mark_as_sent(notifications)
            self.record_digest(userid)
            logger.info('  Digest sent for %s (%s)' % (userid, user.email))

        logger.info('Done sending digests.')
Exemplo n.º 22
0
    def get_responsible_label(self, linked=True):
        actor = Actor.lookup(self.responsible)
        org_unit = ogds_service().fetch_org_unit(self.assigned_org_unit)
        if not linked:
            return org_unit.prefix_label(actor.get_label())

        return org_unit.prefix_label(actor.get_link())
Exemplo n.º 23
0
def _remote_request(target_admin_unit_id, viewname, path, data, headers):
    site = getSite()
    target_unit = ogds_service().fetch_admin_unit(target_admin_unit_id)

    if not target_unit:
        raise ClientNotFound()

    headers = headers.copy()
    data = data.copy()

    mtool = getToolByName(site, "portal_membership")
    member = mtool.getAuthenticatedMember()

    key = "X-OGDS-AC"
    if key not in headers.keys() and member:
        headers[key] = member.getId()

    headers["X-OGDS-AUID"] = get_current_admin_unit().id()
    handler = urllib2.ProxyHandler({})
    opener = urllib2.build_opener(handler)

    viewname = viewname if viewname.startswith("@@") else "@@{}".format(viewname)
    if path:
        url = os.path.join(target_unit.site_url, path, viewname)
    else:
        url = os.path.join(target_unit.site_url, viewname)

    request = urllib2.Request(url, urllib.urlencode(data), headers)
    return opener.open(request)
Exemplo n.º 24
0
    def is_user_allowed_to_view_additional_tabs(self):
        """The additional tabs Alltasks and AllIssuedTasks are only shown
        to adminsitrators and users of the current inbox group."""

        inbox = get_current_org_unit().inbox()
        current_user = ogds_service().fetch_current_user()
        return current_user in inbox.assigned_users() or self._is_user_admin()
Exemplo n.º 25
0
    def migrate(self):
        users_groups_moved = []
        inbox_groups_moved = []

        org_units = ogds_service().all_org_units()

        for org_unit in org_units:
            # Migrate users_group
            moved = self._migrate_group(org_unit, 'users_group')
            users_groups_moved.extend(moved)

            # Migrate inbox_group
            moved = self._migrate_group(org_unit, 'inbox_group')
            inbox_groups_moved.extend(moved)

        results = {
            'users_groups': {
                'moved': users_groups_moved,
                'copied': [],
                'deleted': []
            },
            'inbox_groups': {
                'moved': inbox_groups_moved,
                'copied': [],
                'deleted': []
            },
        }
        return results
Exemplo n.º 26
0
    def is_user_allowed_to_view_additional_tabs(self):
        """The additional tabs Alltasks and AllIssuedTasks are only shown
        to adminsitrators and users of the current inbox group."""

        inbox = get_current_org_unit().inbox()
        current_user = ogds_service().fetch_current_user()
        return current_user in inbox.assigned_users() or self._is_user_admin()
Exemplo n.º 27
0
 def key_value_provider(self):
     """yield the items
     key = orgunit id
     value = orgunit label
     """
     for org_unit in ogds_service().assigned_org_units():
         yield (org_unit.id(), org_unit.label())
Exemplo n.º 28
0
    def test_imports_group_memberships(self):
        sk1m1 = create(Builder('ldapuser').named('sk1m1'))
        sk2m1 = create(Builder('ldapuser').named('sk2m1'))
        sk1m2 = create(Builder('ldapuser').named('sk1m2'))
        sk2m2 = create(Builder('ldapuser').named('sk2m2'))

        FAKE_LDAP_USERFOLDER.users = [sk1m1, sk2m1, sk1m2, sk2m2]
        FAKE_LDAP_USERFOLDER.groups = [
            create(
                Builder('ldapgroup').named('og_mandant1_users').with_members(
                    [sk1m1, sk2m1])),
            create(
                Builder('ldapgroup').named('og_mandant2_users').with_members(
                    [sk1m2, sk2m2])),
        ]

        updater = IOGDSUpdater(self.portal)

        updater.import_users()
        updater.import_groups()

        ogds = ogds_service()
        og_mandant1_users = ogds.fetch_group('og_mandant1_users')
        og_mandant2_users = ogds.fetch_group('og_mandant2_users')

        self.assertItemsEqual(
            [ogds.fetch_user('sk1m1'),
             ogds.fetch_user('sk2m1')], og_mandant1_users.users)
        self.assertItemsEqual(
            [ogds.fetch_user('sk1m2'),
             ogds.fetch_user('sk2m2')], og_mandant2_users.users)
Exemplo n.º 29
0
    def get_responsible_label(self, linked=True):
        actor = Actor.lookup(self.responsible)
        org_unit = ogds_service().fetch_org_unit(self.assigned_org_unit)
        if not linked:
            return org_unit.prefix_label(actor.get_label())

        return org_unit.prefix_label(actor.get_link())
Exemplo n.º 30
0
    def get_detail_view_url(self, item):
        """Returns the url to the detail view for users or group.

        We do not use item['type'] to determine whether it is a group or a user,
        as this was determined from the acl_users which wrongly identifies
        inactive groups (groups that were deleted from the LDAP) as users.
        Instead we check using the ogds service.
        """
        if ogds_service().fetch_group(item['id']):
            return '{}/@@list_groupmembers?{}'.format(
                api.portal.get().absolute_url(),
                urlencode({'group': item['id']}))
        elif ogds_service().fetch_user(item['id']):
            return '{}/@@user-details-plain/{}'.format(
                api.portal.get().absolute_url(), item['id'])
        else:
            return None
Exemplo n.º 31
0
    def load_user(self):
        user = ogds_service().fetch_user(self.identifier)
        if not user:
            portal = getSite()
            portal_membership = getToolByName(portal, 'portal_membership')
            user = portal_membership.getMemberById(self.identifier)

        return user
Exemplo n.º 32
0
    def create_inbox_actor(self, org_unit=None):
        if not org_unit:
            org_unit_id = self.identifier.split(':', 1)[1]
            org_unit = ogds_service().fetch_org_unit(org_unit_id)
            assert org_unit, 'OrgUnit {} for identifier {} is missing.'.format(
                org_unit_id, self.identifier)

        return InboxActor(self.identifier, org_unit=org_unit)
    def test_rollback_nested_sql_savepoints(self):
        self.login(self.administrator)
        args = {
            'firstname': u'Transaction',
            'lastname': u'Manager',
            'userid': 'transaction.manager',
        }
        self.assertFalse(
            ogds_service().fetch_user(args['userid']),
            'Opps, there is already a user {!r}'.format(args['userid']))

        savepoint = transaction.savepoint()
        create(Builder('ogds_user').having(**args))
        self.assertTrue(ogds_service().fetch_user(args['userid']))
        savepoint.rollback()
        self.assertFalse(ogds_service().fetch_user(args['userid']),
                         'Could not rollback SQL properly.')
Exemplo n.º 34
0
    def key_value_provider(self):
        """
        key = org_unit id
        value = org_unit title
        """

        for org_unit in ogds_service().assigned_org_units(omit_current=True):
            yield (org_unit.id(), org_unit.label())
Exemplo n.º 35
0
    def key_value_provider(self):
        """
        key = org_unit id
        value = org_unit title
        """

        for org_unit in ogds_service().assigned_org_units(omit_current=True):
            yield (org_unit.id(), org_unit.label())
Exemplo n.º 36
0
    def test_imports_groups(self):
        FAKE_LDAP_USERFOLDER.groups = [
            create(Builder('ldapgroup').named('og_mandant1_users'))]

        updater = IOGDSUpdater(self.portal)

        updater.import_groups()
        self.assertIsNotNone(ogds_service().fetch_group('og_mandant1_users'))
Exemplo n.º 37
0
    def key_value_provider(self):
        # Reset hidden_terms every time cache key changed
        self.hidden_terms = []

        for user in ogds_service().all_users():
            if not user.active:
                self.hidden_terms.append(user.userid)
            yield (user.userid, user.label())
    def test_imports_groups(self):
        FAKE_LDAP_USERFOLDER.groups = [
            create(Builder('ldapgroup').named('og_mandant1_users'))]

        updater = IOGDSUpdater(self.portal)

        updater.import_groups()
        self.assertIsNotNone(ogds_service().fetch_group('og_mandant1_users'))
Exemplo n.º 39
0
    def test_inbox_group_gets_migrated(self):
        org_unit_id = self.org_unit.unit_id
        migrator = OGDSMigrator(
            self.portal, {'org-unit-1_inbox_users': 'new_inbox_group'}, 'move')
        migrator.migrate()

        org_unit = ogds_service().fetch_org_unit(org_unit_id)
        self.assertEquals('new_inbox_group', org_unit.inbox_group.groupid)
Exemplo n.º 40
0
    def _get_users(self):
        items = []
        hidden_terms = []

        # users
        for user in ogds_service().all_users():
            if not user.active:
                hidden_terms.append(user.userid)
            items.append((user.userid, user.label()))

        # inboxes
        for unit in ogds_service().all_org_units():
            items.append((
                unit.inbox().id(),
                Actor.inbox(unit.inbox().id(), unit).get_label()))

        return (items, hidden_terms)
Exemplo n.º 41
0
    def test_users_group_gets_migrated(self):
        org_unit_id = self.org_unit.unit_id
        migrator = OGDSMigrator(self.portal,
                                {'client1_users': 'new_users_group'}, 'move')
        migrator.migrate()

        org_unit = ogds_service().fetch_org_unit(org_unit_id)
        self.assertEquals('new_users_group', org_unit.users_group.groupid)
Exemplo n.º 42
0
    def load_user(self):
        user = ogds_service().fetch_user(self.identifier)
        if not user:
            portal = getSite()
            portal_membership = getToolByName(portal, 'portal_membership')
            user = portal_membership.getMemberById(self.identifier)

        return user
Exemplo n.º 43
0
 def _verify_user(self, userid):
     ogds_user = ogds_service().fetch_user(userid)
     if ogds_user is None:
         msg = "User '{}' not found in OGDS!".format(userid)
         if self.strict:
             raise UserMigrationException(msg)
         else:
             logger.warn(msg)
Exemplo n.º 44
0
    def create_inbox_actor(self, org_unit=None):
        if not org_unit:
            org_unit_id = self.identifier.split(':', 1)[1]
            org_unit = ogds_service().fetch_org_unit(org_unit_id)
            assert org_unit, 'OrgUnit {} for identifier {} is missing.'.format(
                org_unit_id, self.identifier)

        return InboxActor(self.identifier, org_unit=org_unit)
Exemplo n.º 45
0
    def get_userdata(self):
        """Returns a dict of information about a specific user
        """
        try:
            user = ogds_service().find_user(self.userid)
        except RecordNotFound:
            raise NotFound

        return {'user': user, 'groups': user.groups}
    def test_rollback_nested_sql_savepoints(self):
        self.login(self.administrator)
        args = {
            'firstname': u'Transaction',
            'lastname': u'Manager',
            'userid': 'transaction.manager',
        }
        self.assertFalse(
            ogds_service().fetch_user(args['userid']),
            'Opps, there is already a user {!r}'.format(args['userid']))

        savepoint = transaction.savepoint()
        create(Builder('ogds_user').having(**args))
        self.assertTrue(ogds_service().fetch_user(args['userid']))
        savepoint.rollback()
        self.assertFalse(
            ogds_service().fetch_user(args['userid']),
            'Could not rollback SQL properly.')
Exemplo n.º 47
0
    def update(self):
        super(TaskEditForm, self).update()

        # omit the responsible_client field and adjust the field description
        # of the responsible field if there is only one client configured.
        if not ogds_service().has_multiple_org_units():
            self.groups[0].widgets['responsible_client'].mode = HIDDEN_MODE
            self.groups[0].widgets['responsible'].field.description = _(
                u"help_responsible_single_client_setup", default=u"")
Exemplo n.º 48
0
    def update(self):
        super(TaskEditForm, self).update()

        # omit the responsible_client field and adjust the field description
        # of the responsible field if there is only one client configured.
        if not ogds_service().has_multiple_org_units():
            self.groups[0].widgets['responsible_client'].mode = HIDDEN_MODE
            self.groups[0].widgets['responsible'].field.description = _(
                u"help_responsible_single_client_setup", default=u"")
Exemplo n.º 49
0
    def get_responsible_org_unit(self):
        """Returns the OrgUnit object, which is configured in the
        ResponsibleOrgUnit behavior field."""

        org_unit_id = IResponsibleOrgUnit(self).responsible_org_unit
        if org_unit_id:
            return ogds_service().fetch_org_unit(org_unit_id)

        return None
Exemplo n.º 50
0
    def send_button_handler(self, action):
        """Create and Send the Email."""
        data, errors = self.extractData()

        if len(errors) == 0:
            mh = getToolByName(self.context, 'MailHost')
            userid = self.context.portal_membership.getAuthenticatedMember()
            userid = userid.getId()
            intern_receiver = []
            for receiver in data.get('intern_receiver', []):
                # cut away the username
                intern_receiver.append(receiver.split(':')[0])

            extern_receiver = data.get('extern_receiver') or []
            addresses = intern_receiver + extern_receiver

            # create the mail
            msg = self.create_mail(
                data.get('message'),
                data.get('documents'),
                only_links=data.get('documents_as_links'))

            msg['Subject'] = Header(data.get('subject'), CHARSET)

            user = ogds_service().fetch_user(userid)
            sender_address = user and user.email
            if not sender_address:
                portal = self.context.portal_url.getPortalObject()
                sender_address = portal.email_from_address

            msg['From'] = make_addr_header(
                user.label(), sender_address, CHARSET)

            header_to = Header(','.join(addresses), CHARSET)
            msg['To'] = header_to

            # send it
            mfrom = u'{} <{}>'.format(
                user.label(), sender_address).encode(CHARSET)
            mh.send(msg, mfrom=mfrom, mto=','.join(addresses))

            # Store a copy of the sent mail in dossier
            if (data.get('file_copy_in_dossier', False)
                    and self._allow_save_file_copy_in_context()):
                self.file_sent_mail_in_dossier(msg)

            # let the user know that the mail was sent
            info = _(u'info_mail_sent', 'E-mail has been sent.')
            notify(DocumentSent(
                    self.context, userid, header_to, data.get('subject'),
                    data.get('message'), data.get('documents')))

            IStatusMessage(self.request).addStatusMessage(info, type='info')
            # and redirect to default view / tab
            return self.request.RESPONSE.redirect(
                get_containing_document_tab_url(data.get('documents')[0]))
Exemplo n.º 51
0
    def send_button_handler(self, action):
        """Create and Send the Email."""
        data, errors = self.extractData()

        if len(errors) == 0:
            mh = getToolByName(self.context, 'MailHost')
            userid = self.context.portal_membership.getAuthenticatedMember()
            userid = userid.getId()
            intern_receiver = []
            for receiver in data.get('intern_receiver', []):
                # cut away the username
                intern_receiver.append(receiver.split(':')[0])

            extern_receiver = data.get('extern_receiver') or []
            addresses = intern_receiver + extern_receiver

            # create the mail
            msg = self.create_mail(
                data.get('message'),
                data.get('documents'),
                only_links=data.get('documents_as_links'))

            msg['Subject'] = Header(data.get('subject'), CHARSET)

            user = ogds_service().fetch_user(userid)
            sender_address = user and user.email
            if not sender_address:
                portal = self.context.portal_url.getPortalObject()
                sender_address = portal.email_from_address

            msg['From'] = make_addr_header(
                user.label(), sender_address, CHARSET)

            header_to = Header(','.join(addresses), CHARSET)
            msg['To'] = header_to

            # send it
            mfrom = u'{} <{}>'.format(
                user.label(), sender_address).encode(CHARSET)
            mh.send(msg, mfrom=mfrom, mto=','.join(addresses))

            # Store a copy of the sent mail in dossier
            if (data.get('file_copy_in_dossier', False)
                    and self._allow_save_file_copy_in_context()):
                self.file_sent_mail_in_dossier(msg)

            # let the user know that the mail was sent
            info = _(u'info_mail_sent', 'E-mail has been sent.')
            notify(DocumentSent(
                    self.context, userid, header_to, data.get('subject'),
                    data.get('message'), data.get('documents')))

            IStatusMessage(self.request).addStatusMessage(info, type='info')
            # and redirect to default view / tab
            return self.request.RESPONSE.redirect(
                get_containing_document_tab_url(data.get('documents')[0]))
Exemplo n.º 52
0
    def personal_overview_title(self):
        current_user = ogds_service().fetch_current_user()
        if current_user:
            user_name = current_user.label(with_principal=False)
        else:
            user_name = api.user.get_current().getUserName()

        return _('personal_overview_title',
                 default='Personal Overview: ${user_name}',
                 mapping=dict(user_name=user_name))
Exemplo n.º 53
0
    def __call__(self):
        self.user_ids = [user.userid for user in ogds_service().all_users()]

        catalog = self.getToolByName('portal_catalog')
        brains = catalog.unrestrictedSearchResults(
            portal_type='opengever.document.document')
        with ProgressLogger('Resolve document author', brains) as step:
            for brain in brains:
                self.resolve_document_author(brain)
                step()
Exemplo n.º 54
0
    def updateWidgets(self):
        super(ECH0147ImportForm, self).updateWidgets()
        self.widgets['message'].value = None

        # Set default responsible to current user
        if not self.request.form.get('form.widgets.responsible'):
            user = ogds_service().fetch_current_user()
            if user is not None:
                self.widgets['responsible'].value = [user.userid]
                self.widgets['responsible'].update()
Exemplo n.º 55
0
    def updateWidgets(self):
        super(ECH0147ImportForm, self).updateWidgets()
        self.widgets['message'].value = None

        # Set default responsible to current user
        if not self.request.form.get('form.widgets.responsible'):
            user = ogds_service().fetch_current_user()
            if user is not None:
                self.widgets['responsible'].value = [user.userid]
                self.widgets['responsible'].update()