Skip to content
Snippets Groups Projects
Commit c76a13db authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files
parents 3890c6ca 70e272e8
No related branches found
No related tags found
No related merge requests found
...@@ -3,6 +3,7 @@ from django.contrib.auth import get_user_model ...@@ -3,6 +3,7 @@ from django.contrib.auth import get_user_model
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from .models import Person from .models import Person
from .utils import
class PersonAccountForm(forms.ModelForm): class PersonAccountForm(forms.ModelForm):
...@@ -36,3 +37,29 @@ class PersonAccountForm(forms.ModelForm): ...@@ -36,3 +37,29 @@ class PersonAccountForm(forms.ModelForm):
PersonsAccountsFormSet = forms.modelformset_factory( PersonsAccountsFormSet = forms.modelformset_factory(
Person, form=PersonAccountForm, max_num=0, extra=0) 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 "" ...@@ -7,8 +7,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: BiscuIT - School Information System (SIS)\n" "Project-Id-Version: BiscuIT - School Information System (SIS)\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-08-26 00:46+0200\n" "POT-Creation-Date: 2019-08-26 19:58+0200\n"
"PO-Revision-Date: 2019-08-26 00:56+0200\n" "PO-Revision-Date: 2019-08-26 19:59+0200\n"
"Last-Translator: Tom Teichler <tom.teichler@teckids.org>\n" "Last-Translator: Tom Teichler <tom.teichler@teckids.org>\n"
"Language-Team: \n" "Language-Team: \n"
"Language: de\n" "Language: de\n"
...@@ -22,16 +22,24 @@ msgstr "" ...@@ -22,16 +22,24 @@ msgstr ""
msgid "BiscuIT - The Free School Information System" msgid "BiscuIT - The Free School Information System"
msgstr "BiscuIT - Das freie Schulinformationssystem" 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." msgid "You cannot set a new username when also selecting an existing user."
msgstr "" msgstr ""
"Sie können keine neuen Benutzer erstellen, wenn Sie gleichzeitig einen " "Sie können keine neuen Benutzer erstellen, wenn Sie gleichzeitig einen "
"existierenden Benutzer auswählen." "existierenden Benutzer auswählen."
#: forms.py:27 #: forms.py:27 forms.py:57
msgid "This username is already in use." msgid "This username is already in use."
msgstr "Dieser Benutzername wird bereits genutzt." 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 #: menus.py:6
msgid "Login" msgid "Login"
msgstr "Anmelden" msgstr "Anmelden"
...@@ -293,3 +301,7 @@ msgstr "Interner Serverfehler" ...@@ -293,3 +301,7 @@ msgstr "Interner Serverfehler"
#: views.py:32 #: views.py:32
msgid "An unexpected error has occurred." msgid "An unexpected error has occurred."
msgstr "Ein Fehler ist aufgetreten." msgstr "Ein Fehler ist aufgetreten."
#: views.py:157
msgid "The person has been saved."
msgstr "Die Person wurde gespeichert."
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
{% if person %} {% if person %}
<h2>{{ person.first_name }} {{ person.last_name }}</h2> <h2>{{ person.first_name }} {{ person.last_name }}</h2>
<p> <p>
<a href="{{ '#' }}"> <a href="{% url 'edit_person_by_id' person.id %}">
{% blocktrans %}Edit person{% endblocktrans %} {% blocktrans %}Edit person{% endblocktrans %}
</a> </a>
</p> </p>
......
...@@ -11,11 +11,12 @@ urlpatterns = [ ...@@ -11,11 +11,12 @@ urlpatterns = [
path('accounts/', include('django.contrib.auth.urls')), path('accounts/', include('django.contrib.auth.urls')),
path('persons', views.persons, name='persons'), path('persons', views.persons, name='persons'),
path('persons/accounts', views.persons_accounts, name='persons_accounts'), 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, path('person/<int:id_>', views.person,
{'template': 'full'}, name='person_by_id'), {'template': 'full'}, name='person_by_id'),
path('person/<int:id_>/card', views.person, path('person/<int:id_>/card', views.person,
{'template': 'card'}, name='person_by_id_card'), {'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('groups', views.groups, name='groups'),
path('group/<int:id_>', views.group, path('group/<int:id_>', views.group,
{'template': 'full'}, name='group_by_id'), {'template': 'full'}, name='group_by_id'),
......
...@@ -8,7 +8,7 @@ from django_tables2 import RequestConfig ...@@ -8,7 +8,7 @@ from django_tables2 import RequestConfig
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from .decorators import admin_required from .decorators import admin_required
from .forms import PersonsAccountsFormSet from .forms import PersonsAccountsFormSet, EditPersonForm
from .models import Person, Group from .models import Person, Group
from .tables import PersonsTable, GroupsTable from .tables import PersonsTable, GroupsTable
...@@ -26,9 +26,9 @@ def error_handler(status: int) -> Callable[..., HttpResponse]: ...@@ -26,9 +26,9 @@ def error_handler(status: int) -> Callable[..., HttpResponse]:
if status == 404: if status == 404:
context['message'] = _('This page does not exist. If you were redirected by a link on an external page, it is possible that that link was outdated.') context['message'] = _('This page does not exist. If you were redirected by a link on an external page, it is possible that that link was outdated.')
context['caption'] = _('Page not found') context['caption'] = _('Page not found')
elif status == 500: elif status == 500:
context['caption'] = _('Internal server error') context['caption'] = _('Internal server error')
context['message'] = _('An unexpected error has occurred.') context['message'] = _('An unexpected error has occurred.')
return render(request, 'error.html', context, status=status) return render(request, 'error.html', context, status=status)
...@@ -139,3 +139,24 @@ def persons_accounts(request: HttpRequest) -> HttpResponse: ...@@ -139,3 +139,24 @@ def persons_accounts(request: HttpRequest) -> HttpResponse:
context['persons_accounts_formset'] = persons_accounts_formset context['persons_accounts_formset'] = persons_accounts_formset
return render(request, 'core/persons_accounts.html', context) 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