User contact modal

* adds user/includes/contact_modal_button.html for calling contact data of a user
* adds user contact modal to intervention detail view
* adds translations
This commit is contained in:
mipel
2021-08-02 14:10:57 +02:00
parent b559cfc5d0
commit 1f943ae56c
7 changed files with 205 additions and 90 deletions

View File

@@ -10,7 +10,7 @@ from django.urls import reverse
from django.utils.translation import gettext_lazy as _
from django.contrib.auth.models import User
from konova.forms import BaseForm
from konova.forms import BaseForm, BaseModalForm
from user.models import UserNotification, KonovaUserExtension
@@ -69,3 +69,51 @@ class UserNotificationForm(BaseForm):
id__in=selected_notification_ids,
)
self.konova_extension.notifications.set(notifications)
class UserContactForm(BaseModalForm):
name = forms.CharField(
label=_("Username"),
label_suffix="",
required=False,
widget=forms.TextInput(
attrs={
"readonly": True,
"style": "width:100%",
}
),
)
person_name = forms.CharField(
label=_("Person name"),
label_suffix="",
required=False,
widget=forms.TextInput(
attrs={
"readonly": True,
"style": "width:100%",
}
),
)
mail = forms.EmailField(
label=_("E-Mail"),
label_suffix="",
required=False,
widget=forms.TextInput(
attrs={
"readonly": True,
"style": "width:100%",
}
),
)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.render_submit = False
self.form_title = _("User contact data")
self.form_caption = ""
self.initialize_form_field("name", self.instance.username)
self.initialize_form_field("person_name", "{} {}".format(self.instance.first_name, self.instance.last_name))
self.initialize_form_field("mail", self.instance.email)

View File

@@ -0,0 +1,6 @@
{% load fontawesome_5 i18n %}
<button class="btn btn-default btn-modal" data-form-url="{% url 'user:contact' user.id %}" title="{% trans 'Show contact data' %}">
{% fa5_icon 'id-card' %}
<span>{{user.username}}</span>
</button>

View File

@@ -13,4 +13,6 @@ app_name = "user"
urlpatterns = [
path("", index_view, name="index"),
path("notifications/", notifications_view, name="notifications"),
path("contact/<id>", contact_view, name="contact"),
]

View File

@@ -1,11 +1,12 @@
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
from django.http import HttpRequest
from django.shortcuts import render, redirect
from django.shortcuts import render, redirect, get_object_or_404
from django.utils.translation import gettext_lazy as _
from konova.contexts import BaseContext
from user.forms import UserNotificationForm
from user.forms import UserNotificationForm, UserContactForm
from user.models import KonovaUserExtension
@@ -65,3 +66,28 @@ def notifications_view(request: HttpRequest):
}
context = BaseContext(request, context).context
return render(request, template, context)
@login_required
def contact_view(request: HttpRequest, id: str):
""" Renders contact modal view of a users contact data
Args:
request (HttpRequest): The incoming request
id (str): The user's id
Returns:
"""
user = get_object_or_404(User, id=id)
form = UserContactForm(request.POST or None, instance=user, user=request.user)
template = "modal/modal_form.html"
context = {
"form": form,
}
context = BaseContext(request, context).context
return render(
request,
template,
context
)