async def add_continue(domain_id: str, ensure_owner_uid: int = None): ddoc = await get(domain_id) if 'pending' not in ddoc: raise error.DomainNotFoundError(domain_id) owner_uid = ddoc['owner_uid'] if ensure_owner_uid != None and owner_uid != ensure_owner_uid: raise error.DomainNotFoundError(domain_id) try: await add_user_role(domain_id, owner_uid, builtin.ROLE_ROOT) except error.UserAlreadyDomainMemberError: pass coll = db.coll('domain') await coll.update_one({'_id': domain_id}, {'$unset': {'pending': ''}})
async def prepare(self): self.translate = locale.get_translate( options.default_locale) # Default translate for errors. self.session = await self.update_session() self.domain_id = self.request.match_info.pop('domain_id', builtin.DOMAIN_ID_SYSTEM) if 'uid' in self.session: uid = self.session['uid'] self.user, self.domain, self.domain_user = await asyncio.gather( user.get_by_uid(uid), domain.get(self.domain_id), domain.get_user(self.domain_id, uid)) if not self.user: raise error.UserNotFoundError(uid) if not self.domain_user: self.domain_user = {} else: self.user = builtin.USER_GUEST self.domain = await domain.get(self.domain_id) self.domain_user = builtin.DOMAIN_USER_GUEST if not self.domain: raise error.DomainNotFoundError(self.domain_id) self.view_lang = self.get_setting('view_lang') # TODO(iceboy): UnknownTimeZoneError self.timezone = pytz.timezone(self.get_setting('timezone')) self.translate = locale.get_translate(self.view_lang) self.datetime_span = functools.partial(_datetime_span, timezone=self.timezone) self.datetime_stamp = _datetime_stamp self.reverse_url = functools.partial(_reverse_url, domain_id=self.domain_id) self.build_path = functools.partial(_build_path, domain_id=self.domain_id, domain_name=self.domain['name']) if not self.has_priv(builtin.PRIV_VIEW_ALL_DOMAIN): self.check_perm(builtin.PERM_VIEW)
async def get(domain_id: str, fields=None): for domain in builtin.DOMAINS: if domain['_id'] == domain_id: return domain coll = db.coll('domain') ddoc = await coll.find_one(domain_id, fields) if not ddoc: raise error.DomainNotFoundError(domain_id) return ddoc
async def prepare(self): self.session = await self.update_session() if self.session and 'uid' in self.session: self.user = await user.get_by_uid(self.session['uid']) or builtin.USER_GUEST else: self.user = builtin.USER_GUEST self.translate = locale.get_translate(self.get_setting('view_lang')) # TODO(iceboy): use user timezone. self.datetime_span = _get_datetime_span('Asia/Shanghai') self.domain_id = self.request.match_info.pop('domain_id', builtin.DOMAIN_ID_SYSTEM) self.reverse_url = functools.partial(_reverse_url, domain_id=self.domain_id) self.build_path = functools.partial(_build_path, domain_id=self.domain_id) self.domain = await domain.get(self.domain_id) if not self.domain: raise error.DomainNotFoundError(self.domain_id)
async def prepare(self): # TODO(iceboy): parallelize: (session -> user) | domain. self.session = await self.update_session() if self.session and 'uid' in self.session: self.user = await user.get_by_uid(self.session['uid'] ) or builtin.USER_GUEST else: self.user = builtin.USER_GUEST # TODO(iceboy): use user timezone. self.locale_context = _get_locale_context( self.get_setting('view_lang'), 'Asia/Shanghai') self.domain_id = self.request.match_info.pop('domain_id', builtin.DOMAIN_ID_SYSTEM) self.domain_context = self.get_domain_context(self.domain_id) self.reverse_url = self.domain_context['reverse_url'] self.build_path = self.domain_context['build_path'] self.domain = await domain.get(self.domain_id) if not self.domain: raise error.DomainNotFoundError(self.domain_id)