Exemplo n.º 1
0
def withdraw_roles_validation(process, context):
    organization = context.organization
    if organization:
        return has_role(role=('Moderator',)) or \
               has_role(role=('OrganizationResponsible', organization))

    return False
Exemplo n.º 2
0
    def set_organization(self, organization):
        current_organization = self.organization
        if organization:
            if current_organization is not organization:
                is_manager = current_organization and has_role(
                    ('OrganizationResponsible', current_organization),
                    self,
                    ignore_superiors=True)
                if current_organization and is_manager:
                    revoke_roles(
                        self,
                        (('OrganizationResponsible', current_organization), ))

                self.setproperty('organization', organization)
        elif current_organization:
            is_manager = has_role(
                ('OrganizationResponsible', current_organization),
                self,
                ignore_superiors=True)
            if is_manager:
                revoke_roles(
                    self,
                    (('OrganizationResponsible', current_organization), ))

            self.delfromproperty('organization', current_organization)
Exemplo n.º 3
0
def withdraw_roles_validation(process, context):
    organization = context.organization
    if organization:
        return has_role(role=('Moderator',)) or \
               has_role(role=('OrganizationResponsible', organization))

    return False
Exemplo n.º 4
0
def get_authorized_roles(user=None):
    if not user:
        user = get_current()

    roles = APPLICATION_ROLES.copy()
    if not has_role(user=user, role=('SiteAdmin', )) and \
       'SiteAdmin' in roles:
        roles.pop('SiteAdmin')

    if not has_role(user=user, role=('Admin', )) and \
       'Admin' in roles:
        roles.pop('Admin')

    return roles
Exemplo n.º 5
0
def get_authorized_roles(user=None):
    if not user:
        user = get_current()

    roles = APPLICATION_ROLES.copy()
    if not has_role(user=user, role=('SiteAdmin', )) and \
       'SiteAdmin' in roles:
        roles.pop('SiteAdmin')

    if not has_role(user=user, role=('Admin', )) and \
       'Admin' in roles:
        roles.pop('Admin')

    return roles
Exemplo n.º 6
0
def update_manager(organization, managers):
    managers_toadd = [u for u in managers
                      if not has_role(
                        user=u,
                        role=('OrganizationResponsible',
                            organization))]
    managers_todel = [u for u in organization.managers
                      if u not in managers]

    for manager in managers_todel:
        revoke_roles(manager, (('OrganizationResponsible',
                                organization),))

    for manager in managers_toadd:
        grant_roles(user=manager,
                    roles=(('OrganizationResponsible',
                           organization),))

    for manager in managers:
        if manager not in organization.members:
            organization.addtoproperty('members', manager)

    for member in organization.members:
        grant_roles(user=member,
                    roles=(('OrganizationMember',
                           organization),))
Exemplo n.º 7
0
    def start(self, context, request, appstruct, **kw):
        create_actions = self.process.get_actions('creat')
        create_action = create_actions[0] if create_actions else None
        challenge = None
        if create_action:
            result = create_action.start(context, request, appstruct, **kw)
            challenge = result.get('newcontext', None)
            if challenge:
                user = get_current(request)
                anonymous = appstruct.get('anonymous', False)
                author = user if not anonymous else user.get_mask()
                challenge.subscribe_to_channel(user)
                is_moderator = has_role(role=('Moderator',))
                if not is_moderator:
                    submit_actions = self.process.get_actions('submit')
                    submit_action = submit_actions[0] if submit_actions else None
                    if submit_action:
                        submit_action.start(challenge, request, {'user': author})
                else:
                    publish_actions = self.process.get_actions('publish')
                    publish_action = publish_actions[0] if publish_actions else None
                    if publish_action:
                        publish_action.start(challenge, request, {'user': author})

                return {'newcontext': challenge, 'state': True}

        return {'newcontext': getSite(), 'state': False}
Exemplo n.º 8
0
def edit_state_validation(process, context):
    if 'draft' in context.state:
        return True

    site = get_site_folder(True)
    return has_role(role=('SiteAdmin', site)) or\
           is_site_moderator()
Exemplo n.º 9
0
def remove_roles_validation(process, context):
    site = get_site_folder(True)
    return ('editable' in context.state and \
            has_role(role=('Owner', context))) or \
           has_any_roles(roles=(('SiteAdmin', site),
                                'Admin')) or\
           is_site_moderator()
