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)