Bugfixing Teil 1

This commit is contained in:
Holger Trampe 2020-05-25 22:53:37 +02:00
parent c3e51d0e96
commit cf900e5814
8 changed files with 78 additions and 41 deletions

View File

@ -68,7 +68,7 @@ class UserTimeForm(forms.ModelForm):
class Meta: class Meta:
model = UserTime model = UserTime
labels = { labels = {
"loose_holidedate" : "Resturlaub verfällt am (XX.XX)", "loose_holidedate" : "Resturlaub verfällt am (XX.XX.)",
"startdate" : "Einstellungsdatum", "startdate" : "Einstellungsdatum",
"wd_mo" : "Montag", "wd_mo" : "Montag",
"wd_tu" : "Dienstag", "wd_tu" : "Dienstag",

View File

@ -84,7 +84,7 @@
<form method="POST" enctype="multipart/form-data" name="profileform_basic"> <form method="POST" enctype="multipart/form-data" name="profileform_basic">
<input type="hidden" name="userprof_formtype" value="profileform"> <input type="hidden" name="userprof_formtype" value="profileform">
<div class="mt-2"> <div class="mt-2">
<p>Gruppen&nbsp;<small><i data-toggle="tooltip" data-placement="top" title="Legen Sie fest, in welchen Gruppen der neue Mitarbeiter sein soll. Standardmäßig sind alle Mitarbeiter in der Gruppe Mitarbeiter (wenn diese nicht umbenannt worden ist)." class="far fa-question-circle"></i></small></p> <h5>Gruppen&nbsp;<small><i data-toggle="tooltip" data-placement="top" title="Legen Sie fest, in welchen Gruppen der neue Mitarbeiter sein soll. Standardmäßig sind alle Mitarbeiter in der Gruppe Mitarbeiter (wenn diese nicht umbenannt worden ist)." class="far fa-question-circle"></i></small></h5>
<div class="row"> <div class="row">
<div class="col-4"> <div class="col-4">
{% for g in agencygroups %} {% for g in agencygroups %}
@ -113,7 +113,7 @@
</div> </div>
<hr> <hr>
<div class="mt-2"> <div class="mt-2">
<p>Übergeordneter Mitarbeiter&nbsp;<small><i data-toggle="tooltip" data-placement="top" title="Legen Sie fest, welche Mitarbeiter über diesen im Organigramm steht. Ist die Einstellung leer, wir" class="far fa-question-circle"></i></small></p> <h5>Übergeordneter Mitarbeiter&nbsp;<small><i data-toggle="tooltip" data-placement="top" title="Legen Sie fest, welche Mitarbeiter über diesen im Organigramm steht. Ist die Einstellung leer, wir" class="far fa-question-circle"></i></small></h5>
<select name="usertoparent" id="usertoparent" class="select form-control col-4"> <select name="usertoparent" id="usertoparent" class="select form-control col-4">
<option value="">---------</option> <option value="">---------</option>
{% for singleparent in usertoparent %} {% for singleparent in usertoparent %}
@ -126,7 +126,7 @@
</select> </select>
</div> </div>
<hr> <hr>
<p>Persönliches Profil</p> <h5>Persönliches Profil</h5>
{% csrf_token %} {% csrf_token %}
<div class="row"> <div class="row">
<div class="col-6"> <div class="col-6">
@ -165,7 +165,7 @@
{% csrf_token %} {% csrf_token %}
<input type="hidden" name="form_type" value="contract"> <input type="hidden" name="form_type" value="contract">
<p>Arbeitszeiten&nbsp;<small><i data-toggle="tooltip" data-placement="top" title="Legen Sie fest, an welchen Tagen dieser Mitarbeiter wie viele Stunden arbeitet." class="far fa-question-circle"></i></small></p> <h5>Arbeitszeiten&nbsp;<small><i data-toggle="tooltip" data-placement="top" title="Legen Sie fest, an welchen Tagen dieser Mitarbeiter wie viele Stunden arbeitet." class="far fa-question-circle"></i></small></h5>
<div class="table-responsive"> <div class="table-responsive">
<table class="table"> <table class="table">
<tr> <tr>
@ -180,16 +180,21 @@
<hr style="margin-top: -20px;"> <hr style="margin-top: -20px;">
<div class="col-12" > <div class="col-12" >
<div class="col-4" style="margin-left: -10px;"> <div class="col-4" style="margin-left: -10px;">
<p>Urlaub&nbsp;<small><i data-toggle="tooltip" data-placement="top" title="Legen Sie fest, wie viel Urlaub dieser Mitarbeiter im Jahr hat." class="far fa-question-circle"></i></small></p> <h5 class="mt-1">Urlaub&nbsp;<small><i data-toggle="tooltip" data-placement="top" title="Legen Sie fest, wie viel Urlaub dieser Mitarbeiter im Jahr hat." class="far fa-question-circle"></i></small></h5>
{{usertime_form.media}} </div>
{{usertime_form.startdate|as_crispy_field}} {{usertime_form.media}}
{{usertime_form.loose_holidedate|as_crispy_field}} <div class="row col-12">
</div> <div class="col-5">
<hr> {{usertime_form.startdate|as_crispy_field}}
<p>Jahresübersicht&nbsp;<small><i data-toggle="tooltip" data-placement="top" title="Hier sehen Sie die aktuelle Jahresübersicht des Mitarbeiters. Beachten Sie das Format beim manuellen anpassen: XX,0 oder XX,5!" class="far fa-question-circle"></i></small> </div>
<div class="col-5">
{{usertime_form.loose_holidedate|as_crispy_field}}
</div>
</div>
<h5 class="mt-2 mb-1">Urlaub Jahresübersicht&nbsp;<small><i data-toggle="tooltip" data-placement="top" title="Hier sehen Sie die aktuelle Jahresübersicht des Mitarbeiters. Beachten Sie das Format beim manuellen anpassen: XX,0 oder XX,5!" class="far fa-question-circle"></i></small>
<button type="button" id="changeHolidayData" style="float: right" class="btn btn-secondary btn-sm" onclick="javascript:loadUpdateTableHolidays()" data-toggle="tooltip" data-placement="top" title="Passen Sie die Urlaubstage und Resturlaubstage manuell an."><small><i class="fas fa-pen"></i></small></button> <button type="button" id="changeHolidayData" style="float: right" class="btn btn-secondary btn-sm" onclick="javascript:loadUpdateTableHolidays()" data-toggle="tooltip" data-placement="top" title="Passen Sie die Urlaubstage und Resturlaubstage manuell an."><small><i class="fas fa-pen"></i></small></button>
<button type="button" id="changeHolidayDataSave" style="float: right; display: none" class="btn btn-primary btn-sm" onclick="javascript:saveUpdateTableHolidays()" data-toggle="tooltip" data-placement="top" title="Urlaub- und Resttage speichern."><small><i class="fas fa-check"></i></small></button> <button type="button" id="changeHolidayDataSave" style="float: right; display: none" class="btn btn-primary btn-sm" onclick="javascript:saveUpdateTableHolidays()" data-toggle="tooltip" data-placement="top" title="Urlaub- und Resttage speichern."><small><i class="fas fa-check"></i></small></button>
</p> </h5>
<div id="year_overview"> <div id="year_overview">
<table class="table table-hover"> <table class="table table-hover">
<thead> <thead>

View File

@ -78,7 +78,7 @@ def getAllForms(request, context):
#Modulsettings ABWESENHEIT- UND ZEITERFASSUNG #Modulsettings ABWESENHEIT- UND ZEITERFASSUNG
modsettings_tm = AgencyTimeManagement(instance=request.user.profile.agency) modsettings_tm = AgencyTimeManagement(instance=request.user.profile.agency)
context.update({'modsettings_tm' : modsettings_tm}) context.update({'modsettings_tm' : modsettings_tm})
context.update({"modsettings_tm_abcat" : AbsenceReason.objects.filter(agency=request.user.profile.agency).order_by("-name") }) context.update({"modsettings_tm_abcat" : AbsenceReason.objects.filter(agency=request.user.profile.agency).order_by("name") })
# USER FOR USERTABLE # USER FOR USERTABLE
@ -642,6 +642,7 @@ def SettingsAjaxRouter(request):
else: else:
data = {"userfullname" : tempuser.first_name + " " + tempuser.last_name} data = {"userfullname" : tempuser.first_name + " " + tempuser.last_name}
success = False success = False
# UPDATE FREEDAYS
elif request.method == 'GET' and request.GET['action'] == "initloadfreedays" : elif request.method == 'GET' and request.GET['action'] == "initloadfreedays" :
if(request.user.has_perm('users.modulesconfig')): if(request.user.has_perm('users.modulesconfig')):
temp_freedays = FreeDays.objects.filter(agency=request.user.profile.agency) temp_freedays = FreeDays.objects.filter(agency=request.user.profile.agency)
@ -687,8 +688,6 @@ def SettingsAjaxRouter(request):
ele_id = ele_elements[0].split("_")[3] ele_id = ele_elements[0].split("_")[3]
ele_type = ele_elements[0].split("_")[2] ele_type = ele_elements[0].split("_")[2]
temp_year = UserYearAbsenceInfo.objects.get(pk=ele_id, agency=request.user.profile.agency) temp_year = UserYearAbsenceInfo.objects.get(pk=ele_id, agency=request.user.profile.agency)
# TODO: Hier checken, warum das nicht so geil geht ;)
#if(re.match(r"^([1-9]{1}|0[0-9]{1}|1[0-9]{1}|2[0-9]{1}|3[0-9]{1}|4[0-9]{1}).([0]{1}|[5]{1})$", ele_elements[1])):
if(ele_type == "nor"): if(ele_type == "nor"):
temp_year.days = ele_elements[1] temp_year.days = ele_elements[1]
elif(ele_type == "rest"): elif(ele_type == "rest"):
@ -786,8 +785,8 @@ def UserProfileUpdate(request, pk, newuser=0):
formtosave = UserTimeForm(request.POST, instance=UserTime.objects.get(user=usertochange)) formtosave = UserTimeForm(request.POST, instance=UserTime.objects.get(user=usertochange))
if(formtosave.is_valid()): if(formtosave.is_valid()):
# CHECK IF HOLIDAYS_LOOSE IS CORRECT # CHECK IF HOLIDAYS_LOOSE IS CORRECT
if(not re.match(r"^([1-9]{1}|0[1-9]{1}|1[0-9]{1}|2[0-9]{1}|3[0-1]{1}).(1[0-2]|0[1-9]|[1-9])$", formtosave.cleaned_data["loose_holidedate"])): if(not re.match(r"^([1-9]{1}|0[0-9]{1}|1[0-9]{1}|2[0-9]{1}|3[0-1]{1}).([1-9]{1}|0[0-9]{1}|1[0-2]{1}).$", formtosave.cleaned_data["loose_holidedate"])):
messages.success(request, f'Fehlerhafte Eingabe!') messages.success(request, f'Fehlerhafte Eingabe!')
context = { context = {
'active_link' : 'dasettings', 'active_link' : 'dasettings',

View File

@ -15,35 +15,37 @@ from datetime import datetime, timedelta
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
############################################## DEV ##################################### ############################################## LOCAL #####################################
BASE_URL = "https://dev01.digitale-agentur.com/" BASE_URL = "http://localhost:8000/"
CRONAPIKEY = "gCddsaz6NOnE9QbXZM5LasdEk122D" CRONAPIKEY = "gCddsaz6NOnE9QbXZM5LasdEk122D"
MAILINFOKEY = "jka7sd8iukashdna78skduJAHDsu6dilaksdjba65a68iadbhjak" MAILINFOKEY = "jka7sd8iukashdna78skduJAHDsu6dilaksdjba65a68iadbhjak"
# SECURITY WARNING: don't run with debug turned on in production! # SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True DEBUG = True
# MAIL DEV # Database
EMAIL_HOST = 'smtp.strato.de' # https://docs.djangoproject.com/en/2.2/ref/settings/#databases
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = "support@dev01.digitale-agentur.com"
EMAIL_HOST_PASSWORD = "n2xd7emyKZFb6UREzvbintuUIG"
DEFAULT_FROM_EMAIL = "support@dev01.digitale-agentur.com"
# DEV # DEV
DATABASES = { DATABASES = {
'default': { 'default': {
'ENGINE': 'django.db.backends.mysql', 'ENGINE': 'django.db.backends.mysql',
'NAME' : 'digitaleagentur_dev01', 'NAME' : 'digitaleagentur',
'USER' : 'digitaleagentur_dev01', 'USER' : 'root',
'PASSWORD' : 't3TvtGAOkFHYXdJlUMIu9u3U', 'PASSWORD' : '',
'PORT' : 3306 'PORT' : 3306
} }
} }
# MAIL DEV
EMAIL_HOST = 'gymhum.de'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = "holger.trampe"
EMAIL_HOST_PASSWORD = "Motte2016_!"
DEFAULT_FROM_EMAIL = "holger.trampe@gymhum.de"
# REDIS # REDIS
REDIS_URL = ("localhost", 6379) REDIS_URL = ("localhost", 6379)
############################################## DEV ##################################### ################################################### LOCAL ###############################

View File

@ -95,7 +95,35 @@
</div> </div>
<div class="modal-body"> <div class="modal-body">
<div id="restholidays_container"> <div id="restholidays_container">
<h5>Verbleibender Urlaub <span id="holidayyear"></span>:&nbsp;<b style="color: red;"><span id="restholidays">Lade...</span> Tage</b>&nbsp;<button class="btn btn-secondary btn-sm" style="float: right;" onclick="javascript:$('#holiday_detail_div').toggle()"><i class="fas fa-eye" id="show_detailview"></i></button></h5> <h5><b style="color: red"><span id="detail_tocontract"></span>&nbsp;Tage&nbsp;/&nbsp;<span id="restholidays"></span>&nbsp;verbleibend im Jahr&nbsp;<span id="holidayyear"></span></b>
<button class="btn btn-secondary btn-sm" style="float: right;" onclick="javascript:$('#holiday_detail_div').toggle()"><i class="fas fa-eye" id="show_detailview"></i></button></h5>
<h5><b style="color: red"><span id="detail_tocontract"></span>&nbsp;Tage&nbsp;/&nbsp;<span id="restholidays"></span>&nbsp;verbleibend im Jahr&nbsp;<span id="holidayyear"></span></b> </h5>
<div id="holiday_detail_div" style="display: none">
<hr>
<div class="col-6" style="margin-left: -10px">
<h6>Detailansicht</h6>
<table class="table table-sm">
<tbody>
<tr>
<td>Gewünschte Tage</td>
<td><span id="detail_tocontract"></span></td>
</tr>
<tr>
<td>Resturlaub</td>
<td><span id="detail_rest"></span></td>
</tr>
<tr>
<td>Urlaub nächstes Jahr</td>
<td><span id="detail_next"></span></td>
</tr>
<tr>
<td><b>Summe Urlaubstage</b></td>
<td><b><span id="detail_sum"></span></b></td>
</tr>
</tbody>
</table>
</div>
<!--<h5>Verbleibender Urlaub <span id="holidayyear"></span>:&nbsp;<b style="color: red;"><span id="restholidays">Lade...</span> Tage</b>&nbsp;<button class="btn btn-secondary btn-sm" style="float: right;" onclick="javascript:$('#holiday_detail_div').toggle()"><i class="fas fa-eye" id="show_detailview"></i></button></h5>
<div id="holiday_detail_div" style="display: none"> <div id="holiday_detail_div" style="display: none">
<hr> <hr>
<div class="col-6" style="margin-left: -10px"> <div class="col-6" style="margin-left: -10px">
@ -119,8 +147,7 @@
<td><b><span id="detail_sum"></span></b></td> <td><b><span id="detail_sum"></span></b></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>-->
</div>
</div> </div>
<!-- <!--
# TODO: Abwesenheiten - Meine Abwesenheiten, Übersicht über aktuelle Tage, Resturlaub in Jahren usw. # TODO: Abwesenheiten - Meine Abwesenheiten, Übersicht über aktuelle Tage, Resturlaub in Jahren usw.
@ -458,7 +485,7 @@ $('#absencetabs a').on('click', function (e) {
data: { data: {
labels: ['Kontigent', 'Genutzt'], labels: ['Kontigent', 'Genutzt'],
datasets: [{ datasets: [{
backgroundColor: ['#5a5c69','#ff304f'], backgroundColor: ['green','#ff304f'],
data: [{{kontingent}}, {{inuse}}] data: [{{kontingent}}, {{inuse}}]
}] }]
}, },

View File

@ -260,7 +260,7 @@ class UserTime(models.Model):
wd_we = models.FloatField(default=8.0) wd_we = models.FloatField(default=8.0)
wd_th = models.FloatField(default=8.0) wd_th = models.FloatField(default=8.0)
wd_fr = models.FloatField(default=8.0) wd_fr = models.FloatField(default=8.0)
loose_holidedate = models.CharField(default="30.04", max_length=5) loose_holidedate = models.CharField(default="30.04.", max_length=6)
startdate = models.DateField(default=None, blank=True, null=True) startdate = models.DateField(default=None, blank=True, null=True)

View File

@ -62,18 +62,22 @@ def checkDefaultAbsenceReasons(sender, user, request, **kwargs):
user.save() user.save()
ar = AbsenceReason.objects.filter(agency=user.profile.agency) ar = AbsenceReason.objects.filter(agency=user.profile.agency)
if(len(ar) == 0): if(len(ar) == 0):
new_ar_holidays = AbsenceReason(agency=user.profile.agency, name="Urlaub", need_confirm=True, need_rep=True, is_holiday=True) new_ar_holidays = AbsenceReason(agency=user.profile.agency, name="Urlaub", color="#0099BC", need_confirm=True, need_rep=True, is_holiday=True)
new_ar_holidays.save() new_ar_holidays.save()
new_ar_specialholidays = AbsenceReason(agency=user.profile.agency, name="Sonderurlaub", need_confirm=True, need_rep=True, is_holiday=False) new_ar_specialholidays = AbsenceReason(agency=user.profile.agency, name="Sonderurlaub", need_confirm=True, need_rep=True, is_holiday=False, color="#F39C12")
new_ar_specialholidays.save() new_ar_specialholidays.save()
new_ar_ill = AbsenceReason(agency=user.profile.agency, name="Krankheit", need_confirm=False, need_rep=False, is_holiday=False) new_ar_ill = AbsenceReason(agency=user.profile.agency, name="Krankheit", color="#E74C3C", need_confirm=False, need_rep=False, is_holiday=False)
new_ar_ill.save() new_ar_ill.save()
new_ar_school = AbsenceReason(agency=user.profile.agency, name="Berufsschule", need_confirm=False, need_rep=False, is_holiday=False) new_ar_school = AbsenceReason(agency=user.profile.agency, name="Berufsschule", color="#16A085", need_confirm=False, need_rep=False, is_holiday=False)
new_ar_school.save() new_ar_school.save()
new_ar_education = AbsenceReason(agency=user.profile.agency, name="Fortbildung", color="#2ECC71", need_confirm=True, need_rep=True, is_holiday=False)
new_ar_education.save()
today = date.today() today = date.today()
# FREEDAYS LADEN # FREEDAYS LADEN