Example #1
0
def _slide_preview(slug):
    """
    Preview a slide outside of the stack.
    """
    from models import SlideSequence

    context = make_context()

    sequence = SlideSequence.select()

    for slide in sequence:
        if slide.slide.slug == slug:
            context['in_sequence'] = True
            previous_slide_order = slide.order - 1
            next_slide_order = slide.order + 1
            break
    try:
        context['previous_slide'] = SlideSequence.get(SlideSequence.order == previous_slide_order).slide.slug
    except:
        pass

    try:
        context['next_slide'] = SlideSequence.get(SlideSequence.order == next_slide_order).slide.slug
    except:
        pass

    context['body'] = _slide(slug).data.decode('utf-8')
    context['slug'] = slug

    return render_template('slide_preview.html', **context)
Example #2
0
def _slide_preview(slug):
    """
    Preview a slide outside of the stack.
    """
    from models import SlideSequence

    context = make_context()

    sequence = SlideSequence.select()

    for slide in sequence:
        if slide.slide.slug == slug:
            context['in_sequence'] = True
            previous_slide_order = slide.order - 1
            next_slide_order = slide.order + 1
            break
    try:
        context['previous_slide'] = SlideSequence.get(
            SlideSequence.order == previous_slide_order).slide.slug
    except:
        pass

    try:
        context['next_slide'] = SlideSequence.get(
            SlideSequence.order == next_slide_order).slide.slug
    except:
        pass

    context['body'] = _slide(slug).data.decode('utf-8')
    context['slug'] = slug

    return render_template('slide_preview.html', **context)
Example #3
0
def save_stack():
    """
    Save new stack sequence.
    """
    from flask import request

    data = request.json
    SlideSequence.delete().execute()

    # Rebuild sequence table
    for i, row in enumerate(data[0]):
        SlideSequence.create(order=i, slide=row['slide'])

    stack.deploy()

    return "Saved sequence"
Example #4
0
def save_stack():
    """
    Save new stack sequence.
    """
    from flask import request

    data = request.json
    SlideSequence.delete().execute()

    # Rebuild sequence table
    for i, row in enumerate(data[0]):
        SlideSequence.create(order=i, slide=row['slide'])

    stack.deploy()

    return "Saved sequence"
Example #5
0
def _stack():
    """
    Administer a stack of slides.
    """
    context = make_context(asset_depth=1)

    sequence = SlideSequence.select()
    sequence_dicts = sequence.dicts()

    time = 0

    for slide in sequence:
        time += slide.slide.time_on_screen

    for slide_dict in sequence_dicts:
        for slide in sequence:
            if slide.slide.slug == slide_dict['slide']:
                slide_dict['name'] = slide.slide.name
                slide_dict['time_on_screen'] = slide.slide.time_on_screen

                if slide_dict['slide'].startswith('tumblr'):
                    slide_dict['news_item'] = True

    context.update({
        'sequence': sequence_dicts,
        'slides': Slide.select().dicts(),
        'graphics': Slide.select().where(fn.Lower(fn.Substr(Slide.slug, 1, 6)) != 'tumblr').order_by(Slide.slug).dicts(),
        'news':  Slide.select().where(fn.Lower(fn.Substr(Slide.slug, 1, 6)) == 'tumblr').order_by(Slide.slug.desc()).dicts(),
        'time': time,
    })

    return render_template('admin/stack.html', **context)
Example #6
0
def _stack_json():
    """
    Serve up the current slide stack.
    """
    from models import SlideSequence

    data = SlideSequence.stack()

    # There is one state slug to manipulate in the stack, but the client
    # should see two
    for i, d in enumerate(data):
        if d['slug'] == 'state-house-results':
            one = copy(d)
            one['slug'] = 'state-house-results-1'

            two = copy(d)
            two['slug'] = 'state-house-results-2'

            data[i:i + 1] = [
                one,
                two
            ]

            break


    js = json.dumps(data)

    return js, 200, { 'Content-Type': 'application/javascript' }
Example #7
0
def _stack_json():
    """
    Serve up the current slide stack.
    """
    from models import SlideSequence

    data = SlideSequence.stack()

    # There is one state slug to manipulate in the stack, but the client
    # should see two
    for i, d in enumerate(data):
        if d['slug'] == 'state-house-results':
            one = copy(d)
            one['slug'] = 'state-house-results-1'

            two = copy(d)
            two['slug'] = 'state-house-results-2'

            data[i:i + 1] = [one, two]

            break

    js = json.dumps(data)

    return js, 200, {'Content-Type': 'application/javascript'}
Example #8
0
def _stack():
    """
    Administer a stack of slides.
    """
    context = make_context(asset_depth=1)

    sequence = SlideSequence.select()
    sequence_dicts = sequence.dicts()

    time = 0

    for slide in sequence:
        time += slide.slide.time_on_screen

    for slide_dict in sequence_dicts:
        for slide in sequence:
            if slide.slide.slug == slide_dict['slide']:
                slide_dict['name'] = slide.slide.name
                slide_dict['time_on_screen'] = slide.slide.time_on_screen

                if slide_dict['slide'].startswith('tumblr'):
                    slide_dict['news_item'] = True

    context.update({
        'sequence':
        sequence_dicts,
        'slides':
        Slide.select().dicts(),
        'graphics':
        Slide.select().where(
            fn.Lower(fn.Substr(Slide.slug, 1, 6)) != 'tumblr').order_by(
                Slide.slug).dicts(),
        'news':
        Slide.select().where(
            fn.Lower(fn.Substr(Slide.slug, 1, 6)) == 'tumblr').order_by(
                Slide.slug.desc()).dicts(),
        'time':
        time,
    })

    return render_template('admin/stack.html', **context)