Exemplo n.º 10
0
def remind_roles_validation(process, context):
    organization = getattr(context, 'organization', None)
    if organization:
        return has_any_roles(
            roles=('SiteAdmin', ('OrganizationResponsible', organization)))

    return has_role(role=('SiteAdmin',))
Exemplo n.º 11
0
    def bind(self):
        bindings = {}
        bindings['navbars'] = None
        bindings['vote_actions'] = None
        vote_actions = get_vote_actions_body(self.context, self.request)
        try:
            navbars = generate_navbars(self.request,
                                       self.context,
                                       text_action=vote_actions['activators'])
            bindings['navbars'] = navbars
            bindings['vote_actions'] = vote_actions
        except ObjectRemovedException:
            return

        bindings['user'] = get_current()
        bindings['root'] = getSite()
        bindings['is_participant'] = has_role(user=bindings['user'],
                                              role=('Participant',
                                                    self.context))
        bindings['is_censored'] = 'censored' in self.context.state
        bindings['to_hide'] = bindings['is_censored'] and not has_any_roles(
            user=bindings['user'],
            roles=(('Participant', self.context), 'Moderator'))
        bindings['corrections'] = [
            c for c in self.context.corrections if 'in process' in c.state
        ]
        bindings['enable_corrections'] = self._enable_corrections(
            bindings['is_participant'], bindings['corrections'])
        bindings['content_data'] = self._get_adapted_text(
            bindings['user'], bindings['is_participant'],
            bindings['corrections'], bindings['enable_corrections'])
        setattr(self, '_bindings', bindings)
Exemplo n.º 12
0
    def before_update(self):
        self.is_draft_owner = False
        if 'draft' in self.context.state and \
            has_role(role=('Owner', self.context)):
            self.is_draft_owner = True

        super(DeleteProposalView, self).before_update()
Exemplo n.º 13
0
    def bind(self):
        bindings = {}
        bindings['navbars'] = None
        bindings['vote_actions'] = None
        vote_actions = get_vote_actions_body(
            self.context, self.request)
        try:
            navbars = generate_navbars(
                self.request, self.context,
                text_action=vote_actions['activators'])
            bindings['navbars'] = navbars
            bindings['vote_actions'] = vote_actions
        except ObjectRemovedException:
            return

        bindings['user'] = get_current()
        bindings['root'] = getSite()
        bindings['is_participant'] = has_role(
            user=bindings['user'], role=('Participant', self.context))
        bindings['is_censored'] = 'censored' in self.context.state
        bindings['to_hide'] = bindings['is_censored'] and not has_any_roles(
            user=bindings['user'],
            roles=(('Participant', self.context), 'Moderator'))
        bindings['corrections'] = [c for c in self.context.corrections
                                   if 'in process' in c.state]
        bindings['enable_corrections'] = self._enable_corrections(
            bindings['is_participant'], bindings['corrections'])
        bindings['content_data'] = self._get_adapted_text(
            bindings['user'], bindings['is_participant'],
            bindings['corrections'], bindings['enable_corrections'])
        setattr(self, '_bindings', bindings)
Exemplo n.º 14
0
def seeinv_processsecurity_validation(process, context):
    organization = context.organization
    return (organization and \
            has_role(role=('OrganizationResponsible',
                           organization))) or \
            has_any_roles(roles=('Moderator',
                                'Anonymous'))
Exemplo n.º 15
0
    def update(self):
        self.execute(None)
        try:
            navbars = generate_navbars(self, self.context, self.request)
        except ObjectRemovedException:
            return HTTPFound(self.request.resource_url(getSite(), ''))

        result = {}
        user = get_current()
        related_contents, len_contents = self.get_related_contents(user)
        values = {
            'object': self.context,
            'state': get_states_mapping(user, self.context,
                                        self.context.state[0]),
            'related_contents': related_contents,
            'len_contents': len_contents,
            'navbar_body': navbars['navbar_body'],
            'actions_bodies': navbars['body_actions'],
            'footer_body': navbars['footer_body'],
            'get_oid': get_oid,
            'is_portalmanager': has_role(user=user, role=('PortalManager', ))
        }
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        item['messages'] = navbars['messages']
        item['isactive'] = navbars['isactive']
        result.update(navbars['resources'])
        result['coordinates'] = {self.coordinates: [item]}
        return result
Exemplo n.º 16
0
    def update(self):
        self.execute(None)
        try:
            navbars = generate_navbars(self, self.context, self.request)
        except ObjectRemovedException:
            return HTTPFound(self.request.resource_url(getSite(), ''))

        result = {}
        user = get_current()
        site = get_site_folder(True, self.request)
        diff_marker = "#diff"
        values = {
            'object': self.context,
            'state': get_states_mapping(
                user, self.context,
                getattr(self.context, 'state_or_none', [None])[0]),
            'navbar_body': navbars['navbar_body'],
            'services_body': navbars['services_body'],
            'footer_body': navbars['footer_body'],
            'is_portalmanager': has_role(user=user, role=('PortalManager',)),
            'tree_diff': json.dumps(
                tree_diff(site.tree, self.context.tree, diff_marker)),
            'diff_marker': diff_marker
        }
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        item['messages'] = navbars['messages']
        item['isactive'] = navbars['isactive']
        result.update(navbars['resources'])
        result.update(self.requirements)
        result['coordinates'] = {self.coordinates: [item]}
        return result
Exemplo n.º 17
0
    def start(self, context, request, appstruct, **kw):
        site = get_site_folder(True, request)
        user = get_current(request)
        is_manager = has_any_roles(
            user=user,
            roles=('Admin', ('SiteAdmin', site))) or\
            is_site_moderator(request)
        if is_manager or all(has_role(user=user, role=('Owner', v))
                             for v in appstruct['targets']
                             if 'published' not in v.state):
            root = getSite()
            source = appstruct['source']
            targets = appstruct['targets']
            for artist in targets:
                replaced = artist.replace_by(source)
                if replaced:
                    request.registry.notify(ObjectReplaced(
                        old_object=artist,
                        new_object=source
                    ))
                    root.delfromproperty('artists', artist)
        else:
            return {'error': True}

        return {}
Exemplo n.º 18
0
    def update(self):
        self.execute(None)
        try:
            navbars = generate_navbars(self.request, self.context)
        except ObjectRemovedException:
            return HTTPFound(self.request.resource_url(getSite(), ''))

        organization = self.context
        current_user = get_current()
        evaluation_chart = render_object_evaluation_stat(self.context, self.request)
        examination_chart = render_object_examination_stat(self.context, self.request)
        values = {
            'organization': organization,
            'state': get_states_mapping(
                current_user, organization,
                getattr(organization, 'state_or_none', [None])[0]),
            'navbar_body': navbars['navbar_body'],
            'actions_bodies': navbars['body_actions'],
            'footer_body': navbars['footer_body'],
            'is_portal_manager': has_role(role=('PortalManager',)),
            'evaluation_chart': evaluation_chart,
            'examination_chart': examination_chart,
        }
        result = {}
        result = merge_dicts(navbars['resources'], result, ('css_links', 'js_links'))
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        item['messages'] = navbars['messages']
        item['isactive'] = navbars['isactive']
        result['coordinates'] = {self.coordinates: [item]}
        return result
Exemplo n.º 19
0
    def before_update(self):
        user = get_current()
        if not getattr(user, 'is_cultural_animator', False):
            self.schema.children.remove(self.schema.get('structure'))

        if not has_role(role=('Advertiser',), ignore_superiors=True):
            self.schema.children.remove(self.schema.get('company'))
Exemplo n.º 20
0
def seeinv_processsecurity_validation(process, context):
    organization = context.organization
    return (organization and \
            has_role(role=('OrganizationResponsible',
                           organization))) or \
            has_any_roles(roles=('Moderator',
                                'Anonymous'))
Exemplo n.º 21
0
def remind_roles_validation(process, context):
    organization = getattr(context, 'organization', None)
    if organization:
        return has_any_roles(roles=('SiteAdmin', ('OrganizationResponsible',
                                                  organization)))

    return has_role(role=('SiteAdmin', ))
Exemplo n.º 22
0
    def start(self, context, request, appstruct, **kw):
        members = appstruct['members']
        are_managers = appstruct['are_managers']
        for member in members:
            new_member = False
            if member not in context.members:
                context.addtoproperty('members', member)
                member.init_contents_organizations()
                new_member = True

            if are_managers and (new_member or not has_role(
                    user=member,
                    role=('OrganizationResponsible', context),
                    ignore_superiors=True)):
                grant_roles(
                    user=member,
                    roles=(('OrganizationResponsible',
                            context),))
            member.reindex()

        context.reindex()
        context.modified_at = datetime.datetime.now(tz=pytz.UTC)
        request.registry.notify(ActivityExecuted(
            self, [context], get_current()))
        return {}
Exemplo n.º 23
0
def edit_state_validation(process, context):
    if 'editable' in context.state:
        return True

    site = get_site_folder(True)
    return has_role(role=('SiteAdmin', site)) or\
           is_site_moderator()
Exemplo n.º 24
0
def remove_roles_validation(process, context):
    site = get_site_folder(True)
    return ('editable' in context.state and \
            has_role(role=('Owner', context))) or \
           is_site_moderator() or\
           has_any_roles(roles=(('SiteAdmin', site),
                                'Admin'))
Exemplo n.º 25
0
    def before_update(self):
        user = get_current()
        if not getattr(user, 'is_cultural_animator', False):
            self.schema.children.remove(self.schema.get('structure'))

        if not has_role(role=('Advertiser', ), ignore_superiors=True):
            self.schema.children.remove(self.schema.get('company'))
Exemplo n.º 26
0
    def update(self):
        self.execute(None)
        try:
            navbars = generate_navbars(self, self.context, self.request)
        except ObjectRemovedException:
            return HTTPFound(self.request.resource_url(getSite(), ''))

        result = {}
        user = get_current()
        related_contents, len_contents = self.get_related_contents(user)
        values = {
            'object': self.context,
            'state': get_states_mapping(user, self.context,
                                        self.context.state[0]),
            'related_contents': related_contents,
            'len_contents': len_contents,
            'navbar_body': navbars['navbar_body'],
            'actions_bodies': navbars['body_actions'],
            'footer_body': navbars['footer_body'],
            'get_oid': get_oid,
            'is_portalmanager': has_role(user=user, role=('PortalManager',))
        }
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        item['messages'] = navbars['messages']
        item['isactive'] = navbars['isactive']
        result.update(navbars['resources'])
        result['coordinates'] = {self.coordinates: [item]}
        return result
Exemplo n.º 27
0
    def before_update(self):
        if has_role(role=('PortalManager', )):
            self.select_filters(
                ['metadata_filter', 'geographic_filter',
                 'contribution_filter', 'temporal_filter',
                 'text_filter', 'other_filter'])

        super(AdvancedSearchView, self).before_update()
Exemplo n.º 28
0
    def before_update(self):
        if has_role(role=('PortalManager', )):
            self.select_filters(
                ['metadata_filter', 'geographic_filter',
                 'contribution_filter', 'temporal_filter',
                 'text_filter', 'other_filter'])

        super(AdvancedSearchView, self).before_update()
Exemplo n.º 29
0
    def update(self):
        self.execute(None)
        user = get_current()
        is_manager = has_role(user=user, role=('PortalManager', ))
        filters = [
            {'metadata_filter': {
                'content_types': ['person']
            }}
        ]
        filter_form, filter_data = self._add_filter(user, is_manager)
        args = merge_with_filter_view(self, {})
        args['request'] = self.request
        objects = find_entities(
            user=user,
            filters=filters,
            **args)
        objects, sort_body = sort_view_objects(
            self, objects, ['person'], user)
        url = self.request.resource_url(self.context, self.name)
        batch = Batch(objects, self.request,
                      url=url,
                      default_size=BATCH_DEFAULT_SIZE)
        batch.target = "#results_users"
        len_result = batch.seqlen
        index = str(len_result)
        if len_result > 1:
            index = '*'

        self.title = self._get_title(
            index=index, len_result=len_result, user=user)
        filter_data['filter_message'] = self.title
        filter_body = self.filter_instance.get_body(filter_data)
        result_body, result = render_listing_objs(
            self.request, batch, user)
        novaideo_catalog = find_catalog('novaideo')
        last_connection_index = novaideo_catalog['last_connection']
        current_date = datetime.datetime.combine(
            datetime.datetime.now(),
            datetime.time(0, 0, 0, tzinfo=pytz.UTC))
        inactive_users = find_users(
            last_connection_index, current_date, (INACTIVITY_DURATION, None))
        if filter_form:
            result = merge_dicts(
                {'css_links': filter_form['css_links'],
                'js_links': filter_form['js_links']
                }, result)

        values = {'bodies': result_body,
                  'batch': batch,
                  'is_manager': is_manager,
                  'inactivity_duration': INACTIVITY_DURATION,
                  'inactive_users': inactive_users.__len__(),
                  'filter_body': filter_body,
                  'sort_body': sort_body}
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        result['coordinates'] = {self.coordinates: [item]}
        return result
