consolidate variables in config module
This commit is contained in:
		
							父節點
							
								
									e910ce5518
								
							
						
					
					
						當前提交
						ab17642361
					
				
							
								
								
									
										82
									
								
								ttbp/config/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								ttbp/config/__init__.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,82 @@
 | 
			
		||||
from __future__ import absolute_import
 | 
			
		||||
import os
 | 
			
		||||
 | 
			
		||||
from . import util
 | 
			
		||||
 | 
			
		||||
## System config
 | 
			
		||||
 | 
			
		||||
# We refer to some package files (ie .css stuff), so we save a reference to the
 | 
			
		||||
# path.
 | 
			
		||||
INSTALL_PATH = dirname(sys.modules['ttbp'].__file__)
 | 
			
		||||
 | 
			
		||||
# We use this to store any persisted, global state.
 | 
			
		||||
VAR = '/var/global/ttbp'
 | 
			
		||||
VAR_WWW = os.path.join(VAR, 'www')
 | 
			
		||||
 | 
			
		||||
if not os.path.isdir('/var/global'):
 | 
			
		||||
    raise Exception('bad system state: /var/global does not exist.')
 | 
			
		||||
 | 
			
		||||
if not os.path.isdir(VAR):
 | 
			
		||||
    os.mkdir(VAR)
 | 
			
		||||
 | 
			
		||||
if not os.path.isdir(VAR_WWW):
 | 
			
		||||
    os.mkdir(VAR_WWW)
 | 
			
		||||
 | 
			
		||||
LIVE = 'https://tilde.town/~'
 | 
			
		||||
FEEDBOX = "endorphant@tilde.town"
 | 
			
		||||
USERFILE = os.path.join(VAR, "users.txt")
 | 
			
		||||
GRAFF_DIR = os.path.join(VAR, "graffiti")
 | 
			
		||||
WALL = os.path.join(GRAFF_DIR, "wall.txt")
 | 
			
		||||
WALL_LOCK = os.path.join(GRAFF_DIR, ".lock")
 | 
			
		||||
 | 
			
		||||
## Defaults
 | 
			
		||||
 | 
			
		||||
DEFAULT_HEADER = '''
 | 
			
		||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
 | 
			
		||||
<html>
 | 
			
		||||
  <head>
 | 
			
		||||
    <title>$USER on TTBP</title>
 | 
			
		||||
    <link rel="stylesheet" href="style.css" />
 | 
			
		||||
  </head>
 | 
			
		||||
  <body>
 | 
			
		||||
    <div id="meta">
 | 
			
		||||
      <h1><a href="#">~$USER</a>@<a href="/~endorphant/ttbp">TTBP</a></h1>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <div id="tlogs">
 | 
			
		||||
'''.ltrim()
 | 
			
		||||
 | 
			
		||||
DEFAULT_FOOTER = '''
 | 
			
		||||
    </div>
 | 
			
		||||
  </body>
 | 
			
		||||
</html>
 | 
			
		||||
'''.ltrim()
 | 
			
		||||
 | 
			
		||||
with open(os.path.join(INSTALL_PATH, 'config', 'defaults', 'style.css')) as f:
 | 
			
		||||
    DEFAULT_STYLE = f.read()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## User config
 | 
			
		||||
 | 
			
		||||
USER = os.path.basename(os.path.expanduser('~'))
 | 
			
		||||
USER_HOME = os.path.expanduser('~')
 | 
			
		||||
PATH = os.path.join(USER_HOME, '.ttbp')
 | 
			
		||||
PUBLIC = os.path.join(USER_HOME, 'public_html')
 | 
			
		||||
WWW = os.path.join(PATH, 'www')
 | 
			
		||||
USER_CONFIG = os.path.join(PATH, 'config')
 | 
			
		||||
TTBPRC = os.path.join(USER_CONFIG, 'ttbprc')
 | 
			
		||||
USER_DATA = os.path.join(PATH, 'entries')
 | 
			
		||||
NOPUB = os.path.join(USER_CONFIG, "nopub")
 | 
			
		||||
 | 
			
		||||
## UI
 | 
			
		||||
 | 
			
		||||
BANNER = '''
 | 
			
		||||
__________________________________________________________
 | 
			
		||||
|                                                          |
 | 
			
		||||
|  the tilde.town                                          |
 | 
			
		||||
|  ____ ____ ____ _    ____    ____ _  _ ____ _ _  _ ____  |
 | 
			
		||||
|  |___ |___ |___ |    [__     |___ |\ | | __ | |\ | |___  |
 | 
			
		||||
|  |    |___ |___ |___ ___]    |___ | \| |__] | | \| |___  |
 | 
			
		||||
|                               ver 0.10.0 (almost stable) |
 | 
			
		||||
|__________________________________________________________|
 | 
			
		||||
'''.ltrim()
 | 
			
		||||
@ -1,8 +0,0 @@
 | 
			
		||||
 __________________________________________________________
 | 
			
		||||
|                                                          |
 | 
			
		||||
|  the tilde.town                                          |
 | 
			
		||||
|  ____ ____ ____ _    ____    ____ _  _ ____ _ _  _ ____  |
 | 
			
		||||
|  |___ |___ |___ |    [__     |___ |\ | | __ | |\ | |___  |
 | 
			
		||||
|  |    |___ |___ |___ ___]    |___ | \| |__] | | \| |___  |
 | 
			
		||||
