Created
July 22, 2017 08:44
-
-
Save Orpheon/c27412de6d5a6e5a59fad92328381bc9 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*- | |
""" | |
Spyder Editor | |
This is a temporary script file. | |
""" | |
import json | |
import datetime | |
MORGEN = 1 | |
NACHMITTAG = 2 | |
class Absenz: | |
def __init__(self, datum, halbtag, typ): | |
self.datum = datum | |
self.halbtag = halbtag | |
self.typ = typ | |
self.entschuldigt = datetime.date.fromtimestamp(0) | |
self.comment = '' | |
def erledigt(self): | |
return self.entschuldigt >= self.datum | |
def save(self): | |
return { | |
"datum": self.datum.strftime("%Y-%m-%d"), | |
"halbtag": self.halbtag, | |
"typ": self.typ, | |
"entschuldigt": self.entschuldigt.strftime("%Y-%m-%d"), | |
"comment": self.comment | |
} | |
def load(self, d): | |
self.datum = datetime.datetime.strptime(d["datum"], "%Y-%m-%d").date() | |
self.halbtag = d["halbtag"] | |
self.typ = d["typ"] | |
self.entschuldigt = datetime.datetime.strptime(d["entschuldigt"], | |
"%Y-%m-%d").date() | |
self.comment = comment | |
class Sus: | |
def __init__(self, name, vorname): | |
self.name = name | |
self.vorname = vorname | |
self.absenzen = [] | |
def neue_absenz(self, datum, halbtag, typ): | |
self.absenzen.append(Absenz(datum, halbtag, typ)) | |
def absenz_begruenden(self, datum, halbtag, entschuldigungsdatum): | |
for absenz in self.absenzen: | |
if absenz.datum == datum and absenz.halbtag == halbtag: | |
absenz.entschuldigt = entschuldigungsdatum | |
break | |
def trennen(self, anfang, schluss): | |
ae = [] | |
au = [] | |
ve = [] | |
vu = [] | |
for absenz in self.absenzen: | |
if absenz.datum >= anfang and absenz.datum <= schluss: | |
if absenz.entschuldigt >= absenz.datum: | |
if absenz.typ == 'a': | |
ae.append(absenz) | |
elif absenz.typ == 'v': | |
ve.append(absenz) | |
else: | |
if absenz.typ == 'a': | |
au.append(absenz) | |
elif absenz.typ == 'v': | |
vu.append(absenz) | |
return ae, au, va, vu | |
def save(self): | |
return { | |
"vorname": self.vorname, | |
"name": self.name, | |
"absenzen": [absenz.save() for absenz in self.absenzen] | |
} | |
def load(self, d): | |
self.vorname = d["vorname"] | |
self.name = d["name"] | |
self.absenzen = [] | |
for absenz in d["absenzen"]: | |
self.absenzen.append(Absenz(datetime.date.fromtimestamp(0), 0, 0)) | |
self.absenzen[-1].load(absenz) | |
import random | |
schueler = [Sus("basd"+str(i), "asdasf") for i in range(15)] | |
for s in schueler: | |
halbtag = random.randint(0, 1) | |
s.neue_absenz(datetime.date.today(), halbtag, random.choice(["a", "v"])) | |
if random.randint(0, 4) == 0: | |
s.absenz_begruenden(datetime.date.today(), halbtag, | |
datetime.date.today()) | |
# Abspeichern | |
with open("schüler_db.json", "w") as file: | |
file.write(json.dumps([s.save() for s in schueler], indent=4)) | |
with open("asdasdasd.json", "r") as file: | |
d = json.loads(file.read()) | |
schueler = [] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment