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:
model = UserTime
labels = {
"loose_holidedate" : "Resturlaub verfällt am (XX.XX)",
"loose_holidedate" : "Resturlaub verfällt am (XX.XX.)",
"startdate" : "Einstellungsdatum",
"wd_mo" : "Montag",
"wd_tu" : "Dienstag",

View File

@ -84,7 +84,7 @@
<form method="POST" enctype="multipart/form-data" name="profileform_basic">
<input type="hidden" name="userprof_formtype" value="profileform">
<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="col-4">
{% for g in agencygroups %}
@ -113,7 +113,7 @@
</div>
<hr>
<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">
<option value="">---------</option>
{% for singleparent in usertoparent %}
@ -126,7 +126,7 @@
</select>
</div>
<hr>
<p>Persönliches Profil</p>
<h5>Persönliches Profil</h5>
{% csrf_token %}
<div class="row">
<div class="col-6">
@ -165,7 +165,7 @@
{% csrf_token %}
<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">
<table class="table">
<tr>
@ -180,16 +180,21 @@
<hr style="margin-top: -20px;">
<div class="col-12" >
<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>
{{usertime_form.media}}
{{usertime_form.startdate|as_crispy_field}}
{{usertime_form.loose_holidedate|as_crispy_field}}
</div>
<hr>
<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>
<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>
</div>
{{usertime_form.media}}
<div class="row col-12">
<div class="col-5">
{{usertime_form.startdate|as_crispy_field}}
</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="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">
<table class="table table-hover">
<thead>

View File

@ -78,7 +78,7 @@ def getAllForms(request, context):
#Modulsettings ABWESENHEIT- UND ZEITERFASSUNG
modsettings_tm = AgencyTimeManagement(instance=request.user.profile.agency)
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
@ -642,6 +642,7 @@ def SettingsAjaxRouter(request):
else:
data = {"userfullname" : tempuser.first_name + " " + tempuser.last_name}
success = False
# UPDATE FREEDAYS
elif request.method == 'GET' and request.GET['action'] == "initloadfreedays" :
if(request.user.has_perm('users.modulesconfig')):
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_type = ele_elements[0].split("_")[2]
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"):
temp_year.days = ele_elements[1]
elif(ele_type == "rest"):
@ -786,8 +785,8 @@ def UserProfileUpdate(request, pk, newuser=0):
formtosave = UserTimeForm(request.POST, instance=UserTime.objects.get(user=usertochange))
if(formtosave.is_valid()):
# 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"])):
# CHECK IF HOLIDAYS_LOOSE IS CORRECT
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!')
context = {
'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__)))
############################################## DEV #####################################
BASE_URL = "https://dev01.digitale-agentur.com/"
############################################## LOCAL #####################################
BASE_URL = "http://localhost:8000/"
CRONAPIKEY = "gCddsaz6NOnE9QbXZM5LasdEk122D"
MAILINFOKEY = "jka7sd8iukashdna78skduJAHDsu6dilaksdjba65a68iadbhjak"
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
# MAIL DEV
EMAIL_HOST = 'smtp.strato.de'
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"
# Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases
# DEV
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME' : 'digitaleagentur_dev01',
'USER' : 'digitaleagentur_dev01',
'PASSWORD' : 't3TvtGAOkFHYXdJlUMIu9u3U',
'NAME' : 'digitaleagentur',
'USER' : 'root',
'PASSWORD' : '',
'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_URL = ("localhost", 6379)
############################################## DEV #####################################
################################################### LOCAL ###############################

View File

@ -95,7 +95,35 @@
</div>
<div class="modal-body">
<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">
<hr>
<div class="col-6" style="margin-left: -10px">
@ -119,8 +147,7 @@
<td><b><span id="detail_sum"></span></b></td>
</tr>
</tbody>
</table>
</div>
</table>-->
</div>
<!--
# TODO: Abwesenheiten - Meine Abwesenheiten, Übersicht über aktuelle Tage, Resturlaub in Jahren usw.
@ -458,7 +485,7 @@ $('#absencetabs a').on('click', function (e) {
data: {
labels: ['Kontigent', 'Genutzt'],
datasets: [{
backgroundColor: ['#5a5c69','#ff304f'],
backgroundColor: ['green','#ff304f'],
data: [{{kontingent}}, {{inuse}}]
}]
},

View File

@ -260,7 +260,7 @@ class UserTime(models.Model):
wd_we = models.FloatField(default=8.0)
wd_th = 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)

View File

@ -62,18 +62,22 @@ def checkDefaultAbsenceReasons(sender, user, request, **kwargs):
user.save()
ar = AbsenceReason.objects.filter(agency=user.profile.agency)
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_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_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_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_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()
# FREEDAYS LADEN