def group_link(context): group = find_local_group_by_user(context['request'].user) return { 'group': group, 'request': context['request'], }
def get_context_data(self, **kwargs): context = super(CallDashboardView, self).get_context_data(**kwargs) """Find campaigns as admin or caller""" user = self.request.user if hasattr(user, 'callprofile'): call_profile = user.callprofile else: """Create call profile if doesn't exist""" call_profile = CallProfile.objects.create(user=user) campaigns_as_admin = find_campaigns_as_admin(call_profile) campaigns_as_admin_sorted = sorted( campaigns_as_admin, key=lambda x: x.is_in_progress, reverse=True, ) campaigns_as_admin_active = [ (x, CallForm() if x.is_in_progress else None) for x in campaigns_as_admin_sorted if x.is_active ] campaigns_as_admin_inactive = [(x, None) for x in campaigns_as_admin_sorted if not x.is_active] campaigns_as_caller = find_campaigns_as_caller(call_profile) campaigns_as_caller_sorted = sorted( campaigns_as_caller, key=lambda x: x.is_in_progress, reverse=True, ) campaigns_as_caller_active = [ (x, CallForm() if x.is_in_progress else None) for x in campaigns_as_caller_sorted if (x.is_active and x not in campaigns_as_admin) ] context['campaigns_as_admin_active'] = campaigns_as_admin_active context['campaigns_as_admin_inactive'] = campaigns_as_admin_inactive context['campaigns_as_caller_active'] = campaigns_as_caller_active """Check if User can create or manage Call Campaigns""" local_group = find_local_group_by_user(user) context['local_group'] = local_group context['can_add_campaign'] = has_call_permission_for_local_group( user, local_group, 'calls.add_callcampaign', ) context['can_manage_campaign'] = has_call_permission_for_local_group( user, local_group, 'calls.change_callcampaign', ) return context
def can_create_application(self): """Check local group permission""" permission = 'nominations.add_application' user = self.request.user local_group = find_local_group_by_user(user) if local_group is not None: can_create = user.localgroupprofile.has_permission_for_local_group( local_group, permission) else: can_create = False return can_create
def organizing_hub_nav(context): group = find_local_group_by_user(context['request'].user) show_admins_link = ORGANIZING_HUB_ADMINS_ENABLED return { 'group': group, 'organizing_guides_url': ORGANIZING_GUIDES_URL, 'organizing_docs_url': ORGANIZING_DOCS_URL, 'show_admins_link': show_admins_link, 'request': context['request'], }
def show_event_promote(self): """Check feature flag and local group permissions""" if not ORGANIZING_HUB_PROMOTE_ENABLED: return False """TODO: make a template tag for local group perms?""" user = self.request.user local_group = find_local_group_by_user(user) permission = 'events.add_eventpromotion' if local_group is None: return False elif local_group.status != 'approved': return False elif not hasattr(user, 'localgroupprofile'): return False else: profile = user.localgroupprofile has_permission = profile.has_permission_for_local_group( local_group, permission) return has_permission
def has_organizing_hub_feature_access(context, feature_id): """ Check if user has access to Organizing Hub Feature Parameters ---------- feature_id : int Organizing Hub Feature id Returns ------- bool Return True if user has access to Organizing Hub Feature """ local_group = find_local_group_by_user(context['request'].user) if local_group is not None and hasattr( local_group, 'organizinghubaccess', ): access = local_group.organizinghubaccess has_feature_access = access.has_feature_access_by_id(feature_id) return has_feature_access else: return False
def find_campaigns_as_admin(call_profile): """ Find Call Campaigns that match Local Group edit access for Call Profile Return campaigns where profile has edit access via local group Parameters ---------- call_profile : CallProfile CallProfile for local group affiliation Returns ------- CallCampaign list Returns matching CallCampaign list """ """Check Feature Access and Local Group Permissions""" user = call_profile.user local_group = find_local_group_by_user(user) if local_group is not None and has_call_permission_for_local_group( user, local_group, 'calls.change_callcampaign'): return local_group.callcampaign_set.all().order_by('-date_created') """Otherwise return empty list""" return CallCampaign.objects.none()
def local_group(context): """TODO move to local groups template tags""" return find_local_group_by_user(context['request'].user)
def get_local_group(self): return find_local_group_by_user(self.request.user)
def get_local_group(self): if self.local_group is None: self.local_group = find_local_group_by_user(self.request.user) return self.local_group