async def post(self, *, method: int, role: str = None, expire: int = None, invitation_code: str = ''): current_join_settings = domain.get_join_settings(self.domain, self.now) if method not in constant.domain.JOIN_METHOD_RANGE: raise error.ValidationError('method') if method == constant.domain.JOIN_METHOD_NONE: join_settings = None else: if role not in self.domain['roles']: raise error.ValidationError('role') if expire not in constant.domain.JOIN_EXPIRATION_RANGE: raise error.ValidationError('expire') if not current_join_settings and expire == constant.domain.JOIN_EXPIRATION_KEEP_CURRENT: raise error.ValidationError('expire') if method == constant.domain.JOIN_METHOD_CODE: validator.check_domain_invitation_code(invitation_code) join_settings = {'method': method, 'role': role} if method == constant.domain.JOIN_METHOD_CODE: join_settings['code'] = invitation_code if expire == constant.domain.JOIN_EXPIRATION_KEEP_CURRENT: join_settings['expire'] = current_join_settings['expire'] elif expire == constant.domain.JOIN_EXPIRATION_UNLIMITED: join_settings['expire'] = None else: join_settings['expire'] = self.now + datetime.timedelta( hours=expire) await domain.edit(self.domain_id, join=join_settings) self.json_or_redirect(self.referer_or_main)
async def post(self, *, method: int, role: str=None, expire: int=None, invitation_code: str=''): current_join_settings = domain.get_join_settings(self.domain, self.now) if method not in constant.domain.JOIN_METHOD_RANGE: raise error.ValidationError('method') if method == constant.domain.JOIN_METHOD_NONE: join_settings = None else: if role not in self.domain['roles']: raise error.ValidationError('role') if expire not in constant.domain.JOIN_EXPIRATION_RANGE: raise error.ValidationError('expire') if not current_join_settings and expire == constant.domain.JOIN_EXPIRATION_KEEP_CURRENT: raise error.ValidationError('expire') if method == constant.domain.JOIN_METHOD_CODE: validator.check_domain_invitation_code(invitation_code) join_settings={'method': method, 'role': role} if method == constant.domain.JOIN_METHOD_CODE: join_settings['code'] = invitation_code if expire == constant.domain.JOIN_EXPIRATION_KEEP_CURRENT: join_settings['expire'] = current_join_settings['expire'] elif expire == constant.domain.JOIN_EXPIRATION_UNLIMITED: join_settings['expire'] = None else: join_settings['expire'] = self.now + datetime.timedelta(hours=expire) await domain.edit(self.domain_id, join=join_settings) self.json_or_redirect(self.referer_or_main)
async def get(self): roles = sorted(list(self.domain['roles'].keys())) roles_with_text = [(role, role) for role in roles] join_settings = domain.get_join_settings(self.domain, self.now) expirations = constant.domain.JOIN_EXPIRATION_RANGE.copy() if not join_settings: del expirations[constant.domain.JOIN_EXPIRATION_KEEP_CURRENT] self.render('domain_manage_join_applications.html', roles_with_text=roles_with_text, join_settings=join_settings, expirations=expirations)
async def get(self): roles = sorted(list(self.domain['roles'].keys())) roles_with_text = [(role, role) for role in roles] join_settings = domain.get_join_settings(self.domain, self.now) expirations = constant.domain.JOIN_EXPIRATION_RANGE.copy() if not join_settings: del expirations[constant.domain.JOIN_EXPIRATION_KEEP_CURRENT] self.render('domain_manage_join_applications.html', roles_with_text=roles_with_text, join_settings=join_settings, expirations=expirations)
async def post(self, *, code: str=''): join_settings = domain.get_join_settings(self.domain, self.now) if not join_settings: raise error.DomainJoinForbiddenError(self.domain_id) await self.ensure_user_not_member() if join_settings['method'] == constant.domain.JOIN_METHOD_CODE: if join_settings['code'] != code: raise error.InvalidJoinInvitationCodeError(self.domain_id) try: await domain.add_user_role(self.domain_id, self.user['_id'], join_settings['role']) except error.UserAlreadyDomainMemberError: raise error.DomainJoinAlreadyMemberError(self.domain_id, self.user['_id']) from None self.json_or_redirect(self.reverse_url('domain_main'))
async def post(self, *, code: str = ''): join_settings = domain.get_join_settings(self.domain, self.now) if not join_settings: raise error.DomainJoinForbiddenError(self.domain_id) await self.ensure_user_not_member() if join_settings['method'] == constant.domain.JOIN_METHOD_CODE: if join_settings['code'] != code: raise error.InvalidJoinInvitationCodeError(self.domain_id) try: await domain.add_user_role(self.domain_id, self.user['_id'], join_settings['role']) except error.UserAlreadyDomainMemberError: raise error.DomainJoinAlreadyMemberError( self.domain_id, self.user['_id']) from None self.json_or_redirect(self.reverse_url('domain_main'))
async def get(self, *, code: str = ''): join_settings = domain.get_join_settings(self.domain, self.now) if not join_settings: raise error.DomainJoinForbiddenError(self.domain_id) await self.ensure_user_not_member() self.render('domain_join.html', join_settings=join_settings, code=code)
async def get(self, *, code: str=''): join_settings = domain.get_join_settings(self.domain, self.now) if not join_settings: raise error.DomainJoinForbiddenError(self.domain_id) await self.ensure_user_not_member() self.render('domain_join.html', join_settings=join_settings, code=code)