Exemplo n.º 1
0
 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))
Exemplo n.º 2
0
 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)
     )
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
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
Exemplo n.º 5
0
 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/'
     )
Exemplo n.º 6
0
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 []
Exemplo n.º 7
0
 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/')
Exemplo n.º 8
0
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))))
Exemplo n.º 9
0
 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))
Exemplo n.º 10
0
 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))
Exemplo n.º 11
0
 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)