예제 #1
0
파일: views.py 프로젝트: duplxey/x5gon-quiz
def settings_view(request):
    if not request.user.is_authenticated:
        return not_authenticated(request)

    user = request.user
    profile = Profile.objects.get(user=user)

    if request.method == 'POST':
        form = SettingsForm(request.POST, request.FILES)
        if form.is_valid():
            description = form.data.get('description', None)
            avatar = request.FILES.get('avatar', None)

            if description is not None:
                if description is not profile.description:
                    profile.description = description

            if avatar is not None:
                if avatar.size > 2097152:
                    form.add_error('avatar', "Image is too big! Max 2MB.")
                    return render(request, 'accounts/settings.html',
                                  {'form': form})

                if avatar is not profile.avatar:
                    profile.avatar = avatar

            profile.save()
        return redirect('accounts-profile', username=user.username)
    else:
        form = SettingsForm(initial={
            'description': profile.description,
            'avatar': profile.avatar
        })
        return render(request, 'accounts/settings.html', {'form': form})
예제 #2
0
def settings(request):
    if request.method == 'POST':
        form = SettingsForm(request.POST)
        if form.is_valid():
            #requires old password + new password and confirmation to change
            old_passwd = form.cleaned_data['old_passwd']
            new_passwd1 = form.cleaned_data['new_passwd1']
            new_passwd2 = form.cleaned_data['new_passwd2']

            user = auth.authenticate(username=request.user.username, password=old_passwd)
            if user is not None:
                if new_passwd1 == new_passwd2:
                    user.set_password(new_passwd1)
                    user.save()
                    auth.login(request, user) # log in user for redirect
                    messages.success(request, 'Password changed')
                else:
                    messages.error(request, 'Passwords do not match')
            else:
                messages.error(request, 'Incorrect password')
        else:
            messages.error(request, 'Invalid entry')

        return redirect('accounts:settings')

    else:
        form = SettingsForm()

    if DEBUG == True:
        return render(request, 'accounts/settings.html', {'form': form, 'user': request.user})
    else:
        return render(request, 'accounts/settings.min.html', {'form': form, 'user': request.user})
예제 #3
0
파일: views.py 프로젝트: Julia-321/Planner
    def post(self, request):
        form = SettingsForm(self.request.POST)
        if form.is_valid():
            services.apply_changes(self.request, form)

        context = {
            'form': SettingsForm(),
            'saved': form.is_valid(),
            'notification_option':
            self.request.user.profile.notification_option,
            'home_view': self.request.user.profile.home_view,
            'theme': self.request.user.profile.theme,
            'push_time': self.request.user.profile.push_time,
        }

        return render(self.request, 'accounts/settings.html', context=context)
예제 #4
0
 def test_settings_form_valid_data(self):
     """
     Original password, a new password, and a matching password confirmation
     confirmation are required for validation.
     """
     form = SettingsForm({
         'old_passwd': 'test12345',
         'new_passwd1': 'XAGEasdh!ad',
         'new_passwd2': 'XAGEasdh!ad',
     })
     self.assertTrue(form.is_valid())
예제 #5
0
파일: views.py 프로젝트: Julia-321/Planner
 def get(self, request):
     context = {
         'form': SettingsForm(),
         'saved': False,
         'notification_option':
         self.request.user.profile.notification_option,
         'home_view': self.request.user.profile.home_view,
         'theme': self.request.user.profile.theme,
         'push_time': self.request.user.profile.push_time,
     }
     print(context)
     return render(self.request, 'accounts/settings.html', context=context)
예제 #6
0
def settings_view(request):

    if request.method == 'POST':
        form = SettingsForm(request.POST, request.FILES)
        if not form.is_valid():
            return render(request, 'accounts/settings.html', {'form': form})
        user = request.user
        check_user = authenticate(request,
                                  username=user.username,
                                  password=form.cleaned_data['password'])
        if check_user is None:
            return render(request, 'accounts/settings.html', {
                'form': form,
                'error': 'Wrong password'
            })
        User.objects.update_user(user, form)
        return redirect('accounts:settings')

    form = SettingsForm()
    if request.user.is_authenticated:
        return render(request, 'accounts/settings.html', {'form': form})
    return redirect('articles:Cat In Hat')
예제 #7
0
 def test_settings_form_invalid_data(self):
     """
     Original password, a new password, and a matching password confirmation
     confirmation are required for validation.
     """
     form = SettingsForm({
         'old_passwd': 'test12345',
         'new_passwd1': 'XAGEasdh!ad',
     })
     self.assertFalse(form.is_valid())
     self.assertEqual(form.errors, {
         'new_passwd2': ['This field is required.'],
     })