コード例 #1
0
ファイル: auth_handlers.py プロジェクト: akshell/chatlanian
 def post(self, request):
     dev_name = request.data['name']
     check_name(dev_name)
     if dev_name.startswith(ANONYM_PREFIX):
         raise Error(
             'Names starting with "%s" are reserved.' % ANONYM_PREFIX,
             'Please choose another name.')
     try:
         user = User.objects.get(username__iexact=dev_name)
     except User.DoesNotExist:
         pass
     else:
         raise Error(
             'The user "%s" already exists.' % user.username,
             'Name must be be case-insensitively unique.')
     email = request.data['email']
     try:
         validate_email(email)
     except ValidationError:
         raise Error('The email "%s" is incorrect.' % email,
                     'Please correct the email.')
     if User.objects.filter(email=email):
         raise Error(
             'The email "%s" has already been taken.' % email,
             'Please choose another email.')
     user = User.objects.create_user(
         dev_name, email, request.data['password'])
     user.save()
     if request.is_half_anonymous:
         _stop_dev_patsaks(request.dev_name)
         old_dev_path = ROOT.devs[request.dev_name]
         dev_path = ROOT.devs[dev_name]
         os.rename(old_dev_path, dev_path)
         os.mkdir(old_dev_path)
         os.symlink(dev_path.tablespace, old_dev_path.tablespace)
         os.rename(
             dev_path.grantors[request.dev_name],
             dev_path.grantors[dev_name])
         os.rename(ROOT.locks[request.dev_name], ROOT.locks[dev_name])
         execute_sql(
             'SELECT ak.rename_dev(%s, %s)',
             (request.dev_name, dev_name.lower()))
     else:
         create_dev(dev_name)
     user.backend = AUTHENTICATION_BACKENDS[0]
     auth.login(request, user)
     return HttpResponse(status=CREATED)
コード例 #2
0
 def post(self, request):
     dev_name = request.data['name']
     check_name(dev_name)
     if dev_name.startswith(ANONYM_PREFIX):
         raise Error(
             'Names starting with "%s" are reserved.' % ANONYM_PREFIX,
             'Please choose another name.')
     try:
         user = User.objects.get(username__iexact=dev_name)
     except User.DoesNotExist:
         pass
     else:
         raise Error('The user "%s" already exists.' % user.username,
                     'Name must be be case-insensitively unique.')
     email = request.data['email']
     try:
         validate_email(email)
     except ValidationError:
         raise Error('The email "%s" is incorrect.' % email,
                     'Please correct the email.')
     if User.objects.filter(email=email):
         raise Error('The email "%s" has already been taken.' % email,
                     'Please choose another email.')
     user = User.objects.create_user(dev_name, email,
                                     request.data['password'])
     user.save()
     if request.is_half_anonymous:
         _stop_dev_patsaks(request.dev_name)
         old_dev_path = ROOT.devs[request.dev_name]
         dev_path = ROOT.devs[dev_name]
         os.rename(old_dev_path, dev_path)
         os.mkdir(old_dev_path)
         os.symlink(dev_path.tablespace, old_dev_path.tablespace)
         os.rename(dev_path.grantors[request.dev_name],
                   dev_path.grantors[dev_name])
         os.rename(ROOT.locks[request.dev_name], ROOT.locks[dev_name])
         execute_sql('SELECT ak.rename_dev(%s, %s)',
                     (request.dev_name, dev_name.lower()))
     else:
         create_dev(dev_name)
     user.backend = AUTHENTICATION_BACKENDS[0]
     auth.login(request, user)
     return HttpResponse(status=CREATED)
コード例 #3
0
 def __call__(self, request, *args, **kwargs):
     if request.method != 'GET' and not request.is_ajax():
         return HttpResponse('Non-AJAX request', status=FORBIDDEN)
     content_type_lower = request.META.get('CONTENT_TYPE', '').lower()
     if content_type_lower == 'application/json; charset=utf-8':
         request.META['CONTENT_TYPE'] = 'application/json'
     elif content_type_lower != 'application/json':
         request.META.pop('CONTENT_TYPE', None)
     request.is_anonymous = request.is_half_anonymous = False
     if request.user.is_authenticated():
         request.dev_name = request.user.username
     else:
         access = getattr(self.handler, 'access', GET_ANONYMOUS)
         if access == AUTHENTICATED:
             return HttpResponse('Authentication required',
                                 status=UNAUTHORIZED)
         try:
             request.dev_name = request.session['dev_name']
         except KeyError:
             if (access == HALF_ANONYMOUS or access == GET_ANONYMOUS
                     and request.method != 'GET'):
                 request.dev_name = request.session['dev_name'] = (
                     create_dev())
             else:
                 request.dev_name = ANONYM_NAME
                 request.is_anonymous = True
         request.is_half_anonymous = not request.is_anonymous
     if not request.is_anonymous:
         lock_path = ROOT.locks[request.dev_name]
         request.lock = (lock_path.acquire_shared() if request.method
                         == 'GET' else lock_path.acquire_exclusive())
     else:
         request.lock = None
     try:
         return PistonResource.__call__(self, request, *args, **kwargs)
     finally:
         if request.lock:
             request.lock.release()
コード例 #4
0
ファイル: resource.py プロジェクト: akshell/chatlanian
 def __call__(self, request, *args, **kwargs):
     if request.method != 'GET' and not request.is_ajax():
         return HttpResponse('Non-AJAX request', status=FORBIDDEN)
     content_type_lower = request.META.get('CONTENT_TYPE', '').lower()
     if content_type_lower == 'application/json; charset=utf-8':
         request.META['CONTENT_TYPE'] = 'application/json'
     elif content_type_lower != 'application/json':
         request.META.pop('CONTENT_TYPE', None)
     request.is_anonymous = request.is_half_anonymous = False
     if request.user.is_authenticated():
         request.dev_name = request.user.username
     else:
         access = getattr(self.handler, 'access', GET_ANONYMOUS)
         if access == AUTHENTICATED:
             return HttpResponse('Authentication required', status=UNAUTHORIZED)
         try:
             request.dev_name = request.session['dev_name']
         except KeyError:
             if (access == HALF_ANONYMOUS or
                 access == GET_ANONYMOUS and request.method != 'GET'):
                 request.dev_name = request.session['dev_name'] = (
                     create_dev())
             else:
                 request.dev_name = ANONYM_NAME
                 request.is_anonymous = True
         request.is_half_anonymous = not request.is_anonymous
     if not request.is_anonymous:
         lock_path = ROOT.locks[request.dev_name]
         request.lock = (
             lock_path.acquire_shared() if request.method == 'GET' else
             lock_path.acquire_exclusive())
     else:
         request.lock = None
     try:
         return PistonResource.__call__(self, request, *args, **kwargs)
     finally:
         if request.lock:
             request.lock.release()