Example #1
0
def delete_shoutbox_entry(request, entry_id):
    """Render form to delete a shoutbox entry.

    Available template variables:

        `form`:
            form object with all required fields

    :Template name: ``shoutbox_post.html``
    :URL endpoint: ``shoutbox/post``
    """

    entry = ShoutboxEntry.query.get(entry_id)
    if entry is None:
        raise NotFound()

    form = DeleteShoutboxEntryForm(entry)
    assert_privilege(SHOUTBOX_MANAGE)

    if request.method == 'POST':
        if 'cancel' in request.form:
            return form.redirect('core/index')
        if form.validate(request.form):
            form.add_invalid_redirect_target('shoutbox/delete', entry_id=entry.id)
            form.delete_entry()
            db.commit()
            # as this affects pretty much all visible pages, we flush cache here
            request.app.cache.clear()
            return form.redirect('core/index')

    return render_response('shoutbox_delete.html', form=form.as_widget())
Example #2
0
def make_shoutbox_entry(request):
    """Render form to make a shoutbox entry.

    Available template variables:

        `form`:
            form object with all required fields

        `widgetoptions`:
            redirected widgetoptions to hide post button below entries

    :Template name: ``shoutbox_post.html``
    :URL endpoint: ``shoutbox/post``
    """

    form = ShoutboxEntryForm()

    if request.method == 'POST':
        if request.user.is_somebody:
            form.disable_author()
        if form.validate(request.form):
            entry = form.make_entry()
            db.commit()
            # as this affects pretty much all visible pages, we flush cache here
            request.app.cache.clear()
            target = get_redirect_target()
            return form.redirect(target if target is not None else 'core/index')

    return render_response('shoutbox_post.html', form=form.as_widget(),
                           widgetoptions=['hide_shoutbox_note'])
Example #3
0
def user_deleted_memberships(sender, **kwds):
    """Delete memberships of a user that will be deleted"""

    user = kwds['user']

    memberships = SquadMember.query.filter_by(user=user).all()

    for membership in memberships:
        db.delete(membership)

    db.commit()
Example #4
0
def check_unread(user, topic, date=None):
    """Marks posts of given topic as read up until date if given"""

    if user is None:
        user = get_request().user
    if isinstance(user, AnonymousUser):
        return

    global_lastread = GlobalLastRead.query.get(user.id)
    if not global_lastread:
        GlobalLastRead(user)
        db.commit()
        return

    if global_lastread.date > topic.modification_date:
        return

    local_lastread = LocalLastRead.query.get((user.id,topic.id))
    if not local_lastread:
        LocalLastRead(user,topic,date)
        db.commit()
        return
    if local_lastread.date >= topic.modification_date:
        return

    local_lastread.date = date
    db.commit()
    return