def _get_needs_for_roles(self, user): needs = [] needs_for_roles = self.__model__.objects.filter( entities__in=user.roles, deployment=user.deployment) for need in needs_for_roles: if need.items: needs.extend([ItemNeed(need.action, item, 'object') for item in need.items]) else: needs.append(ActionNeed(need.action)) return needs
def find(self, **kwargs): _kwargs = self._set_default_filter_parameters({}) if current_user.is_authenticated(): kwargs['pk__in'] = [ event.pk for event in filter( lambda f: Permission(ItemNeed('access_event', f, 'object'), RoleNeed('admin')).can(), self.__model__.objects.filter(**_kwargs)) ] return super(EventsService, self).find(**kwargs)
def _get_needs_for_user(self, user): needs = [] needs_for_user = self.__model__.objects.filter( entities=user, deployment=user.deployment) for need in needs_for_user: if need.items: items = filter(lambda i: type(i) != dict, list(need.items)) needs.extend( [ItemNeed(need.action, item, 'object') for item in items]) else: needs.append(ActionNeed(need.action)) return needs
def get_checklist_form_dashboard_menu(**kwargs): """Retrieves a list of forms that have the verification flag set :param form_type: The form type for the forms to be retrieved """ return [{ u'url': url_for(u'dashboard.checklists', form_id=str(form.id)), u'text': form.name, u'icon': u'<i class="glyphicon glyphicon-check"></i>', u'visible': True } for form in filter( lambda f: Permission(ItemNeed(u'view_forms', f, u'object'), RoleNeed(u'admin')).can(), services.forms.find(**kwargs).order_by(u'name'))]
def get_form_list_menu(**kwargs): """Retrieves a list of forms that the user has access to and returns it in a format that can be rendered on the menu :param form_type: The form type for the forms to be retrieved TODO: Actually restrict forms based on user permissions """ return [{ 'url': url_for('submissions.submission_list', form_id=str(form.id)), 'text': form.name, 'visible': True } for form in filter( lambda f: Permission(ItemNeed('view_forms', f, 'object'), RoleNeed('admin')).can(), services.forms.find(**kwargs))]
def get_quality_assurance_form_list_menu(**kwargs): """Retrieves a list of forms that have the verification flag set :param form_type: The form type for the forms to be retrieved """ return [{ 'url': url_for('submissions.quality_assurance_list', form_id=str(form.id)), 'text': form.name, 'icon': '<i class="glyphicon glyphicon-ok"></i>', 'visible': True } for form in filter( lambda f: Permission(ItemNeed('view_forms', f, 'object'), RoleNeed('admin')).can(), services.forms.find(**kwargs).order_by('name'))]
def require_item_perm(action, item, http_exception=403): perm = Permission(ItemNeed(action, item, 'object'), RoleNeed('admin')) if not perm.can(): abort(http_exception, perm)