Ejemplo n.º 1
0
 def post(self):
     presence_start = presence_end = None
     args = self.parser.parse_args()
     if not args.id:
         abort(400, message='The `id` parameter is required')
     device = Device(id=args.id,
                     name=args.name,
                     user_id=args.user,
                     address=args.address,
                     expire_time=args.expire_time,
                     presence_start=presence_start,
                     presence_end=presence_end)
     devices().update(device)
Ejemplo n.º 2
0
 def put(self):
     presence_start = presence_end = None
     args = self.parser.parse_args()
     if not args.id:
         abort(400, message='The `id` parameter is required')
     device = devices().get(id=args.id)
     if not device:
         abort(404, message='The device "%s" does not exist' % args.id)
     device.update(id=args.id,
                   name=args.name,
                   user_id=args.user,
                   address=args.address,
                   expire_time=args.expire_time,
                   presence_start=presence_start,
                   presence_end=presence_end)
     devices().update(device)
Ejemplo n.º 3
0
 def get(self):
     args = self.parser.parse_args()
     if not args.id:
         return self.list_all_users()
     user = users().get(args.id)
     user_devices = [dict(x) for x in devices().get(user_id=user.id)]
     return dict(user) + {'devices': user_devices}
Ejemplo n.º 4
0
 def list_active_devices(self):
     """List the devices that have active leases."""
     active_devices = devices().pick(
         'presence_end < presence_start AND expire_time > ?',
         int(time.time()))
     app.logger.debug(active_devices)
     return active_devices
Ejemplo n.º 5
0
 def list_all_users(self):
     output = []
     devs = devices()
     for user in users().get():
         output.append(
             dict(user) +
             {'devices': [dict(x) for x in devs.get(user_id=user.id)]})
     return output
Ejemplo n.º 6
0
 def get_device(self, device_id, active=None):
     """List the details of a specific device."""
     if not MAC_PATTERN.match(device_id):
         abort(400, message='"%s" is not a valid device ID.' % device_id)
     devs = devices().get(id=device_id)
     if not devs:
         abort(400, message='"%s" is not an existing device.' % device_id)
     if active:
         return [x for x in devs if x.present]
     if active is False:
         return [x for x in devs if not x.present]
     return devs
Ejemplo n.º 7
0
 def list_all_devices(self):
     """List all known devices."""
     app.logger.debug(devices().get())
     devs = devices().get()
     return devs