|                               ver 0.9.2 (almost stable)  |
 | 
			
		||||
|__________________________________________________________|
 | 
			
		||||
							
								
								
									
										45
									
								
								ttbp/core.py
									
									
									
									
									
								
							
							
						
						
									
										45
									
								
								ttbp/core.py
									
									
									
									
									
								
							@ -39,19 +39,10 @@ import re
 | 
			
		||||
import mistune
 | 
			
		||||
import json
 | 
			
		||||
 | 
			
		||||
import chatter
 | 
			
		||||
from . import chatter
 | 
			
		||||
from . import config
 | 
			
		||||
 | 
			
		||||
SOURCE = os.path.join("/home", "endorphant", "projects", "ttbp", "bin")
 | 
			
		||||
USER = os.path.basename(os.path.expanduser("~"))
 | 
			
		||||
PATH = os.path.join("/home", USER, ".ttbp")
 | 
			
		||||
 | 
			
		||||
LIVE = "http://tilde.town/~"
 | 
			
		||||
WWW = os.path.join(PATH, "www")
 | 
			
		||||
CONFIG = os.path.join(PATH, "config")
 | 
			
		||||
DATA = os.path.join(PATH, "entries")
 | 
			
		||||
FEED = os.path.join(SOURCE, "www", "index.html")
 | 
			
		||||
DOCS = os.path.join(SOURCE, "www", "help.html")
 | 
			
		||||
NOPUB = os.path.join(CONFIG, "nopub")
 | 
			
		||||
FEED = os.path.join(config.VAR_WWW, "index.html")
 | 
			
		||||
SETTINGS = {}
 | 
			
		||||
 | 
			
		||||
HEADER = ""
 | 
			
		||||
@ -67,8 +58,8 @@ def load(ttbprc={}):
 | 
			
		||||
    global FOOTER
 | 
			
		||||
    global SETTINGS
 | 
			
		||||
 | 
			
		||||
    HEADER = open(os.path.join(CONFIG, "header.txt")).read()
 | 
			
		||||
    FOOTER = open(os.path.join(CONFIG, "footer.txt")).read()
 | 
			
		||||
    HEADER = open(os.path.join(config.USER_CONFIG, "header.txt")).read()
 | 
			
		||||
    FOOTER = open(os.path.join(config.USER_CONFIG, "footer.txt")).read()
 | 
			
		||||
    SETTINGS = ttbprc
 | 
			
		||||
 | 
			
		||||
    load_files()
 | 
			
		||||
@ -94,13 +85,13 @@ def load_files():
 | 
			
		||||
 | 
			
		||||
    FILES = []
 | 
			
		||||
 | 
			
		||||
    for filename in os.listdir(DATA):
 | 
			
		||||
    for filename in os.listdir(config.USER_DATA):
 | 
			
		||||
        if nopub(filename):
 | 
			
		||||
            link = os.path.join(WWW, os.path.splitext(os.path.basename(filename))[0]+".html")
 | 
			
		||||
            link = os.path.join(config.WWW, os.path.splitext(os.path.basename(filename))[0]+".html")
 | 
			
		||||
            if os.path.exists(link):
 | 
			
		||||
                subprocess.call(["rm", link])
 | 
			
		||||
            continue
 | 
			
		||||
        filename = os.path.join(DATA, filename)
 | 
			
		||||
        filename = os.path.join(config.USER_DATA, filename)
 | 
			
		||||
        if os.path.isfile(filename) and valid(filename):
 | 
			
		||||
            FILES.append(filename)
 | 
			
		||||
 | 
			
		||||
@ -119,7 +110,7 @@ def write(outurl="default.html"):
 | 
			
		||||
    * calls write_page() on each file to make permalinks
 | 
			
		||||
    '''
 | 
			
		||||
 | 
			
		||||
    outfile = open(os.path.join(WWW, outurl), "w")
 | 
			
		||||
    outfile = open(os.path.join(config.WWW, outurl), "w")
 | 
			
		||||
 | 
			
		||||
    outfile.write("<!--generated by the tilde.town blogging platform on "+time.strftime("%d %B %y")+"\nhttp://tilde.town/~endorphant/ttbp/-->\n\n")
 | 
			
		||||
 | 
			
		||||
@ -140,7 +131,7 @@ def write(outurl="default.html"):
 | 
			
		||||
 | 
			
		||||
    outfile.close()
 | 
			
		||||
 | 
			
		||||
    return os.path.join(LIVE+USER,os.path.basename(os.path.realpath(WWW)),outurl)
 | 
			
		||||
    return os.path.join(config.LIVE+config.USER,os.path.basename(os.path.realpath(config.WWW)),outurl)
 | 
			
		||||
 | 
			
		||||
def write_page(filename):
 | 
			
		||||
    '''
 | 
			
		||||
