From 9432314efcd6543f14c0608911f895742df2dc3d Mon Sep 17 00:00:00 2001 From: Flavio Tarsetti <Flavio.Tarsetti@idiap.ch> Date: Mon, 22 Aug 2016 15:45:28 +0200 Subject: [PATCH] [plotters] added diff version for plotterparameter for history --- beat/web/plotters/urls.py | 12 +++++++ beat/web/plotters/views.py | 64 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) diff --git a/beat/web/plotters/urls.py b/beat/web/plotters/urls.py index 350742775..44b2f2a23 100644 --- a/beat/web/plotters/urls.py +++ b/beat/web/plotters/urls.py @@ -99,6 +99,12 @@ urlpatterns = [ name='fork', ), + url( + r'^plotterparameter/diff/(?P<author1>\w+)/(?P<name1>[-\w]+)/(?P<version1>\d+)/(?P<author2>\w+)/(?P<name2>[-\w]+)/(?P<version2>\d+)/$', + views.diff, + name='diff', + ), + url( r'^(?P<author_name>\w+)/plotterparameter/$', views.list_plotterparameters, @@ -123,6 +129,12 @@ urlpatterns = [ name='view', ), + url( + r'^plotterparameter/(?P<author>\w+)/(?P<name>[-\w]+)/$', + views.plotterparameter_latest, + name='plotterparameter-view-latest', + ), + url( r'^(?P<author>\w+)/(?P<name>[-\w]+)/$', diff --git a/beat/web/plotters/views.py b/beat/web/plotters/views.py index fc54cfbf8..e9da71880 100644 --- a/beat/web/plotters/views.py +++ b/beat/web/plotters/views.py @@ -711,6 +711,33 @@ def list_plotterparameters_public(request): ) +#---------------------------------------------------------- + + +def plotterparameter_latest(request, author, name): + '''Get latest plotterparameter for the request user''' + + # check that the user exists on the system + objects = PlotterParameter.objects.filter( + author__username__iexact=author, + name__iexact=name, +).order_by('-creation_date') + print objects + objects = PlotterParameter.filter_latest_versions(objects) + + print objects + + return render_to_response('plotterparameters/list.html', + dict( + objects=objects, + author=request.user, #anonymous + owner=False, + ), + context_instance=RequestContext(request), + ) + + + #------------------------------------------------ @@ -746,6 +773,43 @@ def plotterparameter_for_author(request, author_name, plotterparameter_name, ver #---------------------------------------------------------- + +def diff(request, author1, name1, version1, author2, name2, version2): + """Shows the difference between two plotterparameters. The Web API is used to + retrieve the details about the plotterparameters and check the accessibility. + """ + + plotterparameter1 = get_object_or_404( + PlotterParameter, + author__username__iexact=author1, + name__iexact=name1, + version=int(version1), + ) + has_access, _ = plotterparameter1.accessibility_for(request.user) + if not has_access: raise Http404() + + plotterparameter2 = get_object_or_404( + PlotterParameter, + author__username__iexact=author2, + name__iexact=name2, + version=int(version2), + ) + has_access, _ = plotterparameter2.accessibility_for(request.user) + if not has_access: raise Http404() + + return render_to_response('plotterparameters/diff.html', + { + 'plotterparameter1': plotterparameter1, + 'plotterparameter1_data': simplejson.loads(plotterparameter1.data), + 'plotterparameter2': plotterparameter2, + 'plotterparameter2_data': simplejson.loads(plotterparameter2.data), + }, + context_instance=RequestContext(request)) + + +#---------------------------------------------------------- + + @login_required def create_plotterparameter(request, author_name): '''Create a new plotterparameter to the request user''' -- GitLab