Exemplo n.º 30
0
def auth_user(token, request):
    current_user = None
    user = get_user_by_token(token)
    if (has_role(user=user, role=('SiteAdmin', )) or
            'active' in getattr(user, 'state', [])):
        current_user = user
        request.user = current_user

    return current_user
Exemplo n.º 31
0
def roles_choice(node, kw):
    roles = ADMIN_ROLES.copy()
    if not has_role(role=('Admin', )) and 'Admin' in roles:
        roles = APPLICATION_ROLES.copy()

    values = [(key, name) for (key, name) in roles.items()
              if not DACE_ROLES[key].islocal]
    values = sorted(values, key=lambda e: e[0])
    return Select2Widget(values=values, multiple=True)
Exemplo n.º 32
0
def seechallenge_processsecurity_validation(process, context):
    is_restricted = getattr(context, 'is_restricted', False)
    can_access = True
    if is_restricted:
        can_access = has_role(role=('ChallengeParticipant', context))

    return can_access and access_user_processsecurity(process, context) and \
        ('published' in context.state or 'censored' in context.state or
         has_any_roles(roles=(('Owner', context), 'Moderator')))
Exemplo n.º 33
0
def auth_user(token, request):
    current_user = None
    user = get_user_by_token(token)
    if (has_role(user=user, role=('SiteAdmin', ))
            or 'active' in getattr(user, 'state', [])):
        current_user = user
        request.user = current_user

    return current_user
Exemplo n.º 34
0
 def _add_requirements(self, user):
     is_owner = has_role(user=user, role=('Owner', self.context))
     if is_owner and ('explanation' in self.context.state):
         self.requirements = {'js_links': [], 'css_links': [],}
         intentionform = IntentionFormView(self.context, self.request)
         intentionformresult = intentionform()
         self.requirements['js_links'] = intentionformresult['js_links']
         self.requirements['css_links'] = intentionformresult['css_links']
         self.requirements['js_links'].append('novaideo:static/js/explanation_amendment.js')
Exemplo n.º 35
0
def roles_choice(node, kw):
    roles = ADMIN_ROLES.copy()
    if not has_role(role=('Admin', )) and 'Admin' in roles:
        roles = APPLICATION_ROLES.copy()

    values = [(key, name) for (key, name) in roles.items()
              if not DACE_ROLES[key].islocal]
    values = sorted(values, key=lambda e: e[0])
    return Select2Widget(values=values, multiple=True)
Exemplo n.º 36
0
def seequestion_processsecurity_validation(process, context):
    challenge = getattr(context, 'challenge', None)
    is_restricted = getattr(challenge, 'is_restricted', False)
    can_access = True
    if is_restricted:
        can_access = has_role(role=('ChallengeParticipant', challenge))

    return can_access and access_user_processsecurity(process, context) and \
           ('published' in context.state or 'censored' in context.state or\
            has_any_roles(roles=(('Owner', context), 'Moderator')))
Exemplo n.º 37
0
 def _add_requirements(self, user):
     is_owner = has_role(user=user, role=('Owner', self.context))
     if is_owner and ('explanation' in self.context.state):
         self.requirements = {'js_links': [], 'css_links': []}
         intentionform = IntentionFormView(self.context, self.request)
         intentionformresult = intentionform()
         self.requirements['js_links'] = intentionformresult['js_links']
         self.requirements['css_links'] = intentionformresult['css_links']
         self.requirements['js_links'].append(
             'novaideo:static/js/explanation_amendment.js')
Exemplo n.º 38
0
    def validate(cls, context, request, **kw):
        from pyramid.security import authenticated_userid
        if has_role(role=('Admin',)) or \
           authenticated_userid(request) == 'admin':
            if not request.user:
                request.user = request.root['principals']['users']['admin']

            return True

        raise ValidationError(msg=_("Permission denied"))
Exemplo n.º 39
0
    def validate(cls, context, request, **kw):
        from pyramid.security import authenticated_userid
        if has_role(role=('Admin',)) or \
           authenticated_userid(request) == 'admin':
            if not request.user:
                request.user = request.root['principals']['users']['admin']

            return True

        raise ValidationError(msg=_("Permission denied"))