@ -150,7 +141,7 @@ def write_page(filename):
 | 
			
		||||
    url
 | 
			
		||||
    '''
 | 
			
		||||
 | 
			
		||||
    outurl = os.path.join(WWW, "".join(parse_date(filename))+".html")
 | 
			
		||||
    outurl = os.path.join(config.WWW, "".join(parse_date(filename))+".html")
 | 
			
		||||
    outfile = open(outurl, "w")
 | 
			
		||||
 | 
			
		||||
    outfile.write("<!--generated by the tilde.town blogging platform on "+time.strftime("%d %B %y")+"\nhttp://tilde.town/~endorphant/ttbp/-->\n\n")
 | 
			
		||||
@ -190,7 +181,7 @@ def write_entry(filename):
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    raw = []
 | 
			
		||||
    rawfile = open(os.path.join(DATA, filename), "r")
 | 
			
		||||
    rawfile = open(os.path.join(config.USER_DATA, filename), "r")
 | 
			
		||||
 | 
			
		||||
    for line in rawfile:
 | 
			
		||||
        raw.append(line)
 | 
			
		||||
@ -244,7 +235,7 @@ def write_global_feed(blogList):
 | 
			
		||||
    ## docs
 | 
			
		||||
    outfile.write("""\
 | 
			
		||||
        <div class="docs">""")
 | 
			
		||||
    outfile.write(mistune.markdown(open(os.path.join(SOURCE, "..", "README.md"), "r").read()))
 | 
			
		||||
    outfile.write(mistune.markdown(open(os.path.join(config.INSTALL_PATH, "..", "README.md"), "r").read()))
 | 
			
		||||
    outfile.write("""\
 | 
			
		||||
        </div>""")
 | 
			
		||||
 | 
			
		||||
@ -354,14 +345,14 @@ def find_ttbps():
 | 
			
		||||
 | 
			
		||||
    return users
 | 
			
		||||
 | 
			
		||||
def publishing(username = USER):
 | 
			
		||||
def publishing(username=config.USER):
 | 
			
		||||
    '''
 | 
			
		||||
    checks .ttbprc for whether or not user opted for www publishing
 | 
			
		||||
    '''
 | 
			
		||||
 | 
			
		||||
    ttbprc = {}
 | 
			
		||||
 | 
			
		||||
    if username == USER:
 | 
			
		||||
    if username == config.USER:
 | 
			
		||||
        ttbprc = SETTINGS
 | 
			
		||||
 | 
			
		||||
    else:
 | 
			
		||||
@ -384,7 +375,7 @@ def www_neighbors():
 | 
			
		||||
 | 
			
		||||
        url = ""
 | 
			
		||||
        if userRC["publish dir"]:
 | 
			
		||||
            url = LIVE+user+"/"+userRC["publish dir"]
 | 
			
		||||
            url = config.LIVE+user+"/"+userRC["publish dir"]
 | 
			
		||||
 | 
			
		||||
        lastfile = ""
 | 
			
		||||
        files = os.listdir(os.path.join("/home", user, ".ttbp", "entries"))
 | 
			
		||||
@ -418,8 +409,8 @@ def nopub(filename):
 | 
			
		||||
 | 
			
		||||
    exclude = []
 | 
			
		||||
 | 
			
		||||
    if os.path.isfile(NOPUB):
 | 
			
		||||
        for line in open(NOPUB, "r"):
 | 
			
		||||
    if os.path.isfile(config.NOPUB):
 | 
			
		||||
        for line in open(config.NOPUB, "r"):
 | 
			
		||||
            exclude.append(line.rstrip())
 | 
			
		||||
 | 
			
		||||
    return os.path.basename(filename) in exclude
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										150
									
								
								ttbp/ttbp.py
									
									
									
									
									
								
							
							
						
						
									
										150
									
								
								ttbp/ttbp.py
									
									
									
									
									
								
							@ -44,6 +44,7 @@ import re
 | 
			
		||||
 | 
			
		||||
import inflect
 | 
			
		||||
 | 
			
		||||
from . import config
 | 
			
		||||
from . import core
 | 
			
		||||
from . import chatter
 | 
			
		||||
from . import util
 | 
			
		||||
@ -51,33 +52,16 @@ from . import util
 | 
			
		||||
__version__ = "0.10.0"
 | 
			
		||||
__author__ = "endorphant <endorphant@tilde.town)"
 | 
			
		||||
 | 
			
		||||
## system globals
 | 
			
		||||
SOURCE = os.path.join("/home", "endorphant", "projects", "ttbp", "bin")
 | 
			
		||||
LIVE = "http://tilde.town/~"
 | 
			
		||||
FEEDBACK = os.path.join("/home", "endorphant", "ttbp-mail")
 | 
			
		||||
FEEDBOX = "endorphant@tilde.town"
 | 
			
		||||
USERFILE = os.path.join("/home", "endorphant", "projects", "ttbp", "users.txt")
 | 
			
		||||
GRAFF_DIR = os.path.join(SOURCE, "graffiti")
 | 
			
		||||
WALL = os.path.join(GRAFF_DIR, "wall.txt")
 | 
			
		||||
WALL_LOCK = os.path.join(GRAFF_DIR, ".lock")
 | 
			
		||||
 | 
			
		||||
p = inflect.engine()
 | 
			
		||||
 | 
			
		||||
## user globals
 | 
			
		||||
USER = os.path.basename(os.path.expanduser("~"))
 | 
			
		||||
PATH = os.path.join("/home", USER, ".ttbp")
 | 
			
		||||
PUBLIC = os.path.join("/home", USER, "public_html")
 | 
			
		||||
WWW = os.path.join(PATH, "www")
 | 
			
		||||
CONFIG = os.path.join(PATH, "config")
 | 
			
		||||
TTBPRC = os.path.join(CONFIG, "ttbprc")
 | 
			
		||||
DATA = os.path.join(PATH, "entries")
 | 
			
		||||
SETTINGS = {
 | 
			
		||||
        "editor": "none",
 | 
			
		||||
        "publish dir": False
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
## ui globals
 | 
			
		||||
BANNER = util.attach_rainbow()+open(os.path.join(SOURCE, "config", "banner.txt")).read()+util.attach_reset()
 | 
			
		||||
BANNER = util.attach_rainbow() + config.BANNER + util.attach_reset()
 | 
			
		||||
SPACER = "\n"
 | 
			
		||||
INVALID = "please pick a number from the list of options!\n\n"
 | 
			
		||||
DUST = "sorry about the dust, but this part is still under construction. check back later!\n\n"
 | 
			
		||||
@ -231,14 +215,14 @@ def check_init():
 | 
			
		||||
 | 
			
		||||
    print("\n\n")
 | 
			
		||||
    if os.path.exists(os.path.join(os.path.expanduser("~"),".ttbp")):
 | 
			
		||||
        print(chatter.say("greet")+", "+USER+".\n")
 | 
			
		||||
        print(chatter.say("greet")+", "+config.USER+".\n")
 | 
			
		||||
 | 
			
		||||
        '''
 | 
			
		||||
        ## ttbprc validation
 | 
			
		||||
        while not os.path.isfile(TTBPRC):
 | 
			
		||||
        while not os.path.isfile(config.TTBPRC):
 | 
			
		||||
            setup_repair()
 | 
			
		||||
        try:
 | 
			
		||||
            SETTINGS = json.load(open(TTBPRC))
 | 
			
		||||
            SETTINGS = json.load(open(config.TTBPRC))
 | 
			
		||||
        except ValueError:
 | 
			
		||||
            setup_repair()
 | 
			
		||||
        '''
 | 
			
		||||
@ -281,28 +265,30 @@ press <enter> to begin, or <ctrl-c> to get out of here.
 | 
			
		||||
        quit()
 | 
			
		||||
 | 
			
		||||
    ## record user in source list
 | 
			
		||||
    users = open(USERFILE, 'a')
 | 
			
		||||
    users.write(USER+"\n")
 | 
			
		||||
    users = open(config.USERFILE, 'a')
 | 
			
		||||
    users.write(config.USER+"\n")
 | 
			
		||||
    users.close()
 | 
			
		||||
 | 
			
		||||
    ## make .ttbp directory structure
 | 
			
		||||
    subprocess.call(["mkdir", PATH])
 | 
			
		||||
    subprocess.call(["mkdir", CONFIG])
 | 
			
		||||
    subprocess.call(["mkdir", DATA])
 | 
			
		||||
    subprocess.call(["mkdir", config.PATH])
 | 
			
		||||
    subprocess.call(["mkdir", config.USER_CONFIG])
 | 
			
		||||
    subprocess.call(["mkdir", config.USER_DATA])
 | 
			
		||||
 | 
			
		||||
    versionFile = os.path.join(PATH, "version")
 | 
			
		||||
    versionFile = os.path.join(config.PATH, "version")
 | 
			
		||||
    open(versionFile, "w").write(__version__)
 | 
			
		||||
 | 
			
		||||
    ## create header file
 | 
			
		||||
    header = gen_header()
 | 
			
		||||
    headerfile = open(os.path.join(CONFIG, "header.txt"), 'w')
 | 
			
		||||
    headerfile = open(os.path.join(config.USER_CONFIG, "header.txt"), 'w')
 | 
			
		||||
    for line in header:
 | 
			
		||||
        headerfile.write(line)
 | 
			
		||||
    headerfile.close()
 | 
			
		||||
 | 
			
		||||
    ## copy footer and default stylesheet
 | 
			
		||||
    subprocess.call(["cp", os.path.join(SOURCE, "config", "defaults", "footer.txt"), CONFIG])
 | 
			
		||||
    subprocess.call(["cp", os.path.join(SOURCE, "config", "defaults", "style.css"), CONFIG])
 | 
			
		||||
    with open(os.path.join(config.USER_CONFIG, 'footer.txt', 'w')) as f:
 | 
			
		||||
        f.write(config.DEFAULT_FOOTER)
 | 
			
		||||
    with open(os.path.join(config.USER_CONFIG, 'style.css', 'w')) as f:
 | 
			
		||||
        f.write(config.DEFAULT_STYLE)
 | 
			
		||||
 | 
			
		||||
    ## run user-interactive setup and load core engine
 | 
			
		||||
    setup()
 | 
			
		||||
@ -323,12 +309,12 @@ def gen_header():
 | 
			
		||||
<html>
 | 
			
		||||
    <head>
 | 
			
		||||
        <!--- this header automatically generated by ttbp initialization on """+time.strftime("%Y-%m-%d %h:m")+""" --->
 | 
			
		||||
        <title>~"""+USER+""" on TTBP</title>
 | 
			
		||||
        <title>~"""+config.USER+""" on TTBP</title>
 | 
			
		||||
        <link rel=\"stylesheet\" href=\"style.css\" />
 | 
			
		||||
    </head>
 | 
			
		||||
    <body>
 | 
			
		||||
        <div id=\"meta\">
 | 
			
		||||
            <h1><a href=\"index.html#\">~"""+USER+"""</a>@<a href=\"/~endorphant/ttbp\">TTBP</a></h1>
 | 
			
		||||
            <h1><a href=\"index.html#\">~"""+config.USER+"""</a>@<a href=\"/~endorphant/ttbp\">TTBP</a></h1>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <!---put your custom html here-->
 | 
			
		||||
@ -347,11 +333,11 @@ def valid_setup():
 | 
			
		||||
 | 
			
		||||
    global SETTINGS
 | 
			
		||||
 | 
			
		||||
    if not os.path.isfile(TTBPRC):
 | 
			
		||||
    if not os.path.isfile(config.TTBPRC):
 | 
			
		||||
        return False
 | 
			
		||||
 | 
			
		||||
    try:
 | 
			
		||||
        SETTINGS = json.load(open(TTBPRC))
 | 
			
		||||
        SETTINGS = json.load(open(config.TTBPRC))
 | 
			
		||||
    except ValueError:
 | 
			
		||||
        return False
 | 
			
		||||
 | 
			
		||||
@ -359,10 +345,10 @@ def valid_setup():
 | 
			
		||||
        if not SETTINGS.get("publish dir"):
 | 
			
		||||
            return False
 | 
			
		||||
 | 
			
		||||
        if not os.path.exists(WWW):
 | 
			
		||||
        if not os.path.exists(config.WWW):
 | 
			
		||||
            return False
 | 
			
		||||
 | 
			
		||||
        if not os.path.exists(os.path.join(WWW, SETTINGS.get("pubish dir"))):
 | 
			
		||||
        if not os.path.exists(os.path.join(config.WWW, SETTINGS.get("pubish dir"))):
 | 
			
		||||
            return False
 | 
			
		||||
 | 
			
		||||
    return True
 | 
			
		||||
@ -398,7 +384,7 @@ def setup():
 | 
			
		||||
 | 
			
		||||
    print("\n\ttext editor:\t" +SETTINGS.get("editor"))
 | 
			
		||||
    if core.publishing():
 | 
			
		||||
        print("\tpublish dir:\t" +os.path.join(PUBLIC, str(SETTINGS.get("publish dir"))))
 | 
			
		||||
        print("\tpublish dir:\t" +os.path.join(config.PUBLIC, str(SETTINGS.get("publish dir"))))
 | 
			
		||||
    print("\tpubishing:\t"+str(SETTINGS.get("publishing"))+"\n")
 | 
			
		||||
 | 
			
		||||
    # editor selection
 | 
			
		||||
@ -412,10 +398,10 @@ def setup():
 | 
			
		||||
    redraw("blog publishing: "+str(core.publishing()))
 | 
			
		||||
 | 
			
		||||
    if core.publishing():
 | 
			
		||||
        print("publish directory: ~"+USER+"/public_html/"+SETTINGS.get("publish dir"))
 | 
			
		||||
        print("publish directory: ~"+config.USER+"/public_html/"+SETTINGS.get("publish dir"))
 | 
			
		||||
 | 
			
		||||
    # save settings
 | 
			
		||||
    ttbprc = open(TTBPRC, "w")
 | 
			
		||||
    ttbprc = open(config.TTBPRC, "w")
 | 
			
		||||
    ttbprc.write(json.dumps(SETTINGS, sort_keys=True, indent=2, separators=(',',':')))
 | 
			
		||||
    ttbprc.close()
 | 
			
		||||
 | 
			
		||||
@ -454,7 +440,7 @@ def main_menu():
 | 
			
		||||
    if choice == '0':
 | 
			
		||||
        redraw()
 | 
			
		||||
        today = time.strftime("%Y%m%d")
 | 
			
		||||
        write_entry(os.path.join(DATA, today+".txt"))
 | 
			
		||||
        write_entry(os.path.join(config.USER_DATA, today+".txt"))
 | 
			
		||||
        core.www_neighbors()
 | 
			
		||||
    elif choice == '1':
 | 
			
		||||
        if core.publishing():
 | 
			
		||||
@ -465,7 +451,7 @@ def main_menu():
 | 
			
		||||
            core.write("index.html")
 | 
			
		||||
        else:
 | 
			
		||||
            redraw("your recorded feels, listed by date:")
 | 
			
		||||
            view_feels(USER)
 | 
			
		||||
            view_feels(config.USER)
 | 
			
		||||
    elif choice == '2':
 | 
			
		||||
        users = core.find_ttbps()
 | 
			
		||||
        prompt = "the following "+p.no("user", len(users))+" "+p.plural("is", len(users))+" recording feels on ttbp:"
 | 
			
		||||
@ -490,7 +476,7 @@ def main_menu():
 | 
			
		||||
        redraw()
 | 
			
		||||
        show_credits()
 | 
			
		||||
    elif choice == '8':
 | 
			
		||||
        subprocess.call(["lynx", os.path.join(SOURCE, "..", "README.html")])
 | 
			
		||||
        subprocess.call(["lynx", os.path.join(config.INSTALL_PATH, "..", "README.html")])
 | 
			
		||||
        redraw()
 | 
			
		||||
    elif choice in QUITS:
 | 
			
		||||
        return stop()
 | 
			
		||||
@ -543,7 +529,7 @@ def review_menu(intro=""):
 | 
			
		||||
    if choice is not False:
 | 
			
		||||
        if choice == 0:
 | 
			
		||||
            redraw("your recorded feels, listed by date:")
 | 
			
		||||
            view_feels(USER)
 | 
			
		||||
            view_feels(config.USER)
 | 
			
		||||
        elif choice == 1:
 | 
			
		||||
            redraw("here's your current nopub status:")
 | 
			
		||||
            set_nopubs()
 | 
			
		||||
@ -570,7 +556,7 @@ def view_neighbors(users, prompt):
 | 
			
		||||
        ## retrieve publishing url, if it exists
 | 
			
		||||
        url="\t\t\t"
 | 
			
		||||
        if userRC.get("publish dir"):
 | 
			
		||||
            url = LIVE+user+"/"+userRC.get("publish dir")
 | 
			
		||||
            url = config.LIVE+user+"/"+userRC.get("publish dir")
 | 
			
		||||
 | 
			
		||||
        ## find last entry
 | 
			
		||||
        files = os.listdir(os.path.join("/home", user, ".ttbp", "entries"))
 | 
			
		||||
@ -630,8 +616,8 @@ def view_feels(townie):
 | 
			
		||||
    filenames = []
 | 
			
		||||
    showpub = False
 | 
			
		||||
 | 
			
		||||
    if townie == USER:
 | 
			
		||||
        entryDir = DATA
 | 
			
		||||
    if townie == config.USER:
 | 
			
		||||
        entryDir = config.USER_DATA
 | 
			
		||||
        owner = "your"
 | 
			
		||||
        if core.publishing():
 | 
			
		||||
            showpub = True
 | 
			
		||||
@ -685,7 +671,7 @@ thanks to everyone who reads, listens, writes, and feels.\
 | 
			
		||||
 | 
			
		||||
## handlers
 | 
			
		||||
 | 
			
		||||
def write_entry(entry=os.path.join(DATA, "test.txt")):
 | 
			
		||||
def write_entry(entry=os.path.join(config.USER_DATA, "test.txt")):
 | 
			
		||||
    '''
 | 
			
		||||
    main feels-recording handler
 | 
			
		||||
    '''
 | 
			
		||||
@ -715,7 +701,7 @@ editor.
 | 
			
		||||
    if core.publishing():
 | 
			
		||||
        core.load_files()
 | 
			
		||||
        core.write("index.html")
 | 
			
		||||
        left = "posted to "+LIVE+USER+"/"+str(SETTINGS.get("publish dir"))+"/index.html\n\n>"
 | 
			
		||||
        left = "posted to "+config.LIVE+config.USER+"/"+str(SETTINGS.get("publish dir"))+"/index.html\n\n>"
 | 
			
		||||
    redraw(left + " thanks for sharing your feels!")
 | 
			
		||||
 | 
			
		||||
    return
 | 
			
		||||
@ -745,8 +731,8 @@ def send_feedback(entered, subject="none"):
 | 
			
		||||
    if message:
 | 
			
		||||
        id = "#"+util.genID(3)
 | 
			
		||||
        mail = MIMEText(message)
 | 
			
		||||
        mail['To'] = FEEDBOX
 | 
			
		||||
        mail['From'] = USER+"@tilde.town"
 | 
			
		||||
        mail['To'] = config.FEEDBOX
 | 
			
		||||
        mail['From'] = config.USER+"@tilde.town"
 | 
			
		||||
        mail['Subject'] = " ".join(["[ttbp]", subject, id])
 | 
			
		||||
        m = os.popen("/usr/sbin/sendmail -t -oi", 'w')
 | 
			
		||||
        m.write(mail.as_string())
 | 
			
		||||
@ -838,10 +824,10 @@ def graffiti_handler():
 | 
			
		||||
    Main graffiti handler.
 | 
			
		||||
    '''
 | 
			
		||||
 | 
			
		||||
    if os.path.isfile(WALL_LOCK):
 | 
			
		||||
    if os.path.isfile(config.WALL_LOCK):
 | 
			
		||||
        redraw("sorry, "+chatter.say("friend")+", but someone's there right now. try again in a few!")
 | 
			
		||||
    else:
 | 
			
		||||
        subprocess.call(["touch", WALL_LOCK])
 | 
			
		||||
        subprocess.call(["touch", config.WALL_LOCK])
 | 
			
		||||
        redraw()
 | 
			
		||||
        print("""\
 | 
			
		||||
the graffiti wall is a world-writeable text file. anyone can
 | 
			
		||||
@ -855,8 +841,8 @@ your changes by exiting without saving.
 | 
			
		||||
 | 
			
		||||
""")
 | 
			
		||||
        raw_input("press <enter> to visit the wall\n\n")
 | 
			
		||||
        subprocess.call([SETTINGS.get("editor"), WALL])
 | 
			
		||||
        subprocess.call(["rm", WALL_LOCK])
 | 
			
		||||
        subprocess.call([SETTINGS.get("editor"), config.WALL])
 | 
			
		||||
        subprocess.call(["rm", config.WALL_LOCK])
 | 
			
		||||
        redraw("thanks for visiting the graffiti wall!")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -886,14 +872,14 @@ def select_publish_dir():
 | 
			
		||||
    republish = False
 | 
			
		||||
 | 
			
		||||
    if current:
 | 
			
		||||
        print("\ncurrent publish dir:\t"+os.path.join(PUBLIC, SETTINGS["publish dir"]))
 | 
			
		||||
        print("\ncurrent publish dir:\t"+os.path.join(config.PUBLIC, SETTINGS["publish dir"]))
 | 
			
		||||
        republish = True
 | 
			
		||||
 | 
			
		||||
    choice = raw_input("\nwhere do you want your blog published? (leave blank to use default \"blog\") ")
 | 
			
		||||
    if not choice:
 | 
			
		||||
        choice = "blog"
 | 
			
		||||
 | 
			
		||||
    publishDir = os.path.join(PUBLIC, choice)
 | 
			
		||||
    publishDir = os.path.join(config.PUBLIC, choice)
 | 
			
		||||
    while os.path.exists(publishDir):
 | 
			
		||||
        second = raw_input("\n"+publishDir+"""\
 | 
			
		||||
 already exists!
 | 
			
		||||
@ -907,7 +893,7 @@ otherwise, pick another location: """)
 | 
			
		||||
        if second == "":
 | 
			
		||||
            break
 | 
			
		||||
        choice = second
 | 
			
		||||
        publishDir = os.path.join(PUBLIC, choice)
 | 
			
		||||
        publishDir = os.path.join(config.PUBLIC, choice)
 | 
			
		||||
 | 
			
		||||
    return choice
 | 
			
		||||
 | 
			
		||||
