def test_permission_nodate(self): # if we save a permission with no date it should get the current date added. p = Permission(user=User.objects.get(pk=1), tool=Tool.objects.get(pk=1), permission=1, addedby=User.objects.get(pk=1)) p.save() self.assertTrue(p.date != None)
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 test_permission_date(self): # permissions can have dates in the past, e.g. if we are importing old logs now = timezone.now() - datetime.timedelta(days=30) p = Permission(user=User.objects.get(pk=1), tool=Tool.objects.get(pk=1), permission=1, addedby=User.objects.get(pk=1), date=now) p.save() self.assertTrue(p.date == now)
def test_permission_updated(self): # if a permission is changed the date should be updated. p = Permission(user=User.objects.get(pk=1), tool=Tool.objects.get(pk=1), permission=1, addedby=User.objects.get(pk=1)) p.save() self.failUnless(p.date != None) p2 = Permission.objects.get(user=User.objects.get(pk=1), tool=Tool.objects.get(pk=1)) # upgrde to maintainer p2.permission = 2 p2.save() self.failUnless(p.date < p2.date)
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 test_permission_updated(self): # if a permission is changed the date should be updated. p = Permission(user=User.objects.get(pk=1), tool=Tool.objects.get(pk=1), permission=1, addedby=User.objects.get(pk=1)) p.save() self.assertTrue(p.date != None) p2 = Permission.objects.get(user=User.objects.get(pk=1), tool=Tool.objects.get(pk=1)) # upgrde to maintainer p2.permission = 2 p2.save() self.assertTrue(p.date < p2.date)
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 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 handle(self, *args, **options): toola = options['toola'] toolb = options['toolb'] fromTool = Permission.objects.filter(tool_id=toola) for perm in fromTool: newperm = None try: newperm = Permission.objects.get(tool_id=toolb, user=perm.user) except: pass if newperm is None: newperm = Permission(tool_id=toolb, user=perm.user, permission=perm.permission, addedby=perm.addedby, date=perm.date) else: newperm.permission = perm.permission newperm.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): 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 test_permission_date(self): # permissions can have dates in the past, e.g. if we are importing old logs now = timezone.now() - datetime.timedelta(days=30) p = Permission(user=User.objects.get(pk=1), tool=Tool.objects.get(pk=1), permission=1, addedby=User.objects.get(pk=1), date=now) p.save() self.failUnless(p.date == now)
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()
def test_permission_nodate(self): # if we save a permission with no date it should get the current date added. p = Permission(user=User.objects.get(pk=1), tool=Tool.objects.get(pk=1), permission=1, addedby=User.objects.get(pk=1)) p.save() self.failUnless(p.date != None)
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()