コード例 #1
0
 def _available_badges(self):
     '''
     Return the badges that are editable by a user.
     '''
     c.groups = [{'permission': 'global.admin',
                  'label': _('In all instances'),
                  'show_label': True}]
     if c.instance:
         c.groups.append(
             {'permission': 'instance.admin',
              'label': _('In instance "%s"') % c.instance.label,
              'show_label': h.has_permission('global.admin')})
     badges = {}
     if has('global.admin'):
         badges['global.admin'] = {
             'instance': InstanceBadge.all(instance=None),
             'user': UserBadge.all(instance=None),
             'delegateable': DelegateableBadge.all(instance=None),
             'category': CategoryBadge.all(instance=None),
             'thumbnail': ThumbnailBadge.all(instance=None)}
     if has('instance.admin') and c.instance is not None:
         badges['instance.admin'] = {
             'instance': InstanceBadge.all(instance=c.instance),
             'user': UserBadge.all(instance=c.instance),
             'delegateable': DelegateableBadge.all(instance=c.instance),
             'category': CategoryBadge.all(instance=c.instance),
             'thumbnail': ThumbnailBadge.all(instance=c.instance)}
     return badges
コード例 #2
0
ファイル: test_forms.py プロジェクト: AnonOnWarpath/adhocracy
    def test_valid_badge(self):
        from adhocracy.forms import ValidBadge
        from adhocracy.model import Badge, UserBadge

        creator = tt_make_user('creator')
        badged_user = tt_make_user('badged_user')
        badge = Badge.create('testbadge', '#ccc', 'description')
        UserBadge.create(badged_user, badge, creator)
        value = ValidBadge.to_python(badge.id, None)
        self.assertEqual(value, badge)
コード例 #3
0
    def _make_one(self):
        """Returns creator, badged user and badge"""

        from adhocracy.model import Badge, UserBadge
        creator = tt_make_user('creator')
        badged_user = tt_make_user('badged_user')
        badge = Badge.create(u'testbadge', u'#ccc', u'description')
        UserBadge.create(badged_user, badge, creator)

        return creator, badged_user, badge
コード例 #4
0
def valid_userbadge(title, instance=None):
    invited_badge = UserBadge.find_by_instance(title, instance)
    if invited_badge is None:
        invited_badge = UserBadge.create(title,
                                         u'#000000',
                                         False,
                                         u'This user has been invited',
                                         instance=instance)
        print(u"Badge %r created" % invited_badge)
    return invited_badge
コード例 #5
0
ファイル: test_forms.py プロジェクト: AnonOnWarpath/adhocracy
    def test_valid_badge(self):
        from adhocracy.forms import ValidBadge
        from adhocracy.model import Badge, UserBadge

        creator = tt_make_user('creator')
        badged_user = tt_make_user('badged_user')
        badge = Badge.create('testbadge', '#ccc', 'description')
        UserBadge.create(badged_user, badge, creator)
        value = ValidBadge.to_python(badge.id, None)
        self.assertEqual(value, badge)
コード例 #6
0
    def _make_one(self):
        """Returns creator, badged user and badge"""

        from adhocracy.model import Badge, UserBadge

        creator = tt_make_user("creator")
        badged_user = tt_make_user("badged_user")
        badge = Badge.create(u"testbadge", u"#ccc", u"description")
        UserBadge.create(badged_user, badge, creator)

        return creator, badged_user, badge
コード例 #7
0
ファイル: test_forms.py プロジェクト: AnonOnWarpath/adhocracy
    def test_invalid_badge(self):
        from formencode import Invalid
        from adhocracy.forms import ValidBadge
        from adhocracy.model import Badge, UserBadge

        creator = tt_make_user('creator')
        badged_user = tt_make_user('badged_user')
        badge = Badge.create('testbadge', '#ccc', 'description')
        UserBadge.create(badged_user, badge, creator)
        self.assertRaises(Invalid, ValidBadge.to_python,
                          badge.id + 1, state=None)
