Skip to content
Snippets Groups Projects
Unverified Commit 50911b98 authored by Tom Teichler's avatar Tom Teichler :beers:
Browse files

Add function to edit user. Closes #49, #14.

parent c960951d
No related branches found
No related tags found
1 merge request!27Add function to edit user. Closes #49, #14.
......@@ -3,6 +3,7 @@ from django.contrib.auth import get_user_model
from django.utils.translation import ugettext_lazy as _
from .models import Person
from .utils import
class PersonAccountForm(forms.ModelForm):
......@@ -36,3 +37,29 @@ class PersonAccountForm(forms.ModelForm):
PersonsAccountsFormSet = forms.modelformset_factory(
Person, form=PersonAccountForm, max_num=0, extra=0)
class EditPersonForm(forms.ModelForm)
class Meta:
model = Person
fields = ['user', 'is_active', 'first_name', 'last_name', 'additional_name', 'short_name', 'street', 'housenumber', 'postal_code', 'place', 'phone_number', 'mobile_number', 'email', 'date_of_birth', 'sex', 'photo']
new_user = forms.CharField(
required=False,
label=_('New user'),
help_text=_('Create a new account'),
def clean(self) -> None:
User = get_user_model()
if self.cleaned_data.get('new_user', None):
if self.cleaned_data.get('user', None):
self.add_error('new_user', _('You cannot set a new username when also selecting an existing user.'))
elif User.objects.filter(username=self.cleaned_data['new_user']).exists():
self.add_error('new_user', _('This username is already in use.'))
else:
new_user_obj = User.objects.create_user(self.cleaned_data['new_user'],
self.instance.email,
first_name=self.instance.first_name,
last_name=self.instance.last_name)
self.cleaned_data['user'] = new_user_obj
......@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: BiscuIT - School Information System (SIS)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-08-26 00:46+0200\n"
"PO-Revision-Date: 2019-08-26 00:56+0200\n"
"POT-Creation-Date: 2019-08-26 19:58+0200\n"
"PO-Revision-Date: 2019-08-26 19:59+0200\n"
"Last-Translator: Tom Teichler <tom.teichler@teckids.org>\n"
"Language-Team: \n"
"Language: de\n"
......@@ -22,16 +22,24 @@ msgstr ""
msgid "BiscuIT - The Free School Information System"
msgstr "BiscuIT - Das freie Schulinformationssystem"
#: forms.py:25
#: forms.py:25 forms.py:55
msgid "You cannot set a new username when also selecting an existing user."
msgstr ""
"Sie können keine neuen Benutzer erstellen, wenn Sie gleichzeitig einen "
"existierenden Benutzer auswählen."
#: forms.py:27
#: forms.py:27 forms.py:57
msgid "This username is already in use."
msgstr "Dieser Benutzername wird bereits genutzt."
#: forms.py:47
msgid "New user"
msgstr "Neuer Benutzer"
#: forms.py:48
msgid "Create a new account"
msgstr "Neues Benutzerkonto erstellen"
#: menus.py:6
msgid "Login"
msgstr "Anmelden"
......@@ -293,3 +301,7 @@ msgstr "Interner Serverfehler"
#: views.py:32
msgid "An unexpected error has occurred."
msgstr "Ein Fehler ist aufgetreten."
#: views.py:157
msgid "The person has been saved."
msgstr "Die Person wurde gespeichert."
......@@ -7,7 +7,7 @@
{% if person %}
<h2>{{ person.first_name }} {{ person.last_name }}</h2>
<p>
<a href="{{ '#' }}">
<a href="{% url 'edit_person_by_id' person.id %}">
{% blocktrans %}Edit person{% endblocktrans %}
</a>
</p>
......
......@@ -11,11 +11,12 @@ urlpatterns = [
path('accounts/', include('django.contrib.auth.urls')),
path('persons', views.persons, name='persons'),
path('persons/accounts', views.persons_accounts, name='persons_accounts'),
path('person', views.person, name='person'),
pat('person', views.person, name='person'),
path('person/<int:id_>', views.person,
{'template': 'full'}, name='person_by_id'),
path('person/<int:id_>/card', views.person,
{'template': 'card'}, name='person_by_id_card'),
path('person/<int:id_>/edit', views.edit_person, name='edit_person_by_id'),
path('groups', views.groups, name='groups'),
path('group/<int:id_>', views.group,
{'template': 'full'}, name='group_by_id'),
......
......@@ -8,7 +8,7 @@ from django_tables2 import RequestConfig
from django.utils.translation import ugettext_lazy as _
from .decorators import admin_required
from .forms import PersonsAccountsFormSet
from .forms import PersonsAccountsFormSet, EditPersonForm
from .models import Person, Group
from .tables import PersonsTable, GroupsTable
......@@ -139,3 +139,24 @@ def persons_accounts(request: HttpRequest) -> HttpResponse:
context['persons_accounts_formset'] = persons_accounts_formset
return render(request, 'core/persons_accounts.html', context)
@admin_required
def edit_person(request: HttpRequest, id_: int) -> HttpResponse:
context = {}
person = get_object_or_404(Person, id=id_)
edit_person_form = EditPersonForm(request.POST or None, request.FILES or None, instance=person)
context['person'] = person
if request.method == 'POST':
if edit_person_form.is_valid():
edit_person_form.save(commit=True)
messages.success(request, _('The person has been saved.'))
return render(request, 'core/person_full.html', context)
context['edit_person_form'] = edit_person_form
return render(request, 'core/edit_person.html', context)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment