* 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
# Barcode Magic!
from samplebc.bcmagic.forms import BarcodeMagicForm
# Barcode Magic!
from samplebc.bcmagic.forms import BarcodeMagicForm
+# Reversion
+from reversion import revision
import random
import ftplib
import random
import ftplib
# Util functions
################################################
# Util functions
################################################
def print_zpl(zpl_text):
"""
Sends zpl_text to printer
def print_zpl(zpl_text):
"""
Sends zpl_text to printer
context_instance=RequestContext(request))
@login_required
context_instance=RequestContext(request))
@login_required
+@revision.create_on_success
def container_add(request):
"""
Form for adding a container.
"""
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.
# If user submitted the Container form.
if request.method == 'POST':
# Fill in ContainerForm with POSTed data.
},
context_instance=RequestContext(request))
},
context_instance=RequestContext(request))
+@login_required
+@revision.create_on_success
def container_edit(request, container_id):
"""
Allow editing of a container
"""
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:
try:
container = models.Container.objects.get(uuid=container_id)
except ObjectDoesNotExist, e:
params['barcode'] = 'cntr|%s' % (container.uuid)
params['symbol'] = ''
params['barcode'] = 'cntr|%s' % (container.uuid)
params['symbol'] = ''
+ c = RequestContext(request, params)
t = get_template('zpl_container_label.txt')
print_zpl(t.render(c))
t = get_template('zpl_container_label.txt')
print_zpl(t.render(c))
context_instance=RequestContext(request))
@login_required
context_instance=RequestContext(request))
@login_required
+@revision.create_on_success
def freezer_add(request):
"""
Allows you to add a new freezer.
"""
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.
# If user submitted the freezer form.
if request.method == 'POST':
# Fill in FreezerForm with POSTed data.
context_instance=RequestContext(request))
@login_required
context_instance=RequestContext(request))
@login_required
+@revision.create_on_success
def freezer_edit(request, freezer_id):
"""
Allow editing of a freezer
"""
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:
try:
freezer = models.Freezer.objects.get(uuid=freezer_id)
except ObjectDoesNotExist, e:
params['barcode'] = 'frzr|%s' % (freezer.uuid)
params['symbol'] = ''
params['barcode'] = 'frzr|%s' % (freezer.uuid)
params['symbol'] = ''
+ c = RequestContext(request, params)
t = get_template('zpl_freezer_label.txt')
print_zpl(t.render(c))
t = get_template('zpl_freezer_label.txt')
print_zpl(t.render(c))
},
context_instance=RequestContext(request))
},
context_instance=RequestContext(request))
+@login_required
+@revision.create_on_success
def sample_add(request):
"""
Allow adding of a new sample
"""
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.
ASSIGNED_CONTAINER = False
# If user submitted the sample form.
context_instance=RequestContext(request))
@login_required
context_instance=RequestContext(request))
@login_required
+@revision.create_on_success
def sample_edit(request, sampleid):
"""
Allow editing of a sample
"""
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:
try:
sample = models.Sample.objects.get(sampleid=sampleid)
except ObjectDoesNotExist, e:
context_instance=RequestContext(request))
@login_required
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
def sample_assign_container(request, sampleid):
"""
Assigns sample to container using the assign to container algorithm
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))
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',
return render_to_response('app.html', {
'app_name': settings.HTSW_ST_APPNAME,
'page_name': 'Sample Assign',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'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'
)
ROOT_URLCONF = 'samplebc.urls'
<br />
<b>uuid:</b> {{ container.uuid }}<br />
<br />
<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 />
<b>Allowed Sample Types:</b><br />
{{ container.sample_type.all|join:", " }}<br />
<br />
<b>Loc. Desc.:</b> {{ freezer.loc_desc }}<br />
<br />
<b>uuid:</b> {{ freezer.uuid }}<br />
<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">
<h3>Containers in Freezer</h3>
<table border="1" cellpadding="0" cellspacing="0">
<b>Type:</b> {{ sample.sample_type.name }}<br />
<b>Owner:</b> {{ sample.owner.name }}<br />
<br />
<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 />
<b>Concentration (ug/ml):</b> {{ sample.concentration }}<br />
<b>Volume (ml):</b> {{ sample.volume }}<br />
<br />