From: Brandon King Date: Tue, 28 Apr 2009 19:56:18 +0000 (+0000) Subject: Now using Django-reversion & requiring logins for all views X-Git-Url: http://woldlab.caltech.edu/gitweb/?p=htsworkflow.git;a=commitdiff_plain;h=220bcc8ffa226d4510b1097b5f2650ea49173a55 Now using Django-reversion & requiring logins for all views --- diff --git a/samplebc/samples/views.py b/samplebc/samples/views.py index 161ca0d..c2cdbb5 100644 --- a/samplebc/samples/views.py +++ b/samplebc/samples/views.py @@ -4,6 +4,7 @@ from django.core.exceptions import ObjectDoesNotExist from django.template import Context, Template, RequestContext from django.template.loader import get_template from django.shortcuts import render_to_response +from django.contrib.auth.decorators import login_required from django.utils.safestring import mark_safe @@ -26,7 +27,7 @@ import StringIO # Util functions ################################################ - +@login_required def print_zpl(zpl_text): """ Sends zpl_text to printer @@ -50,7 +51,7 @@ def __center_line(line, width): ################################################ # Container ################################################ - +@login_required def container_index(request): """ Returns an index of available to containers @@ -61,16 +62,17 @@ def container_index(request): t = get_template('container_index.html') return render_to_response('app.html', { - 'app_name': "HTSW-SampleTracker", - 'page_name': 'Container Index', - 'bcmagic': BarcodeMagicForm(), - 'select': 'container', - 'body': t.render(c) - }) + 'app_name': "HTSW-SampleTracker", + 'page_name': 'Container Index', + 'bcmagic': BarcodeMagicForm(), + 'select': 'container', + 'body': t.render(c) + }, + context_instance=RequestContext(request)) - +@login_required def container_summary(request, container_id): """ Returns details of a container @@ -81,13 +83,14 @@ def container_summary(request, container_id): except ObjectDoesNotExist, e: msg = "Container (%s) does not exist." % (container_id) return render_to_response('app.html', { - 'app_name': settings.HTSW_ST_APPNAME, - 'page_name': 'Container Summary', - 'media': '', - 'bcmagic': BarcodeMagicForm(), - 'select': 'container', - 'body': msg - }) + 'app_name': settings.HTSW_ST_APPNAME, + 'page_name': 'Container Summary', + 'media': '', + 'bcmagic': BarcodeMagicForm(), + 'select': 'container', + 'body': msg + }, + context_instance=RequestContext(request)) # Retrieve samples from container sample_list = container.sample_set.all() @@ -104,15 +107,16 @@ def container_summary(request, container_id): # Render container summary to app html return render_to_response('app.html', { - 'app_name': settings.HTSW_ST_APPNAME, - 'page_name': 'Container Summary', - 'media': '', - 'bcmagic': BarcodeMagicForm(), - 'select': 'container', - 'body': tc.render(cc) - }) - - + 'app_name': settings.HTSW_ST_APPNAME, + 'page_name': 'Container Summary', + 'media': '', + 'bcmagic': BarcodeMagicForm(), + 'select': 'container', + 'body': tc.render(cc) + }, + context_instance=RequestContext(request)) + +@login_required def container_add(request): """ Form for adding a container. @@ -143,14 +147,16 @@ def container_add(request): t = get_template('generic_form.html') return render_to_response('app.html', { - 'app_name': settings.HTSW_ST_APPNAME, - 'page_name': 'Container Add', - 'media': form.media, - 'bcmagic': BarcodeMagicForm(), - 'select': 'container', - 'body': t.render(c) - }) - + 'app_name': settings.HTSW_ST_APPNAME, + 'page_name': 'Container Add', + 'media': form.media, + 'bcmagic': BarcodeMagicForm(), + 'select': 'container', + 'body': t.render(c) + }, + context_instance=RequestContext(request)) + +@login_required def container_edit(request, container_id): """ Allow editing of a container @@ -160,13 +166,14 @@ def container_edit(request, container_id): except ObjectDoesNotExist, e: msg = "Container (%s) cannot be edited as it does not exist." % (container_id) return render_to_response('app.html', { - 'app_name': settings.HTSW_ST_APPNAME, - 'page_name': 'Container Edit', - 'media': '', - 'bcmagic': BarcodeMagicForm(), - 'select': 'container', - 'body': msg - }) + 'app_name': settings.HTSW_ST_APPNAME, + 'page_name': 'Container Edit', + 'media': '', + 'bcmagic': BarcodeMagicForm(), + 'select': 'container', + 'body': msg + }, + context_instance=RequestContext(request)) # If user submitted the container form. if request.method == 'POST': @@ -191,15 +198,16 @@ def container_edit(request, container_id): t = get_template('generic_form.html') return render_to_response('app.html', { - 'app_name': settings.HTSW_ST_APPNAME, - 'page_name': 'Container Edit', - 'media': form.media, - 'bcmagic': BarcodeMagicForm(), - 'select': 'container', - 'body': t.render(c) - }) - - + 'app_name': settings.HTSW_ST_APPNAME, + 'page_name': 'Container Edit', + 'media': form.media, + 'bcmagic': BarcodeMagicForm(), + 'select': 'container', + 'body': t.render(c) + }, + context_instance=RequestContext(request)) + +@login_required def container_print(request, container_id): """ prints a container label @@ -228,7 +236,7 @@ def container_print(request, container_id): ################################################ # Freezer ################################################ - +@login_required def freezer_index(request): """ Returns an index of available freezers @@ -238,15 +246,16 @@ def freezer_index(request): t = get_template('freezer_index.html') return render_to_response('app.html', { - 'app_name': "HTSW-SampleTracker", - 'page_name': 'Freezer Index', - 'media': '', - 'bcmagic': BarcodeMagicForm(), - 'select': 'freezer', - 'body': t.render(c) - }) - - + 'app_name': "HTSW-SampleTracker", + 'page_name': 'Freezer Index', + 'media': '', + 'bcmagic': BarcodeMagicForm(), + 'select': 'freezer', + 'body': t.render(c) + }, + context_instance=RequestContext(request)) + +@login_required def freezer_summary(request, freezer_id): """ Returns summary of freezer_id @@ -257,13 +266,14 @@ def freezer_summary(request, freezer_id): except ObjectDoesNotExist, e: msg = "Freezer (%s) does not exist." % (freezer_id) return render_to_response('app.html', { - 'app_name': settings.HTSW_ST_APPNAME, - 'page_name': 'Freezer Summary', - 'media': '', - 'bcmagic': BarcodeMagicForm(), - 'select': 'freezer', - 'body': msg - }) + 'app_name': settings.HTSW_ST_APPNAME, + 'page_name': 'Freezer Summary', + 'media': '', + 'bcmagic': BarcodeMagicForm(), + 'select': 'freezer', + 'body': msg + }, + context_instance=RequestContext(request)) # List of contained containers container_list = freezer.container_set.all() @@ -275,15 +285,16 @@ def freezer_summary(request, freezer_id): # Render Freezer summary to app html return render_to_response('app.html', { - 'app_name': settings.HTSW_ST_APPNAME, - 'page_name': 'Freezer Summary', - 'media': '', - 'bcmagic': BarcodeMagicForm(), - 'select': 'freezer', - 'body': tf.render(cf) - }) - - + 'app_name': settings.HTSW_ST_APPNAME, + 'page_name': 'Freezer Summary', + 'media': '', + 'bcmagic': BarcodeMagicForm(), + 'select': 'freezer', + 'body': tf.render(cf) + }, + context_instance=RequestContext(request)) + +@login_required def freezer_add(request): """ Allows you to add a new freezer. @@ -312,15 +323,16 @@ def freezer_add(request): t = get_template('generic_form.html') return render_to_response('app.html', { - 'app_name': settings.HTSW_ST_APPNAME, - 'page_name': 'Freezer Add', - 'media': form.media, - 'bcmagic': BarcodeMagicForm(), - 'select': 'freezer', - 'body': t.render(c) - }) - - + 'app_name': settings.HTSW_ST_APPNAME, + 'page_name': 'Freezer Add', + 'media': form.media, + 'bcmagic': BarcodeMagicForm(), + 'select': 'freezer', + 'body': t.render(c) + }, + context_instance=RequestContext(request)) + +@login_required def freezer_edit(request, freezer_id): """ Allow editing of a freezer @@ -330,13 +342,14 @@ def freezer_edit(request, freezer_id): except ObjectDoesNotExist, e: msg = "Freezer (%s) cannot be edited as it does not exist." % (freezer_id) return render_to_response('app.html', { - 'app_name': settings.HTSW_ST_APPNAME, - 'page_name': 'Freezer Summary', - 'media': '', - 'bcmagic': BarcodeMagicForm(), - 'select': 'freezer', - 'body': msg - }) + 'app_name': settings.HTSW_ST_APPNAME, + 'page_name': 'Freezer Summary', + 'media': '', + 'bcmagic': BarcodeMagicForm(), + 'select': 'freezer', + 'body': msg + }, + context_instance=RequestContext(request)) # If user submitted the freezer form. if request.method == 'POST': @@ -359,15 +372,16 @@ def freezer_edit(request, freezer_id): t = get_template('generic_form.html') return render_to_response('app.html', { - 'app_name': settings.HTSW_ST_APPNAME, - 'page_name': 'Freezer Edit', - 'media': form.media, - 'bcmagic': BarcodeMagicForm(), - 'select': 'freezer', - 'body': t.render(c) - }) - - + 'app_name': settings.HTSW_ST_APPNAME, + 'page_name': 'Freezer Edit', + 'media': form.media, + 'bcmagic': BarcodeMagicForm(), + 'select': 'freezer', + 'body': t.render(c) + }, + context_instance=RequestContext(request)) + +@login_required def freezer_print(request, freezer_id): """ prints a freezer label @@ -392,10 +406,11 @@ def freezer_print(request, freezer_id): return HttpResponse('print command for freezer %s sent.' % (freezer.uuid)) + ################################################ # Samples ################################################ - +@login_required def sample_index(request): """ return a list of samples and what we can do with them. @@ -410,15 +425,16 @@ def sample_index(request): # % (sample, sample.sampleid)) return render_to_response('app.html', { - 'app_name': settings.HTSW_ST_APPNAME, - 'page_name': 'Samples Index', - 'media': '', - 'bcmagic': BarcodeMagicForm(), - 'select': 'samples', - 'body': t.render(c) - }) - - + 'app_name': settings.HTSW_ST_APPNAME, + 'page_name': 'Samples Index', + 'media': '', + 'bcmagic': BarcodeMagicForm(), + 'select': 'samples', + 'body': t.render(c) + }, + context_instance=RequestContext(request)) + +@login_required def sample_homeless(request): """ Returns an index of homeless samples @@ -429,14 +445,15 @@ def sample_homeless(request): t = get_template('sample_homeless.html') return render_to_response('app.html', { - 'app_name': "HTSW-SampleTracker", - 'page_name': 'Homeless Samples', - 'bcmagic': BarcodeMagicForm(), - 'select': 'samples', - 'body': t.render(c) - }) - - + 'app_name': "HTSW-SampleTracker", + 'page_name': 'Homeless Samples', + 'bcmagic': BarcodeMagicForm(), + 'select': 'samples', + 'body': t.render(c) + }, + context_instance=RequestContext(request)) + +@login_required def sample_add(request): """ Allow adding of a new sample @@ -487,15 +504,16 @@ def sample_add(request): t = get_template('generic_form.html') return render_to_response('app.html', { - 'app_name': settings.HTSW_ST_APPNAME, - 'page_name': 'Sample Add', - 'media': form.media, - 'bcmagic': BarcodeMagicForm(), - 'select': 'samples', - 'body': t.render(c) - }) - - + 'app_name': settings.HTSW_ST_APPNAME, + 'page_name': 'Sample Add', + 'media': form.media, + 'bcmagic': BarcodeMagicForm(), + 'select': 'samples', + 'body': t.render(c) + }, + context_instance=RequestContext(request)) + +@login_required def sample_edit(request, sampleid): """ Allow editing of a sample @@ -535,15 +553,16 @@ def sample_edit(request, sampleid): t = get_template('generic_form.html') return render_to_response('app.html', { - 'app_name': settings.HTSW_ST_APPNAME, - 'page_name': 'Sample Edit', - 'media': form.media, - 'bcmagic': BarcodeMagicForm(), - 'select': 'samples', - 'body': t.render(c) - }) - - + 'app_name': settings.HTSW_ST_APPNAME, + 'page_name': 'Sample Edit', + 'media': form.media, + 'bcmagic': BarcodeMagicForm(), + 'select': 'samples', + 'body': t.render(c) + }, + context_instance=RequestContext(request)) + +@login_required def sample_assign_container(request, sampleid): """ Assigns sample to container using the assign to container algorithm @@ -555,14 +574,15 @@ def sample_assign_container(request, sampleid): assign_to_container(sample) except NoSpaceAvaliable, e: return render_to_response('app.html', { - 'app_name': settings.HTSW_ST_APPNAME, - 'page_name': 'Sample Assign', - 'media': '', - 'bcmagic': BarcodeMagicForm(), - 'select': 'samples', - 'body': mark_safe("Error: %s
You will need to prepare a new container before continuing." \ - % (e)) - }) + 'app_name': settings.HTSW_ST_APPNAME, + 'page_name': 'Sample Assign', + 'media': '', + 'bcmagic': BarcodeMagicForm(), + 'select': 'samples', + 'body': mark_safe("Error: %s
You will need to prepare a new container before continuing." \ + % (e)) + }, + context_instance=RequestContext(request)) sample.save() @@ -570,15 +590,16 @@ def sample_assign_container(request, sampleid): % (sample.get_absolute_url(), str(sample), sample.container.get_absolute_url(), str(sample.container)) return render_to_response('app.html', { - 'app_name': settings.HTSW_ST_APPNAME, - 'page_name': 'Sample Assign', - 'media': '', - 'bcmagic': BarcodeMagicForm(), - 'select': 'samples', - 'body': mark_safe(body), - }) - - + 'app_name': settings.HTSW_ST_APPNAME, + 'page_name': 'Sample Assign', + 'media': '', + 'bcmagic': BarcodeMagicForm(), + 'select': 'samples', + 'body': mark_safe(body), + }, + context_instance=RequestContext(request)) + +@login_required def sample_summary(request, sampleid, msg=None): """ Display a summary of a given sample @@ -588,28 +609,30 @@ def sample_summary(request, sampleid, msg=None): except ObjectDoesNotExist, e: msg = "Sample (%s) does not exist." % (sampleid) return render_to_response('app.html', { - 'app_name': settings.HTSW_ST_APPNAME, - 'page_name': 'Sample Summary', - 'media': '', - 'bcmagic': BarcodeMagicForm(), - 'select': 'samples', - 'body': msg - }) + 'app_name': settings.HTSW_ST_APPNAME, + 'page_name': 'Sample Summary', + 'media': '', + 'bcmagic': BarcodeMagicForm(), + 'select': 'samples', + 'body': msg + }, + context_instance=RequestContext(request)) c = Context({'sample': sample, 'msg': msg,}) t = get_template('sample_summary.html') return render_to_response('app.html', { - 'app_name': settings.HTSW_ST_APPNAME, - 'page_name': 'Sample Summary', - 'media': '', - 'bcmagic': BarcodeMagicForm(), - 'select': 'samples', - 'body': t.render(c) - }) - - + 'app_name': settings.HTSW_ST_APPNAME, + 'page_name': 'Sample Summary', + 'media': '', + 'bcmagic': BarcodeMagicForm(), + 'select': 'samples', + 'body': t.render(c) + }, + context_instance=RequestContext(request)) + +@login_required def sample_print(request, sampleid): """ prints a sample! @@ -634,20 +657,33 @@ def sample_print(request, sampleid): return HttpResponse('print command for sample %s sent.' % (sample.sampleid)) +def user_profile(request): + """ + Information about the user + """ + return render_to_response('registration/profile.html', { + 'app_name': settings.HTSW_ST_APPNAME, + 'page_name': 'User Profile', + 'media': '', + 'bcmagic': BarcodeMagicForm(), + 'select': 'settings', + }, + context_instance=RequestContext(request)) ################################################ # Barcode Magic Commands ################################################ - +@login_required def cmd_move_sample(request): """ Moves a sample to a target container """ return render_to_response('app.html', { - 'app_name': settings.HTSW_ST_APPNAME, - 'page_name': 'CMD: Move Sample', - 'media': '', - 'bcmagic': BarcodeMagicForm(), - 'select': 'samples', - 'body': "" - }) \ No newline at end of file + 'app_name': settings.HTSW_ST_APPNAME, + 'page_name': 'CMD: Move Sample', + 'media': '', + 'bcmagic': BarcodeMagicForm(), + 'select': 'samples', + 'body': "" + }, + context_instance=RequestContext(request)) \ No newline at end of file diff --git a/samplebc/urls.py b/samplebc/urls.py index 2d3ce27..27524e8 100644 --- a/samplebc/urls.py +++ b/samplebc/urls.py @@ -12,6 +12,16 @@ urlpatterns = patterns('', # Uncomment the admin/doc line below and add 'django.contrib.admindocs' # to INSTALLED_APPS to enable admin documentation: # (r'^admin/doc/', include('django.contrib.admindocs.urls')), + + # Authentication stuff + ('^accounts/login/$', 'django.contrib.auth.views.login'), + ('^accounts/logout/$', 'django.contrib.auth.views.logout'), + ('^accounts/logout_then_login/$', 'django.contrib.auth.views.logout_then_login'), + ('^accounts/pwchange/$', 'django.contrib.auth.views.password_change'), + ('^accounts/pwchange_done/$', 'django.contrib.auth.views.password_change_done'), + # Note view is in samplebc.samples; something doesn't feel right about that, but + # I am not sure where to put it at the moment. -BWK + ('^accounts/profile/$', 'samplebc.samples.views.user_profile'), # Uncomment the next line to enable the admin: (r'^admin/(.*)', admin.site.root), diff --git a/templates/app.html b/templates/app.html index 711899c..0531fa1 100644 --- a/templates/app.html +++ b/templates/app.html @@ -1,7 +1,7 @@ - {{ app_name }} - {{ page_name }} + {% block title %}{{ app_name }} - {{ page_name }}{% endblock %} @@ -27,31 +27,47 @@

Freezers

- Index
- Add
+ Index
+ Add

Containers

- Index
- Add
+ Index
+ Add

Samples

- Index - Homeless - Add + Index + Homeless + Add +
+
+
+

Settings

+
+ Profile + Change_PW
+ {% if user.is_authenticated %} + Logged in as {{ user.username }}.
+ Logout + {% else %} +
Not logged in
+ {% endif %} +

{% include "magic.html" %}
+ {% block content %} {{ body }} + {% endblock %}
diff --git a/templates/registration/login.html b/templates/registration/login.html new file mode 100644 index 0000000..cf5bcb2 --- /dev/null +++ b/templates/registration/login.html @@ -0,0 +1,29 @@ +{% extends "app.html" %} + +{% block title %} +Login +{% endblock %} + +{% block content %} + +{% if form.errors %} +

Your username and password didn't match. Please try again.

+{% endif %} + +
+ + + + + + + + + +
{{ form.username.label_tag }}{{ form.username }}
{{ form.password.label_tag }}{{ form.password }}
+ + + +
+ +{% endblock %} diff --git a/templates/registration/profile.html b/templates/registration/profile.html new file mode 100644 index 0000000..debe017 --- /dev/null +++ b/templates/registration/profile.html @@ -0,0 +1,9 @@ +{% extends "app.html" %} + +{% block content %} + + + + +
User Name:{{ user.username }}
Full Name:{{ user.get_full_name }}
E-mail:{{ user.email }}
+{% endblock %} \ No newline at end of file diff --git a/www/js/menu.js b/www/js/menu.js index a3a7d2e..acfc5fd 100644 --- a/www/js/menu.js +++ b/www/js/menu.js @@ -3,7 +3,8 @@ var select_menu = function(item){ var choices = {'freezer': 0, 'container': 1, - 'samples': 2}; + 'samples': 2, + 'settings': 3}; $('#accordion').accordion('activate', choices[item]); }