diff --git a/ttbp/core.py b/ttbp/core.py index b60fa3b..6382059 100644 --- a/ttbp/core.py +++ b/ttbp/core.py @@ -48,6 +48,7 @@ SETTINGS = {} HEADER = "" FOOTER = "" FILES = [] +NOPUBS = [] def load(ttbprc={}): ''' @@ -62,6 +63,7 @@ def load(ttbprc={}): FOOTER = open(os.path.join(config.USER_CONFIG, "footer.txt")).read() SETTINGS = ttbprc + load_nopubs() load_files() def reload_ttbprc(ttbprc={}): @@ -105,8 +107,23 @@ def load_files(): global FILES + load_nopubs() FILES = get_files() +def load_nopubs(): + """Load a list of the user's nopub entries. + """ + + global NOPUBS + + NOPUBS = [] + + if os.path.isfile(config.NOPUB): + for line in open(config.NOPUB, "r"): + if not re.match("^# ", line): + NOPUBS.append(line.rstrip()) + + return len(NOPUBS) ## html outputting @@ -417,19 +434,45 @@ def nopub(filename): checks to see if given filename is in user's NOPUB ''' - exclude = [] - - if os.path.isfile(config.NOPUB): - for line in open(config.NOPUB, "r"): - exclude.append(line.rstrip()) - - return os.path.basename(filename) in exclude + return os.path.basename(filename) in NOPUBS def toggle_nopub(filename): """toggles pub/nopub status for the given filename + + if the file is to be unpublished, delete it from published locations """ - pass + global NOPUBS + + action = "unpublishing" + + if nopub(filename): + NOPUBS.remove(filename) + live_html = os.path.join(config.WWW, filename.split(".")[0]+".html") + if os.path.exists(live_html): + subprocess.call(["rm", live_html]) + live_gopher = os.path.join(config.GOPHER_PATH, filename) + if os.path.exists(live_gopher): + subprocess.call(["rm", live_gopher]) + else: + action = "publishing" + NOPUBS.append(filename) + + nopub_file = open(config.NOPUB, 'w') + nopub_file.write("""\ +# files that don't get published html/gopher. this file is +# generated by ttbp; editing it directly may result in unexpected +# behavior. if you have problems, back up this file, delete it, and +# rebuild it from ttbp.\n""") + for entry in NOPUBS: + nopub_file.write(entry+"\n") + nopub_file.close() + + load_files() + write("index.html") + + return action + ############# ############# diff --git a/ttbp/ttbp.py b/ttbp/ttbp.py index adbff30..ab3627a 100644 --- a/ttbp/ttbp.py +++ b/ttbp/ttbp.py @@ -820,23 +820,24 @@ def list_nopubs(user): pub = "(nopub)" entries.append(""+entry[4]+" ("+p.no("word", entry[2])+") "+"\t"+pub) - return set_nopubs(metas, entries, "publishing status of your feels:") + return set_nopubs(metas, entries, user, "publishing status of your feels:") else: redraw("no feels recorded by ~"+user) -def set_nopubs(metas, entries, prompt): +def set_nopubs(metas, entries, user, prompt): """displays a list of entries for pub/nopub toggling. """ + choice = menu_handler(entries, "pick an entry from the list, or type 'q' to go back: ", 10, SETTINGS.get("rainbows", False), prompt) if choice is not False: target = os.path.basename(metas[choice][0]) - core.toggle_nopub(target) + action = core.toggle_nopub(target) redraw(prompt) - print("setting {entry}".format(entry=target)) + #print("{action} {entry}".format(action=action, entry=target)) - return set_nopubs(metas, entries, prompt) + return list_nopubs(user) else: redraw()