Now using Django-reversion & requiring logins for all views
[htsworkflow.git] / samplebc / samples / views.py
index 161ca0dfb90eaa7e663644b0a5fa71bff972ec5b..c2cdbb574db4ea8474ffbc23ba68a7707fa54546 100644 (file)
@@ -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("<b>Error:</b> %s<br /><i>You will need to prepare a new container before continuing.</i>" \
-                            % (e))
-        })
+                                    'app_name': settings.HTSW_ST_APPNAME,
+                                    'page_name': 'Sample Assign',
+                                    'media': '',
+                                    'bcmagic': BarcodeMagicForm(),
+                                    'select': 'samples',
+                                    'body': mark_safe("<b>Error:</b> %s<br /><i>You will need to prepare a new container before continuing.</i>" \
+                                                        % (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