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 ''
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)
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
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 ''
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)
def _selected_collection_for_user(user_id): return Collection.get( User.get(user_id).selected_collection) if user_id else None