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
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)
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)
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
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