Ejemplo n.º 1
0
def user_settings(request):
    if request.GET.get('index_delete') == 'true':
        rest_user = RestUser(username=request.user.username)
        
        index_delete_result = rest_user.get(path='deleteIndex/')
        if index_delete_result and 'messages' in index_delete_result:
            for msg in index_delete_result['messages']:
                messages.add_message(request, messages.INFO, _(msg))
    
    form = UserSettingsForm(request.user, request.POST or None)
    if form.is_valid():
        result = form.save()
        
        if result and 'errorMessage' in result:
            messages.add_message(request, messages.ERROR, _(result['errorMessage']))
        if result and 'messages' in result:
            for msg in result['messages']:
                if msg == "Account password has been changed" and result['type'] == 'success':
                    request.session['key_ring'] = request.POST['new_password1']
                messages.add_message(request, messages.INFO, _(msg))
        
        if 'index_deactivated' in result and result['index_deactivated'] == True:
            url = reverse('user-settings')
            return HttpResponseRedirect(url + "?index_deactivated=true")
        return redirect('user-settings')
    
    
    return render_to_response(
        'www/access/user_settings.html',
        {
            "form": form,
        },
        context_instance=RequestContext(request)
    )
Ejemplo n.º 2
0
 def clean_old_password(self):
     """
     Validates that the old_password field is correct.
     """
     old_password = self.cleaned_data["old_password"]
     remote_user = RestUser(self.user.username)
     if not remote_user.check_login({'password': old_password}):
         raise forms.ValidationError(_("Your old password was entered incorrectly. Please enter it again."))
     return old_password
Ejemplo n.º 3
0
def zip_files(request):
    rest_user = RestUser(username=request.user.username)
    user = rest_user.get()
    user_id = int(user['userId'])
    try: 
    	file_list = [f for f in sorted(os.listdir(settings.ZIP_ARCHIVES_PATH % user_id)) if re.match(settings.ZIP_ARCHIVES_MATCH_PATTERN, f)]
    except:
	file_list=[]
    return render_to_response('www/zip_file_list.html', {
        'file_list': file_list,
    }, context_instance=RequestContext(request))
Ejemplo n.º 4
0
 def authenticate(self, username=None, password=None):
     """foo"""
     
     remote_user = RestUser(username)
     login_result = remote_user.check_login({'password':password})
     if not 'errorMessage' in login_result:
         try:
             user = User.objects.get(username=username)
         except User.DoesNotExist:
             # user will have an empty password
             user = User.objects.create_user(username, '')
             user.save()
         return user
     return None
Ejemplo n.º 5
0
 def save(self):
     rest_api = RestUser(self.user.username)
     data = {}
     
     old_password = self.cleaned_data['old_password']
     new_password = self.cleaned_data.get('new_password1', False)
     new_key_ring = self.cleaned_data.get('new_password1', False)
     new_email = self.cleaned_data.get('email', self.user.username)
     
     data['oldPassword'] = old_password
     data['oldKeyRing'] = old_password
     if new_password:
         data['password'] = new_password
     if new_key_ring:
         data['newKeyRing'] = new_key_ring
     if not new_email == self.user.username:
         data['email'] = new_email
         data['username'] = new_email
     
     result_rest = rest_api.put(data)
     
     if result_rest == True and not new_email == self.user.username:
         self.user.username = new_email
         self.user.email = new_email
         self.user.save()
     
     rest_properties = RestProperties(username=self.user.username)
     for key in self.cleaned_data:
         # check for existing actions_value_N (always "true" if exists)
         if key.startswith('actions_value_'):
             if self.cleaned_data[key] != self.action_old_values[key]:
                 actionId = self.cleaned_data[key.replace('_value_', '_key_')]
                 
                 if self.cleaned_data[key] == True:
                     string_value = 'true'
                     if actionId == 'org.backmeup.indexer':
                         result_rest['messages'].append(_('Indexing new backup jobs has been activated.'))
                 else:    
                     string_value = 'false'
                     if actionId == 'org.backmeup.indexer':
                         result_rest['messages'].append(_('Indexing new backup jobs has been deactivated.'))
                         result_rest['index_deactivated'] = True
                         
                 result_property = rest_properties.post(actionId=actionId, value=string_value)
         
     return result_rest
Ejemplo n.º 6
0
 def clean_email(self):
     email = self.cleaned_data["email"]
     try:
         # check if remote api knows user
         remote_user = RestUser(email)
         result = remote_user.get()
     
         if 'errorType' in result and result['errorType'] == 'org.backmeup.model.exceptions.UnknownUserException':
             # remote api doesn't know user, thus check with local db
             old_user = User.objects.get(username=email)
             # seems like the user exists (no exception) in "our" db, but not
             # according to the rest api. thus the user is deleted.
             old_user.delete()
             return email
     except User.DoesNotExist:
         return email
     
     raise forms.ValidationError(_("A user with that email already exists."))
Ejemplo n.º 7
0
    def save(self, commit=True):
        user = super(UserCreationForm, self).save(commit=False)
        user.set_password("")
        user.username = self.cleaned_data['email']
        user.email = self.cleaned_data['email']
        
        remote_user = RestUser(user.username)
        response = remote_user.post({
            'password': self.cleaned_data["password1"],
            'keyRing': self.cleaned_data['password1'],
            'email': self.cleaned_data['email'],
        })

        if response == False:
            raise Exception

        if commit:
            user.save()
        return user
Ejemplo n.º 8
0
def zip_download(request):
    """
    Send a file through Django without loading the whole file into
    memory at once. The FileWrapper will turn the file object into an
    iterator for chunks of 8KB.
    
    (performance might be improved by using apache mod_xsendfile.)
    """
    rest_user = RestUser(username=request.user.username)
    user = rest_user.get()
    user_id = int(user['userId'])
    
    filename = settings.ZIP_ARCHIVES_PATH % user_id
    filename = filename + request.GET['f']
    wrapper = FileWrapper(file(filename))
    response = HttpResponse(wrapper, content_type='application/zip')
    response['Content-Disposition'] = 'attachment; filename=' + request.GET['f']
    response['Content-Length'] = os.path.getsize(filename)
    return response