예제 #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 프로젝트: JoshOY/vj4
async def add(domain_id: str, owner_uid: int,
              roles={builtin.ROLE_DEFAULT: builtin.DEFAULT_PERMISSIONS}):
  for domain in builtin.DOMAINS:
    if domain['_id'] == domain_id:
      raise error.DomainAlreadyExistError(domain_id)
  coll = db.Collection('domain')
  # TODO(twd2): Do we need to check owner's priv, quota, etc here?
  try:
    return await coll.insert({'_id': domain_id, 'owner_uid': owner_uid, 'roles': roles})
  except errors.DuplicateKeyError:
    raise error.DomainAlreadyExistError(domain_id) from None
예제 #3
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