code: def get_user(uid):
      
      if db is not None:
          try:
              uid = uid.decode('utf-8')
          except AttributeError:
              pass
          d = db.hgetall('user:{0}'.format(uid))
          if d:
              nd = {}
              # strings everywhere
              for k in d:
                  try:
                      nd[k.decode('utf-8')] = d[k].decode('utf-8')
                  except AttributeError:
                      try:
                          nd[k.decode('utf-8')] = d[k]
                      except AttributeError:
                          nd[k] = d[k]
              for p in PERMISSIONS:
                  nd[p] = nd.get(p) == '1'
              return User(uid=uid, **nd)
          else:
              return None
      else:
          d = app.config['COIL_USERS'].get(uid)
          if d:
              return User(uid=uid, **d)
          else:
              return None
docs: Get an user by the UID.
  
      :param str uid: UID to find
      :return: the user
      :rtype: User object
      :raises ValueError: uid is not an integer
      :raises KeyError: if user does not exist