示例#1
0
def collection():
    args = request.json

    user_id = args['user_id']
    collection_op_type = args['op_type']
    collection_name = args['collection_name']

    if collection_op_type == 'new':
        Collection.create(name=collection_name, user_id=user_id)
    elif collection_op_type == 'edit':
        Collection.get(args['collection_id']).update({'name': collection_name})

    return ''
示例#2
0
def quotes():
    form = QuoteAddForm()
    form.collections.choices = [(collection.name, collection.name)
                                for collection in Collection.select().where(
                                    Collection.user == current_user.get_id())]
    if form.validate_on_submit():
        with db.atomic() as txn:
            quote = Quote.create(
                content=form.content.data,
                author=form.author.data,
                user=current_user.get_id(),
            )
            for collection_name in form.collections.data:
                collection = Collection.get(
                    Collection.name == collection_name,
                    Collection.user == current_user.get_id(),
                )
                QuoteCollection.create(
                    quote=quote,
                    collection=collection,
                )
        return redirect(url_for('quotes'))
    else:
        quotes = Quote.select().where(Quote.user == current_user.get_id())
        return render_template('quotes.html', form=form, quotes=quotes)
示例#3
0
def collection_json(collection_name):
    try:
        collection = Collection.get(Collection.name == collection_name)
    except Collection.DoesNotExist:
        return jsonify({'message': 'Collection not found.'}), 404, cors_header
    quotes = (Quote.select(
        Quote.content,
        Quote.author,
        Quote.id,
    ).join(QuoteCollection).where(QuoteCollection.collection == collection, ))
    return jsonify({'quotes': list(quotes.dicts())}), cors_header
示例#4
0
def delete_collection():
    args = request.json

    user_id = args['user_id']
    collection_id = args['collection_id']
    selected_collection_id = User.get(user_id).selected_collection
    Collection.get(collection_id).delete()
    UserCard.filter({
        'collection_id': collection_id,
        'user_id': user_id
    }).delete()

    if selected_collection_id == collection_id:
        User.get(user_id).update({
            'selected_collection':
            Collection.find_first({
                'user_id': user_id
            }).get_id()
        })

    return ''
示例#5
0
def quote(quote_id):
    try:
        quote = Quote.get(
            Quote.id == quote_id,
            Quote.user == current_user.get_id(),
        )
    except Quote.DoesNotExist:
        flash('Quote not found')
        return redirect(url_for('quotes'))
    quote_collections = [
        collection.name
        for collection in Collection.select().join(QuoteCollection).where(
            QuoteCollection.quote == quote, )
    ]
    quote.collections = quote_collections
    form = QuoteEditForm(obj=quote)
    form.collections.choices = [(collection.name, collection.name)
                                for collection in Collection.select().where(
                                    Collection.user == current_user.get_id())]
    if form.validate_on_submit():
        if form.id.data != quote_id:
            flash('Quote ID mismatch!')
            return redirect(url_for('quotes'))
        if form.form_delete.data:
            quote.delete_instance(recursive=True)
            flash('Quote deleted.')
            return redirect(url_for('quotes'))
        quote.content = form.content.data
        quote.author = form.author.data
        quote.save()
        if set(quote_collections) != set(form.collections.data):
            flash('Collections updated.')
            QuoteCollection.delete().where(
                QuoteCollection.quote == quote, ).execute()
            with db.atomic() as txn:
                for collection_name in form.collections.data:
                    QuoteCollection.create(
                        quote=quote,
                        collection=Collection.get(
                            Collection.name == collection_name, ),
                    )
        flash('Quote updated.')
        return redirect(url_for('quotes'))
    else:
        return render_template('quote.html', form=form)
示例#6
0
def _selected_collection_for_user(user_id):
    return Collection.get(
        User.get(user_id).selected_collection) if user_id else None