diff --git a/beat/web/experiments/templatetags/experiment_tags.py b/beat/web/experiments/templatetags/experiment_tags.py index bf56b42346a1b741f070b244c4dee52b74e2d44c..6bb7f314bd28b9155d4b448e6c3e8960b9d22587 100755 --- a/beat/web/experiments/templatetags/experiment_tags.py +++ b/beat/web/experiments/templatetags/experiment_tags.py @@ -26,50 +26,40 @@ ############################################################################### - +import simplejson as json from django import template from django.conf import settings -from django.db.models import Count from django.db.models import Q -import simplejson as json - -from ..models import Result from ...plotters.models import Plotter - +from ..models import Result register = template.Library() -#-------------------------------------------------- +# -------------------------------------------------- -@register.inclusion_tag('experiments/panels/table.html', takes_context=True) +@register.inclusion_tag("experiments/panels/table.html", takes_context=True) def experiment_table(context, objects, owner, id): - return dict( - request=context['request'], - objects=objects, - owner=owner, - panel_id=id, - ) + return dict(request=context["request"], objects=objects, owner=owner, panel_id=id,) -#-------------------------------------------------- +# -------------------------------------------------- -@register.inclusion_tag('experiments/panels/breadcrumb.html', takes_context=True) +@register.inclusion_tag("experiments/panels/breadcrumb.html", takes_context=True) def experiment_breadcrumb(context, obj): - return dict( - request=context['request'], - object=obj, - ) + return dict(request=context["request"], object=obj,) -#-------------------------------------------------- +# -------------------------------------------------- -@register.inclusion_tag('experiments/panels/filter_script.html') -def filter_script(panel_id, text_filter_id, attestation_filter_id, privacy_filter_id, status_filter_id): +@register.inclusion_tag("experiments/panels/filter_script.html") +def filter_script( + panel_id, text_filter_id, attestation_filter_id, privacy_filter_id, status_filter_id +): return dict( panel_id=panel_id, text_filter_id=text_filter_id, @@ -79,15 +69,13 @@ def filter_script(panel_id, text_filter_id, attestation_filter_id, privacy_filte ) -#-------------------------------------------------- +# -------------------------------------------------- -@register.inclusion_tag('experiments/panels/report_script.html', - takes_context=True) -def report_script(context, panel_id, master_checkbox_id, checkbox_class, - form_id): +@register.inclusion_tag("experiments/panels/report_script.html", takes_context=True) +def report_script(context, panel_id, master_checkbox_id, checkbox_class, form_id): return dict( - request=context['request'], + request=context["request"], panel_id=panel_id, master_checkbox_id=master_checkbox_id, checkbox_class=checkbox_class, @@ -95,34 +83,28 @@ def report_script(context, panel_id, master_checkbox_id, checkbox_class, ) -#-------------------------------------------------- +# -------------------------------------------------- -@register.inclusion_tag('experiments/panels/execution_infos.html') +@register.inclusion_tag("experiments/panels/execution_infos.html") def experiment_execution_infos(id): - return dict( - panel_id=id, - URL_PREFIX=settings.URL_PREFIX, - ) + return dict(panel_id=id, URL_PREFIX=settings.URL_PREFIX,) -#-------------------------------------------------- +# -------------------------------------------------- -@register.inclusion_tag('experiments/dialogs/algorithm_mapping.html') +@register.inclusion_tag("experiments/dialogs/algorithm_mapping.html") def algorithm_mapping(id): - return dict( - dialog_id=id, - URL_PREFIX=settings.URL_PREFIX, - ) + return dict(dialog_id=id, URL_PREFIX=settings.URL_PREFIX,) -#-------------------------------------------------- +# -------------------------------------------------- -@register.inclusion_tag('experiments/panels/actions.html', takes_context=True) +@register.inclusion_tag("experiments/panels/actions.html", takes_context=True) def experiment_actions(context, object, display_count): - '''Composes the action buttons for a particular experiment + """Composes the action buttons for a particular experiment This panel primarily exists for showing action buttons for a given experiment taking into consideration it is being displayed for a given @@ -135,59 +117,66 @@ def experiment_actions(context, object, display_count): display_count (bool): If the set of buttons should include one with the number of forkes based on this experiment. - ''' - return dict( - request=context['request'], - object=object, - display_count=display_count, - ) + """ + return dict(request=context["request"], object=object, display_count=display_count,) -@register.inclusion_tag('experiments/panels/sharing.html', takes_context=True) +@register.inclusion_tag("experiments/panels/sharing.html", takes_context=True) def experiment_sharing(context, obj): - '''Composes the current sharing properties and a form to change them + """Composes the current sharing properties and a form to change them Parameters: object (Toolchain): The experiment concerned for which the buttons will be drawn. - ''' + """ return { - 'request': context['request'], - 'object': obj, - 'users': context['users'], - 'teams': context['teams'], + "request": context["request"], + "object": obj, + "users": context["users"], + "teams": context["teams"], } -#-------------------------------------------------- +# -------------------------------------------------- @register.simple_tag def experiment_list_of_referenced_formats(experiment): - dataformats = filter(lambda x: x.author == experiment.author, experiment.all_needed_dataformats()) + dataformats = filter( + lambda x: x.author == experiment.author, experiment.all_needed_dataformats() + ) + + return "[%s]" % ",".join( + map( + lambda x: '{ "name": "%s", "accessibility": "%s" }' + % (x.fullname(), x.get_sharing_display().lower()), + dataformats, + ) + ) - return '[%s]' % ','.join(map(lambda x: '{ "name": "%s", "accessibility": "%s" }' % (x.fullname(), x.get_sharing_display().lower()), - dataformats)) +# -------------------------------------------------- -#-------------------------------------------------- @register.simple_tag def experiment_list_of_referenced_algorithms(experiment, user): - algorithms = filter(lambda x: x.author == experiment.author, experiment.referenced_algorithms.iterator()) + algorithms = filter( + lambda x: x.author == experiment.author, + experiment.referenced_algorithms.iterator(), + ) result = [] for algorithm in algorithms: (has_access, open_source, accessibility) = algorithm.accessibility_for(user) - if not(has_access): + if not (has_access): continue entry = { - 'name': algorithm.fullname(), - 'accessibility': accessibility, - 'opensource': open_source, + "name": algorithm.fullname(), + "accessibility": accessibility, + "opensource": open_source, } result.append(entry) @@ -195,10 +184,10 @@ def experiment_list_of_referenced_algorithms(experiment, user): return json.dumps(result) -#-------------------------------------------------- +# -------------------------------------------------- -@register.inclusion_tag('experiments/panels/results.html') +@register.inclusion_tag("experiments/panels/results.html") def experiment_results(panel_id, experiment): """Called to display the experiment result panel. @@ -209,21 +198,25 @@ def experiment_results(panel_id, experiment): # create doubles of analyzer -> result pairs analyzers = experiment.blocks.filter(analyzer=True) - contents = [(k, k.results.order_by('type', 'name')) for k in analyzers] + contents = [(k, k.results.order_by("type", "name")) for k in analyzers] # calculates plotter/parameter associations for the required types - formats = [k.type for a in analyzers for k in a.results.exclude(type__in=Result.SIMPLE_TYPE_NAMES)] + formats = [ + k.type + for a in analyzers + for k in a.results.exclude(type__in=Result.SIMPLE_TYPE_NAMES) + ] # get capable plotters and parameters associated plotting = dict([(k, Plotter.objects.for_strformat(k)) for k in formats]) json_plotting = dict() for fmt in plotting: - plotter, param = plotting[fmt]['default'] - parameters = plotting[fmt]['options'][plotter] + plotter, param = plotting[fmt]["default"] + parameters = plotting[fmt]["options"][plotter] json_plotting[fmt] = dict( plotter=plotter.fullname(), - parameter=param.fullname() if param else '', + parameter=param.fullname() if param else "", parameters=json.dumps([k.fullname() for k in parameters]), ) @@ -235,7 +228,7 @@ def experiment_results(panel_id, experiment): ) -#-------------------------------------------------- +# -------------------------------------------------- @register.simple_tag @@ -246,55 +239,63 @@ def ordered_blocks(xp): blocks = [] analyzers = [] for key in block_order: - b = xp.blocks.get(name=key) - if b.analyzer: analyzers.append(b) - else: blocks.append(b) + b = xp.blocks.get(name=key) + if b.analyzer: + analyzers.append(b) + else: + blocks.append(b) return blocks + analyzers -#-------------------------------------------------- +# -------------------------------------------------- @register.simple_tag(takes_context=True) def visible_reports(context, xp): """Calculates the visible reports to an experiment""" from ...reports.models import Report - user = context['request'].user + + user = context["request"].user if user.is_anonymous: return xp.reports.filter(status=Report.PUBLISHED) else: - return xp.reports.filter(Q(author=context['request'].user) | - Q(status=Report.PUBLISHED)) + return xp.reports.filter( + Q(author=context["request"].user) | Q(status=Report.PUBLISHED) + ) -#-------------------------------------------------- +# -------------------------------------------------- @register.simple_tag def owner_algorithms(obj): - '''Calculates the user algorithms for a given experiment''' + """Calculates the user algorithms for a given experiment""" return obj.referenced_algorithms.filter(author=obj.author) @register.simple_tag def owner_source_algorithms(obj): - '''Calculates the user algorithms in source code form for a given experiment''' + """Calculates the user algorithms in source code form for a given experiment""" - return [ x for x in obj.referenced_algorithms.filter(author=obj.author) - if not x.is_binary() ] + return [ + x + for x in obj.referenced_algorithms.filter(author=obj.author) + if not x.is_binary() + ] @register.simple_tag def owner_binary_algorithms(obj): - '''Calculates the user algorithms in binary form for a given experiment''' + """Calculates the user algorithms in binary form for a given experiment""" - return [ x for x in obj.referenced_algorithms.filter(author=obj.author) - if x.is_binary() ] + return [ + x for x in obj.referenced_algorithms.filter(author=obj.author) if x.is_binary() + ] @register.simple_tag def owner_dataformats(obj): - '''Calculates the user dataformats and algorithms for a given experiment''' + """Calculates the user dataformats and algorithms for a given experiment""" return [k for k in obj.all_needed_dataformats() if k.author == obj.author]