def collection(collection_name): try: collection = (Collection.select(Collection, Quote).join( QuoteCollection, JOIN.LEFT_OUTER).join(Quote, JOIN.LEFT_OUTER).where( Collection.name == collection_name, Collection.user == current_user.get_id(), ).get()) except Collection.DoesNotExist: flash('Collection not found') return redirect(url_for('collections')) form = CollectionEditForm(obj=collection) if form.validate_on_submit(): if form.form_delete.data: collection.delete_instance(recursive=True) flash('Collection deleted.') return redirect(url_for('collections')) collection.name = form.name.data try: collection.save() except IntegrityError: flash('A collection with that name already exists.') return redirect(url_for('collections')) flash('Collection updated.') return redirect(url_for('collections')) else: return render_template( 'collection.html', form=form, collection=collection, )
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 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 collections(): form = CollectionAddForm() if form.validate_on_submit(): with db.atomic() as txn: try: Collection.create( name=form.name.data, user=current_user.get_id(), ) except IntegrityError: flash('A collection with that name already exists.') return redirect(url_for('collections')) else: collections = (Collection.select( Collection, fn.COUNT(QuoteCollection.id).alias('quote_count'), ).join(QuoteCollection, JOIN.LEFT_OUTER).group_by(Collection).where( Collection.user == current_user.get_id(), )) return render_template( 'collections.html', form=form, collections=collections, )
def fillData(): for col in Collection.select(): req = requests.get(col.url) print(f'Reading {col.title}') if req.status_code == 200: soup = BeautifulSoup(req.content, 'html.parser') for i, td in enumerate(soup.findAll('td', {'class': 'column-2'})): comicid = cleanText(td.text) if comicid != '' and Comic.get_or_none(id=comicid) == None: Comic.create(id=comicid, raw_name=td.text.strip()) print(f'Created Comic {td.text.strip()}') if comicid != '' and ComicCollection.get_or_none( comic=comicid, collection=col.id) == None: ComicCollection.create(comic=comicid, collection=col.id, order=i) print( f'Created Comic On Colletion {comicid} - {col.id} - {i}' ) else: print(f'Invalid Status Code {req.status_code}')