Added the ability to print freezer labels.
authorBrandon King <kingb@caltech.edu>
Tue, 17 Mar 2009 21:44:11 +0000 (21:44 +0000)
committerBrandon King <kingb@caltech.edu>
Tue, 17 Mar 2009 21:44:11 +0000 (21:44 +0000)
samplebc/samples/urls.py
samplebc/samples/views.py
templates/freezer_summary.html
templates/zpl_freezer_label.txt [new file with mode: 0644]

index e7947fc0369e11eb8a7fd47409b669ee67d590af..132f58039b84d77381f27e33c86ad92f97146a88 100644 (file)
@@ -27,6 +27,8 @@ urlpatterns = patterns('',
      'samplebc.samples.views.freezer_add'),
     (r'^freezer/(?P<freezer_id>[a-fA-F0-9]+)/edit/$',
      'samplebc.samples.views.freezer_edit'),
+    (r'^freezer/(?P<freezer_id>[a-fA-F0-9]+)/print/$',
+     'samplebc.samples.views.freezer_print'),
     (r'^freezer/(?P<freezer_id>[a-fA-F0-9]+)/$',
      'samplebc.samples.views.freezer_summary')
     
index e8ffb35d9f7105cee0a097f613e9ec03237f3cb4..32a69c05c73554248d623cc2e5e64d5d03017467 100644 (file)
@@ -344,6 +344,29 @@ def freezer_edit(request, freezer_id):
     })
 
 
+def freezer_print(request, freezer_id):
+    """
+    prints a freezer label
+    """
+    
+    try:
+        freezer = models.Freezer.objects.get(uuid=freezer_id)
+    except ObjectDoesNotExist:
+        return HttpResponse('Freezer (%s) does not exist!' % (freezer_id))
+    
+    params = {}
+    params['line1'] = __center_line('', 10)
+    params['line2'] = __center_line('', 14)
+    params['line3'] = __center_line('Temp: %s C' % (freezer.temperature), 15)
+    params['freezer_name'] = __center_line(freezer.name, 16)
+    params['barcode'] = 'frzr|%s' % (freezer.uuid)
+    params['symbol'] = ''
+    
+    c = Context(params)
+    t = get_template('zpl_freezer_label.txt')
+    print_zpl(t.render(c))
+    
+    return HttpResponse('print command for freezer %s sent.' % (freezer.uuid))
 
 ################################################
 # Samples
index a0dc5b6ba455fb6abed2600ff7d6717296ea2f55..850123cfe73703063bba2ce22ffacb71d4a95b59 100644 (file)
@@ -1,6 +1,6 @@
 <h3>Freezer Summary</h3>
 
-[ <a href="{{ freezer.get_absolute_url }}edit/">Edit</a> ]<br />
+[ <a href="{{ freezer.get_absolute_url }}edit/">Edit</a> | <a href="{{ freezer.get_absolute_url }}print/">Print Label</a> ]<br />
 <br />
 
 <b>Name:</b> {{ freezer.name }}<br />
diff --git a/templates/zpl_freezer_label.txt b/templates/zpl_freezer_label.txt
new file mode 100644 (file)
index 0000000..cdfd78c
--- /dev/null
@@ -0,0 +1,58 @@
+^FX=========================
+^FX 1/2" Freezer Label
+^FX=========================
+
+^XA
+^FX-------------------------
+^FX Freezer ID
+^FX-------------------------
+^FO105,167
+^CF0,24^FD{{ freezer_name }}^FS
+
+^FX-------------------------
+^FX Content
+^FX-------------------------
+
+^FX Line 1 (max_length=10)
+^FO135,113
+^CF0,16^FD{{ line1 }}^FS
+
+^FX Line 2 (max_length=14)
+^FO120,131
+^CF0,16^FD{{ line2 }}^FS
+
+^FX Line 3 (max_length=15)
+^FO115,149
+^CF0,16^FD{{ line3 }}^FS
+
+^FX-------------------------
+^FX Slot #
+^FX
+^FX (75 - (54 / 2)) / 2 == 24
+^FX x_center = (175 + 30 + 24)
+^FX x = x_center - 24 + 4
+^FX y = x_center - 24 + 4 - (28/2)
+^FX-------------------------
+^FO209,195
+^CF0,28^FD{{ symbol }}^FS
+
+^FX-------------------------
+^FX Circle - Temp
+^FX-------------------------
+^FX FO100,100
+^FX GC150,1^FS
+
+^FX-------------------------
+^FX Datamatrix Barcode
+^FX 
+^FX h=w=<#col>*3 
+^FX upper_left_coords=(175-(w/2), 250-6-h)
+^FX-------------------------
+^FO148,188
+^BXN,3,200
+^FD{{ barcode }}^FS
+
+^FX-------------------------
+^FX End Label
+^FX-------------------------
+^XZ