def user_page_view(context, request): if request.has_permission('view_details'): properties = item_view_object(context, request) else: item_path = request.resource_path(context) properties = request.embed(item_path, '@@object') for path in context.embedded: expand_path(request, properties, path) calculated = calculate_properties(context, request, properties, category='page') properties.update(calculated) return properties
def get_basic_properties_for_user(request, userid): user = request.registry[COLLECTIONS]['user'][userid] user_dict = user.__json__(request) # Only include certain/applicable fields from profile include_detail_fields = ['email', 'first_name', 'last_name', 'groups', 'timezone', 'status'] user_actions = calculate_properties(user, request, category='user_action') properties = { #'user': request.embed(request.resource_path(user)), 'details' : { p:v for p, v in user_dict.items() if p in include_detail_fields }, 'user_actions' : [ v for k, v in sorted(user_actions.items(), key=itemgetter(0)) ] } # add uuid to user details properties['details']['uuid'] = userid return properties
def session_properties(request): for principal in request.effective_principals: if principal.startswith('userid.'): break else: return {} namespace, userid = principal.split('.', 1) user = request.registry[COLLECTIONS]['user'][userid] user_actions = calculate_properties(user, request, category='user_action') properties = { 'user': request.embed(request.resource_path(user)), 'user_actions': [v for k, v in sorted(user_actions.items(), key=itemgetter(0))] } if 'auth.userid' in request.session: properties['auth.userid'] = request.session['auth.userid'] return properties
def session_properties(request): for principal in request.effective_principals: if principal.startswith('userid.'): break else: return {} namespace, userid = principal.split('.', 1) user = request.registry[COLLECTIONS]['user'][userid] user_actions = calculate_properties(user, request, category='user_action') properties = { 'user': request.embed(request.resource_path(user)), 'user_actions': [v for k, v in sorted(user_actions.items(), key=itemgetter(0))], 'admin': 'group.admin' in request.effective_principals } if 'auth.userid' in request.session: properties['auth.userid'] = request.session['auth.userid'] return properties
def get_basic_properties_for_user(request, userid): user = request.registry[COLLECTIONS]['user'][userid] user_dict = user.__json__(request) # Only include certain/applicable fields from profile include_detail_fields = [ 'email', 'first_name', 'last_name', 'groups', 'timezone', 'status', 'project' ] user_actions = calculate_properties(user, request, category='user_action') properties = { #'user': request.embed(request.resource_path(user)), 'details': {p: v for p, v in user_dict.items() if p in include_detail_fields}, 'user_actions': [v for k, v in sorted(user_actions.items(), key=itemgetter(0))] } # add uuid to user details properties['details']['uuid'] = userid return properties
def download(context, request): """ Navigates to the IGV snapshot hrf on the bam_snapshot field. """ calculated = calculate_properties(context, request) s3_client = boto3.client('s3') params_to_get_obj = { 'Bucket': request.registry.settings.get('file_wfout_bucket'), 'Key': calculated['bam_snapshot'] } location = s3_client.generate_presigned_url( ClientMethod='get_object', Params=params_to_get_obj, ExpiresIn=36*60*60 ) if asbool(request.params.get('soft')): expires = int(parse_qs(urlparse(location).query)['Expires'][0]) return { '@type': ['SoftRedirect'], 'location': location, 'expires': datetime.datetime.fromtimestamp(expires, pytz.utc).isoformat(), } # 307 redirect specifies to keep original method raise HTTPTemporaryRedirect(location=location) # 307