예제 #1
0
 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)
예제 #2
0
파일: domain.py 프로젝트: vijos/vj4
 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)