Пример #1
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.card_set.add(Card(card_id='12345678'))
    u.save()
Пример #2
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()
Пример #3
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'
Пример #4
0
    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()
Пример #5
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.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 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()
Пример #8
0
    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)
Пример #9
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()
Пример #10
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()
Пример #11
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()
Пример #12
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.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()
Пример #13
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()
Пример #14
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()