import base64
web_path = '/guiltcards'
-cards_dir = 'cards/'
+decks_dir = 'decks/'
-def get_card_data(card_id):
+def get_card_data(deck_id, card_id):
+ cards_dir = decks_dir + deck_id
if not os.path.exists(cards_dir):
os.makedirs(cards_dir)
- path_card = cards_dir + card_id
+ path_card = cards_dir + '/' + card_id
if os.path.exists(path_card):
with open(path_card, 'r') as f:
data = json.loads(f.read())
return data
@get(web_path + '/')
-@view('intro')
-def intro():
- return dict()
+@get(web_path + '/decks')
+@view('decks')
+def list_decks():
+ if not os.path.exists(decks_dir):
+ os.makedirs(decks_dir)
+ deck_ids = os.listdir(decks_dir)
+ decks = {}
+ print('DEBUG', deck_ids)
+ for deck_id in deck_ids:
+ decks[deck_id] = base64.b64decode(deck_id).decode()
+ return dict(web_path=web_path, decks=decks)
-@get(web_path + '/cards')
+@get(web_path + '/decks/')
+def new_deck():
+ deck_name = request.query.get('deck_name')
+ deck_id = base64.b64encode(deck_name.encode()).decode()
+ redirect(web_path + '/decks/' + deck_id + '/cards')
+
+@get(web_path + '/decks/<deck_id>/cards')
+@get(web_path + '/decks/<deck_id>/')
+@get(web_path + '/decks/<deck_id>')
@view('cards')
-def list_cards():
- if not os.path.exists(cards_dir):
- os.makedirs(cards_dir)
- card_ids = os.listdir(cards_dir)
+def list_cards(deck_id):
+ cards_dir = decks_dir + deck_id
+ card_ids = []
+ if os.path.exists(cards_dir):
+ card_ids = os.listdir(cards_dir)
cards = {}
for card_id in card_ids:
cards[card_id] = base64.b64decode(card_id).decode()
+ deck_name = base64.b64decode(deck_id).decode()
return dict(web_path=web_path,
+ deck_id=deck_id,
+ deck_name=deck_name,
cards=cards)
-@get(web_path + '/cards/')
-def new_card():
+@get(web_path + '/decks/<deck_id>/cards/')
+def new_card(deck_id):
card_name = request.query.get('card_name')
card_id = base64.b64encode(card_name.encode()).decode()
- redirect(web_path + '/cards/' + card_id + '/form')
+ redirect(web_path + '/decks/' + deck_id + '/cards/' + card_id + '/form')
-@get(web_path + '/cards/<card_id>/view')
+@get(web_path + '/decks/<deck_id>/cards/<card_id>/view')
@view('card')
-def show_card(card_id):
- data = get_card_data(card_id)
+def show_card(deck_id, card_id):
+ data = get_card_data(deck_id, card_id)
return dict(web_path=web_path,
+ deck_id=deck_id,
title=data['title'],
prompt=data['prompt'],
answers=data['answers'])
-@post(web_path + '/cards/<card_id>')
-def update_card(card_id):
+@post(web_path + '/decks/<deck_id>/cards/<card_id>')
+def update_card(deck_id, card_id):
+ cards_dir = decks_dir + deck_id
if not os.path.exists(cards_dir):
os.makedirs(cards_dir)
- path_card = cards_dir + card_id
+ path_card = cards_dir + '/' + card_id
json_dict = {
'title': request.forms.get('title'),
'prompt': request.forms.get('prompt'),
if answer.strip() != '']
with open(path_card, 'w') as f:
f.write(json.dumps(json_dict, indent=4))
- redirect(web_path + '/cards/' + card_id + '/view')
+ redirect(web_path + '/decks/' + deck_id + '/cards/' + card_id + '/view')
-@get(web_path + '/cards/<card_id>/form')
+@get(web_path + '/decks/<deck_id>/cards/<card_id>/form')
@view('card_form')
-def card_form(card_id):
- data = get_card_data(card_id)
- card_path = cards_dir + '/' + card_id
+def card_form(deck_id, card_id):
+ data = get_card_data(deck_id, card_id)
+ card_path = decks_dir + deck_id + '/' + card_id
deletable = False
if os.path.exists(card_path):
deletable = True
return dict(web_path=web_path,
card_id=card_id,
+ deck_id=deck_id,
title=data['title'],
prompt=data['prompt'],
answers=data['answers'],
deletable=deletable)
-@get(web_path + '/cards/<card_id>/delete')
+@get(web_path + '/decks/<deck_id>/cards/<card_id>/delete')
@view('delete_card')
-def delete_card_ask(card_id):
+def delete_card_ask(deck_id, card_id):
card_name = base64.b64decode(card_id.encode()).decode()
return dict(web_path=web_path,
+ deck_id=deck_id,
card_name=card_name,
card_id=card_id)
-@post(web_path + '/cards/<card_id>/delete')
-def delete_card_do(card_id):
+@post(web_path + '/decks/<deck_id>/cards/<card_id>/delete')
+def delete_card_do(deck_id, card_id):
+ cards_dir = decks_dir + deck_id
card_path = cards_dir + '/' + card_id
if os.path.exists(card_path):
os.remove(card_path)
- redirect(web_path + '/cards')
+ redirect(web_path + '/decks/' + deck_id + '/cards')
# App running.