Example #1
0
def article(config, slug):
    args = config['blog'][slug].copy()
    args.update(config['controller'])
    args['blurb'] = render_article(config, slug, args)['blurb']
    args['PAGE_TITLE'] = args['title']
    args['CONTENT'] = render_file(
        Path(config['env']['var'], 'templates', 'blog', 'one.html'), args)
    return render_file(Path(config['env']['var'], 'templates', 'base.html'),
                       args)
Example #2
0
def signup_handler(response):
    username = response.get_field('username')
    password = response.get_field('password')
    bio = response.get_field('bio')

    if username:
        if response.get_field('resized_image'):
            base64blob = response.get_field('resized_image')
            print("Got resized profile photo, of %d bytes in base64" %
                  len(base64blob))
        else:
            filename, content_type, photo_blob = response.get_file('image')
            base64blob = "data:{};base64,".format(
                content_type) + base64.b64encode(photo_blob).decode('ascii')
            print("Got non-resized profile photo, of %d bytes in base64" %
                  len(base64blob))

        database_signup_handler(response, username, password, bio, base64blob)
        if database_login_handler(username, password, response):
            cookie = 'True,' + username
            response.set_secure_cookie('loggedin', cookie)
            response.redirect('/')
    else:
        rendered = render_file('pages/signup.html', {})
        response.write(rendered)
Example #3
0
def upload_handler(response):
    """Handles displaying the upload form, as well as recieving the data and
    entering it into the database."""
    if response.get_field("caption"):
        # The "username" field is not empty, so we are recieving data
        username = get_user_from_cookie(response)
        caption = response.get_field('caption')
        latitude = response.get_field('lat')
        longitude = response.get_field('long')
        if response.get_field('resized_image'):
            base64blob = response.get_field('resized_image')
            print("Got resized meme photo, of %d bytes in base64" %
                  len(base64blob))
        else:
            filename, content_type, photo_blob = response.get_file('photo')
            base64blob = "data:{};base64,".format(
                content_type) + base64.b64encode(photo_blob).decode('ascii')
            print("Got non-resized meme photo, of %d bytes in base64" %
                  len(base64blob))

        # Save to the database.
        photo_save(username, caption, latitude, longitude, base64blob)
        # Redirect to the feed, where they should see their new photo!
        response.redirect('/feed')
    else:
        # We need to display an upload form.
        variables = {'meme_of_week_img': '/static/memeOTW.jpg'}
        rendered = render_file('pages/upload.html', variables)
        response.write(rendered)
Example #4
0
def render_article(config, slug, args):
    dir = Path(config['env']['var'], 'blog', slug)
    try:
        blurb = render_file(dir.joinpath('blurb.html'), args)
    except IOError:
        blurb = render_file(dir.joinpath('blurb.md'), args)
    m = re.match('^(.*?)<hr( /)?>(.*)$', blurb, flags=re.DOTALL)
    if m is None:
        return {
            'blurb': blurb,
        }
    else:
        return {
            'blurb': m.group(1) + m.group(3),
            'summary': m.group(1),
        }
Example #5
0
def post_handler(response, i):
    dp = 'http://i0.kym-cdn.com/profiles/icons/big/000/132/880/awesome%20face%20shrug.jpg'
    rendered = render_file("pages/post.html", {
        "dp": dp,
        "meme": Meme.get_meme_from_id(i)
    })
    response.write(rendered)
Example #6
0
def main(env):
    config = {'env': env}
    config.update(read_ini(config['env']['config.ini']))
    config['controller'][
        'VAR_URL_PREFIX'] = config['controller']['URL_PREFIX'] + '/var'
    config['controller']['FULL_VAR_URL_PREFIX'] = config['controller'][
        'FULL_URL_PREFIX'] + '/var'
    config['static'] = read_ini(Path(config['env']['var'], 'staticpages.ini'))
    config['blog'] = read_ini(Path(config['env']['var'], 'blog', 'index.ini'))
    blog.augment_config(config)

    # Clear out build directory and copy var into it.
    print('Initializing', config['env']['output'])
    shutil.rmtree(config['env']['output'], ignore_errors=True)
    os.makedirs(config['env']['output'])
    shutil.copytree(config['env']['var'],
                    Path(config['env']['output'], 'var'),
                    ignore=shutil.ignore_patterns('.*'))

    # Write static pages
    for slug, values in config['static'].items():
        args = {
            'PAGE_TITLE': values['title'],
        }
        args.update(config['controller'])
        args['CONTENT'] = render_file(
            Path(config['env']['var'], 'blurbs', slug, 'blurb.html'), args)
        write(
            Path(config['env']['output'], *values['url'].split('/'),
                 'index.html'),
            render_file(Path(config['env']['var'], 'templates', 'base.html'),
                        args))

    # Write blog pages
    write(Path(config['env']['output'], 'blog', 'index.html'),
          blog.index(config))
    write(Path(config['env']['output'], 'blog', 'rss.xml'), blog.rss(config))
    all_tags = {
        tag
        for article in config['blog'].values() for tag in article['tags']
    }
    for tag in all_tags:
        write(Path(config['env']['output'], 'blog', '+' + tag, 'index.html'),
              blog.index(config, tag=tag))
    for slug, values in config['blog'].items():
        write(Path(config['env']['output'], 'blog', slug, 'index.html'),
              blog.article(config, slug))
