def handle(self, *args, **options): self.stdout.write('Updating badges') badge_data = { k: v['badge'] for k, v in personalize_activities_dict(only_active=False).items() } for member in Member.enriched.all(): self.stdout.write('- {0}'.format(member.user.username)) member.badges = [] # Badges for activities and deeply integrated studies, e.g. PGP, # RunKeeper for label, _ in member.connections.items(): member.badges.append(badge_data[label]) project_memberships = (member.datarequestprojectmember_set.filter( project__approved=True).filter_active()) # Badges for DataRequestProjects for membership in project_memberships: member.badges.append(badge_data[membership.project.id_label]) # The badge for the Public Data Sharing Study if member.public_data_participant.enrolled: member.badges.append(badge_data['public_data_sharing']) member.save() self.stdout.write('Done')
def get_context_data(self, **kwargs): context = super(MemberDataView, self).get_context_data(**kwargs) activities = personalize_activities_dict(self.request.user, only_active=False) user_data_files = DataFile.objects.for_user(self.request.user) filtered_files = [ data_file for data_file in user_data_files if data_file.source in activities ] get_source = attrgetter('source') grouped_files = { g: list(f) for g, f in groupby(filtered_files, key=get_source) } # All activities marked as data sources, and any others with files. activities = { a: activities[a] for a in activities if (( 'data_source' in activities[a] and activities[a]['data_source'] and activities[a]['is_connected']) or a in grouped_files) } data_sources = sorted( activities.keys(), key=lambda x: activities[x]['verbose_name'].lower()) context.update({ 'data_sources': data_sources, 'activities': activities, 'grouped_files': grouped_files, }) return context
def url_slug(label): """ Given a label, return the URL slug of the corresponding activity. """ activities = personalize_activities_dict() if label not in activities: return '' return activities[label]['url_slug']
def get_context_data(self, **kwargs): context = super(AuthorizeOnSiteDataRequestProjectView, self).get_context_data(**kwargs) context.update({ 'project': self.get_object(), 'activities': personalize_activities_dict(self.request.user), 'username': self.request.user.username, }) return context
def get_context_data(self, **kwargs): context = super(AuthorizeOAuth2ProjectView, self).get_context_data(**kwargs) context.update({ 'object': self.get_object(), 'project': self.get_object(), 'activities': personalize_activities_dict(self.request.user), # XXX: BaseOAuth2AuthorizationView doesn't provide the request # context for some reason 'request': self.request, 'username': self.request.user.username, }) return context
def get_context_data(self, **kwargs): context = super(ConnectedSourcesMixin, self).get_context_data(**kwargs) project = self.get_object() activities = personalize_activities_dict(self.request.user) context.update({ 'project_authorized_by_member': self.project_authorized_by_member, 'sources': OrderedDict([(source_name, activities[source_name]['is_connected']) for source_name in project.request_sources_access if source_name in activities]) }) return context
def grouped_by_source(queryset): activities = personalize_activities_dict() filtered_files = [ data_file for data_file in queryset if data_file.source in activities ] get_source = attrgetter('source') sorted_files = sorted(filtered_files, key=get_source) grouped_files = groupby(sorted_files, key=get_source) list_files = [(group, list(files)) for group, files in grouped_files] def to_lower_verbose(source): return activities[source[0]]['verbose_name'].lower() return OrderedDict(sorted(list_files, key=to_lower_verbose))
def get_featured_projects(self): """ Get FeaturedProjects in 'activity' data format Override description if one is provided. """ featured_projs = FeaturedProject.objects.order_by('id')[0:3] highlighted = [] activities = personalize_activities_dict(self.request.user) try: for featured in featured_projs: try: activity = activities[featured.project.id_label] if featured.description: activity['commentary'] = featured.description highlighted.append(activity) except KeyError: pass return highlighted except (ValueError, TypeError): return []
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