Ver 0.0.2

- Bereiche DONE
- Rechte DONE
This commit is contained in:
Holger Trampe 2019-12-03 21:48:33 +01:00
parent fec3993847
commit 0ac35e4bd1
14 changed files with 26 additions and 21 deletions

View File

@ -13,7 +13,9 @@ class AreaAddAreaForm(forms.ModelForm):
labels = { labels = {
"name" : "Bereichsname", "name" : "Bereichsname",
"color" : "Farbe", "color" : "Farbe",
"desc" : "Beschreibung" "desc" : "Beschreibung",
"visible": "Im Organigramm sichtbar"
} }
fields = ['name', 'color', 'desc'] fields = ['name', 'color', 'desc']

View File

@ -26,6 +26,7 @@ class Areas(models.Model):
usersfield = models.ManyToManyField(User, blank=True, related_name='users_in_area') usersfield = models.ManyToManyField(User, blank=True, related_name='users_in_area')
created_area_by = models.ForeignKey(User, on_delete=models.PROTECT) created_area_by = models.ForeignKey(User, on_delete=models.PROTECT)
created_area_date = models.DateField(default=datetime.date.today, blank=True) created_area_date = models.DateField(default=datetime.date.today, blank=True)
visible = models.BooleanField(default=True)
def __str__(self): def __str__(self):
return f'{self.name}' return f'{self.name}'

View File

@ -45,11 +45,6 @@
<p> <p>
{{ item.created_area_by.first_name }} {{ item.created_area_by.last_name }} {{ item.created_area_by.first_name }} {{ item.created_area_by.last_name }}
</p> </p>
<h6><b></b></h6>
<p>
</p>
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
<h6><b>Farbe</b></h6> <h6><b>Farbe</b></h6>

View File

