Organigramm Nutzer löschen done

This commit is contained in:
holger.trampe 2021-03-28 12:53:56 +02:00
parent 756937f7b0
commit d783f5d77f
3 changed files with 81 additions and 24 deletions

View File

@ -3,24 +3,32 @@
{% load counter_tag %} {% load counter_tag %}
{% block content %} {% block content %}
<div class="content-section"> <div class="content-section">
<div class="media"> <h3>{{user.get_full_name}} wirklich löschen?</h3>
<div class="media-body">
<h2 class="account-heading">
{% if orgaerror == True %}
Benutzer {{ user.first_name }} {{ user.last_name }} löschen?
{% else %}
Benutzer {{ user.first_name }} {{ user.last_name }} kann nicht gelöscht werden - Organigrammfehler
{% endif %}
</h2>
<hr>
</div>
</div>
<!-- Für das Speichern der Bilder enctype --> <!-- Für das Speichern der Bilder enctype -->
<form method="POST"> <form method="POST">
{% csrf_token %} {% csrf_token %}
{% if orgaerror == False %}
<hr>
<h4>Untergeordnete Mitarbeiter</h4>
<p>Wählen Sie aus, welcher Mitarbeiter als übergeordneter Mitarbeiter durch {{user.get_full_name}} ersetzt werden soll. Vorher kann der Nutzer nicht gelöscht werden.</p>
<div class="input-group mb-3 col-6 mt-2" >
<input class="form-control" list="neworga" id="neworgafield" type="text" onkeyup="" >
<div class="input-group-append">
<button type="button" onclick="javascript:clearField('neworgafield')" class="btn btn-secondary" ><i class="fas fa-times"></i></button>
</div>
<datalist id="neworga">
{% for us in usersofagency %}
<option id="neworga_{{us.pk}}" value="{{us.get_full_name}}">{{us.get_full_name}}</option>
{% endfor %}
</datalist>
<div class="input-group-append">
<button class="btn btn-primary" type="button" id="updateOrgaButton" onclick="javascript:updateOrga()">Speichern</button>
</div>
</div>
<hr>
{% endif %}
<h4>In folgenden Standards ist {{object.get_full_name}} involviert:</h4> <h4>In folgenden Standards ist {{object.get_full_name}} involviert:</h4>
<small>Wählen Sie aus, wer anstelle von {{object.get_full_name}} eingesetzt werden soll. Bleibt das Feld frei, wird der Standard nicht verändert und der zu löschende Nutzer wird entfernt.</small><br /> <p>Wählen Sie aus, wer anstelle von {{object.get_full_name}} eingesetzt werden soll. Bleibt das Feld frei, wird der Standard nicht verändert und der zu löschende Nutzer wird entfernt.</p>
<hr> <hr>
<div class="input-group mb-3 col-6" > <div class="input-group mb-3 col-6" >
<input class="form-control" list="copyusertoall" id="copyusertoallfield" type="text" onkeyup="" > <input class="form-control" list="copyusertoall" id="copyusertoallfield" type="text" onkeyup="" >
@ -145,29 +153,22 @@
</table> </table>
{% endfor %} {% endfor %}
<hr > <hr >
{% if orgaerror == True %}
<p>Alle Chat-Nachrichten werden unwiederruflich gelöscht! Soeben wurden alle Vertragsdaten (Abwesenheit und Zeiterfassung), wenn vorhanden, als CSV heruntergeladen. Diese können Sie archivieren und entsprechend Ihrer agenturinternen Gegebenheiten bzgl. Datenspeicherung aufbewahren.<br /></p> <p>Alle Chat-Nachrichten werden unwiederruflich gelöscht! Soeben wurden alle Vertragsdaten (Abwesenheit und Zeiterfassung), wenn vorhanden, als CSV heruntergeladen. Diese können Sie archivieren und entsprechend Ihrer agenturinternen Gegebenheiten bzgl. Datenspeicherung aufbewahren.<br /></p>
<a href="{% url 'users-delete-getdata' user.pk %}" id="downloadFileAction" download>Daten erneut herunterladen</a> <a href="{% url 'users-delete-getdata' user.pk %}" id="downloadFileAction" download>Daten erneut herunterladen</a>
<hr> <hr>
<div class="form-group"> <div class="form-group">
<button type="submit" class="btn btn-primary">Benutzer löschen</button>&nbsp; <button type="submit" class="btn btn-primary" id="finalDelButton" {% if orgaerror == False %} disabled {% endif %}>Benutzer löschen</button>&nbsp;
<a href="{% url 'dasettings' %}" class="btn">Abbrechen</a> <a href="{% url 'dasettings' %}" class="btn">Abbrechen</a>
</div> </div>
{% else %}
<p>Achtung! Dieser Nutzer kann nicht gelöscht werden, da im Organigramm andere Mitarbeiter diesem untergeordnet ist. Bitte prüfen Sie die Einstellungen Ihrer Mitarbeiter unter Einstellungen, Mitarbeiter im Bereich <b>Übergeordneter Mitarbeiter</b>. <br /><br /><b>Es können nur ein Mitarbeiter gelöscht werden, wenn diesem kein Mitarbeiter untergeordnet sind.</b></p>
<div class="form-group">
<a href="{% url 'dasettings' %}" class="btn">Abbrechen</a>
</div>
{% endif %}
</form> </form>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
//Auto-Download the file //Auto-Download the file
{% if orgaerror == True %}
$(document).ready(function(){ $(document).ready(function(){
// TODO: Hier auto-Download wieder aktivieren!
//location.href = "{% url 'users-delete-getdata' user.pk %}" //location.href = "{% url 'users-delete-getdata' user.pk %}"
}) })
{% endif %}
function clearField(id){ function clearField(id){
@ -262,6 +263,37 @@
buttons[i].click(); buttons[i].click();
} }
} }
function updateOrga(){
var value = $("#neworgafield").val();
if(value.length > 0){
id = $('#neworga').find('option[value="' + value + '"]').attr('id');
$.ajax(
{
type: "GET",
url: "{% url 'update-user-orga' %}",
data:{
userid : id.split("_")[1],
useridold : {{object.pk}}
},
beforeSend: function(){
$("#updateOrgaButton").html('<div class="spinner-border spinner-border-sm" role="status" style="margin-bottom: 2px;"><span class="sr-only">Speichern...</span></div>');
},
success: function( data )
{
console.log(data);
if(data["success"]){
$("#finalDelButton").attr("disabled", false);
$("#updateOrgaButton").html('Gespeichert');
}
else{
$("#updateOrgaButton").html('Fehler');
}
}
});
}
}
</script> </script>

