From f97353859af22f2dd06621b018631a8fc210df9d Mon Sep 17 00:00:00 2001 From: Brandon King Date: Fri, 22 May 2009 23:10:33 +0000 Subject: [PATCH] Sample ID now generated partially base on primary key of sample. * No longer random as per ticket:137. * FIXME: need a way to set the starting number of the autoincrement. Added a socket based printer function. --- samplebc/samples/models.py | 17 +++++++++++++++-- samplebc/samples/views.py | 15 +++++++++++++-- samplebc/settings.py | 7 ++++++- 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/samplebc/samples/models.py b/samplebc/samples/models.py index 86ed323..7670f49 100644 --- a/samplebc/samples/models.py +++ b/samplebc/samples/models.py @@ -2,6 +2,9 @@ from django.db import models from django.db.models import signals from django.contrib.auth.models import User, Group +from samplebc import settings + + #AUDIT_TYPES = [('Create', 'Create'), # ('Update', 'Update'), # ('Delete', 'Delete')] @@ -49,7 +52,7 @@ class SampleType(models.Model): class Container(models.Model): - name = models.CharField(max_length=256) + name = models.CharField(max_length=256, unique=True) sample_type = models.ManyToManyField(SampleType) max_items = models.IntegerField() freezer = models.ForeignKey(Freezer) @@ -73,7 +76,8 @@ class Container(models.Model): class Sample(models.Model): - name = models.CharField(max_length=256) + name = models.CharField(max_length=256, unique=True) + #sampleid = models.CharField(max_length=64, unique=True) sampleid = models.CharField(max_length=64, unique=True) sample_type = models.ForeignKey(SampleType) owner = models.ForeignKey(Owner) @@ -92,3 +96,12 @@ class Sample(models.Model): def get_absolute_url(self): return ('samplebc.samples.views.sample_summary', [str(self.sampleid)]) +def assign_sample_id(sender, instance, **kwargs): + + print 'Instance ID: %s' % (instance.id) + if instance.sampleid is None or len(instance.sampleid) == 0: + instance.sampleid = settings.HTSW_SAMPLE_ID_TEMPLATE % (instance.id) + instance.save() + +signals.post_save.connect(assign_sample_id, sender=Sample) + diff --git a/samplebc/samples/views.py b/samplebc/samples/views.py index 2d3825c..677fedb 100644 --- a/samplebc/samples/views.py +++ b/samplebc/samples/views.py @@ -22,6 +22,7 @@ from reversion import revision import random import ftplib +import socket import StringIO @@ -37,7 +38,17 @@ def print_zpl(zpl_text): ftp.login() ftp.storlines("STOR printme.txt", StringIO.StringIO(zpl_text)) ftp.quit() - + +def print_zpl_socket(zpl_text): + """ + Sends zpl_text to printer via a socket + """ + s = socket.socket() + # PORT 9100 is default for Zebra tabletop/desktop printers + # PORT 6101 is default for Zebra mobile printers + s.connect((settings.PRINTER_HOST, settings.PRINTER_PORT)) + s.sendall(zpl_text) + s.close() def __center_line(line, width): spaces_to_add = width - len(line) @@ -498,7 +509,7 @@ def sample_add(request): s_obj = form.save(commit=False) # Add sample ID - s_obj.sampleid = get_sampleid() + #s_obj.sampleid = get_sampleid() # If the user wants us to assign a container. if form.cleaned_data['assign_container']: diff --git a/samplebc/settings.py b/samplebc/settings.py index bed4831..eb8d99e 100644 --- a/samplebc/settings.py +++ b/samplebc/settings.py @@ -85,7 +85,8 @@ INSTALLED_APPS = ( 'django.contrib.admin', 'reversion', 'samplebc.samples', - 'samplebc.bcmagic' + 'samplebc.bcmagic', +# 'samplebc.bcprinter' ) FIXTURE_DIRS = ( @@ -97,3 +98,7 @@ FIXTURE_DIRS = ( # App Specific Settings HTSW_ST_APPNAME = 'HTSW-SampleTracker' + + +HTSW_SAMPLE_ID_TEMPLATE = '%08d' + -- 2.30.2