Exemplo n.º 40
0
def seereg_processsecurity_validation(process, context):
    has_role_cond = False
    organization = getattr(context, 'organization', None)
    if organization:
        has_role_cond = has_any_roles(
            roles=('SiteAdmin', ('OrganizationResponsible', context)))
    else:
        has_role_cond = has_role(role=('SiteAdmin',))

    return has_role_cond and \
        global_user_processsecurity()
Exemplo n.º 41
0
    def default_data(self):
        organization = self.context.organization
        if organization:
            return {
                'organization': organization,
                'ismanager': has_role(
                    ('OrganizationResponsible', organization), self.context,
                    ignore_superiors=True)
            }

        return {}
Exemplo n.º 42
0
def seereg_processsecurity_validation(process, context):
    has_role_cond = False
    organization = getattr(context, 'organization', None)
    if organization:
        has_role_cond = has_any_roles(roles=('SiteAdmin',
                                             ('OrganizationResponsible',
                                              context)))
    else:
        has_role_cond = has_role(role=('SiteAdmin', ))

    return has_role_cond and \
        global_user_processsecurity()
Exemplo n.º 43
0
    def update(self):
        self.execute(None)
        user = get_current()
        is_manager = has_role(user=user, role=('PortalManager', ))
        filters = [{'metadata_filter': {'content_types': ['person']}}]
        filter_form, filter_data = self._add_filter(user, is_manager)
        args = merge_with_filter_view(self, {})
        args['request'] = self.request
        objects = find_entities(user=user, filters=filters, **args)
        objects, sort_body = sort_view_objects(self, objects, ['person'], user)
        url = self.request.resource_url(self.context, self.name)
        batch = Batch(objects,
                      self.request,
                      url=url,
                      default_size=BATCH_DEFAULT_SIZE)
        batch.target = "#results_users"
        len_result = batch.seqlen
        index = str(len_result)
        if len_result > 1:
            index = '*'

        self.title = self._get_title(index=index,
                                     len_result=len_result,
                                     user=user)
        filter_data['filter_message'] = self.title
        filter_body = self.filter_instance.get_body(filter_data)
        result_body, result = render_listing_objs(self.request, batch, user)
        novaideo_catalog = find_catalog('novaideo')
        last_connection_index = novaideo_catalog['last_connection']
        current_date = datetime.datetime.combine(
            datetime.datetime.now(), datetime.time(0, 0, 0, tzinfo=pytz.UTC))
        inactive_users = find_users(last_connection_index, current_date,
                                    (INACTIVITY_DURATION, None))
        if filter_form:
            result = merge_dicts(
                {
                    'css_links': filter_form['css_links'],
                    'js_links': filter_form['js_links']
                }, result)

        values = {
            'bodies': result_body,
            'batch': batch,
            'is_manager': is_manager,
            'inactivity_duration': INACTIVITY_DURATION,
            'inactive_users': inactive_users.__len__(),
            'filter_body': filter_body,
            'sort_body': sort_body
        }
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        result['coordinates'] = {self.coordinates: [item]}
        return result
Exemplo n.º 44
0
    def update(self):
        self.execute(None)
        try:
            navbars = generate_navbars(self.request, self.context)
        except ObjectRemovedException:
            return HTTPFound(self.request.resource_url(getSite(), ''))

        user = self.context
        current_user = get_current()
        details = {}
        stats = get_object_stat(self.context, self.request)
        stats['nb_other'] = stats.get('nb_other', 0) + len(
            user.evaluated_objs_ids())
        stas_len = sum(stats.values())
        evaluation_chart = render_object_evaluation_stat(
            self.context, self.request)
        examination_chart = render_object_examination_stat(
            self.context, self.request)
        values = {
            'user':
            user,
            'proposals':
            None,
            'state':
            get_states_mapping(current_user, user,
                               getattr(user, 'state_or_none', [None])[0]),
            'navbar_body':
            navbars['navbar_body'],
            'actions_bodies':
            navbars['body_actions'],
            'footer_body':
            navbars['footer_body'],
            'is_portal_manager':
            has_role(role=('PortalManager', )),
            'contributions_len':
            stas_len,
            'details':
            stats,
            'evaluation_chart':
            evaluation_chart,
            'examination_chart':
            examination_chart,
        }
        result = {}
        result = merge_dicts(navbars['resources'], result,
                             ('css_links', 'js_links'))
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        item['messages'] = navbars['messages']
        item['isactive'] = navbars['isactive']
        result['coordinates'] = {self.coordinates: [item]}
        return result
