示例#1
0
async def add(domain_id: str,
              owner_uid: int,
              roles=builtin.DOMAIN_SYSTEM['roles'],
              name: str = None,
              gravatar: str = None,
              bulletin: str = ''):
    validator.check_domain_id(domain_id)
    validator.check_name(name)
    validator.check_bulletin(bulletin)
    for domain in builtin.DOMAINS:
        if domain['_id'] == domain_id:
            raise error.DomainAlreadyExistError(domain_id)
    coll = db.coll('domain')
    try:
        result = await coll.insert_one({
            '_id': domain_id,
            'pending': True,
            'owner_uid': owner_uid,
            'roles': roles,
            'name': name,
            'gravatar': gravatar,
            'bulletin': bulletin
        })
        domain_id = result.inserted_id
    except errors.DuplicateKeyError:
        raise error.DomainAlreadyExistError(domain_id) from None
    # grant root role to owner by default
    await add_user_role(domain_id, owner_uid, builtin.ROLE_ROOT)
    await coll.update_one({'_id': domain_id}, {'$unset': {'pending': ''}})
    return domain_id
示例#2
0
文件: domain.py 项目: vijos/vj4
async def edit(domain_id: str, **kwargs):
  for domain in builtin.DOMAINS:
    if domain['_id'] == domain_id:
      raise error.BuiltinDomainError(domain_id)
  coll = db.coll('domain')
  if 'owner_uid' in kwargs:
    del kwargs['owner_uid']
  if 'name' in kwargs:
    validator.check_name(kwargs['name'])
  # TODO(twd2): check kwargs
  return await coll.find_one_and_update(filter={'_id': domain_id},
                                        update={'$set': {**kwargs}},
                                        return_document=ReturnDocument.AFTER)
示例#3
0
async def edit(domain_id: str, **kwargs):
  # for domain in builtin.DOMAINS:
  #   if domain['_id'] == domain_id:
  #     # raise error.BuiltinDomainError(domain_id)
  #     pass
  coll = db.coll('domain')
  if 'owner_uid' in kwargs:
    del kwargs['owner_uid']
  if 'name' in kwargs:
    validator.check_name(kwargs['name'])
  # TODO(twd2): check kwargs
  return await coll.find_one_and_update(filter={'_id': domain_id},
                                        update={'$set': {**kwargs}},
                                        return_document=ReturnDocument.AFTER)
示例#4
0
async def add(domain_id: str,
              owner_uid: int,
              roles=builtin.DOMAIN_SYSTEM['roles'],
              name: str = None,
              gravatar: str = None):
    validator.check_domain_id(domain_id)
    validator.check_name(name)
    for domain in builtin.DOMAINS:
        if domain['_id'] == domain_id:
            raise error.DomainAlreadyExistError(domain_id)
    coll = db.coll('domain')
    try:
        return (await coll.insert_one({
            '_id': domain_id,
            'owner_uid': owner_uid,
            'roles': roles,
            'name': name,
            'gravatar': gravatar
        })).inserted_id
    except errors.DuplicateKeyError:
        raise error.DomainAlreadyExistError(domain_id) from None
示例#5
0
文件: domain.py 项目: vijos/vj4
async def add(domain_id: str, owner_uid: int,
              roles=builtin.DOMAIN_SYSTEM['roles'],
              name: str=None, gravatar: str=None, bulletin: str=''):
  validator.check_domain_id(domain_id)
  validator.check_name(name)
  validator.check_bulletin(bulletin)
  for domain in builtin.DOMAINS:
    if domain['_id'] == domain_id:
      raise error.DomainAlreadyExistError(domain_id)
  coll = db.coll('domain')
  try:
    result = await coll.insert_one({'_id': domain_id,
                                    'pending': True, 'owner_uid': owner_uid,
                                    'roles': roles, 'name': name,
                                    'gravatar': gravatar, 'bulletin': bulletin})
    domain_id = result.inserted_id
  except errors.DuplicateKeyError:
    raise error.DomainAlreadyExistError(domain_id) from None
  # grant root role to owner by default
  await add_user_role(domain_id, owner_uid, builtin.ROLE_ROOT)
  await coll.update_one({'_id': domain_id},
                        {'$unset': {'pending': ''}})
  return domain_id