View File

@ -46,6 +46,7 @@ urlpatterns = [
path('icsall/<int:ag>', views.getICSFileAll, name="geticsall"), path('icsall/<int:ag>', views.getICSFileAll, name="geticsall"),
path('icspublic/<slug:code>/<int:ag>', views.getICSFileEx, name="getics"), path('icspublic/<slug:code>/<int:ag>', views.getICSFileEx, name="getics"),
path('icspublicall/<slug:code>/<int:ag>', views.getICSFileExAll, name="geticsall"), path('icspublicall/<slug:code>/<int:ag>', views.getICSFileExAll, name="geticsall"),
path('updateuserorga/', views.UpdateUserOrga, name="update-user-orga")
#path('recalculateabsence/<slug:code>', views.recalculateAbsence, name="recalculateabsence"), #path('recalculateabsence/<slug:code>', views.recalculateAbsence, name="recalculateabsence"),
] ]

View File

@ -1127,6 +1127,30 @@ class ProfileDeleteView(LoginRequiredMixin, DeleteView):
messages.success(request, f'Benutzer ' +name+ ' wurde gelöscht!') messages.success(request, f'Benutzer ' +name+ ' wurde gelöscht!')
return response return response
# Saves a new User in parent of others Users.
@login_required
def UpdateUserOrga(request):
if(request.method == "GET"):
newuser = User.objects.get(pk=request.GET['userid'])
olduser = User.objects.get(pk=request.GET['useridold'])
if(newuser.profile.agency == request.user.profile.agency and request.user.has_perm("users.usermanager")):
for u in User.objects.filter(profile__agency=newuser.profile.agency):
if u.profile.parent != None and u.profile.parent == olduser and newuser != u:
u.profile.parent = newuser
u.save()
# der neue User ist der gleiche wie er selbst - hier den Chef setzen!
elif u.profile.parent != None:
u.profile.parent = User.objects.filter(profile__agency=newuser.profile.agency).order_by("pk")[0]
u.save()
success = True
else:
success = False
return JsonResponse({"success" : success})
@login_required @login_required
def agency(request): def agency(request):
context = { context = {