Example #7
0
def template_example(response):
    """An unused endpoint giving a demo of the template engine."""
    variables = {
        'title': 'A template example',
        'friends': ['Bella', 'Joel', 'Jaxon', 'Owen']
    }
    rendered = render_file('pages/example_body.html', variables)
    response.write(rendered)
def credits(response):
    context = {'current_user': None}

    context['error'] = (response.get_secure_cookie('error_msg') or b'').decode()
    response.clear_cookie('error_msg')

    html = template.render_file('templates/credits.html', context)
    response.write(html)
Example #9
0
def nearby_handler(response):
    dp = 'https://www.transparenthands.org/wp-content/themes/transparenthands/images/donor-icon.png'
    photo_list = Meme.get_memes_for_category(3)
    rendered = render_file("pages/nearby.html", {
        "dp": dp,
        "photo_list": photo_list
    })
    response.write(rendered)
Example #10
0
def nearby_handler(response):
    dp = 'fixme'
    photo_list = Meme.get_memes_for_category(3)
    rendered = render_file("pages/nearby.html", {
        "dp": dp,
        "photo_list": photo_list,
    })
    response.write(rendered)
def new_story(response):
    user = response.get_secure_cookie('username')
    if user is not None:
        context = {'current_user':User.find('username', str(user, 'utf-8'))[0]}
    else:
        context = {'current_user':None}

    html = template.render_file('templates/newstory.html', context)
    response.write(html)
Example #12
0
def profile_handler(response, user):
    profile_picture = '/static/test.png'
    person = Person.get_user_by_username(user)
    if not person:
        response.write('No user found with that name')
        return

    var_dict = {'person': person}
    rendered = render_file(os.path.join('pages', 'profile.html'), var_dict)
    response.write(rendered)
Example #13
0
def index(config, *, tag=None):
    articles = []
    for slug in config['blog']:
        article = config['blog'][slug].copy()
        if tag is not None and tag not in article['tags']:
            continue
        article_args = article.copy()
        article_args.update(config['controller'])
        article.update(render_article(config, slug, article_args))
        articles.append(article)

    args = config['controller'].copy()
    if tag is None:
        args['PAGE_TITLE'] = 'Blog Index'
    else:
        args['PAGE_TITLE'] = f'Blog: {tag} Tag'
    args['articles'] = articles
    args['CONTENT'] = render_file(
        Path(config['env']['var'], 'templates', 'blog', 'index.html'), args)
    return render_file(Path(config['env']['var'], 'templates', 'base.html'),
                       args)
def register(response):
    if response.get_secure_cookie('username') is not None:
        current_user = User.find('username', str(response.get_secure_cookie('username'), 'utf-8'))[0]
    else:
        current_user = None

    context = {
        'current_user':current_user
    }

    html = template.render_file('templates/registration.html', context)
    response.write(html)
def view_story_list(response):
    user = response.get_secure_cookie('username')

    stories = Story.find('all', '')

    if user is not None:
        context = {'current_user':User.find('username', str(user, 'utf-8'))[0], 'stories':stories}
    else:
        context = {'current_user':None, 'stories':stories}

    html = template.render_file('templates/storylist.html', context)
    response.write(html)
def display_story_tree(resp, story_id):
	user = resp.get_secure_cookie('username')
	story = Story.find('id', story_id)[0]
	author = User.find('id', story.author_id)[0]
	if user is not None:
		user = User.find('username', str(user, 'utf-8'))[0]
	else:
		user = None
	try:
		resp.write(template.render_file('view_story_tree.html', {'node': create_tree(story), 'story': story, 'author': author, 'user': user}))
	except Exception as e:
		story.delete()