@ -939,9 +925,9 @@ def unpublish():
 | 
			
		||||
    remove user's published directory, if it exists. this should only remove the symlink in public_html.
 | 
			
		||||
    '''
 | 
			
		||||
 | 
			
		||||
    dir = SETTINGS.get("publish dir")
 | 
			
		||||
    directory = SETTINGS.get("publish dir")
 | 
			
		||||
    if dir:
 | 
			
		||||
        publishDir = os.path.join(PUBLIC, dir)
 | 
			
		||||
        publishDir = os.path.join(config.PUBLIC, directory)
 | 
			
		||||
        subprocess.call(["rm", publishDir])
 | 
			
		||||
 | 
			
		||||
def update_publishing():
 | 
			
		||||
@ -956,7 +942,7 @@ def update_publishing():
 | 
			
		||||
        newDir = select_publish_dir()
 | 
			
		||||
        SETTINGS.update({"publish dir": newDir})
 | 
			
		||||
        if oldDir:
 | 
			
		||||
            subprocess.call(["rm", os.path.join(PUBLIC, oldDir)])
 | 
			
		||||
            subprocess.call(["rm", os.path.join(config.PUBLIC, oldDir)])
 | 
			
		||||
        make_publish_dir(newDir)
 | 
			
		||||
        core.load_files()
 | 
			
		||||
        core.write("index.html")
 | 
			
		||||
@ -971,21 +957,21 @@ def make_publish_dir(dir):
 | 
			
		||||
    setup helper to create publishing directory
 | 
			
		||||
    '''
 | 
			
		||||
 | 
			
		||||
    if not os.path.exists(WWW):
 | 
			
		||||
        subprocess.call(["mkdir", WWW])
 | 
			
		||||
        subprocess.call(["ln", "-s", os.path.join(CONFIG, "style.css"), os.path.join(WWW, "style.css")])
 | 
			
		||||
        subprocess.call(["touch", os.path.join(WWW, "index.html")])
 | 
			
		||||
        index = open(os.path.join(WWW, "index.html"), "w")
 | 
			
		||||
    if not os.path.exists(config.WWW):
 | 
			
		||||
        subprocess.call(["mkdir", config.WWW])
 | 
			
		||||
        subprocess.call(["ln", "-s", os.path.join(config.USER_CONFIG, "style.css"), os.path.join(config.WWW, "style.css")])
 | 
			
		||||
        subprocess.call(["touch", os.path.join(config.WWW, "index.html")])
 | 
			
		||||
        index = open(os.path.join(config.WWW, "index.html"), "w")
 | 
			
		||||
        index.write("<h1>ttbp blog placeholder</h1>")
 | 
			
		||||
        index.close()
 | 
			
		||||
 | 
			
		||||
    publishDir = os.path.join(PUBLIC, dir)
 | 
			
		||||
    publishDir = os.path.join(config.PUBLIC, dir)
 | 
			
		||||
    if os.path.exists(publishDir):
 | 
			
		||||
        subprocess.call(["rm", publishDir])
 | 
			
		||||
 | 
			
		||||
    subprocess.call(["ln", "-s", WWW, publishDir])
 | 
			
		||||
    subprocess.call(["ln", "-s", config.WWW, publishDir])
 | 
			
		||||
 | 
			
		||||
    print("\n\tpublishing to "+LIVE+USER+"/"+SETTINGS.get("publish dir")+"/\n\n")
 | 
			
		||||
    print("\n\tpublishing to "+config.LIVE+config.USER+"/"+SETTINGS.get("publish dir")+"/\n\n")
 | 
			
		||||
 | 
			
		||||