コード例 #8
0
ファイル: test_forms.py プロジェクト: AnonOnWarpath/adhocracy
    def test_invalid_badge(self):
        from formencode import Invalid
        from adhocracy.forms import ValidBadge
        from adhocracy.model import Badge, UserBadge

        creator = tt_make_user('creator')
        badged_user = tt_make_user('badged_user')
        badge = Badge.create('testbadge', '#ccc', 'description')
        UserBadge.create(badged_user, badge, creator)
        self.assertRaises(Invalid,
                          ValidBadge.to_python,
                          badge.id + 1,
                          state=None)
コード例 #9
0
    def create_user_badge(self):
        try:
            self.form_result = UserBadgeForm().to_python(request.params)
        except Invalid as i:
            return self.add('user', i.unpack_errors())

        title, color, visible, description, impact, instance =\
            self._get_common_fields(self.form_result)
        group = self.form_result.get('group')
        display_group = self.form_result.get('display_group')
        UserBadge.create(title, color, visible, description, group,
                         display_group, impact, instance)
        # commit cause redirect() raises an exception
        meta.Session.commit()
        redirect(self.base_url)
コード例 #10
0
ファイル: test_forms.py プロジェクト: alkadis/vcv
    def test_valid_user_badge(self):
        from adhocracy.forms import ValidUserBadge
        from adhocracy.model import UserBadge

        badge = UserBadge.create(u'testbadge', u'#ccc', True, u'description')
        value = ValidUserBadge.to_python(badge.id, None)
        self.assertEqual(value, badge)
コード例 #11
0
ファイル: test_forms.py プロジェクト: alkadis/vcv
    def test_valid_user_badge(self):
        from adhocracy.forms import ValidUserBadge
        from adhocracy.model import UserBadge

        badge = UserBadge.create(u'testbadge', u'#ccc', True, u'description')
        value = ValidUserBadge.to_python(badge.id, None)
        self.assertEqual(value, badge)
コード例 #12
0
ファイル: common.py プロジェクト: alex-obi/adhocracy
 def _to_python(self, value, state):
     from adhocracy.model import UserBadge
     badge = UserBadge.by_id(value, instance_filter=False)
     if badge is None or badge.instance not in [None, c.instance]:
         raise formencode.Invalid(
             _("No Badge ID '%s' exists") % value, value, state)
     return badge
コード例 #13
0
ファイル: test_helper.py プロジェクト: alkadis/vcv
 def test_get_parent_badges_no_hierarchy(self):
     from adhocracy.model import UserBadge
     from adhocracy.lib.helpers.badge_helper import get_parent_badges
     badge = UserBadge.create(u'testbadge', u'#ccc', True, u'description')
     result = [b.title for b in get_parent_badges(badge)]
     shouldbe = []
     self.assertEqual(result, shouldbe)
コード例 #14
0
ファイル: test_helper.py プロジェクト: alkadis/vcv
 def test_get_parent_badges_no_hierarchy(self):
     from adhocracy.model import UserBadge
     from adhocracy.lib.helpers.badge_helper import get_parent_badges
     badge = UserBadge.create(u'testbadge', u'#ccc', True, u'description')
     result = [b.title for b in get_parent_badges(badge)]
     shouldbe = []
     self.assertEqual(result, shouldbe)
コード例 #15
0
ファイル: test_forms.py プロジェクト: nidico/adhocracy
    def test_valid_user_badge(self):
        from adhocracy.forms import ValidUserBadge
        from adhocracy.model import UserBadge

        badge = UserBadge.create("testbadge", "#ccc", "description")
        value = ValidUserBadge.to_python(badge.id, None)
        self.assertEqual(value, badge)
コード例 #16
0
ファイル: test_forms.py プロジェクト: nidico/adhocracy
    def test_invalid_user_badge(self):
        from formencode import Invalid
        from adhocracy.forms import ValidUserBadge
        from adhocracy.model import UserBadge

        badge = UserBadge.create("testbadge", "#ccc", "description")
        self.assertRaises(Invalid, ValidUserBadge.to_python, badge.id + 1, state=None)
コード例 #17
0
    def new(self, id=None, errors={}, format=u'html'):

        if id is None:
            require.perm('global.message')
            template = '/massmessage/new.html'
            c.preview_url = h.base_url('/message/preview')
        else:
            c.page_instance = InstanceController._get_current_instance(id)
            require.instance.message(c.page_instance)
            template = '/instance/message.html'
            c.preview_url = h.base_url('/instance/%s/message/preview' % id)

        defaults = dict(request.params)
        defaults.setdefault('include_footer', 'on')

        data = {
            'instances': self._get_allowed_instances(c.user),
            'sender_options': self._get_allowed_sender_options(c.user),
            'userbadges': UserBadge.all(instance=c.instance,
                                        include_global=True)
        }

        return htmlfill.render(render(template,
                                      data,
                                      overlay=format == u'overlay'),
                               defaults=defaults,
                               errors=errors,
                               force_defaults=False)
コード例 #18
0
ファイル: massmessage.py プロジェクト: rowanthorpe/adhocracy
    def new(self, id=None, errors={}, format=u'html'):

        if id is None:
            require.perm('global.message')
            template = '/massmessage/new.html'
            c.preview_url = h.base_url('/message/preview')
        else:
            c.page_instance = InstanceController._get_current_instance(id)
            require.instance.message(c.page_instance)
            template = '/instance/message.html'
            c.preview_url = h.base_url(
                '/instance/%s/message/preview' % id)

        defaults = dict(request.params)
        defaults.setdefault('include_footer', 'on')

        data = {
            'instances': self._get_allowed_instances(c.user),
            'sender_options': self._get_allowed_sender_options(c.user),
            'userbadges': UserBadge.all(instance=c.instance,
                                        include_global=True)
        }

        return htmlfill.render(render(template, data,
                                      overlay=format == u'overlay'),
                               defaults=defaults, errors=errors,
                               force_defaults=False)
コード例 #19
0
 def _to_python(self, value, state):
     from adhocracy.model import UserBadge
     badge = UserBadge.by_id(value)
     if not badge:
         raise formencode.Invalid(
             _("No Badge ID '%s' exists") % value, value, state)
     return badge
コード例 #20
0
ファイル: common.py プロジェクト: alkadis/vcv
    def _to_python(self, value, state):
        from adhocracy.model import UserBadge

        if value is None or value == '':
            return []

        labels = [l.strip() for l in value.split(',')]

        if len(labels) != len(set(labels)):
            raise formencode.Invalid(
                _("Duplicates in input set of user badge labels"),
                value, state)

        badges = set()
        missing = set()

        for label in labels:
            badge = UserBadge.find(label, instance_filter=self.instance_filter)
            if badge is None:
                missing.add(label)
            else:
                badges.add(badge)

        if missing:
            raise formencode.Invalid(
                _("Could not find badges %s") % ','.join(missing),
                value, state)
        else:
            return badges
コード例 #21
0
ファイル: common.py プロジェクト: alkadis/vcv
    def _to_python(self, value, state):
        from adhocracy.model import UserBadge

        if value is None:
            if self.not_empty:
                raise formencode.Invalid(_('No badges selected'), value, state)

            return []

        if isinstance(value, (str, unicode)):
            value = [value]

        if len(value) != len(set(value)):
            raise formencode.Invalid(
                _("Duplicates in input set of user badge IDs"),
                value, state)

        if self.not_empty and not value:
            raise formencode.Invalid(_('No badges selected'), value, state)

        badges = UserBadge.findall_by_ids(value)
        if len(badges) != len(value):
            missing = set(value).difference(b.id for b in badges)
            raise formencode.Invalid(
                _("Could not find badges %s") % ','.join(map(str, missing)),
                value, state)
        return badges
