Skip to content

Instantly share code, notes, and snippets.

@Orpheon
Created July 22, 2017 16:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Orpheon/a816ebe794ba80f97ddcc413f506208b to your computer and use it in GitHub Desktop.
Save Orpheon/a816ebe794ba80f97ddcc413f506208b to your computer and use it in GitHub Desktop.
# -*- 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 = d["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(50)]
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))
# Laden
with open("schüler_db.json", "r") as file:
d = json.loads(file.read())
neueschueler = []
for i, s in enumerate(d):
neueschueler.append(Sus("basd"+str(i), "asdasf"))
neueschueler[-1].load(s)
# Abspeichern zweites Mal
with open("schüler_db_2.json", "w") as file:
file.write(json.dumps([s.save() for s in neueschueler], indent=4))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment