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 %} -

Settings

+

InvenTree Settings


-Logged in as {{ user.username }} +
+
+

User Information

+
+
+
+
Edit
+
Set Password
+
+
+
+ + + + + + + + + + + + + + + +
First Name{{ user.first_name }}
Last Name{{ user.last_name }}
Email Address{{ user.email }}
{% 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