##### PATCHING UTILITIES
 | 
			
		||||
 | 
			
		||||
@ -994,7 +980,7 @@ def build_mismatch():
 | 
			
		||||
    checks to see if user's last run build is the same as this session
 | 
			
		||||
    '''
 | 
			
		||||
 | 
			
		||||
    versionFile = os.path.join(PATH, "version")
 | 
			
		||||
    versionFile = os.path.join(config.PATH, "version")
 | 
			
		||||
    if not os.path.exists(versionFile):
 | 
			
		||||
        return False
 | 
			
		||||
 | 
			
		||||
@ -1020,7 +1006,7 @@ def switch_build(ver):
 | 
			
		||||
    print("\nswitching you over to the "+build+" version...\n")
 | 
			
		||||
    time.sleep(1)
 | 
			
		||||
    print("...")
 | 
			
		||||
    versionFile = os.path.join(PATH, "version")
 | 
			
		||||
    versionFile = os.path.join(config.PATH, "version")
 | 
			
		||||
    open(versionFile, "w").write(ver)
 | 
			
		||||
    time.sleep(1)
 | 
			
		||||
    #print("\nall good!\n")
 | 
			
		||||
@ -1030,7 +1016,7 @@ def updated():
 | 
			
		||||
    checks to see if current user is up to the same version as system
 | 
			
		||||
    '''
 | 
			
		||||
 | 
			
		||||
    versionFile = os.path.join(PATH, "version")
 | 
			
		||||
    versionFile = os.path.join(config.PATH, "version")
 | 
			
		||||
    if not os.path.exists(versionFile):
 | 
			
		||||
        return False
 | 
			
		||||
 | 
			
		||||
