def setUp(self): t = Tool(id=1, name='test_tool', status=1, status_message='working ok') t.save() u = User(id=1, name='Test user', subscribed=True) u.card_set.add(Card(card_id='12345678')) u.save()
def setUp(self): t = Tool(id=1, name='test_tool', status=1, status_message='working ok') t.save() u = User(id=1, name='Test user', subscribed=True) u.save() c = Card(card_id='12345678', user=u) c.save()
def setUp(self): self.update_carddb('0_carddb.json') t = Tool(id=1, name='test_tool', status=1, status_message='working ok') t.save() # make user3 a user p = Permission(user=User.objects.get(pk=3), permission=1, tool=Tool.objects.get(pk=1), addedby=User.objects.get(pk=1)) p.save() self.user3 = '33333333' self.user3a = '33333300'
def setUp(self): t = Tool(id=1, name='test_tool', status=1, status_message='working ok') t.save() v = VendItem(name='test_item', price=55) v.save() v = VendItem(name='test_item2', price=600) v.save() m = MachineItem(item=VendItem.objects.get(name='test_item'), tool=Tool.objects.get(pk=1), position=1, stock=0) m.save() m = MachineItem(item=VendItem.objects.get(name='test_item2'), tool=Tool.objects.get(pk=1), position=2, stock=1) m.save() m = MachineItem(item=VendItem.objects.get(name='test_item'), tool=Tool.objects.get(pk=1), position=3, stock=7) m.save() users = ( # user 1 has 2 cards, and is a maintainer (1, 'user1a', '00112233445566', True, 99999), (1, 'user1b', 'aabbccdd', True, 99999), # a user (2, 'user2', '22222222', True, 0), # subscribed, but not a user (3, 'user3', '33333333', True, 77), # exists, but not is not subscribed (4, 'user4', '44444444', False, 555), ) for id, name, card, subscribed, balance in users: self.__dict__[name] = card try: u = User.objects.get(pk=id) u.save() c = Card(card_id=card, user=u) c.save() except ObjectDoesNotExist: u = User(id=id, name=name, subscribed=subscribed, balance=balance) u.save() c = Card(card_id=card, user=u) c.save()
def setUp(self): t = Tool(id=1, name='test_tool', status=1, status_message='working ok') t.save() u = User(id=1, name='Test user', subscribed=True) u.card_set.add(Card(card_id='12345678')) u.save() # make user 1 a user for tool 1 p = Permission(user=User.objects.get(pk=1), permission=1, tool=Tool.objects.get(pk=1), addedby=User.objects.get(pk=1)) p.save()
def setUp(self): self.update_carddb('0_carddb.json') t = Tool(id=1, name='test_tool', status=1, status_message='working ok') t.save() t = Tool(id=2, name='test_tool_with_secret', status=1, status_message='working ok', secret='12345678') t.save() # make user 3 a user for tool 1 p = Permission(user=User.objects.get(pk=3), permission=1, tool=Tool.objects.get(pk=1), addedby=User.objects.get(pk=1)) p.save() # and 2 p = Permission(user=User.objects.get(pk=3), permission=1, tool=Tool.objects.get(pk=2), addedby=User.objects.get(pk=1)) p.save()
def setUp(self): t = Tool(id=1, name='test_tool', status=1, status_message='working ok') t.save() t = Tool(id=2, name='other test tool', status=0, status_message='Out of action') t.save() users = ( # user 1 has 2 cards, and is a maintainer (1, 'user1a', '00112233445566', True), (1, 'user1b', 'aabbccdd', True), # a user (2, 'user2', '22222222', True), # subscribed, but not a user (3, 'user3', '33333333', True), # exists, but not is not subscribed (4, 'user4', '44444444', False), ) for id, name, card, subscribed in users: self.__dict__[name] = card try: u = User.objects.get(pk=id) u.card_set.add(Card(card_id=card)) u.save() except ObjectDoesNotExist: u = User(id=id, name=name, subscribed=subscribed) u.card_set.add(Card(card_id=card)) u.save() self.user_does_not_exist = '12345678' # user 2 is a user p = Permission(user=User.objects.get(pk=2), permission=1, tool=Tool.objects.get(pk=1), addedby=User.objects.get(pk=1)) p.save() # user 1 is a maintainer p = Permission(user=User.objects.get(pk=1), permission=2, tool=Tool.objects.get(pk=1), addedby=User.objects.get(pk=1)) p.save() # make the android tag a user # p = Permissions(user=User.objects.get(pk=8), permission=1, tool=Tool.objects.get(pk=1), addedby=User.objects.get(pk=1)) # p.save() # make the temp card a maintainer # p = Permissions(user=User.objects.get(pk=5), permission=2, tool=Tool.objects.get(pk=1), addedby=User.objects.get(pk=1)) # p.save() # make user 4 a maintainer p = Permission(user=User.objects.get(pk=4), permission=2, tool=Tool.objects.get(pk=1), addedby=User.objects.get(pk=1)) p.save()
def setUp(self): t = Tool(id=1, name='test_tool', status=1, status_message='working ok') t.save() u = User(id=1, name='Test user', subscribed=True) u.save() c = Card(card_id='12345678', user=u) c.save() # make user 1 a user for tool 1 p = Permission(user=User.objects.get(pk=1), permission=1, tool=Tool.objects.get(pk=1), addedby=User.objects.get(pk=1)) p.save()
def test_get_tools_status_multiple_tools(self): # get_tools_status test with an extra tool client = Client() # we insert the other tools with a fixed id, and in that case # django doesn't update the id sequence # so fudge it here and make the id the max of the existing ones. max_id = Tool.objects.all().aggregate(Max('id'))['id__max'] max_id += 1 # setUp already adds 2 tools, this takes us up to 3 t = Tool(id=max_id, name='hello kitty', status=1, status_message='Ok') t.save() resp = client.get('/api/get_tools_status', HTTP_API_KEY='KEY GOES HERE') self.assertEqual(resp.status_code, 200) ret = json.loads(resp.content.decode("utf-8")) # print ret self.assertTrue(len(ret) == 3)
def setUp(self): self.update_carddb('0_carddb.json') t = Tool(id=1, name='test_tool', status=1, status_message='OK') t.save() t = Tool(id=2, name='test_tool2', status=1, status_message='OK') t.save() # make user3 a user p = Permission(user=User.objects.get(pk=3), permission=1, tool=Tool.objects.get(pk=1), addedby=User.objects.get(pk=1)) p.save() # and user 1 a maintainer for tool 1 p = Permission(user=User.objects.get(pk=1), permission=2, tool=Tool.objects.get(pk=1), addedby=User.objects.get(pk=1)) p.save() # and user 7 a maintainer for tool 2 p = Permission(user=User.objects.get(pk=7), permission=2, tool=Tool.objects.get(pk=2), addedby=User.objects.get(pk=1)) p.save() # Add some django users, in reality these would come from LDAP # yes, the acserver user object is called User, same as the django one, so we call # our proxy object DJACUser... u1 = User.objects.get(pk=1) u3 = User.objects.get(pk=3) u7 = User.objects.get(pk=7) # the id's need to match up for u in (u1, u3, u7): ndju = DJACUser(id=u.id, username=u.name, email=u.name + "@localhost", password="******") ndju.save()
def setUp(self): t = Tool(id=1, name='test_tool', status=1, status_message='working ok') t.save() t = Tool(id=2, name='other test tool', status=0, status_message='Out of action') t.save() users = ( # user 1 has 2 cards, and is a maintainer (1, 'user1a', '00112233445566', True), (1, 'user1b', 'aabbccdd', True), # a user (2, 'user2', '22222222', True), # subscribed, but not a user (3, 'user3', '33333333', True), # exists, but not is not subscribed (4, 'user4', '44444444', False), ) for id, name, card, subscribed in users: self.__dict__[name] = card try: u = User.objects.get(pk=id) u.save() c = Card(card_id=card, user=u) c.save() except ObjectDoesNotExist: u = User(id=id, name=name, subscribed=subscribed) u.save() c = Card(card_id=card, user=u) c.save() self.user_does_not_exist = '12345678' # user 2 is a user p = Permission(user=User.objects.get(pk=2), permission=1, tool=Tool.objects.get(pk=1), addedby=User.objects.get(pk=1)) p.save() # user 1 is a maintainer p = Permission(user=User.objects.get(pk=1), permission=2, tool=Tool.objects.get(pk=1), addedby=User.objects.get(pk=1)) p.save() # make the android tag a user # p = Permissions(user=User.objects.get(pk=8), permission=1, tool=Tool.objects.get(pk=1), addedby=User.objects.get(pk=1)) # p.save() # make the temp card a maintainer # p = Permissions(user=User.objects.get(pk=5), permission=2, tool=Tool.objects.get(pk=1), addedby=User.objects.get(pk=1)) # p.save() # make user 4 a maintainer p = Permission(user=User.objects.get(pk=4), permission=2, tool=Tool.objects.get(pk=1), addedby=User.objects.get(pk=1)) p.save()
def handle(self, *args, **options): path = options['path'] if not os.path.exists(path): raise CommandError('Can\'t find %s' % (path)) # you can just import a single tool from the json file # good for just importing the 3-in-1 lathe from babbage for example onlytool = None if 'toolid' in options: try: onlytool = options['toolid'] except Exception as e: raise CommandError('not a tool id? %s : %s' % (options['toolid'], e)) fh = open(path, 'r') j = json.load(fh) if len(j) != 3: raise CommandError( 'The json file should have 3 top level items, not %d' % (len(j))) tools = j[0] perms = j[1] logs = j[2] for t in tools: # {u'status': 1, u'status_message': u'OK', u'acnode_id': 1, u'name': u'Three in One'} if onlytool: if t['acnode_id'] != onlytool: continue tool = Tool(name=t['name'], id=t['acnode_id'], status=t['status'], status_message=t['status_message']) tool.save() # format for importing dates. format = "%Y-%m-%dT%H:%M:%S" # the timestamps comes from a mysql # timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP # column, which uses the system timezone, which on babbage and the acserver is: # TZ='Europe/London' gmt = pytz.timezone('Europe/London') def check_added_by(p, out): added_by = None if p['added_by_user_id'] == None: # no user added this permission :/ # lets just use user 1 (Russ), it's as good as any out.write( "Warning: no added_by for permission %s, using user id 1" % (str(p))) added_by = 1 elif p['added_by_user_id'] == 0: out.write( "Warning: added_by for permission %s was 0, using user id 1" % (str(p))) added_by = 1 else: added_by = p['added_by_user_id'] return added_by for p in perms: # {u'last_used': None, u'user_id': 38, u'tool_id': 1, u'permission': 2, u'added_by_user_id': None, u'added_on': u'2013-05-05T02:38:47'} # we ignore last_used... # print p # skip if it's not the tool we want. if onlytool: if p['tool_id'] != onlytool: continue # check for existing permissions try: ep = Permission.objects.filter(user=User.objects.get( pk=p['user_id'])).get(tool_id=p['tool_id']) # ok, a permission already exists. # check in case it's been changed if ep.permission != int(p['permission']): self.stdout.write("permission changed!") self.stdout.write(str(ep)) self.stdout.write(str(p)) ep.permission = int(p['permission']) ep.addedby = User.objects.get( pk=check_added_by(p, self.stdout)) date = datetime.datetime.strptime(p['added_on'], format) ep.date = gmt.localize(date) ep.save() continue except ObjectDoesNotExist as e: # fine if it's not already in there. pass try: if not p['added_on']: date = timezone.now() else: date = datetime.datetime.strptime(p['added_on'], format) date = gmt.localize(date) perm = Permission(user=User.objects.get(pk=p['user_id']), tool=Tool.objects.get(pk=p['tool_id']), permission=int(p['permission']), addedby=User.objects.get( pk=check_added_by(p, self.stdout)), date=date) perm.save() except ObjectDoesNotExist as e: self.stdout.write(str(p)) self.stdout.write( 'Warning: User (or possibly a tool) does not exist, did you import the carddb first? (%s)' % (e)) # raise CommandError() for l in logs: # skip if it's not the tool we want. if onlytool: if l['tool_id'] != onlytool: continue # {u'tool_id': 1, u'logged_at': u'2013-05-16T19:57:59', u'user_id': 38, u'logged_event': u'Access Finished', u'time': 0} try: date = datetime.datetime.strptime(l['logged_at'], format) date = gmt.localize(date) l = Log(tool=Tool.objects.get(pk=l['tool_id']), user=User.objects.get(pk=l['user_id']), date=date, message=l['logged_event'], time=l['time']) l.save() except ObjectDoesNotExist as e: self.stdout.write("failed to add log line: %s" % (l)) fh.close()