예제 #1
0
def add_book_post():

    if request.method == "POST":
        if not request.form['title'] or not request.form[
                'describe'] or not request.form['name'] or not request.form[
                    'species']:
            flash('You have to enter all fields!')
        else:
            book = Book(request.form['title'], request.form['describe'])
            author = Authors(name=request.form.get("name"))
            category = Category(species=request.form.get("species"))

            db.session.add(book)
            db.session.add(author)
            db.session.add(category)

            # Pushing data to 'pivot' tables
            author.auth_book.append(book)
            category.cat_book.append(book)

            db.session.commit()
            flash('Successfully added')

    return render_template("add_book_post.html",
                           book=book,
                           author=author,
                           category=category)
예제 #2
0
def new_book():
    form = BookForm()
    if form.validate_on_submit():

        publisher = db.session.query(Publishers).filter(Publishers.publishes_name==form.publisher.data).first()
        if publisher:#якщо таке видавництво є в базі даних
            publisher_id = publisher.publishers_id
        else:#якщо його немає
            publisher_id = db.session.query(Publishers).order_by(Publishers.publishers_id.desc()).first().publishers_id + 1
            publisher = Publishers(publishers_id=publisher_id, publishes_name=form.publisher.data)
            db.session.add(publisher)
            # db.session.commit()


        category = db.session.query(Categories).filter(Categories.category_name==form.category.data).first()
        if category:
            category_id = category.category_id
        else:
            category_id = db.session.query(Categories).order_by(Categories.category_id.desc()).first().category_id + 1
            category = Categories(category_id=category_id, category_name=form.category.data)
            db.session.add(category)
            # db.session.commit()
        

        author_name = db.session.query(Authors).filter(Authors.first_name==form.name_author.data).all()#отримуємо всіх авторів з таким ім'ям
        author_surname = db.session.query(Authors).filter(Authors.second_name==form.surname_author.data).all()#отримуємо всіх авторів з таким прізвищем
        author = list(set(author_name).intersection(author_surname))#отримуємо автора з таким ім'ям і прізвищем

        if author:
            author_id = author[0].author_id
        else:
            author_id = db.session.query(Authors).order_by(Authors.author_id.desc()).first().author_id + 1
            author = Authors(author_id=author_id, first_name=form.name_author.data, second_name=form.surname_author.data)
            db.session.add(author)
            # db.session.commit()

        # date_add = form.data_added.data.split('.')



        book_id = db.session.query(Books).order_by(Books.book_id.desc()).first().book_id + 1
        book = Books(book_id=book_id, book_name=form.name_book.data, description=form.description.data, page=form.page.data,
         year=form.year.data, publisher_id=publisher_id, categories_id=category_id)





        db.session.add(book)
        # db.session.add(user_book)

        db.session.commit()

        ins = autor_has_books.insert().values(book_id=book_id, author_id=author_id)
        db.engine.execute(ins)
        # flash('Your post has been created!', 'success')
        return redirect(url_for('home'))
    return render_template('new_book.html', title='New Book',
                           form=form, legend='New Book')
예제 #3
0
def create_author(current_user):  #current_user):
    data = request.get_json()
    new_authors = Authors(name=data['name'],
                          country=data['country'],
                          book=data['book'],
                          booker_prize=True,
                          user_id=current_user.id)
    db.session.add(new_authors)
    db.session.commit()
    return jsonify({'message': 'new author created'})
예제 #4
0
def scan_isbn():
    is_admin = 0
    name = ""
    if current_user.is_authenticated:
        is_admin = current_user.is_admin
        name = current_user.name
        if is_admin != 1:
            return redirect(url_for('index'))
    if is_admin != 1:
        return redirect(url_for('index'))
    if request.method == "POST":
        authors = request.form['authors'].replace(" ", "").split(",")
        current_class = request.form['current_class']
        subject = request.form['subject']
        if not Info_about_books.query.filter_by(isbn=request.form['isbn']).first():
            if 12 > int(current_class) > 0:
                is_subject = Subjects.query.filter_by(name=subject).first()
                if not is_subject:
                    db.session.add(Subjects(name=subject))
                for author in authors:
                    is_author = Authors.query.filter_by(name=author).first()
                    if not is_author:
                        db.session.add(Authors(name=author))
            else:
                return render_template('scan_isbn.html', is_admin=is_admin, name=name,
                                       error="Введён некорректный класс")
            db.session.commit()
            append_book = Info_about_books(id_subject=Subjects.query.filter_by(name=subject).first().id_subject,
                                           num_class=current_class, isbn=request.form['isbn'])
            db.session.add(append_book)
            db.session.flush()
            for author in authors:
                db.session.add(Book_authors(id_author=Authors.query.filter_by(name=author).first().id_author,
                                            id_book=append_book.id_book))
        else:
            return render_template('scan_isbn.html', is_admin=is_admin, name=name, error="Книга уже есть в базе")
        db.session.commit()
    return render_template('scan_isbn.html', is_admin=is_admin, name=name, error="")
