def user_tag_i_support(brain, request, va, **kw): """ Special view action for user tag 'support'. It requires catalog metadata + expects a brain as context, rather than a full object. """ api = kw['api'] obj = find_resource(api.root, brain['path']) # Only available on proposals if not obj.content_type == 'Proposal': return "" # only show form if users has the vote role show_form = False meeting = find_interface(obj, IMeeting) if ROLE_VOTER in meeting.get_groups(api.userid): show_form = True user_tags = request.registry.getAdapter(obj, IUserTags) userids = user_tags.userids_for_tag('support') #Note: It's not possible to have nested translation strings. So we do the translation here in advance. display_name = api.translate(_(u"Support")) expl_display_name = _(u"Support this") brain_url = "%s%s" % (request.application_url, brain['path']) response = dict( context_id=brain['uid'], toggle_url="%s/_support" % brain_url, tag='support', display_name=display_name, get_userinfo_url=api.get_userinfo_url, expl_display_name=expl_display_name, ) if api.userid and api.userid in userids: #Current user likes the current context response['button_label'] = _(u"Remove ${display_name}", mapping={'display_name': display_name}) response['selected'] = True response['do'] = "0" userids = list(userids) userids.remove(api.userid) else: #Current user hasn't selected the current context response['button_label'] = display_name response['selected'] = False response['do'] = "1" response['userids'] = userids response['has_entries'] = bool(response['selected'] or userids) response[ 'tagging_users_url'] = " %s/_tagging_users?tag=%s&display_name=%s&expl_display_name=%s" % ( brain_url, 'support', display_name, expl_display_name) response['show_form'] = show_form return render('voteit.core.views:templates/snippets/user_tag.pt', response, request=request)
def meeting_access_view_and_discuss(context, request, va, **kw): if context.get_field_value('access_policy') != 'view_and_discuss_permissions': raise Exception("ViewAction for request meeting access view_and_discuss_permissions was called, but that access policy wasn't set for this meeting.") api = kw['api'] if not api.userid: raise Exception("Can't find userid") schema = colander.Schema() add_csrf_token(context, request, schema) form = Form(schema, buttons=(button_request, button_cancel,)) response = {'api': api} post = request.POST if 'request' in post: controls = post.items() try: appstruct = form.validate(controls) except ValidationFailure, e: response['form'] = e.render() return response context.add_groups(api.userid, [ROLE_DISCUSS, ], event = True) api.flash_messages.add(_(u"Access granted!")) url = resource_url(context, request) return HTTPFound(location=url)
from betahaus.viewcomponent import view_action from pyramid.url import resource_url from pyramid.httpexceptions import HTTPFound from voteit.core.models.schemas import add_csrf_token from voteit.core.models.schemas import button_request from voteit.core.models.schemas import button_cancel from voteit.core.security import ROLE_DISCUSS from voteit.core.models.interfaces import IMeeting from scout.annual_meeting import ScoutMF as _ @view_action('request_meeting_access', 'view_and_discuss_permissions', interface = IMeeting, title = _(u"meeting_access_view_and_discuss_label", default = u"All users will be given view and discuss permissions INSTANTLY if they request it."),) def meeting_access_view_and_discuss(context, request, va, **kw): if context.get_field_value('access_policy') != 'view_and_discuss_permissions': raise Exception("ViewAction for request meeting access view_and_discuss_permissions was called, but that access policy wasn't set for this meeting.") api = kw['api'] if not api.userid: raise Exception("Can't find userid") schema = colander.Schema() add_csrf_token(context, request, schema) form = Form(schema, buttons=(button_request, button_cancel,)) response = {'api': api} post = request.POST if 'request' in post: controls = post.items() try: appstruct = form.validate(controls)
def scout_group_node(): return colander.SchemaNode( colander.String(), title=_(u"Scout group"), validator=html_string_validator, )