コード例 #22
0
ファイル: test_pager.py プロジェクト: whausen/part
 def test_entity_to_solr_token_no_hierachy(self):
     from adhocracy.model import UserBadge
     from adhocracy.lib.pager import entity_to_solr_token
     badge = UserBadge.create('testbadge', '#ccc', True, 'description')
     result = entity_to_solr_token(badge)
     shouldbe = u"%s" % str(badge.id)
     self.assertEqual(result, shouldbe)
コード例 #23
0
 def test_we_already_have_two_userbadges(self):
     """
     Due to the setup code in `adhocracy.lib.install` and the definition
     of example user badges in `test.ini` for the Shibboleth tests, we
     already have two badges from the beginning.
     """
     from adhocracy.model import UserBadge
     self.assertEqual(len(UserBadge.all()), 2)
コード例 #24
0
ファイル: common.py プロジェクト: whausen/part
 def _to_python(self, value, state):
     from adhocracy.model import UserBadge
     badge = UserBadge.by_id(value)
     if not badge:
         raise formencode.Invalid(
             _("No Badge ID '%s' exists") % value,
             value, state)
     return badge
コード例 #25
0
ファイル: common.py プロジェクト: alkadis/vcv
 def _to_python(self, value, state):
     from adhocracy.model import UserBadge
     badge = UserBadge.by_id(value, instance_filter=False)
     if badge is None or badge.instance not in [None, c.instance]:
         raise formencode.Invalid(
             _("No Badge ID '%s' exists") % value,
             value, state)
     return badge
コード例 #26
0
    def test_assignment(self):
        b = UserBadge.create(u'all users - ' + tt_make_str(), u'', False, u'')

        t = Treatment.create(tt_make_str(), source_badges=[b], variant_count=2)
        sb, assignments, unassigned = get_assignments_by_source_badge(t)[0]
        assert sb == b
        ass1, ass2 = assignments
        assert len(ass1) == 0
        assert len(ass2) == 0
        assert len(unassigned) == 0

        first_users = [tt_make_user() for _ in range(5)]
        for u in first_users:
            b.assign(u, u)
        # sanity check
        assert set(u.id for u in b.users) == set(u.id for u in first_users)

        sb, assignments, unassigned = get_assignments_by_source_badge(t)[0]
        assert sb == b
        ass1, ass2 = assignments
        assert len(ass1) == 0
        assert len(ass2) == 0
        assert len(unassigned) == len(first_users)

        assert assign_users(t)
        sb, assignments, unassigned = get_assignments_by_source_badge(t)[0]
        assert sb == b
        ass1, ass2 = assignments
        assert len(ass1) + len(ass2) == len(first_users)
        assert (len(ass1) == len(ass2) - 1) or (len(ass1) == len(ass2) + 1)
        assert len(unassigned) == 0

        assert not assign_users(t)

        new_users = [tt_make_user() for _ in range(5)]
        for u in new_users:
            b.assign(u, u)
        sb, assignments, unassigned = get_assignments_by_source_badge(t)[0]
        assert sb == b
        ass1, ass2 = assignments
        assert len(ass1) + len(ass2) == len(first_users)
        assert (len(ass1) == len(ass2) - 1) or (len(ass1) == len(ass2) + 1)
        assert len(unassigned) == len(new_users)

        assert assign_users(t)
        sb, assignments, unassigned = get_assignments_by_source_badge(t)[0]
        assert sb == b
        ass1, ass2 = assignments
        assert len(ass1) + len(ass2) == len(first_users) + len(new_users)

        # The following assert is disabled as it fails non-deterministically
        # (see #601). It can be reenabled once this issue is fixed.

        #assert len(ass1) == len(ass2)

        assert len(unassigned) == 0

        assert not assign_users(t)
コード例 #27
0
ファイル: test_forms.py プロジェクト: alkadis/vcv
    def test_invalid_user_badge(self):
        from formencode import Invalid
        from adhocracy.forms import ValidUserBadge
        from adhocracy.model import UserBadge

        badge = UserBadge.create(u'testbadge', u'#ccc', True, u'description')
        self.assertRaises(Invalid,
                          ValidUserBadge.to_python,
                          badge.id + 1,
                          state=None)