def query_or_add(url, title, date, bias, authors, source_url):
    # otherartsinns=[]
    # otherartsbyauthor=[]

    articleurlexists = Articles.query.filter_by(url=url).first()
    articletitleexists = Articles.query.filter_by(title=title).first()
    # print(articleurlexists, articletitleexists)
    # try :
    if ((not articleurlexists) and (not articletitleexists)):
        print("haha2")

        article1 = Articles(title=title, date=date, url=url, bias=bias)
        db.session.add(article1)
        db.session.commit()

        for author in authors:
            print(author)
            print("haha3")

            authorexists = Authors.query.filter_by(name=author.lower()).first()
            if not authorexists:
                authorobj = Authors(name=author.lower())
                db.session.add(authorobj)
                db.session.commit()
                print("haha4")

            authorwrites = Writes(author=author.lower(), article=url)
            print("haha1")
            db.session.add(authorwrites)
            db.session.commit()

            # otherobj=Writes.query.filter_by(author=author.lower())
            # # print(otherobj.article)
            # if(otherobj):
            #     for art in otherobj:
            #         print("haha5")
            #         otherartsbyauthor.append(art.article)
            # else:
            #     otherartsbyauthor.append(url)

            # parsed_uri = urlparse(url)
            # result = '{uri.scheme}://{uri.netloc}/'.format(uri=parsed_uri)

            newssourcequery = NewsSource.query.filter_by(
                URL=source_url).first()
            if (not (newssourcequery)):
                # nsname=newssourcequery.name
                # print("haha6")

                print(source_url)
                nobj = newspaper.build(source_url)
                print(nobj)
                nsname = nobj.brand
                print("haha6")
                newsourceobj = NewsSource(name=nsname, URL=source_url)
                print("haha7")
                db.session.add(newsourceobj)
                db.session.commit()
            else:
                nsname = newssourcequery.name

            authorwritesforexists = Writes_For.query.filter_by(
                author=author.lower(), newssource=nsname).first()
            print("haha8")
            if not authorwritesforexists:
                authorwfobj = Writes_For(author=author.lower(),
                                         newssource=nsname)
                print("haha9")
                db.session.add(authorwfobj)
                db.session.commit()

        containsart = Contains.query.filter_by(article=url,
                                               newssource=nsname).first()
        print("haha10")
        if not containsart:
            containsartobj = Contains(article=url, newssource=nsname)
            print("haha11")
            db.session.add(containsartobj)
            db.session.commit()
def add_to_db():

    newsourcesdd = pd.read_csv('app/newsourcedd.csv')
    newsources = pd.read_csv('app/newsource.csv')
    authors = pd.read_csv("app/authors.csv")
    articles = pd.read_csv("app/articles.csv")
    writes = pd.read_csv('app/writes.csv')
    wf = pd.read_csv("app/writes_for.csv")
    contains = pd.read_csv("app/contains.csv")

    for i in range(len(newsourcesdd)):
        name = newsourcesdd['Name'].iloc[i]
        url = newsourcesdd['URL'].iloc[i]
        bias = newsourcesdd['Bias'].iloc[i]
        newdd = NewsSourceDropDown(name=name, URL=url, bias=bias)
        db.session.add(newdd)
        db.session.commit()

    for i in range(len(newsources)):
        name = newsources['Name'].iloc[i]
        url = newsources['News_Source'].iloc[i]
        bias = newsources['Bias'].iloc[i]
        new = NewsSource(name=name, URL=url, bias=bias)
        db.session.add(new)
        db.session.commit()

    for i in range(len(authors)):
        name1 = authors['Name'].iloc[i]
        name = (name1[:100]) if len(name1) > 100 else name1
        author = Authors(name=name)
        db.session.add(author)
        db.session.commit()

    for i in range(len(articles)):
        title1 = articles['title'].iloc[i]
        title = (title1[:150]) if len(title1) > 150 else title1
        date = articles[' date'].iloc[i]
        url = articles[' url'].iloc[i]
        bias = articles['Bias'].iloc[i]
        article = Articles(title=title, date=date, url=url, bias=bias)
        db.session.add(article)
        db.session.commit()

    for i in range(len(writes)):
        url = writes['ArticleURL'].iloc[i]
        name1 = writes['Author'].iloc[i]
        name = (name1[:100]) if len(name1) > 100 else name1
        w = Writes(author=name, article=url)
        db.session.add(w)
        db.session.commit()

    for i in range(len(wf)):
        name1 = wf['Author'].iloc[i]
        aname = (name1[:100]) if len(name1) > 100 else name1
        ns = wf['News Source'].iloc[i]
        w = Writes_For(author=aname, newssource=ns)
        db.session.add(w)
        db.session.commit()

    for i in range(len(contains)):
        name = contains['Name'].iloc[i]
        url = contains[' url'].iloc[i]
        c = Contains(article=url, newssource=name)
        db.session.add(c)
        db.session.commit()
예제 #7
0
# -*- coding: utf-8 -*-
import os
from app import db
from app.models import Books, Authors, Users

