diff --git a/member/forms.py b/member/forms.py
index 51162e2..3330178 100644
--- a/member/forms.py
+++ b/member/forms.py
@@ -1,7 +1,7 @@
# forms.py
from django import forms
-from .models import Person
+from .models import Person, UserAccount
class PersonForm(forms.ModelForm):
class Meta:
@@ -10,3 +10,21 @@ class PersonForm(forms.ModelForm):
widgets = {
'geburtsdatum': forms.DateInput(attrs={'type': 'date'}),
}
+
+
+class AccountForm(forms.ModelForm):
+ password=forms.CharField(widget=forms.PasswordInput())
+ confirm_password=forms.CharField(widget=forms.PasswordInput())
+
+ class Meta:
+ model = UserAccount
+ fields = ['username', 'password']
+
+ def clean(self):
+ cleaned_data = super(AccountForm, self).clean()
+ passwordStr = cleaned_data.get("password")
+ confirm_passwordStr = cleaned_data.get("confirm_password")
+
+ if passwordStr != confirm_passwordStr:
+ raise forms.ValidateError("password and confirm_password does not match")
+
diff --git a/member/templates/account_form.html b/member/templates/account_form.html
new file mode 100644
index 0000000..442f49f
--- /dev/null
+++ b/member/templates/account_form.html
@@ -0,0 +1,26 @@
+{% extends "master.html" %}
+{% block content %}
+
+
{{ action }} Person
+
+
+{% endblock %}
+{% block title %}
+ {{ action }} Account
+{% endblock %}
diff --git a/member/templates/confirm_account_delete.html b/member/templates/confirm_account_delete.html
new file mode 100644
index 0000000..6f7b9f8
--- /dev/null
+++ b/member/templates/confirm_account_delete.html
@@ -0,0 +1,15 @@
+{% extends "master.html" %}
+{% block content %}
+
+
Account löschen
+
Möchtest du den Useraccount {{account.username}} der {{ account.person.vorname }} {{account.person.nachname}} zugeordnet ist, wirklich löschen?
+
+
+{% endblock %}
+{% block title %}
+ Account löschen
+{% endblock %}
\ No newline at end of file
diff --git a/member/templates/details.html b/member/templates/details.html
index 6653c92..9071ab5 100644
--- a/member/templates/details.html
+++ b/member/templates/details.html
@@ -1,4 +1,7 @@
{% extends "master.html" %}
+{% load static %}
+{% load svg %}
+
{% block title %}
Details zu {{ mymember.firstname }} {{ mymember.lastname }}
@@ -10,6 +13,33 @@
Geburtsdatum: {{ mymember.geburtsdatum }}
+
+
+
+ | Name |
+ Rolle |
+ Aktiv |
+ Aktionen |
+
+
+
+ {% for x in accounts %}
+
+ | {{ x.username }} |
+ {{ x.rolle }} |
+ {% if x.aktiv %}{% inline_svg 'icons/uxwing/check.svg' 'icon' %}{% endif %} |
+  |
+
+ {% endfor %}
+
+
+ Konto hinzufügen
+ |
+
+
+
+
+
Back to Members
{% endblock %}
diff --git a/member/urls.py b/member/urls.py
index d816726..4d08b49 100644
--- a/member/urls.py
+++ b/member/urls.py
@@ -7,4 +7,9 @@ urlpatterns = [
path('members/create/', views.create, name="create"),
path('members/edit/', views.edit, name="edit"),
path('members/delete/', views.delete, name="delete"),
+ path('members/account/details/', views.details_account, name="details_account"),
+ path('members/account/edit/', views.edit_account, name="edit_account"),
+ path('members/account/create/', views.create_account, name="create_account"),
+ path('members/account/edit/', views.edit_account, name="edit_account"),
+ path('members/account/delete/', views.delete_account, name="delete_account"),
]
diff --git a/member/views.py b/member/views.py
index 31d0d59..5406f79 100644
--- a/member/views.py
+++ b/member/views.py
@@ -2,8 +2,8 @@ from django.http import HttpResponse
from django.shortcuts import render, redirect, get_object_or_404
from django.template import loader
from django.db.models import Count
-from .models import Person
-from .forms import PersonForm
+from .models import Person, UserAccount
+from .forms import PersonForm, AccountForm
def members(request):
mymembers=Person.objects.annotate(accounts=Count('benutzerkonten'))
@@ -15,9 +15,11 @@ def members(request):
def details(request, id):
mymember = Person.objects.get(id=id)
+ accounts = UserAccount.objects.filter(person_id=id)
template = loader.get_template("details.html")
context = {
- 'mymember': mymember
+ 'mymember': mymember,
+ 'accounts': accounts
}
return HttpResponse(template.render(context, request))
@@ -48,3 +50,44 @@ def delete(request, id):
person.delete()
return redirect('members')
return render(request, 'confirm_delete.html', { 'person': person})
+
+def details_account(request, id):
+ account = get_object_or_404(Account, id=id)
+ template = loader.get_template("details_account.html")
+ context = {
+ 'account': account,
+ }
+ return HttpResponse(template.render(context, request))
+
+def create_account(request, id):
+ person = get_object_or_404(Person, id=id)
+ if request.method == "POST":
+ form = AccountForm(request.POST)
+ if form.is_valid():
+ account=form.save(commit=False)
+ account.person = person
+ account.save()
+ return redirect("details", person.id)
+ else:
+ form = AccountForm()
+ return render(request, "account_form.html", {'form': form, 'action': 'Erstellen', 'id': id})
+
+def edit_account(request, id):
+ account = get_object_or_404(UserAccount, id=id)
+ if request.method == 'POST':
+ form = AccountForm(request.POST, instance=account)
+ if form.is_valid():
+ form.save()
+ return redirect('details', account.person.id)
+ else:
+ form = AccountForm(instance=account)
+ return render(request, 'account_form.html', {'form': form, 'action': "Bearbeiten" , 'id': account.person.id})
+
+def delete_account(request, id):
+ account=get_object_or_404(UserAccount, id=id)
+ person_id=account.person.id
+ if (request.method=='POST'):
+ account.delete()
+ return redirect("details", person_id)
+ return render(request, "confirm_account_delete.html", {'account': account, 'id': account.person.id})
+
\ No newline at end of file