def process_view(request, view_func, *view_args, **view_kwargs): if request.user.is_anonymous(): return try: request.user.member except Member.DoesNotExist: return if 'pgp' not in request.user.member.connections: return if request.user.member.seen_pgp_interstitial: return # Don't redirect if user is already on the intended interstitial. try: if request.resolver_match.url_name == 'pgp-interstitial': return except AttributeError: pass # Try gently, give up if this breaks. try: if not is_public(request.user.member, 'pgp'): url = '{}?{}'.format( urlresolvers.reverse('pgp-interstitial'), urlencode({'next': request.get_full_path()})) return HttpResponseRedirect(url) else: request.user.member.seen_pgp_interstitial = True request.user.member.save() except: # pylint: disable=bare-except pass
def get_member_data(member): member_data = {} for source in get_source_labels(): userdata = getattr(member.user, source) is_connected = bool(userdata.is_connected) has_files, source_is_public = (False, False) # Check for files. has_files = DataFile.objects.filter(user=member.user, source=source).count() > 0 # Check public sharing. if is_connected: source_is_public = is_public(member, source) member_data[source] = { 'is_connected': is_connected, 'has_files': has_files, 'is_public': source_is_public, } member_data['date_joined'] = member.user.date_joined.strftime( '%Y%m%dT%H%M%SZ') if member.primary_email: member_data['email_verified'] = member.primary_email.verified else: member_data['email_verified'] = False member_data['public_data_participant'] = ( member.public_data_participant.enrolled) return member_data
def public_direct_sharing_project_files(self): project_memberships = (self.member.datarequestprojectmember_set. filter(joined=True, authorized=True, revoked=False)) files = {} for membership in project_memberships: if not is_public(self.member, membership.project.id_label): continue files[membership.project] = list(ProjectDataFile.objects.filter( user=membership.member.user, direct_sharing_project=membership.project).exclude( completed=False).exclude(archived=True)) return files
def get_context_data(self, **kwargs): context = super(ActivityManagementView, self).get_context_data(**kwargs) activities = personalize_activities_dict(self.request.user, only_active=False, only_approved=False) try: self.activity = self.get_activity(activities) except KeyError: raise Http404 # MPB Aug 2017: This comprehension is slow, taking 2+ secs in local dev pubfilecount_cachetag = 'pubfilecount-{}'.format( self.activity['source_name']) public_files = cache.get(pubfilecount_cachetag) if not public_files: public_files = len([ df for df in DataFile.objects.filter( source=self.activity['source_name']).exclude( parent_project_data_file__completed=False).current(). distinct('user') if df.is_public ]) cache.set(pubfilecount_cachetag, public_files, timeout=TEN_MINUTES) requesting_activities = self.requesting_activities() data_is_public = False data_files = [] if self.request.user.is_authenticated(): data_files = (DataFile.objects.for_user( self.request.user).filter(source=self.activity['source_name'])) data_is_public = is_public(self.request.user.member, self.activity['source_name']) project = None project_member = None project_permissions = None granted_permissions = None permissions_changed = False if 'project_id' in self.activity: project = DataRequestProject.objects.get( pk=self.activity['project_id']) project_permissions = { 'share_username': project.request_username_access, 'send_messages': project.request_message_permission, 'share_sources': project.request_sources_access, 'returned_data_description': project.returned_data_description, } if self.activity['is_connected']: project_member = project.active_user(self.request.user) granted_permissions = { 'share_username': project_member.username_shared, 'send_messages': project_member.message_permission, 'share_sources': project_member.sources_shared, 'returned_data_description': project.returned_data_description, } permissions_changed = (not all([ granted_permissions[x] == project_permissions[x] for x in ['share_username', 'send_messages', 'share_sources'] ])) context.update({ 'activities': activities, 'activity': self.activity, 'data_files': data_files, 'is_public': data_is_public, 'source': self.activity['source_name'], 'project': project, 'project_member': project_member, 'project_permissions': project_permissions, 'granted_permissions': granted_permissions, 'permissions_changed': permissions_changed, 'public_files': public_files, 'requesting_activities': requesting_activities, }) return context
def public_selfie_files(self): if is_public(self.member, 'data_selfie'): return DataSelfieDataFile.objects.filter(user=self.member.user)
def get_context_data(self, **kwargs): context = super(ActivityManagementView, self).get_context_data(**kwargs) try: self.project = DataRequestProject.objects.get( slug=self.kwargs['source']) except KeyError: raise Http404 self.activity = activity_from_data_request_project( self.project, user=self.request.user) public_users = [ pda.user for pda in PublicDataAccess.objects.filter( data_source=self.activity['source_name']).filter( is_public=True).annotate( user=F('participant__member__user')) ] public_files = DataFile.objects.filter( source=self.activity['source_name']).exclude( parent_project_data_file__completed=False).distinct( 'user').filter(user__in=public_users).count() requesting_activities = self.requesting_activities() requested_activities = self.requested_activities() data_is_public = False data_files = [] if self.request.user.is_authenticated(): data_files = (DataFile.objects.for_user( self.request.user).filter(source=self.activity['source_name'])) data_is_public = is_public(self.request.user.member, self.activity['source_name']) project = None project_member = None project_permissions = None granted_permissions = None permissions_changed = False if 'project_id' in self.activity: project = DataRequestProject.objects.get( pk=self.activity['project_id']) project_permissions = { 'share_username': project.request_username_access, 'send_messages': project.request_message_permission, 'share_sources': project.request_sources_access, 'all_sources': project.all_sources_access, 'returned_data_description': project.returned_data_description, } if self.activity['is_connected']: project_member = project.active_user(self.request.user) granted_permissions = { 'share_username': project_member.username_shared, 'send_messages': project_member.message_permission, 'share_sources': project_member.sources_shared, 'all_sources': project_member.all_sources_shared, 'returned_data_description': project.returned_data_description, } permissions_changed = (not all([ granted_permissions[x] == project_permissions[x] for x in [ 'share_username', 'send_messages', 'share_sources', 'all_sources' ] ])) context.update({ 'activity': self.activity, 'data_files': data_files, 'is_public': data_is_public, 'source': self.activity['source_name'], 'project': project, 'project_member': project_member, 'project_permissions': project_permissions, 'granted_permissions': granted_permissions, 'permissions_changed': permissions_changed, 'public_files': public_files, 'requesting_activities': requesting_activities, 'requested_activities': requested_activities, }) return context