Einlesen ab Einstellungsdatum hinzugefügt

Neukonstruktion des Tabellenaufbaus benötigt
This commit is contained in:
Alexander Malzkuhn 2025-04-24 09:59:51 +02:00
parent cb757ac6b6
commit d8609dce2b
2 changed files with 85 additions and 45 deletions

View File

@ -124,35 +124,66 @@ class user:
def del_user(self):
shutil.rmtree(self.userfolder)
def get_starting_day(self):
starting_date = list(self.workhours)
starting_date.sort()
year = str(starting_date[0])[:4]
month = str(starting_date[0])[5:7]
day = str(starting_date[0])[8:10]
return (year, month, day)
def get_years(self):
txtfiles = [ ]
for file in os.listdir(self.userfolder):
if file.endswith(".txt"):
txtfiles.append(file)
for i in range(len(txtfiles)):
txtfiles[i] = txtfiles[i][:4]
txtfiles = list(set(txtfiles))
txtfiles.sort()
return txtfiles
years = [ ]
# Aktuelles Jahr bestimmen
year_now = int(datetime.datetime.fromtimestamp(time.time()).strftime('%Y'))
for i in range(int(self.get_starting_day()[0]), year_now + 1):
years.append(str(i))
return years
def get_months(self, year):
txtfiles = [ ]
for file in os.listdir(self.userfolder):
if file.endswith(".txt"):
txtfiles.append(file)
txtfiles.sort()
available_months = [ ]
for entry in txtfiles:
if entry[:4] == str(year):
available_months.append(entry[5:-4])
# Anfangsdatum bestimmen
start_year = int(self.get_starting_day()[0])
start_month = int(self.get_starting_day()[1])
year_now = int(datetime.datetime.now().year)
month_now = int(datetime.datetime.now().month)
if start_year == year:
if start_year == year_now:
for i in range(start_month, month_now + 1):
available_months.append(i)
elif start_year < year_now:
for i in range(start_month, 13):
available_months.append(i)
else:
if int(year) == year_now:
for i in range(1, month_now + 1):
available_months.append(i)
elif int(year) < year_now:
for i in range(1, 13):
available_months.append(i)
return(available_months)
return available_months
def get_timestamps(self, year, month):
try:
with open(f"{self.userfolder}/{year}-{month}.txt", "r") as file:
timestamps = file.readlines()
timestamps.sort()
return timestamps
except:
timestamps = [ ]
return timestamps
def write_edited_timestamps(self, timestamps, year, month):
with open(f"{self.userfolder}/{year}-{month}.txt", "w") as file:

View File

@ -22,7 +22,7 @@ class pageheader:
class ValueBinder:
def __init__(self):
self.value_to_bind = ""
self.value = ""
def cookie_hash(user, password):
return hashlib.sha256(b"{user}{app.storage.user['id']}{password}").hexdigest()
@ -120,7 +120,7 @@ def page_admin():
users = ui.tab('Benutzer')
settings = ui.tab('Einstellungen')
with (ui.tab_panels(tabs, value=time_overview)):
with ((ui.tab_panels(tabs, value=time_overview))):
with ui.tab_panel(time_overview):
ui.markdown("##Übersichten")
@ -133,47 +133,55 @@ def page_admin():
month_binder = ValueBinder()
def update_months():
try:
#try:
print('Update Months called')
current_user = user(time_user.value)
available_months = current_user.get_months(year_binder.value_to_bind)
available_months = current_user.get_months(year_binder.value)
available_months_dict = {}
for element in available_months:
available_months_dict[element] = calendar.month_name[int(element)]
print(available_months_dict)
select_month.clear()
select_month.set_options(available_months_dict)
select_month.value = list(available_months)[0]
except:
pass
#except:
# print("select.month existiert noch nicht")
userlist = list_users()
ui.markdown("Benutzer:")
time_user = ui.select(options=userlist, on_change=update_months)
print("Time User wird konstruiert")
time_user = ui.select(options=userlist, value=userlist[0], on_change=update_months)
user_to_select_for_start = userlist[0]
current_user = user(user_to_select_for_start)
time_user.value = userlist[0]
current_year = datetime.datetime.now().year
current_month = datetime.datetime.now().month
current_user = user(time_user.value)
current_user = user(user_to_select_for_start)
available_years = current_user.get_years()
available_months = current_user.get_months(current_year)
available_months_dict = { }
for element in available_months:
available_months_dict[element] = calendar.month_name[int(element)]
print('Selektoren konstruiert')
print(f" current_month: {current_month} und available_months: {available_months}")
if current_month in available_months:
set_month = current_month
else:
set_month = available_months[0]
print(set_month)
print(f" current_year: {current_year} und available_years: {available_years}")
if str(current_year) in available_years:
set_year = str(current_year)
else:
set_year = (available_years[0])
print(set_year)
select_month = ui.select(options=available_months_dict, value=set_month).bind_value_to(month_binder, 'value')
select_year = ui.select(options=available_years, value=set_year, on_change=update_months).bind_value_to(year_binder, 'value')
select_month = ui.select(options=available_months_dict).bind_value(month_binder, 'value_to_bind')
select_year = ui.select(options=available_years, on_change=update_months).bind_value(year_binder, 'value_to_bind')
try:
select_year.value = str(current_year)
except:
pass
try:
select_month.value = str(current_month)
except:
select_month.value = str(available_months[0])
month_header = ui.markdown(f"###Buchungen für {calendar.month_name[int(select_month.value)]} {select_year.value}")
month_header = ui.markdown(f"###Buchungen für {current_user.fullname} für {calendar.month_name[int(select_month.value)]} {select_year.value}")
# Tabelle aufbauen
with ui.card() as calendar_card:
@ -347,7 +355,8 @@ def page_admin():
def clear_card():
calendar_card.clear()
update_month_and_year()
month_header.set_content(f"###Buchungen für {calendar.month_name[int(select_month.value)]} {select_year.value}")
current_user = user(time_user.value)
month_header.set_content(f"###Buchungen für {current_user.fullname} für {calendar.month_name[int(select_month.value)]} {select_year.value}")
button_update = ui.button("Aktualisieren", on_click=clear_card)
button_update.move(timetable_header)