2016-09-16 20:30:48 +00:00
|
|
|
#! /usr/bin/env python3
|
2016-09-16 22:59:39 +00:00
|
|
|
# coding=utf-8
|
2016-09-16 20:30:48 +00:00
|
|
|
from dialog import Dialog
|
|
|
|
import json
|
2016-09-16 22:59:39 +00:00
|
|
|
from pymongo import MongoClient
|
2016-09-16 20:30:48 +00:00
|
|
|
|
2016-09-17 11:28:01 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Settings
|
|
|
|
mongo = True
|
|
|
|
file_storage = False
|
2016-09-16 20:30:48 +00:00
|
|
|
d = Dialog(dialog="dialog")
|
|
|
|
d.set_background_title("Klandr")
|
|
|
|
|
2016-09-17 11:28:01 +00:00
|
|
|
# Initialization
|
|
|
|
holdets_time = None
|
2016-09-16 21:41:31 +00:00
|
|
|
klandringer = None
|
2016-09-16 22:59:39 +00:00
|
|
|
date = None
|
|
|
|
|
2016-09-16 20:30:48 +00:00
|
|
|
|
2016-09-16 22:59:39 +00:00
|
|
|
client = MongoClient()
|
|
|
|
db = client["dat3holdetstime"]
|
|
|
|
collection = db["klandringer"]
|
|
|
|
|
|
|
|
if file_storage == True:
|
|
|
|
with open("klandringer.json", "r") as jsonfile:
|
|
|
|
contents = jsonfile.read()
|
|
|
|
if contents == "":
|
|
|
|
complete_klandringer = {}
|
|
|
|
else:
|
|
|
|
complete_klandringer = json.loads(contents)
|
|
|
|
|
|
|
|
|
2016-09-16 22:03:01 +00:00
|
|
|
#####################
|
|
|
|
# Begin definitions #
|
|
|
|
#####################
|
2016-09-16 20:30:48 +00:00
|
|
|
|
2016-09-16 21:41:31 +00:00
|
|
|
def menu_select_date():
|
|
|
|
global klandringer
|
2016-09-17 11:28:01 +00:00
|
|
|
global holdets_time
|
2016-09-16 22:59:39 +00:00
|
|
|
global date
|
|
|
|
date_entries = [()]
|
|
|
|
if file_storage == True:
|
|
|
|
if complete_klandringer != {}:
|
|
|
|
date_entries = [(k,"") for k in complete_klandringer]
|
|
|
|
if mongo == True:
|
|
|
|
for entry in collection.find():
|
2016-09-17 11:28:01 +00:00
|
|
|
date_entries.append((entry["date"],entry["time"] + " - " + entry["place"]))
|
2016-09-16 21:41:31 +00:00
|
|
|
date_entries.append(("Ny","Opret en ny dato"))
|
|
|
|
code, tag = d.menu("Vælg den dato du vil ændre",
|
|
|
|
title="Vælg dato",
|
|
|
|
choices=date_entries)
|
|
|
|
if code == d.OK:
|
|
|
|
date = tag
|
|
|
|
if tag == "Ny":
|
|
|
|
date = new_date()
|
|
|
|
|
2016-09-16 22:59:39 +00:00
|
|
|
if file_storage == True:
|
|
|
|
klandringer = complete_klandringer[date]
|
|
|
|
if mongo == True:
|
2016-09-17 11:28:01 +00:00
|
|
|
holdets_time = collection.find({"date":date})[0]
|
|
|
|
klandringer = holdets_time["data"]
|
2016-09-16 21:41:31 +00:00
|
|
|
menu_main()
|
|
|
|
|
2016-09-16 20:30:48 +00:00
|
|
|
def menu_main():
|
|
|
|
code, tag = d.menu("Vælg punkt på dagsordenen",
|
|
|
|
title="Hovedmenu",
|
2016-09-17 11:28:01 +00:00
|
|
|
choices=[("Timen", "Ændr i beskrivelsen af denne time"),
|
|
|
|
("Indledende", "Indledende bemærkninger"),
|
2016-09-16 20:30:48 +00:00
|
|
|
("Klandringer", "Så mange klandringer"),
|
|
|
|
("Afsluttende", "Afsluttende bemærkninger")])
|
|
|
|
|
|
|
|
if code == d.OK:
|
|
|
|
if tag == "Indledende":
|
|
|
|
menu_indledende()
|
|
|
|
elif tag == "Klandringer":
|
|
|
|
menu_klandringer()
|
|
|
|
elif tag == "Afsluttende":
|
|
|
|
menu_afsluttende()
|
2016-09-17 11:28:01 +00:00
|
|
|
elif tag == "Timen":
|
|
|
|
menu_holdets_time()
|
2016-09-16 22:59:39 +00:00
|
|
|
else:
|
|
|
|
quit()
|
2016-09-16 22:03:01 +00:00
|
|
|
|
|
|
|
####################
|
|
|
|
# Begin indledende #
|
|
|
|
####################
|
|
|
|
|
|
|
|
# TODO: Write indledende
|
|
|
|
|
|
|
|
##################
|
|
|
|
# End indledende #
|
|
|
|
##################
|
|
|
|
|
|
|
|
#####################
|
|
|
|
# Begin afsluttende #
|
|
|
|
#####################
|
|
|
|
|
|
|
|
# TODO: Write afsluttende
|
|
|
|
|
|
|
|
###################
|
|
|
|
# End afsluttende #
|
|
|
|
###################
|
|
|
|
|
|
|
|
#####################
|
|
|
|
# Begin klandringer #
|
|
|
|
#####################
|
2016-09-16 20:30:48 +00:00
|
|
|
|
|
|
|
def menu_klandringer():
|
2016-09-16 20:41:46 +00:00
|
|
|
code, tag = d.menu("Hvad du vil gøre med klandringerne?",
|
2016-09-16 20:30:48 +00:00
|
|
|
title="Klandringer",
|
2016-09-16 20:41:46 +00:00
|
|
|
choices=[("Ny", "Oprette en ny klandring"),
|
|
|
|
("Ændr", "Ændre en eksisterende klandring"),
|
2016-09-16 21:41:31 +00:00
|
|
|
("Beskriv", "Beskriv en eksisterende klandring"),
|
2016-09-16 20:41:46 +00:00
|
|
|
#("Omarrangér", "Omarrangere de eksisterende klandringer"),
|
2016-09-16 21:58:04 +00:00
|
|
|
("Slet", "Slette en eksisterende klandring"),
|
|
|
|
("Batch", "Gå i batch-mode")])
|
2016-09-16 20:30:48 +00:00
|
|
|
|
|
|
|
if code == d.CANCEL:
|
|
|
|
menu_main()
|
|
|
|
elif code == d.OK:
|
|
|
|
if tag == "Ny":
|
|
|
|
create_klandring()
|
2016-09-16 21:58:04 +00:00
|
|
|
elif tag == "Batch":
|
|
|
|
batch_mode()
|
2016-09-16 20:30:48 +00:00
|
|
|
else:
|
|
|
|
klandring = menu_select_klandring()
|
|
|
|
if klandring != None:
|
|
|
|
if tag == "Ændr":
|
|
|
|
edit_klandring(klandring)
|
2016-09-16 21:41:31 +00:00
|
|
|
elif tag == "Beskriv":
|
|
|
|
describe_klandring(klandring)
|
2016-09-16 20:30:48 +00:00
|
|
|
elif tag == "Slet":
|
|
|
|
delete_klandring(klandring)
|
2016-09-16 21:58:04 +00:00
|
|
|
|
|
|
|
menu_klandringer()
|
2016-09-16 20:30:48 +00:00
|
|
|
|
|
|
|
def menu_select_klandring():
|
|
|
|
klandringer_entries = [(str(i),k["klandrer"] + " v. " + k["klandret"] + " - " + k["title"]) for i,k in enumerate(klandringer)]
|
|
|
|
code, tag = d.menu("Vælg den klandring du vil ændre/slette",
|
|
|
|
title="Vælg klandring",
|
|
|
|
choices=klandringer_entries)
|
|
|
|
if code == d.OK:
|
|
|
|
return tag
|
|
|
|
|
|
|
|
def create_klandring():
|
2016-09-16 21:41:31 +00:00
|
|
|
klandringer.append({"klandrer":"","klandret":"","title":"","description":"","taber":""})
|
2016-09-17 00:05:25 +00:00
|
|
|
code = edit_klandring(-1)
|
|
|
|
if code != d.OK:
|
|
|
|
del klandringer[-1]
|
|
|
|
return code
|
2016-09-16 20:30:48 +00:00
|
|
|
|
|
|
|
def edit_klandring(strid):
|
|
|
|
id = int(strid)
|
2016-09-16 21:41:31 +00:00
|
|
|
k = klandringer[id]
|
2016-09-16 20:30:48 +00:00
|
|
|
code, elements = d.form("Ændr detaljer om klandring",
|
|
|
|
title="Ændr klandring",
|
2016-09-16 21:41:31 +00:00
|
|
|
elements=[("Titel:",1,1,k["title"],1,11,40,40),
|
|
|
|
("Klandrer:",2,1,k["klandrer"],2,11,20,20),
|
|
|
|
("Klandret:",3,1,k["klandret"],3,11,20,20),
|
|
|
|
("Taber:",4,1,k["taber"],4,11,20,20)])
|
2016-09-16 20:30:48 +00:00
|
|
|
|
|
|
|
if code == d.OK:
|
2016-09-16 21:41:31 +00:00
|
|
|
k["title"] = elements[0]
|
|
|
|
k["klandrer"] = elements[1]
|
|
|
|
k["klandret"] = elements[2]
|
|
|
|
k["taber"] = elements[3]
|
|
|
|
save()
|
2016-09-16 21:58:04 +00:00
|
|
|
|
|
|
|
return code
|
|
|
|
|
2016-09-16 20:41:46 +00:00
|
|
|
|
2016-09-16 21:41:31 +00:00
|
|
|
def describe_klandring(strid):
|
|
|
|
id = int(strid)
|
|
|
|
k = klandringer[id]
|
|
|
|
code, text = d.editbox_str(k["description"],
|
|
|
|
height=0,
|
|
|
|
width=0,
|
|
|
|
title=k["klandrer"] + " v. " + k["klandret"] + " - " + k["title"])
|
|
|
|
|
|
|
|
if code == d.OK:
|
|
|
|
k["description"] = text
|
|
|
|
save()
|
2016-09-16 21:58:04 +00:00
|
|
|
|
|
|
|
return code
|
2016-09-16 20:30:48 +00:00
|
|
|
|
|
|
|
def delete_klandring(strid):
|
|
|
|
id = int(strid)
|
|
|
|
code = d.yesno("Vil du virkelig slette denne klandring?\n\nDenne handling er ufortrydelig!",
|
|
|
|
title="Slet klandring!",
|
|
|
|
yes_label="Ja",
|
|
|
|
no_label="Nej",)
|
|
|
|
if code == d.OK:
|
|
|
|
del klandringer[id]
|
|
|
|
d.msgbox("Klandringen er slettet!")
|
2016-09-16 21:41:31 +00:00
|
|
|
save()
|
2016-09-16 20:30:48 +00:00
|
|
|
|
2016-09-16 21:58:04 +00:00
|
|
|
return code
|
|
|
|
|
|
|
|
def batch_mode():
|
|
|
|
for i,k in enumerate(klandringer):
|
|
|
|
code = describe_klandring(i)
|
|
|
|
if code != d.OK:
|
|
|
|
break
|
|
|
|
code = edit_klandring(i)
|
|
|
|
if code != d.OK:
|
|
|
|
break
|
|
|
|
|
2016-09-16 21:41:31 +00:00
|
|
|
def save():
|
2016-09-16 22:59:39 +00:00
|
|
|
if file_storage == True:
|
|
|
|
with open("klandringer.json","w") as jsonfile:
|
|
|
|
jsonfile.write(json.dumps(complete_klandringer))
|
|
|
|
if mongo == True:
|
2016-09-17 11:28:01 +00:00
|
|
|
#collection.update_one({"date":date},{"$set": {"data":klandringer}})
|
|
|
|
collection.update_one({"date":date},{"$set": holdets_time})
|
2016-09-16 22:03:01 +00:00
|
|
|
|
|
|
|
###################
|
|
|
|
# End klandringer #
|
|
|
|
###################
|
2016-09-16 21:41:31 +00:00
|
|
|
|
2016-09-17 11:28:01 +00:00
|
|
|
######################
|
|
|
|
# Start holdets time #
|
|
|
|
######################
|
|
|
|
|
|
|
|
def menu_holdets_time():
|
|
|
|
code, tag = d.menu("Hvad du vil ændre ved holdets time?",
|
|
|
|
title="Holdets time",
|
|
|
|
choices=[("Tid", "Ændre tidspunktet"),
|
|
|
|
("Sted", "Ændre stedet"),
|
|
|
|
("Undertitel", "Give en undertitel")])
|
|
|
|
|
|
|
|
if code == d.CANCEL:
|
|
|
|
menu_main()
|
|
|
|
elif code == d.OK:
|
|
|
|
if tag == "Tid":
|
|
|
|
change_time()
|
|
|
|
elif tag == "Sted":
|
|
|
|
change_place()
|
|
|
|
elif tag == "Undertitel":
|
|
|
|
change_subtitle()
|
|
|
|
|
|
|
|
menu_holdets_time()
|
|
|
|
|
|
|
|
def change_time():
|
|
|
|
code, time = d.timebox("Vælg det tidspunkt hvor holdets time blev afholdt")
|
|
|
|
if code == d.OK:
|
|
|
|
strtime = str(time[0]).zfill(2) + ":" + str(time[1]).zfill(2)
|
|
|
|
holdets_time["time"] = strtime
|
|
|
|
save()
|
|
|
|
|
|
|
|
menu_holdets_time()
|
|
|
|
|
|
|
|
def change_place():
|
|
|
|
code, string = d.inputbox("Vælg det sted hvor holdets time blev afholdt",0,0,
|
|
|
|
holdets_time["place"])
|
|
|
|
if code == d.OK:
|
|
|
|
holdets_time["place"] = string
|
|
|
|
save()
|
|
|
|
|
|
|
|
menu_holdets_time()
|
|
|
|
|
|
|
|
def change_subtitle():
|
|
|
|
code, string = d.inputbox("Vælg en undertitel til denne holdets time",0,0,
|
|
|
|
holdets_time["subtitle"])
|
|
|
|
if code == d.OK:
|
|
|
|
holdets_time["subtitle"] = string
|
|
|
|
save()
|
|
|
|
|
|
|
|
menu_holdets_time()
|
|
|
|
|
|
|
|
####################
|
|
|
|
# End holdets time #
|
|
|
|
####################
|
|
|
|
|
|
|
|
|
2016-09-16 21:41:31 +00:00
|
|
|
def new_date():
|
|
|
|
code, pickdate = d.calendar("Vælg en dato")
|
|
|
|
|
|
|
|
if code == d.OK:
|
|
|
|
date = str(pickdate[2]).zfill(4) + "-" + str(pickdate[1]).zfill(2) + "-" + str(pickdate[0]).zfill(2)
|
2016-09-16 22:59:39 +00:00
|
|
|
if file_storage == True:
|
|
|
|
complete_klandringer[date] = []
|
|
|
|
if mongo == True:
|
2016-09-17 11:28:01 +00:00
|
|
|
collection.insert({"date":date,"time":"","place":"","subtitle":"","data":[]})
|
2016-09-16 21:41:31 +00:00
|
|
|
return date
|
|
|
|
else:
|
|
|
|
menu_select_date()
|
2016-09-16 21:58:04 +00:00
|
|
|
|
2016-09-16 22:03:01 +00:00
|
|
|
###################
|
|
|
|
# End definitions #
|
|
|
|
###################
|
2016-09-16 20:30:48 +00:00
|
|
|
|
2016-09-16 21:41:31 +00:00
|
|
|
menu_select_date()
|