示例#1
0
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,
        )
示例#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 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)
示例#4
0
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,
        )
示例#5
0
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}')