data = u'Федор Достоевский — Преступление и наказание, Лев Толстой — Война и мир, Александр Пушкин — Евгений Онегин, Михаил Булгаков — Собачье сердце, Артур Конан Дойль — Приключения Шерлока Холмса, Илья Ильф — Двенадцать стульев, Михаил Лермонтов — Герой нашего времени, Федор Достоевский — Идиот, Антуан де Сент-Экзюпери — Маленький принц, Антон Чехов — Рассказы, Лев Толстой — Анна Каренина, Федор Достоевский — Братья Карамазовы, Эрих Мария Ремарк — Три товарища, Александр Дюма — Граф Монте-Кристо, Николай Гоголь — Мёртвые души, Александр Грибоедов — Горе от ума, Маргарет Митчелл — Унесённые ветром, Оскар Уайльд — Портрет Дориана Грея, Уильям Шекспир — Ромео и Джульетта, Иван Тургенев — Отцы и дети, Николай Гоголь — Вечера на хуторе близ Диканьки, Федор Достоевский — Бесы, Иван Гончаров — Обломов, Александр Пушкин — Капитанская дочка, Михаил Шолохов — Тихий Дон, О.Генри — Рассказы, Александр Дюма — Три мушкетера, Джейн Остин — Гордость и предубеждение, Джордж Оруэлл — 1984, Иоганн Вольфганг фон Гёте — Фауст, Марк Твен — Приключения Тома Сойера, Антон Чехов — Палата № 6, Эрнест Хемингуэй — Старик и море, Уильям Шекспир — Гамлет, Виктор Гюго — Собор Парижской Богоматери, Артур Конан Дойль — Собака Баскервилей, Эрих Мария Ремарк — Триумфальная арка, Николай Гоголь — Ревизор, Михаил Булгаков — Белая гвардия, Рэй Брэдбери — 451 градус по Фаренгейту, Николай Гоголь — Тарас Бульба, Виктор Гюго — Отверженные, Джек Лондон — Белый Клык, Даниель Дефо — Робинзон Крузо, Евгений Петров — Золотой теленок, Борис Васильев — А зори здесь тихие, Жюль Верн — Таинственный остров, Роберт Льюис Стивенсон — Остров сокровищ, Вениамин Каверин — Два капитана, Александр Пушкин — Повести Белкина, Эрих Мария Ремарк — На западном фронте без перемен, Габриэль Гарсиа Маркес — Сто лет одиночества, Ганс Христиан Андерсен — Сказки, Александр Волков — Волшебник Изумрудного города, Шарлотта Бронте — Джейн Эйр, Александр Грин — Алые паруса, Николай Носов — Приключения Незнайки и его друзей, Кен Кизи — Пролетая над гнездом кукушки, Аркадий и Борис Стругацкие — Пикник на обочине, Станислав Лем — Солярис, Льюис Кэрролл — Алиса в стране чудес, Джон Толкиен — Властелин колец, Джоан Роулинг — Серия книг о Гарри Поттере, Джек Лондон — Мартин Иден, Джером Д. Сэлинджер — Над пропастью во ржи, Жюль Верн — Дети капитана Гранта, Леонид Филатов — Про Федота-стрельца удалого молодца, Александр Беляев — Человек-амфибия, Марк Твен — Приключения Гекльберри Финна, Ярослав Гашек — Похождения бравого солдата Швейка во время мировой войны, Астрид Линдгрен — Малыш и Карлсон который живёт на крыше, Федор Достоевский — Униженные и оскорблённые, Алексей Толстой — Пётр Первый, Антон Чехов — Вишневый сад, Александр Пушкин — Сказка о рыбаке и рыбке, Аркадий и Борис Стругацкие — Трудно быть богом, Эрнест Хемингуэй — По ком звонит колокол, Федор Достоевский — Игрок, Аркадий и Борис Стругацкие — Понедельник начинается в субботу, Лев Толстой — Детство. Отрочество. Юность., Теодор Драйзер — Американская трагедия, Марк Твен — Принц и нищий, Борис Пастернак — Доктор Живаго, Михаил Шолохов — Судьба человека, Борис Акунин — Приключения Эраста Фандорина, Фрэнсис Скотт Фицджеральд — Великий Гэтсби, Алан Александр Милн — Винни-Пух, Мигель Сервантес — Хитроумный идальго Дон Кихот Ламанчский, Эрих Мария Ремарк — Жизнь взаймы, Уильям Шекспир — Король Лир, Стендаль — Красное и чёрное, Жюль Верн — Пятнадцатилетний капитан, Иван Бунин — Тёмные аллеи, Александр Куприн — Гранатовый браслет, Эдгар По — Рассказы, Патрик Зюскинд — Парфюмер. История одного убийцы, Эмили Бронте — Грозовой перевал, Колин Маккалоу — Поющие в терновнике, Лев Толстой — Кавказский пленник'
data = [data.split(u' — ') for data in data.split(u', ')]

if not os.path.exists('test-case.db'):
    db.create_all()
    for row in data:
        book = Books(row[1], [Authors(row[0])])
        db.session.add(book)

    user = Users(username='******',
                 password='******')
    db.session.add(user)
    db.session.commit()