def view_story(response, id):
    user = response.get_secure_cookie('username')
    story = Story.find('id', id)
    author = User.find('id', story[0].author_id)

    if user is not None:
        context = {'current_user':User.find('username', str(user, 'utf-8'))[0], 'story':story[0], 'author':author[0]}
    else:
        context = {'current_user':None, 'story':story[0], 'author':author[0]}

    html = template.render_file('templates/viewingstory.html', context)
    response.write(html)
Example #18
0
def login_handler(response):
    global username, password
    username = response.get_field('username')
    password = response.get_field('password')
    if username:
        if database_login_handler(username, password, response):
            cookie = 'True,' + username
            response.set_secure_cookie('loggedin', cookie)
            response.redirect('/')
    else:
        rendered = render_file(os.path.join('pages', 'login.html'), {})
        response.write(rendered)
def index(response):
    username = response.get_secure_cookie('username')
    if username is not None:
        context = {'current_user': User.find('username', str(username, 'utf-8'))[0]}
    else:
        context = {'current_user': None}

    context['error'] = (response.get_secure_cookie('error_msg') or b'').decode()
    response.clear_cookie('error_msg')

    html = template.render_file('templates/index.html', context)
    response.write(html)
def search_results(response):
    context = defaultdict()

    user = response.get_secure_cookie('username')
    stories = Story.find('all', '')

    try:
        context.update({
            'current_user': User.find('username', str(user, 'utf-8'))[0]})
    except TypeError:
        context.update({
            'current_user': None})

    cursor = conn.cursor()

    if response.get_arguments('storyquery') != []:
        query = response.get_argument('storyquery')
        results = search(cursor, conn, query)
        stories = []
        for result in results:
            stories.append(Story.find('id', int(result[0]))[0])

        context['stories'] = stories
        context['query'] = query
        context['story'] = ''

        assert 'query' in context
        print("QUERY", repr(query))
        html = template.render_file('templates/storylist.html', context)
        # html = template.render_file('templates/minimal.html', context)
        response.write(html)

    elif response.get_arguments('sort') != []:
        # filter logic here
        pass
    else:
        context['stories'] = stories
        context['story'] = None
        html = template.render_file('templates/storylist.html', context)
        response.write(html)
Example #21
0
def feed_handler(response):
    dp = 'http://i0.kym-cdn.com/profiles/icons/big/000/132/880/awesome%20face%20shrug.jpg'
    photo_list = Meme.get_memes_for_category(3)
    check_upvotes_l = lambda x: check_upvote_l(x)
    imglink = "/post"
    time_func = lambda x: format_time(x)
    rendered = render_file(
        "pages/feed.html", {
            "dp": dp,
            "photo_list": photo_list,
            "imglink": imglink,
            "time_format": time_func,
            'check_upvotes': check_upvotes_l
        })
    response.write(rendered)
def profiles(response):
	users = User.find('all')

	if response.get_secure_cookie('username') is not None:
		current_user = User.find('username', str(response.get_secure_cookie('username'), 'utf-8'))[0]
	else:
		current_user = None

	context = {
		'users':users,
		'current_user':current_user
	}

	html = template.render_file('templates/profilelist.html', context)
	response.write(html)
Example #23
0
def user(response, username):
	user = User.get('username', username)

	if response.get_secure_cookie('username') is not None:
		current_user = User.get('username', str(response.get_secure_cookie('username'), 'utf-8'))
	else:
		current_user = None

	context = {
	  	'user':user,
	    'current_user': current_user,
	    'requested_user': username
	}

	html = template.render_file('templates/profile.html', context)
	response.write(html)
def serve_chat(resp):
	resp.write(template.render_file('chat_test.html', {'channels': [('Global', 'global'), ('Story', 'story')], 'name': 'James'} ))
 def actual_get(response, context, *args, **kwargs):
     context['users'] = User.find('all', '')
     html = template.render_file('templates/admin_index.html', context)
     response.write(html)
# This is a short example of how to use the templating engine.
# It uses the template "template_example.html"

# First we import the module:
import template

# These are the variables the template can use:
context = {
	'user': '******',
	'friends': ['James', 'Dom', 'Who', 'The Doctor'],
	'age': 17
}

# We call render_file to render the template to a string:
html = template.render_file('templates/template_example.html', context)

print(html)
Example #27
0
def index_example(response):
    response.write(render_file('pages/index.html', {}))