[profiles] Actually make the form work
This commit is contained in:
@ -4,6 +4,17 @@ from profiles.models import UserProfile
|
||||
|
||||
|
||||
class UserProfileForm(forms.ModelForm):
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.request = kwargs.pop("request")
|
||||
self.profile = UserProfile.objects.filter(
|
||||
user=self.request.user
|
||||
).first()
|
||||
if not self.profile:
|
||||
raise Exception
|
||||
super(UserProfileForm, self).__init__(
|
||||
*args, **kwargs, instance=self.profile
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = UserProfile
|
||||
fields = [
|
||||
@ -26,3 +37,8 @@ class UserProfileForm(forms.ModelForm):
|
||||
"ntfy_enabled",
|
||||
"redirect_to_webpage",
|
||||
]
|
||||
widgets = {
|
||||
"lastfm_password": forms.PasswordInput(render_value=True),
|
||||
"archivebox_password": forms.PasswordInput(render_value=True),
|
||||
"webdav_pass": forms.PasswordInput(render_value=True),
|
||||
}
|
||||
|
||||
@ -6,6 +6,6 @@ app_name = "profiles"
|
||||
|
||||
urlpatterns = [
|
||||
path(
|
||||
"settings/", views.ProfileDetailView.as_view(), name="profile_settings"
|
||||
"settings/", views.ProfileFormView.as_view(), name="profile_settings"
|
||||
),
|
||||
]
|
||||
|
||||
@ -5,13 +5,20 @@ from django.views.generic import FormView
|
||||
from profiles.forms import UserProfileForm
|
||||
|
||||
|
||||
class ProfileDetailView(FormView):
|
||||
class ProfileFormView(FormView):
|
||||
form_class = UserProfileForm
|
||||
template_name = "profiles/settings_form.html"
|
||||
success_url = reverse_lazy("profiles:profile_settings")
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context_data = super().get_context_data(**kwargs)
|
||||
if self.request.user.is_anonymous:
|
||||
return HttpResponseBadRequest
|
||||
return context_data
|
||||
def get_form_kwargs(self):
|
||||
"""Passes the request object to the form class.
|
||||
This is necessary to only display members that belong to a given user"""
|
||||
|
||||
kwargs = super(ProfileFormView, self).get_form_kwargs()
|
||||
kwargs["request"] = self.request
|
||||
|
||||
return kwargs
|
||||
|
||||
def form_valid(self, form):
|
||||
form.save()
|
||||
return super(ProfileFormView, self).form_valid(form)
|
||||
|
||||
@ -46,9 +46,8 @@ input:focus {
|
||||
|
||||
{% block title %}Settings{% endblock %}
|
||||
{% block details %}
|
||||
<form action="." method="post">
|
||||
{% csrf_token %}
|
||||
{{form.as_p}}
|
||||
<input type="submit" value="Save">
|
||||
<form method="post">{% csrf_token %}
|
||||
{{form.as_p}}
|
||||
<input type="submit" value="Save">
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
Reference in New Issue
Block a user