コード例 #28
0
ファイル: test_badges.py プロジェクト: JonnyWalker/adhocracy
    def test_get_all_badgets(self):
        #setup
        from adhocracy.model import Badge, CategoryBadge, DelegateableBadge, \
            InstanceBadge
        from adhocracy.model import UserBadge, Instance
        instance = Instance.find(u'test')
        # create for each type a global scope and an instance scope badge
        InstanceBadge.create(u'badge ü', u'#ccc', u'description ü')
        InstanceBadge.create(u'badge ü', u'#ccc', u'description ü',
                                 instance=instance)
        UserBadge.create(u'badge ü', u'#ccc', u'description ü')
        UserBadge.create(u'ü', u'#ccc', u'ü', instance=instance)
        DelegateableBadge.create(u'badge ü', u'#ccc', u'description ü')
        DelegateableBadge.create(u'badge ü', u'#ccc', u'description ü',
                                 instance=instance)
        CategoryBadge.create(u'badge ü', u'#ccc', u"desc")
        CategoryBadge.create(u'badge ü', u'#ccc', u"desc", instance=instance)

        # all instance badges
        self.assert_(len(InstanceBadge.all()) == 1)
        self.assert_(len(InstanceBadge.all(instance=instance)) == 1)
        # all delegateable badges
        self.assert_(len(DelegateableBadge.all()) == 1)
        self.assert_(len(DelegateableBadge.all(instance=instance)) == 1)
        # all delegateable category badges
        self.assert_(len(CategoryBadge.all()) == 1)
        self.assert_(len(CategoryBadge.all(instance=instance)) == 1)
        # all user badgets
        self.assert_(len(UserBadge.all()) == 1)
        self.assert_(len(UserBadge.all(instance=instance)) == 1)
        # We can get all Badges by using `Badge`
        self.assert_(len(Badge.all()) == 4)
        self.assert_(len(Badge.all(instance=instance)) == 4)

        self.assert_(len(Badge.all_q().all()) == 8)
コード例 #29
0
    def test_get_all_badges(self):
        # setup
        from adhocracy.model import Badge, CategoryBadge, DelegateableBadge, \
            InstanceBadge, ThumbnailBadge
        from adhocracy.model import UserBadge, Instance
        instance = Instance.find(u'test')
        # create for each type a global scope and an instance scope badge
        InstanceBadge.create(u'badge ü', u'#ccc', True, u'description ü')
        InstanceBadge.create(u'badge ü', u'#ccc', True, u'description ü',
                             instance=instance)
        UserBadge.create(u'badge ü', u'#ccc', True, u'description ü')
        UserBadge.create(u'ü', u'#ccc', True, u'ü', instance=instance)
        DelegateableBadge.create(u'badge ü', u'#ccc', True, u'description ü')
        DelegateableBadge.create(u'badge ü', u'#ccc', True, u'description ü',
                                 instance=instance)
        CategoryBadge.create(u'badge ü', u'#ccc', True, u"desc")
        CategoryBadge.create(u'badge ü', u'#ccc', True, u"desc",
                             instance=instance)

        ThumbnailBadge.create(u'badge ü', u'#ccc', True, u"desc",
                              thumbnail=b'binary')
        ThumbnailBadge.create(u'badge ü', u'#ccc', True, u"desc",
                              thumbnail=b'binary', instance=instance)

        # all instance badges
        self.assertEqual(len(InstanceBadge.all()), 1)
        self.assertEqual(len(InstanceBadge.all(instance=instance)), 1)
        # all delegateable badges
        self.assertEqual(len(DelegateableBadge.all()), 1)
        self.assertEqual(len(DelegateableBadge.all(instance=instance)), 1)
        # all delegateable category badges
        self.assertEqual(len(CategoryBadge.all()), 1)
        self.assertEqual(len(CategoryBadge.all(instance=instance)), 1)
        # all delegateable thumbnail badges
        self.assertEqual(len(ThumbnailBadge.all()), 1)
        self.assertEqual(len(ThumbnailBadge.all(instance=instance)), 1)
        # all user badges
        self.assertEqual(len(UserBadge.all()), 3)
        self.assertEqual(len(UserBadge.all(instance=instance)), 1)
        # We can get all Badges by using `Badge`
        self.assertEqual(len(Badge.all()), 7)
        self.assertEqual(len(Badge.all(instance=instance)), 5)

        self.assertEqual(len(Badge.all_q().all()), 12)
