diff --git a/beat/web/plotters/urls.py b/beat/web/plotters/urls.py index 3507427758186d0b4c74c923b8ac39737bdfde97..44b2f2a2353fd8decaa7a5da39b0931a8665e167 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 fc54cfbf81e787b1cdbda9bd987d1169073ec7be..e9da71880b589d6c4c68d316d21ba00ef619f072 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'''