Exemplo n.º 45
0
    def default_data(self):
        organization = self.context.organization
        if organization:
            return {
                'organization':
                organization,
                'ismanager':
                has_role(('OrganizationResponsible', organization),
                         self.context,
                         ignore_superiors=True)
            }

        return {}
Exemplo n.º 46
0
 def before_update(self):
     invitations_schema = self.schema.get('invitations').children[0]
     schema_instance = InvitationSchema()
     roles_node = invitations_schema.get('roles')
     if has_role(role=('Moderator',)):
         roles_node.widget = roles_choice(roles_node, 
                             ['Moderator', 'Member', 'Examiner'])
         organization_node = schema_instance.get('organization')
         ismanager_node = schema_instance.get('ismanager')
         invitations_schema.children.append(organization_node)
         invitations_schema.children.append(ismanager_node)
     else:
         invitations_schema.children.remove(roles_node)
Exemplo n.º 47
0
    def update(self):
        self.execute(None)
        try:
            navbars = generate_navbars(self, self.context, self.request)
        except ObjectRemovedException:
            return HTTPFound(self.request.resource_url(getSite(), ''))

        result = {}
        user = get_current()
        related_film_schedules = find_related_film_schedules(self.context)
        related_film_schedules = [a for a in related_film_schedules]
        films_body = ''
        if related_film_schedules:
            films_folder = generate_search_smart_folder(
                'fil schedules',
                ('city_classification', 'venue_classification'))
            films_body = films_folder.classifications.render(
                related_film_schedules, self.request, films_folder)

        site = get_site_folder(True, self.request)
        diff_marker = "#diff"
        values = {
            'object':
            self.context,
            'films_body':
            films_body,
            'state':
            get_states_mapping(
                user, self.context,
                getattr(self.context, 'state_or_none', [None])[0]),
            'navbar_body':
            navbars['navbar_body'],
            'footer_body':
            navbars['footer_body'],
            'services_body':
            navbars['services_body'],
            'is_portalmanager':
            has_role(user=user, role=('PortalManager', )),
            'tree_diff':
            json.dumps(tree_diff(site.tree, self.context.tree, diff_marker)),
            'diff_marker':
            diff_marker
        }
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        item['messages'] = navbars['messages']
        item['isactive'] = navbars['isactive']
        result.update(navbars['resources'])
        result.update(self.requirements)
        result['coordinates'] = {self.coordinates: [item]}
        return result
Exemplo n.º 48
0
    def update(self):
        self.execute(None)
        try:
            navbars = generate_navbars(self, self.context, self.request)
        except ObjectRemovedException:
            return HTTPFound(self.request.resource_url(getSite(), ''))

        result = {}
        user = get_current()
        related_schedules, len_schedules = self.get_related_contents(
            user, IFilmSchedule)
        related_events, len_events = self.get_related_contents(
            user, ICulturalEvent)
        values = {
            'object':
            self.context,
            'state':
            get_states_mapping(
                user, self.context,
                getattr(self.context, 'state_or_none', [None])[0]),
            'sync_operation':
            'venue_address_coordinates_synchronizing',
            'url':
            self.request.resource_url(self.context,
                                      '@@culturaleventmanagement'),
            'related_events':
            related_events,
            'related_schedules':
            related_schedules,
            'len_schedules':
            len_schedules,
            'len_events':
            len_events,
            'navbar_body':
            navbars['navbar_body'],
            'actions_bodies':
            navbars['body_actions'],
            'footer_body':
            navbars['footer_body'],
            'get_oid':
            get_oid,
            'is_portalmanager':
            has_role(user=user, role=('PortalManager', ))
        }
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        item['messages'] = navbars['messages']
        item['isactive'] = navbars['isactive']
        result.update(navbars['resources'])
        result['coordinates'] = {self.coordinates: [item]}
        return result
