Made reversion actually track changes:
authorBrandon King <kingb@caltech.edu>
Wed, 29 Apr 2009 19:58:16 +0000 (19:58 +0000)
committerBrandon King <kingb@caltech.edu>
Wed, 29 Apr 2009 19:58:16 +0000 (19:58 +0000)
 * Done by using middleware
 * Added comments for each type of change so it will show up in object history

Updated summary pages:
 * Notes & Description fields now show up in the summary

samplebc/samples/views.py
samplebc/settings.py
templates/container_summary.html
templates/freezer_summary.html
templates/sample_summary.html

index 00c13a9aa3663caecd167e009ae5534f16afc893..77a43b2e5147d000ce4c309517be44bed6d563c0 100644 (file)
@@ -17,6 +17,8 @@ from samplebc import settings
 # Barcode Magic!
 from samplebc.bcmagic.forms import BarcodeMagicForm
 
+# Reversion
+from reversion import revision
 
 import random
 import ftplib
@@ -27,7 +29,6 @@ import StringIO
 # Util functions
 ################################################
 
-@login_required
 def print_zpl(zpl_text):
     """
     Sends zpl_text to printer
@@ -117,10 +118,15 @@ def container_summary(request, container_id):
                               context_instance=RequestContext(request))
 
 @login_required
+@revision.create_on_success
 def container_add(request):
     """
     Form for adding a container.
     """
+    #Reversion stuff
+    #revision.user = me
+    revision.comment = "New container created by user."
+    
     # If user submitted the Container form.
     if request.method == 'POST':
         # Fill in ContainerForm with POSTed data.
@@ -156,11 +162,15 @@ def container_add(request):
                             },
                               context_instance=RequestContext(request))
 
-@login_required    
+@login_required
+@revision.create_on_success
 def container_edit(request, container_id):
     """
     Allow editing of a container
     """
+    #Reversion stuff
+    revision.comment = "Manual container edit by user."
+    
     try:
         container = models.Container.objects.get(uuid=container_id)
     except ObjectDoesNotExist, e:
@@ -226,7 +236,7 @@ def container_print(request, container_id):
     params['barcode'] = 'cntr|%s' % (container.uuid)
     params['symbol'] = ''
     
-    c = Context(params)
+    c = RequestContext(request, params)
     t = get_template('zpl_container_label.txt')
     print_zpl(t.render(c))
     
@@ -295,10 +305,14 @@ def freezer_summary(request, freezer_id):
                               context_instance=RequestContext(request))
 
 @login_required
+@revision.create_on_success
 def freezer_add(request):
     """
     Allows you to add a new freezer.
     """
+    #Reversion stuff
+    revision.comment = "New freezer created by user."
+    
     # If user submitted the freezer form.
     if request.method == 'POST':
         # Fill in FreezerForm with POSTed data.
@@ -333,10 +347,14 @@ def freezer_add(request):
                               context_instance=RequestContext(request))
 
 @login_required
+@revision.create_on_success
 def freezer_edit(request, freezer_id):
     """
     Allow editing of a freezer
     """
+    #Reversion stuff
+    revision.comment = "Manual freezer edit by user."
+    
     try:
         freezer = models.Freezer.objects.get(uuid=freezer_id)
     except ObjectDoesNotExist, e:
@@ -400,7 +418,7 @@ def freezer_print(request, freezer_id):
     params['barcode'] = 'frzr|%s' % (freezer.uuid)
     params['symbol'] = ''
     
-    c = Context(params)
+    c = RequestContext(request, params)
     t = get_template('zpl_freezer_label.txt')
     print_zpl(t.render(c))
     
@@ -453,11 +471,15 @@ def sample_homeless(request):
                             },
                               context_instance=RequestContext(request))
     
-@login_required    
+@login_required
+@revision.create_on_success
 def sample_add(request):
     """
     Allow adding of a new sample
     """
+    #Reversion stuff
+    revision.comment = "New sample created by user."
+    
     ASSIGNED_CONTAINER = False
     
     # If user submitted the sample form.
@@ -514,10 +536,14 @@ def sample_add(request):
                               context_instance=RequestContext(request))
     
 @login_required
+@revision.create_on_success
 def sample_edit(request, sampleid):
     """
     Allow editing of a sample
     """
+    #Reversion stuff
+    revision.comment = "Manual sample edit by user."
+    
     try:
         sample = models.Sample.objects.get(sampleid=sampleid)
     except ObjectDoesNotExist, e:
@@ -563,6 +589,7 @@ def sample_edit(request, sampleid):
                               context_instance=RequestContext(request))
 
 @login_required
+@revision.create_on_success
 def sample_assign_container(request, sampleid):
     """
     Assigns sample to container using the assign to container algorithm
@@ -589,6 +616,9 @@ def sample_assign_container(request, sampleid):
     body = 'Sample (<a href="%s">%s</a>) assigned to container (<a href="%s">%s</a>)' \
            % (sample.get_absolute_url(), str(sample), sample.container.get_absolute_url(), str(sample.container))
     
+    #Reversion stuff
+    revision.comment = "Sample auto-assigned to container (%s: %s)" % (str(sample.container), sample.container.uuid)
+    
     return render_to_response('app.html', {
                                 'app_name': settings.HTSW_ST_APPNAME,
                                 'page_name': 'Sample Assign',
index 7569b8b5a0c78c1eddcf204ea2e384a7668a0d09..bed4831c5394e518e3efef67cec05c9ef0fb239d 100644 (file)
@@ -64,6 +64,8 @@ MIDDLEWARE_CLASSES = (
     'django.middleware.common.CommonMiddleware',
     'django.contrib.sessions.middleware.SessionMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',
+    'django.middleware.transaction.TransactionMiddleware',
+    'reversion.middleware.RevisionMiddleware',
 )
 
 ROOT_URLCONF = 'samplebc.urls'
index ccce461a40cced1a57598dda6d5d787694eb6eb5..179a6e0599ba94a69a3ffb476d83d5373a9b2ab9 100644 (file)
@@ -9,6 +9,11 @@
 <br />
 <b>uuid:</b> {{ container.uuid }}<br />
 <br />
+<b>Notes:</b><br />
+<p>
+    {{ container.notes }}
+</p>
+<br />
 <b>Allowed Sample Types:</b><br />
 {{ container.sample_type.all|join:", " }}<br />
 <br />
index 850123cfe73703063bba2ce22ffacb71d4a95b59..af4820c95538765319cb28f63143c7869f1ad228 100644 (file)
 <b>Loc. Desc.:</b> {{ freezer.loc_desc }}<br />
 <br />
 <b>uuid:</b> {{ freezer.uuid }}<br />
+<br />
+<b>Notes:</b>
+<p>
+{{ freezer.notes }}
+</p>
 
 <h3>Containers in Freezer</h3>
 <table border="1" cellpadding="0" cellspacing="0">
index 98dd413b44fce700a6cb57f912ce5ae9d92e4f26..f05a6340a64552bfa561e34073d09ccd941b7114 100644 (file)
@@ -14,6 +14,9 @@
 <b>Type:</b> {{ sample.sample_type.name }}<br />
 <b>Owner:</b> {{ sample.owner.name }}<br />
 <br />
+<b>Description:</b>
+<p>{{ sample.description }}</p>
+<br />
 <b>Concentration (ug/ml):</b> {{ sample.concentration }}<br />
 <b>Volume (ml):</b> {{ sample.volume }}<br />
 <br />