implemented subscription adding

master
endorphant 2018-10-14 13:16:46 -04:00
parent f8c6f160f6
commit 7fbdc6b608
1 changed files with 94 additions and 14 deletions

View File

@ -734,7 +734,9 @@ def subscription_handler(intro=""):
else: else:
intro = "it doesn't look like you have any subscriptions to see! add pals with 'manage subscriptions' here." intro = "it doesn't look like you have any subscriptions to see! add pals with 'manage subscriptions' here."
elif choice == 1: elif choice == 1:
intro = DUST prompt = "options for managing your subscriptions:"
redraw(prompt)
subscription_manager(subs, prompt)
else: else:
redraw() redraw()
return return
@ -1342,16 +1344,17 @@ def view_subscribed_feed(subs):
''' '''
display list of most recent entries on user's subscribed list. display list of most recent entries on user's subscribed list.
''' '''
(entries, metas)= feed_list(subs) (entries, metas)= feed_list(subs, 0)
list_entries(metas, entries, "recent entries from your subscribed pals:") list_entries(metas, entries, "entries from your subscribed pals:")
redraw() redraw()
return return
def feed_list(townies): def feed_list(townies, delta=30):
''' '''
given a list of townies, generate a list of 50 most recent entries within given a list of townies, generate a list of 50 most recent entries within
the last 30 days. validates against townies with ttbp config files. given interval (default 30 days; 0 days for no limit). validates against
townies with ttbp config files.
returns a tuple of (entries, metas) returns a tuple of (entries, metas)
''' '''
@ -1370,16 +1373,18 @@ def feed_list(townies):
filenames = [] filenames = []
for entry in filenames: for entry in filenames:
## hardcoded display cutoff at 30 days if delta > 0:
if core.valid(entry): if core.valid(entry):
year = int(entry[0:4]) year = int(entry[0:4])
month = int(entry[4:6]) month = int(entry[4:6])
day = int(entry[6:8]) day = int(entry[6:8])
datecheck = datetime.date(year, month, day) datecheck = datetime.date(year, month, day)
displayCutoff = datetime.date.today() - datetime.timedelta(days=30) displayCutoff = datetime.date.today() - datetime.timedelta(days=delta)
if datecheck > displayCutoff: if datecheck > displayCutoff:
feedList.append(os.path.join(entryDir, entry)) feedList.append(os.path.join(entryDir, entry))
else:
feedList.append(os.path.join(entryDir, entry))
metas = core.meta(feedList) metas = core.meta(feedList)
metas.sort(key = lambda entry:entry[3]) metas.sort(key = lambda entry:entry[3])
@ -1397,6 +1402,81 @@ def feed_list(townies):
return entries, metas return entries, metas
def subscription_manager(subs, intro=""):
'''
'''
menuOptions = [
"add pals",
"remove pals"
]
util.print_menu(menuOptions, SETTINGS.get("rainbows", False))
choice = util.list_select(menuOptions, "what do you want to do? (enter 'q' to go back) ")
top = ""
if choice is not False:
if choice == 0:
prompt = "list of townies recording feels:"
redraw(prompt)
subs = subscribe_handler(subs, prompt)
elif choice == 1:
redraw("list of townies you're subscribed to:")
subs = unsubscribe_handler(subs)
else:
redraw()
return
redraw(top+intro)
return subscription_manager(subs, intro)
def unsubscribe_handler(subs):
'''
displays a list of currently subscribed users and toggles deletion.
'''
return subs
def subscribe_handler(subs, prompt):
'''
displays a list of all users not subscribed to and toggles adding,
returning the subs list when finished.
'''
candidates = []
for townie in core.find_ttbps():
if townie not in subs:
candidates.append(townie)
candidates.sort()
choice = menu_handler(candidates, "pick a townie to add to your subscriptions (or 'q' to cancel): ", 15, SETTINGS.get("rainbows", False), "list of townies recording feels:")
if choice is not False:
townie = candidates[choice]
subs.append(townie)
save_subs(subs)
redraw("{townie} added! \n\n> {prompt}".format(townie=townie, prompt=prompt))
return subscribe_handler(subs, prompt)
else:
redraw()
return subs
def save_subs(subs):
'''
takes given subscription list and saves it into the user config,
overwriting whatever is already there.
'''
subs_file = open(config.SUBS, 'w')
for townie in subs:
subs_file.write(townie + "\n")
subs_file.close()
def graffiti_handler(): def graffiti_handler():
''' '''
Main graffiti handler. Main graffiti handler.