From 0032ea3409e3f113b35ea1274a5b1d9ed899e430 Mon Sep 17 00:00:00 2001 From: Oliver Walters <oliver.henry.walters@gmail.com> Date: Tue, 14 May 2019 13:33:47 +1000 Subject: [PATCH] Add a form to edit basic user settings - First / last name - Email address --- InvenTree/InvenTree/forms.py | 15 +++++++- InvenTree/InvenTree/urls.py | 4 ++- InvenTree/InvenTree/views.py | 14 +++++++- InvenTree/templates/InvenTree/settings.html | 40 +++++++++++++++++++-- 4 files changed, 68 insertions(+), 5 deletions(-) diff --git a/InvenTree/InvenTree/forms.py b/InvenTree/InvenTree/forms.py index 7ec4401101..901ef0b26a 100644 --- a/InvenTree/InvenTree/forms.py +++ b/InvenTree/InvenTree/forms.py @@ -7,7 +7,7 @@ from __future__ import unicode_literals from django import forms from crispy_forms.helper import FormHelper - +from django.contrib.auth.models import User class HelperForm(forms.ModelForm): """ Provides simple integration of crispy_forms extension. """ @@ -33,3 +33,16 @@ class DeleteForm(forms.Form): fields = [ 'confirm_delete' ] + + +class EditUserForm(HelperForm): + """ Form for editing user information + """ + + class Meta: + model = User + fields = [ + 'first_name', + 'last_name', + 'email' + ] \ No newline at end of file diff --git a/InvenTree/InvenTree/urls.py b/InvenTree/InvenTree/urls.py index 572225864f..0e24fddd47 100644 --- a/InvenTree/InvenTree/urls.py +++ b/InvenTree/InvenTree/urls.py @@ -30,7 +30,7 @@ from django.conf.urls.static import static from django.views.generic.base import RedirectView from rest_framework.documentation import include_docs_urls -from .views import IndexView, SearchView, SettingsView +from .views import IndexView, SearchView, SettingsView, EditUserView from users.urls import user_urls @@ -64,6 +64,8 @@ urlpatterns = [ url(r'^settings/', SettingsView.as_view(), name='settings'), + url(r'^edit-user/', EditUserView.as_view(), name='edit-user'), + url(r'^admin/', admin.site.urls, name='inventree-admin'), url(r'^qr_code/', include(qr_code_urls, namespace='qr_code')), diff --git a/InvenTree/InvenTree/views.py b/InvenTree/InvenTree/views.py index aea938f961..5b889246f6 100644 --- a/InvenTree/InvenTree/views.py +++ b/InvenTree/InvenTree/views.py @@ -17,7 +17,7 @@ from django.views.generic.base import TemplateView from part.models import Part -from .forms import DeleteForm +from .forms import DeleteForm, EditUserForm from .helpers import str2bool from rest_framework import views @@ -371,6 +371,18 @@ class AjaxDeleteView(AjaxMixin, UpdateView): return self.renderJsonResponse(request, form, data=data, context=context) +class EditUserView(AjaxUpdateView): + """ View for editing user information """ + + ajax_template_name = "modal_form.html" + ajax_form_title = "Edit User Information" + form_class = EditUserForm + + def get_object(self): + return self.request.user + + + class IndexView(TemplateView): """ View for InvenTree index page """ diff --git a/InvenTree/templates/InvenTree/settings.html b/InvenTree/templates/InvenTree/settings.html index 99aa03ccb1..56a8b1f0c2 100644 --- a/InvenTree/templates/InvenTree/settings.html +++ b/InvenTree/templates/InvenTree/settings.html @@ -5,10 +5,36 @@ InvenTree | Settings {% endblock %} {% block content %} -<h3>Settings</h3> +<h3>InvenTree Settings</h3> <hr> -Logged in as {{ user.username }} +<div class='row'> + <div class='col-sm-6'> + <h4>User Information</h4> + </div> + <div class='col-sm-6'> + <div class='btn-group' style='float: right;'> + <div class='btn btn-primary' type='button' id='edit-user' title='Edit User Information'>Edit</div> + <div class='btn btn-primary' type='button' id='edit-password' title='Change Password'>Set Password</div> + </div> + </div> +</div> + + +<table class='table table-striped table-condensed'> + <tr> + <td>First Name</td> + <td>{{ user.first_name }}</td> + </tr> + <tr> + <td>Last Name</td> + <td>{{ user.last_name }}</td> + </tr> + <tr> + <td>Email Address</td> + <td>{{ user.email }}</td> + </tr> +</table> {% endblock %} @@ -18,4 +44,14 @@ Logged in as {{ user.username }} {% block js_ready %} {{ block.super }} + + $("#edit-user").on('click', function() { + launchModalForm( + "{% url 'edit-user' %}", + { + reload: true, + } + ); + }); + {% endblock %} \ No newline at end of file