@ -31,7 +31,7 @@
{% if added_users|length > 0 %} {% if added_users|length > 0 %}
<p id="no_user_in_area" style="display: none">Noch kein Mitarbeiter zugewiesen.</p> <p id="no_user_in_area" style="display: none">Noch kein Mitarbeiter zugewiesen.</p>
{% for us in added_users %} {% for us in added_users %}
<span id="span_btn_{{us.pk}}" class="badge badge-pill badge-primary mr-2"><a class="btn btn-primary" onclick="javascript:removeUserFromArea('{{ us.pk }}')">{{ us.first_name }} {{ us.last_name }}&nbsp;&nbsp;<i class="fas fa-times"></i></a > <span id="span_btn_{{us.pk}}" class="badge badge-pill badge-primary mr-2 mt-2"><a class="btn btn-primary" onclick="javascript:removeUserFromArea('{{ us.pk }}')">{{ us.first_name }} {{ us.last_name }}&nbsp;&nbsp;<i class="fas fa-times"></i></a >
</span> </span>
{% endfor %} {% endfor %}
{% else %} {% else %}
@ -61,13 +61,12 @@
{ {
clearSearchfield(); clearSearchfield();
//Add User-Button //Add User-Button
$("#added_users_button").append('<span id="span_btn_'+data['userid']+'" class="badge badge-pill badge-primary mr-2"><a class="btn btn-primary" onclick="javascript:removeUserFromArea('+data['userid']+')">'+data['username_clean']+'&nbsp;&nbsp;<i class="fas fa-times"></i></a ></span>'); $("#added_users_button").append('<span id="span_btn_'+data['userid']+'" class="badge badge-pill badge-primary mr-2 mt-2"><a class="btn btn-primary" onclick="javascript:removeUserFromArea('+data['userid']+')">'+data['username_clean']+'&nbsp;&nbsp;<i class="fas fa-times"></i></a ></span>');
$("#usersfree").empty(); $("#usersfree").empty();
for (var i in data['remaining_users']) { for (var i in data['remaining_users']) {
id = data['remaining_users'][i]['id']; id = data['remaining_users'][i]['id'];
name = data['remaining_users'][i]['first_name'] + " " + data['remaining_users'][i]['last_name']; name = data['remaining_users'][i]['first_name'] + " " + data['remaining_users'][i]['last_name'];
console.log(data['remaining_users'][i]);
$("#usersfree").append('<option id="'+id+'" value="'+name+'"></option>'); $("#usersfree").append('<option id="'+id+'" value="'+name+'"></option>');
} }
if(data['remaining_users_counter'] == 0){ if(data['remaining_users_counter'] == 0){

View File

@ -12,10 +12,10 @@ Permissions definiert in models.py bei USERS und dann hier vor die View geschrie
''' '''
urlpatterns = [ urlpatterns = [
path('', permission_required('users.tasks_management')(AreasManagement.as_view(template_name="areas/areas_management.html")), name='areas-management'), path('', permission_required('users.areas_management')(AreasManagement.as_view(template_name="areas/areas_management.html")), name='areas-management'),
path('addarea/', permission_required('users.tasks_management')(AreasAddArea.as_view(template_name="areas/areas_add.html")), name='areas-addarea'), path('addarea/', permission_required('users.areas_management')(AreasAddArea.as_view(template_name="areas/areas_add.html")), name='areas-addarea'),
path('areas/<int:pk>/delete', permission_required('users.users_usermanagement')(AreaDeleteView.as_view()), name='areas-delete'), path('areas/<int:pk>/delete', permission_required('users.areas_management')(AreaDeleteView.as_view()), name='areas-delete'),
path('area/<int:pk>/', permission_required('users.users_usermanagement')(AreaUpdateView.as_view()), name='areas-manage'), path('area/<int:pk>/', permission_required('users.areas_management')(AreaUpdateView.as_view()), name='areas-manage'),
path('areaajax/', views.area_addareas_ajax, name="area-ajaxview") path('areaajax/', views.area_addareas_ajax, name="area-ajaxview")
] ]

View File

@ -115,8 +115,13 @@ def area_addareas_ajax(request):
added_users = area.usersfield.all() added_users = area.usersfield.all()
possible_users = User.objects.filter(profile__agency__pk=request.user.profile.agency.pk).exclude(pk__in=added_users) possible_users = User.objects.filter(profile__agency__pk=request.user.profile.agency.pk).exclude(pk__in=added_users)
possible_users_js = list(possible_users.values()) possible_users_js = list(possible_users.values())
# Cleaned out, that only data is neede will send to the side (first/last-name and id)
final_possible_users = {}
for ele in possible_users_js:
final_possible_users.update({'first_name':ele['first_name'],'last_name':ele['last_name'],'id':ele['id']})
# Counter for remaining users to show/hide "Keine Mitarbeiter"-Div
remaining_users_counter = len(added_users) remaining_users_counter = len(added_users)
return JsonResponse({'userid' : userid, 'username_clean' : username_clean, 'remaining_users':possible_users_js, 'remaining_users_counter' : remaining_users_counter}) return JsonResponse({'userid' : userid, 'username_clean' : username_clean, 'remaining_users':possible_users_js, 'remaining_users_counter' : final_possible_users})
else: else:
return HttpResponse("Request method is not a GET") return HttpResponse("Request method is not a GET")

View File

@ -22,8 +22,7 @@ urlpatterns = [
path('password-reset-confirm/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(template_name='users/password_reset_confirm.html'), name='password_reset_confirm'), path('password-reset-confirm/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(template_name='users/password_reset_confirm.html'), name='password_reset_confirm'),
path('password-reset-complete/', auth_views.PasswordResetCompleteView.as_view(template_name='users/password_reset_complete.html'), name='password_reset_complete'), path('password-reset-complete/', auth_views.PasswordResetCompleteView.as_view(template_name='users/password_reset_complete.html'), name='password_reset_complete'),
path('register/', AgencyCreateView.as_view(template_name='users/register.html'), name='register'), path('register/', AgencyCreateView.as_view(template_name='users/register.html'), name='register'),
path('register/done', views.registerdone, name='register-done'), path('register/done', views.registerdone, name='register-done')
path('select2/', include('django_select2.urls')),
] ]
if settings.DEBUG: if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

View File

@ -91,7 +91,7 @@
<hr class="sidebar-divider"> <hr class="sidebar-divider">
<!-- Heading --> <!-- Heading -->
<div class="sidebar-heading"> <div class="sidebar-heading">
Verwaltung Agenturverwaltung
</div> </div>
{%endif%} {%endif%}
@ -209,7 +209,7 @@
<!-- MESSAGES --> <!-- MESSAGES -->
{% if messages %} {% if messages %}
{% for message in messages %} {% for message in messages %}
<div class="alert alert-{{ message.tags }} alert-dismissible fade show" role="alert"> <div class="alert alert-{{ message.tags }} alert-dismissible fade show" role="alert" id="message_{{forloop.counter}}">
{{ message }} {{ message }}
<button type="button" class="close" data-dismiss="alert" aria-label="Close"> <button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span> <span aria-hidden="true">&times;</span>

View File

@ -26,9 +26,13 @@
<i class="fas fa-ellipsis-v fa-sm fa-fw text-gray-400"></i> <i class="fas fa-ellipsis-v fa-sm fa-fw text-gray-400"></i>
</a> </a>
<div class="dropdown-menu dropdown-menu-right shadow animated--fade-in" aria-labelledby="dropdownMenuLink"> <div class="dropdown-menu dropdown-menu-right shadow animated--fade-in" aria-labelledby="dropdownMenuLink">
<div class="dropdown-header">Benutzerinfos</div> <div class="dropdown-header">Benutzerdaten</div>
<a class="dropdown-item" href="{% url 'users-update' item.profile.pk %}">Bearbeiten</a> <a class="dropdown-item" href="{% url 'users-update' item.profile.pk %}">Bearbeiten</a>
<a class="dropdown-item" href="{% url 'users-perm-update' item.profile.pk %}">Berechtigungen</a> <a class="dropdown-item" href="{% url 'users-perm-update' item.profile.pk %}">Rechte</a>
<hr class="sidebar-divider">
<!--<div class="dropdown-header"></div>-->
<a class="dropdown-item" href="#">Bereiche</a>
<a class="dropdown-item" href="#">Aufgaben</a>
{% if item != request.user %} {% if item != request.user %}
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-danger" href="{% url 'users-delete' item.pk %}" >Löschen</a> <a class="dropdown-item text-danger" href="{% url 'users-delete' item.pk %}" >Löschen</a>