コード例 #1
0
 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)
コード例 #2
0
ファイル: tests.py プロジェクト: paullessing/acserver-django
 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'
コード例 #3
0
 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)
コード例 #4
0
ファイル: tests.py プロジェクト: paullessing/acserver-django
 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)
コード例 #5
0
ファイル: tests.py プロジェクト: paullessing/acserver-django
  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()
コード例 #6
0
 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'
コード例 #7
0
 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)
コード例 #8
0
    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()
コード例 #9
0
ファイル: tests.py プロジェクト: paullessing/acserver-django
  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()
コード例 #10
0
    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()
コード例 #11
0
ファイル: tests.py プロジェクト: paullessing/acserver-django
 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()
コード例 #12
0
 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()
コード例 #13
0
    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()
コード例 #14
0
ファイル: tests.py プロジェクト: paullessing/acserver-django
 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)
コード例 #15
0
    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()
コード例 #16
0
ファイル: tests.py プロジェクト: paullessing/acserver-django
 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)
コード例 #17
0
    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()