Exemplo n.º 49
0
    def set_organization(self, organization):
        current_organization = self.organization
        if organization:
            if current_organization is not organization:
                is_manager = current_organization and has_role(
                    ('OrganizationResponsible', current_organization), self,
                    ignore_superiors=True)
                if current_organization and is_manager:
                    revoke_roles(
                        self,
                        (('OrganizationResponsible', current_organization),))

                self.setproperty('organization', organization)
        elif current_organization:
            is_manager = has_role(
                ('OrganizationResponsible', current_organization), self,
                ignore_superiors=True)
            if is_manager:
                revoke_roles(
                    self,
                    (('OrganizationResponsible', current_organization),))

            self.delfromproperty('organization', current_organization)
Exemplo n.º 50
0
    def before_update(self):
        if not has_role(role=('Moderator', )):
            self.schema = select(
                InvitationSchema(editable=True),
                ['title', 'user_title', 'first_name', 'last_name', 'email'])

        self.action = self.request.resource_url(
            self.context,
            'novaideoapi',
            query={
                'op': 'update_action_view',
                'node_id': EditInvitation.node_definition.id
            })
        self.schema.widget = deform.widget.FormWidget(
            css_class='deform novaideo-ajax-form')
Exemplo n.º 51
0
def keyword_widget(node, kw):
    request = node.bindings['request']
    site = request.get_site_folder
    can_create = 0
    if has_role(role=('Member', )):
        can_create = 1
    if has_any_roles(roles=('Admin', ('SiteAdmin', site))):
        can_create = 0

    levels = site.get_tree_nodes_by_level()
    return KeywordsTreeWidget(
        min_len=2,
        max_len=DEFAULT_TREE_LEN,
        can_create=can_create,
        levels=levels)
Exemplo n.º 52
0
    def _get_adapted_text(self, user):
        is_participant = has_role(user=user, role=('Participant', self.context))
        text = getattr(self.context, 'text', '')
        description = getattr(self.context, 'description', '')
        title = getattr(self.context, 'title', '')
        add_filigrane = False
        corrections = [c for c in self.context.corrections \
                       if 'in process' in c.state]
        if corrections and is_participant:
            text = corrections[-1].get_adapted_text(user)
            description = corrections[-1].get_adapted_description(user)
            title = corrections[-1].get_adapted_title(user)
        elif not is_participant and not ('published' in self.context.state):
            add_filigrane = True

        return title, description, text, add_filigrane
Exemplo n.º 53
0
    def check_user(self):
        login = self.params('email')
        password = self.params('password')
        context = self.context
        request = self.request
        adapter = request.registry.queryMultiAdapter((context, request),
                                                     IUserLocator)
        if adapter is None:
            adapter = DefaultUserLocator(context, request)
        user = adapter.get_user_by_email(login)
        if user and user.check_password(password) and \
           (has_role(user=user, role=('Admin', )) or \
           'active' in getattr(user, 'state', [])):
            return {'check': True}

        return {'check': False}
Exemplo n.º 54
0
def validate_user(context, request, appstruct):
    user = get_or_create_user(request, appstruct)
    valid = user and (has_role(user=user, role=('SiteAdmin', )) or
                      'active' in getattr(user, 'state', []))
    headers = None
    if valid:
        request.session.pop('novaideo.came_from', None)
        headers = remember(request, get_oid(user))
        request.registry.notify(
            LoggedIn(
                user.email, user,
                context, request))
        user.last_connection = datetime.datetime.now(tz=pytz.UTC)
        if hasattr(user, 'reindex'):
            user.reindex()

    return user, valid, headers
Exemplo n.º 55
0
    def check_user(self):
        login = self.params('email')
        password = self.params('password')
        context = self.context
        request = self.request
        adapter = request.registry.queryMultiAdapter(
            (context, request),
            IUserLocator
            )
        if adapter is None:
            adapter = DefaultUserLocator(context, request)
        user = adapter.get_user_by_email(login)
        if user and user.check_password(password) and \
           (has_role(user=user, role=('Admin', )) or \
           'active' in getattr(user, 'state', [])):
            return {'check': True}

        return {'check': False}
Exemplo n.º 56
0
    def start(self, context, request, appstruct, **kw):
        members = appstruct['members']
        for member in members:
            if member in context.members:
                context.delfromproperty('members', member)
                if has_role(user=member,
                    role=('OrganizationResponsible', context),
                    ignore_superiors=True):
                    revoke_roles(
                        user=member,
                        roles=(('OrganizationResponsible', context), ))
            member.reindex()

        context.reindex()
        context.modified_at = datetime.datetime.now(tz=pytz.UTC)
        request.registry.notify(ActivityExecuted(
            self, [context], get_current()))
        return {}