@ -1048,7 +1034,7 @@ def update_version():
 | 
			
		||||
 | 
			
		||||
    global SETTINGS
 | 
			
		||||
 | 
			
		||||
    versionFile = os.path.join(PATH, "version")
 | 
			
		||||
    versionFile = os.path.join(config.PATH, "version")
 | 
			
		||||
 | 
			
		||||
    print("ttbp had some updates!")
 | 
			
		||||
 | 
			
		||||
@ -1065,22 +1051,22 @@ def update_version():
 | 
			
		||||
 | 
			
		||||
        # change style.css location
 | 
			
		||||
        if core.publishing():
 | 
			
		||||
            if os.path.isfile(os.path.join(WWW, "style.css")):
 | 
			
		||||
                subprocess.call(["mv", os.path.join(WWW, "style.css"), CONFIG])
 | 
			
		||||
            if os.path.isfile(os.path.join(config.WWW, "style.css")):
 | 
			
		||||
                subprocess.call(["mv", os.path.join(config.WWW, "style.css"), config.USER_CONFIG])
 | 
			
		||||
 | 
			
		||||
            # change www symlink
 | 
			
		||||
            if os.path.exists(WWW):
 | 
			
		||||
                subprocess.call(["rm", WWW])
 | 
			
		||||
            if os.path.exists(config.WWW):
 | 
			
		||||
                subprocess.call(["rm", config.WWW])
 | 
			
		||||
 | 
			
		||||
            subprocess.call(["mkdir", WWW])
 | 
			
		||||
            subprocess.call(["mkdir", config.WWW])
 | 
			
		||||
 | 
			
		||||
            subprocess.call(["ln", "-s", os.path.join(CONFIG, "style.css"), os.path.join(WWW, "style.css")])
 | 
			
		||||
            subprocess.call(["ln", "-s", os.path.join(config.USER_CONFIG, "style.css"), os.path.join(config.WWW, "style.css")])
 | 
			
		||||
 | 
			
		||||
            publishDir = os.path.join(PUBLIC, SETTINGS.get("publish dir"))
 | 
			
		||||
            publishDir = os.path.join(config.PUBLIC, SETTINGS.get("publish dir"))
 | 
			
		||||
            if os.path.exists(publishDir):
 | 
			
		||||
                subprocess.call(["rm", "-rf", publishDir])
 | 
			
		||||
 | 
			
		||||
            subprocess.call(["ln", "-s", WWW, os.path.join(PUBLIC, SETTINGS.get("publish dir"))])
 | 
			
		||||
            subprocess.call(["ln", "-s", config.WWW, os.path.join(config.PUBLIC, SETTINGS.get("publish dir"))])
 | 
			
		||||
 | 
			
		||||
            # repopulate html files
 | 
			
		||||
            core.load_files()
 | 
			
		||||
