Ejemplo n.º 1
0
def single_item(id):
    item = get_object_or_404(Item.select(), Item.hash == id)
    tags = (Tag
            .select()
            .join(ItemTag)
            .join(Item)
            .where(Item.hash == item.hash)
            .order_by(Tag.name))

    all_tags = join_tags(x.name for x in tags)

    # Get the prev/next item in this group.
    if item.group is not None:
        prev_item = (Item
                     .select()
                     .where(Item.group == item.group,
                            Item.group_index == item.group_index - 1)
                     .first())
        next_item = (Item
                     .select()
                     .where(Item.group == item.group,
                            Item.group_index == item.group_index + 1)
                     .first())
    else:
        prev_item = next_item = None

    return render_template('item.html',
                           item=item,
                           tags=tags,
                           prev_item=prev_item,
                           next_item=next_item,
                           all_tags=all_tags)
Ejemplo n.º 2
0
def single_item_data(id):
    item = get_object_or_404(Item.select(), Item.hash == id)
    fp = image_store.get_file_object(id)
    if item.is_animated_gif:
        return send_file(fp, mimetype='image/gif')

    return send_file(fp, mimetype='image/png')
Ejemplo n.º 3
0
def edit_item_tags(id):
    item = get_object_or_404(Item.select(), Item.hash == id)
    tags = request.form.get('tags')
    if tags is not None:
        update_tags(item, split_tags(tags))
        flash('Tags updated successfully', 'info')
    else:
        flash('No tags given', 'warning')
    return redirect(url_for('single_item', id=id))
Ejemplo n.º 4
0
def delete_item(id):
    item = get_object_or_404(Item.select(), Item.hash == id)
    image_store.delete(item.hash)
    thumb_store.delete(item.hash)

    # TODO: cascade delete ItemTags
    item.delete_instance()

    flash('Item was successfully deleted', 'info')
    return redirect(url_for('all_items'))
Ejemplo n.º 5
0
def single_tag(id):
    tag = get_object_or_404(Tag.select(), Tag.id == id)
    items = (Item
             .select()
             .join(ItemTag)
             .join(Tag)
             .where(Tag.id == id)
             .order_by(Item.created_on.desc()))
    return object_list('items.html', items,
                       banner="Items with tag '%s'" % (tag.name,),
                       paginate_by=app.config['ITEMS_PER_PAGE'])
Ejemplo n.º 6
0
def edit_item_group(id):
    item = get_object_or_404(Item.select(), Item.hash == id)

    group = request.form.get('group')
    if group is not None and len(group) > 0:
        update_group(group)
        flash('Group updated successfully', 'info')
    else:
        flash('No group given - nothing done', 'warning')

    return redirect(url_for('single_item', id=id))
Ejemplo n.º 7
0
def render_event(event_id):
    _event = get_object_or_404(Event.select(), Event.id == event_id)
    if _event.members_only and not (g.user or g.user.is_authenticated()):
        abort(404)

    ts = _event.timestamp
    end = (ts - EPOCH).total_seconds() + (60**2) * _event.duration

    event = _event.as_dict()
    event['start'] = ts.strftime("%I:%M %p %m/%d/%Y")
    event['end'] = datetime.datetime.utcfromtimestamp(end).strftime(
        "%I:%M %p %m/%d/%Y")

    return render_template_with_user("event.html", event=event)
Ejemplo n.º 8
0
def delete_group(id):
    group = get_object_or_404(Group.select(), Group.id == id)
    group.delete_instance()
    # TODO: cascade delete
    flash('Group was successfully deleted', 'info')
    return redirect(url_for('groups'))
Ejemplo n.º 9
0
def single_group(id):
    group = get_object_or_404(Group.select(), Group.id == id)
    items = Item.select().join(Group).where(Group.id == id)
    return object_list('items.html', items,
                       banner="Items in group '%s'" % (group.name,),
                       paginate_by=app.config['ITEMS_PER_PAGE'])
Ejemplo n.º 10
0
def delete_tag(id):
    tag = get_object_or_404(Tag.select(), Tag.id == id)
    tag.delete_instance()
    # TODO: cascade delete
    flash('Tag was successfully deleted', 'info')
    return redirect(url_for('tags'))
Ejemplo n.º 11
0
def single_item_thumb(id):
    item = get_object_or_404(Item.select(), Item.hash == id)
    fp = thumb_store.get_file_object(id)
    return send_file(fp, mimetype='image/png')
Ejemplo n.º 12
0
def render_documents_minute(minute_id):
    minute = get_object_or_404(Minute.select(), Minute.id == minute_id)
    minute = minute.as_dict()
    minute['content'] = Markup(markdown(minute['content']))
    return render_template_with_user("documents_minute.html",
                                     minute=minute)