Example #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)
Example #2
0
File: domain.py Project: 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)
Example #3
0
File: domain.py Project: vijos/vj4
 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)
Example #4
0
 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)
Example #5
0
File: domain.py Project: vijos/vj4
 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'))
Example #6
0
 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'))
Example #7
0
 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)
Example #8
0
File: domain.py Project: vijos/vj4
 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)