コード例 #30
0
ファイル: massmessage.py プロジェクト: whausen/part
    def new(self, id=None, errors={}):

        if id is None:
            require.perm('global.message')
            template = '/massmessage/new.html'
        else:
            c.page_instance = InstanceController._get_current_instance(id)
            require.message.create(c.page_instance)
            c.settings_menu = InstanceController.settings_menu(c.page_instance,
                                                               'massmessage')
            template = '/instance/settings_massmessage.html'

        defaults = dict(request.params)

        data = {
            'instances': self.get_allowed_instances(c.user),
            'sender_options': self.get_allowed_sender_options(c.user),
            'userbadges': UserBadge.all(instance=c.instance,
                                        include_global=True)
        }

        return htmlfill.render(render(template, data),
                               defaults=defaults, errors=errors,
                               force_defaults=False)
コード例 #31
0
ファイル: test_badges.py プロジェクト: phihag/adhocracy
    def test_get_all_badgets(self):
        #setup
        from adhocracy.model import Badge, CategoryBadge, DelegateableBadge, \
            InstanceBadge
        from adhocracy.model import UserBadge, Instance
        instance = Instance.find(u'test')
        # create for each type a global scope and an instance scope badge
        InstanceBadge.create(u'badge ü', u'#ccc', u'description ü')
        InstanceBadge.create(u'badge ü',
                             u'#ccc',
                             u'description ü',
                             instance=instance)
        UserBadge.create(u'badge ü', u'#ccc', u'description ü')
        UserBadge.create(u'ü', u'#ccc', u'ü', instance=instance)
        DelegateableBadge.create(u'badge ü', u'#ccc', u'description ü')
        DelegateableBadge.create(u'badge ü',
                                 u'#ccc',
                                 u'description ü',
                                 instance=instance)
        CategoryBadge.create(u'badge ü', u'#ccc', u"desc")
        CategoryBadge.create(u'badge ü', u'#ccc', u"desc", instance=instance)

        # all instance badges
        self.assert_(len(InstanceBadge.all()) == 1)
        self.assert_(len(InstanceBadge.all(instance=instance)) == 1)
        # all delegateable badges
        self.assert_(len(DelegateableBadge.all()) == 1)
        self.assert_(len(DelegateableBadge.all(instance=instance)) == 1)
        # all delegateable category badges
        self.assert_(len(CategoryBadge.all()) == 1)
        self.assert_(len(CategoryBadge.all(instance=instance)) == 1)
        # all user badgets
        self.assert_(len(UserBadge.all()) == 1)
        self.assert_(len(UserBadge.all(instance=instance)) == 1)
        # We can get all Badges by using `Badge`
        self.assert_(len(Badge.all()) == 4)
        self.assert_(len(Badge.all(instance=instance)) == 4)

        self.assert_(len(Badge.all_q().all()) == 8)
コード例 #32
0
ファイル: invite.py プロジェクト: alkadis/vcv
def valid_userbadge(title, instance=None):
    invited_badge = UserBadge.find_by_instance(title, instance)
    if invited_badge is None:
        invited_badge = UserBadge.create(title, u"#000000", False, u"This user has been invited", instance=instance)
        print (u"Badge %r created" % invited_badge)
    return invited_badge