@ -1090,7 +1076,7 @@ def update_version():
 | 
			
		||||
        print("\nnew feature!\n")
 | 
			
		||||
        SETTINGS.update({"publishing":select_publishing()})
 | 
			
		||||
        update_publishing()
 | 
			
		||||
        ttbprc = open(TTBPRC, "w")
 | 
			
		||||
        ttbprc = open(config.TTBPRC, "w")
 | 
			
		||||
        ttbprc.write(json.dumps(SETTINGS, sort_keys=True, indent=2, separators=(',',':')))
 | 
			
		||||
        ttbprc.close()
 | 
			
		||||
 | 
			
		||||
@ -1102,7 +1088,7 @@ def update_version():
 | 
			
		||||
            print("\nresetting your publishing settings...\n")
 | 
			
		||||
            SETTINGS.update({"publishing":select_publishing()})
 | 
			
		||||
            update_publishing()
 | 
			
		||||
            ttbprc = open(TTBPRC, "w")
 | 
			
		||||
            ttbprc = open(config.TTBPRC, "w")
 | 
			
		||||
            ttbprc.write(json.dumps(SETTINGS, sort_keys=True, indent=2, separators=(',',':')))
 | 
			
		||||
            ttbprc.close()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -23,11 +23,11 @@ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 | 
			
		||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 | 
			
		||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
			
		||||
'''
 | 
			
		||||
 | 
			
		||||
import inflect
 | 
			
		||||
import time
 | 
			
		||||
import random
 | 
			
		||||
import time
 | 
			
		||||
 | 
			
		||||
import colorama
 | 
			
		||||
import inflect
 | 
			
		||||
 | 
			
		||||
## misc globals
 | 
			
		||||
BACKS = ['back', 'b', 'q']
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user