122 lines
3.4 KiB
Python
122 lines
3.4 KiB
Python
# coding: utf-8
|
|
|
|
import os
|
|
import os.path
|
|
import codecs
|
|
import json
|
|
|
|
#----------------------------------------------------------
|
|
class Database_cl(object):
|
|
#----------------------------------------------------------
|
|
# da es hier nur darum geht, die Daten dauerhaft zu speichern,
|
|
# wird ein sehr einfacher Ansatz verwendet:
|
|
# - es können Daten zu genau 15 Teams gespeichert werden
|
|
# - je Team werden 2 Teilnehmer mit Namen, Vornamen und Matrikelnummer
|
|
# berücksichtigt
|
|
# - die Daten werden als eine JSON-Datei abgelegt
|
|
|
|
|
|
#-------------------------------------------------------
|
|
def __init__(self):
|
|
#-------------------------------------------------------
|
|
self.data_o = None
|
|
self.readData_p()
|
|
|
|
|
|
#-------------------------------------------------------
|
|
def create_px(self, data_opl):
|
|
#-------------------------------------------------------
|
|
# Überprüfung der Daten müsste ergänzt werden!
|
|
# 'freien' Platz suchen,
|
|
# falls vorhanden: belegen und Nummer des Platzes als Id zurückgeben
|
|
|
|
id_s = None
|
|
for loop_i in range(0,15):
|
|
if self.data_o[str(loop_i)][0] == '':
|
|
id_s = str(loop_i)
|
|
self.data_o[id_s] = data_opl
|
|
self.saveData_p()
|
|
break
|
|
|
|
return id_s
|
|
|
|
|
|
#-------------------------------------------------------
|
|
def read_px(self, id_spl = None):
|
|
#-------------------------------------------------------
|
|
# hier zur Vereinfachung:
|
|
# Aufruf ohne id: alle Einträge liefern
|
|
|
|
data_o = None
|
|
if id_spl == None:
|
|
data_o = self.data_o
|
|
else:
|
|
if id_spl in self.data_o:
|
|
data_o = self.data_o[id_spl]
|
|
|
|
return data_o
|
|
|
|
|
|
#-------------------------------------------------------
|
|
def update_px(self, id_spl, data_opl):
|
|
#-------------------------------------------------------
|
|
# Überprüfung der Daten müsste ergänzt werden!
|
|
status_b = False
|
|
if id_spl in self.data_o:
|
|
self.data_o[id_spl] = data_opl
|
|
self.saveData_p()
|
|
status_b = True
|
|
|
|
return status_b
|
|
|
|
|
|
#-------------------------------------------------------
|
|
def delete_px(self, id_spl):
|
|
#-------------------------------------------------------
|
|
#print("\n---------------------- DELETE ---------------------")
|
|
status_b = False
|
|
if id_spl in self.data_o:
|
|
pass
|
|
# hier müssen Sie den Code ergänzen
|
|
# Löschen als Zurücksetzen auf die Default-Werte implementieren
|
|
# Ihre Ergänzung
|
|
self.data_o[id_spl] = {}
|
|
default_s = self.getDefault_px()
|
|
self.data_o[id_spl] = default_s
|
|
self.saveData_p()
|
|
|
|
return status_b
|
|
|
|
|
|
#-------------------------------------------------------
|
|
def getDefault_px(self):
|
|
#-------------------------------------------------------
|
|
return ['', '', '', '', '', '', '', ''] # HIER müssen Sie eine Ergänzung vornehmen
|
|
|
|
|
|
#-------------------------------------------------------
|
|
def readData_p(self):
|
|
#-------------------------------------------------------
|
|
try:
|
|
fp_o = codecs.open(os.path.join('data', 'webteams.json'), 'r', 'utf-8')
|
|
except:
|
|
# Datei neu anlegen self.data_o = {}
|
|
self.data_o = {}
|
|
for loop_i in range(0,15):
|
|
self.data_o[str(loop_i)] = ['', '', '', '', '', '', '', '']
|
|
self.saveData_p()
|
|
else:
|
|
with fp_o:
|
|
self.data_o = json.load(fp_o)
|
|
|
|
return
|
|
|
|
|
|
#-------------------------------------------------------
|
|
def saveData_p(self):
|
|
#-------------------------------------------------------
|
|
with codecs.open(os.path.join('data', 'webteams.json'), 'w', 'utf-8') as fp_o:
|
|
json.dump(self.data_o, fp_o)
|
|
|
|
|
|
# EOF |