def test_address_conversion(self): """ Tests that an address is converted to the correct position """ addr1 = 0x0102030405 pos1 = getposition(addr1) self.assertEqual(pos1, (1, 2, 3, 4, 5))
def test_link_with_str_fid(self): addr = 0x0102030405 containers = getposition(addr) self.assertEqual( get_redirect_url('1', containers, prefix='freezers'), '/freezers/%s/%d/%d/%d/%d/' % ('1', 1, 2, 3, 4) )
def __unicode__(self): p = zip(('Shelf', 'Rack', 'Drawer', 'Box', 'Cell'), getposition(self.address)) p.pop(-1) p.append(('Cell', self.cell_location_name())) loc = ' '.join(map(lambda x: ' '.join(map(unicode, x)), p)) return u"%s: %s" % (self.freezer, loc)
def freezer_view_helper(freezer_id): """ Function to facilitate viewing freezer layout in the template """ master = [] c = connection.cursor() c.execute("""SELECT box_addr, name FROM freezers_boxname WHERE freezer_id = %s""", (freezer_id,)) names = dict(c.fetchall()) c.execute("""SELECT address FROM freezers_samplelocation WHERE freezer_id = %s AND occupied IS NOT NULL""", (freezer_id,)) freezer = [map(int, (r, s, d, b)) for r, s, d, b, cell in [getposition(address[0]) for address in c.fetchall()] if cell == 1] for shelf in sorted(set(s for (s, r, d, b) in freezer)): rack_list = [] for rack in _freezer_filter(freezer, shelf): drawer_list = [] for drawer in _freezer_filter(freezer, shelf, rack): box_list = [] for box in _freezer_filter(freezer, shelf, rack, drawer): traddr = (shelf << 24) + (rack << 16) + (drawer << 8) + box box_list.append(FreezerHelper(box, names.get(traddr, ''))) drawer_item = FreezerHelper(drawer, box_list) drawer_list.append(drawer_item) rack_item = FreezerHelper(rack, drawer_list) rack_list.append(rack_item) shelf_item = FreezerHelper(shelf, rack_list) master.append(shelf_item) return master
def test_link_with_suffix(self): addr = 0x0102030405 containers = getposition(addr) self.assertEqual( get_redirect_url(1, containers, prefix='freezers', suffix='rearrange-samples'), '/freezers/1/1/2/3/4/rearrange-samples/' )
def get_sample_list(index, fsl, nsamples): fsl = fsl.extra(order_by=['address']) sample_list = [fsl[index]] try: for i in xrange(nsamples - 1): current = fsl[index + i + 1] prev = sample_list[i] cp = getposition(current.address) pp = getposition(prev.address) if pp[4] + 1 == cp[4]: sample_list.append(current) elif pp[3] + 1 == cp[3] and pp[4] == prev.cell_capacity and cp[4] == 1: sample_list.append(current) else: return get_sample_list(index + i + 1, fsl, nsamples) return sample_list except IndexError: return []
def test_conditional_suffix(self): addr = 0x0102030405 box_id = '4' containers = getposition(addr) r1 = get_redirect_url(1, containers, prefix='freezers', suffix='samples' if not box_id else None) box_id = None r2 = get_redirect_url(1, containers[:3], prefix='freezers', suffix='samples' if not box_id else None) self.assertEqual(r1, '/freezers/1/1/2/3/4/') self.assertEqual(r2, '/freezers/1/1/2/3/samples/')
def _get_loc(address, box_width, cell_capacity): pos = list(getposition(address)) n = pos.pop() dim = int(box_width) total = int(cell_capacity) length = max(dim, total / dim) c = chr(65 + ((n - 1) / length)) x = n % length or length pos.append("%s%02d" % (c, x)) containers = ('Shelf', 'Rack', 'Drawer', 'Box', 'Cell') return ' '.join(map(lambda x: ' '.join(x), zip(containers, map(str, pos))))
def box_address(self, obj): p = zip(('Shelf', 'Rack', 'Drawer', 'Box', 'Cell'), getposition(obj.box_addr << 8)) p.pop() return ' '.join(map(lambda x: ' '.join(map(unicode, x)), p))
def verbose_address(self, obj): p = zip(('Shelf', 'Rack', 'Drawer', 'Box', 'Cell'), getposition(obj.address)) p.pop(-1) p.append(('Cell', obj.cell_location_name())) return ' '.join(map(lambda x: ' '.join(map(unicode, x)), p))
def __unicode__(self): p = getposition(self.address) addr = ' '.join(map(lambda x: ' '.join(map(unicode, x)), zip(('Shelf', 'Rack', 'Drawer', 'Box', 'Cell'), p))) return "%s: %s" % (self.freezer.__unicode__(), addr)