Beispiel #1
0
def theories():
    aut = AuthorSearch()
    tit = TitleSearch()
    form = SubmitButton()

    theor = TheoryModel(db.get_connection())
    all_teories = theor.get_all()
    all_teories = all_teories[::-1]
    result = []
    note = 'Все теории:'

    # Если теория больше 100 символов, то она печатается в сокращенном виде
    for i in range(len(all_teories)):
        if len(all_teories[i][2]) > 100:
            all_teories[i] = (all_teories[i][0], all_teories[i][1],
                              all_teories[i][2][:100] + '...',
                              all_teories[i][3], all_teories[i][4])

    if form.validate_on_submit():
        author = request.form['author']
        title = request.form['title']

        if author and not title:
            note = 'По вашему запросу нашлось:'
            for elem in all_teories:
                if author.lower() in elem[3].lower():
                    result.append(elem)

        if not author and title:
            note = 'По вашему запросу нашлось:'
            for elem in all_teories:
                if title.lower() in elem[1].lower():
                    result.append(elem)

        if author and title:
            note = 'По вашему запросу нашлось:'
            for elem in all_teories:
                if title.lower() in elem[1].lower() and author.lower(
                ) in elem[3].lower():
                    result.append(elem)

        if len(result) == 0:
            note = 'По вашему запросу ничего не нашлось!'

        return render_template('theories.html',
                               aut=aut,
                               tit=tit,
                               form=form,
                               t=result,
                               n=note)
    else:
        return render_template('theories.html',
                               aut=aut,
                               tit=tit,
                               form=form,
                               t=all_teories,
                               n=note)
Beispiel #2
0
def read_my_theories():
    if 'username' not in session:
        return redirect('/sign_in')

    theor = TheoryModel(db.get_connection())
    tit = TitleSearch()
    form = SubmitButton()
    result = []

    err = 'Все ваши теории'
    if UserModel(db.get_connection()).exists(session['username'])[0]:
        id = UserModel(db.get_connection()).exists(session['username'])[1]

    all_teories = theor.get_all(user_id=id)
    all_teories = all_teories[::-1]

    for i in range(len(all_teories)):
        if len(all_teories[i][2]) > 100:
            all_teories[i] = (all_teories[i][0], all_teories[i][1],
                              all_teories[i][2][:100] + '...',
                              all_teories[i][3], all_teories[i][4])

    if len(all_teories) == 0:
        err = 'Вы еще не добавили ни одной теории!'
        return render_template('read_my_theories.html',
                               tit=tit,
                               form=form,
                               t=result,
                               n=err)

    if form.validate_on_submit():
        # Поиск по автору и по содержанию
        title = request.form['title']

        if title:
            err = 'По вашему запросу нашлось:'
            for elem in all_teories:
                if title.lower() in elem[1].lower():
                    result.append(elem)

        if len(result) == 0:
            err = 'По вашему запросу ничего не нашлось!'

        return render_template('read_my_theories.html',
                               tit=tit,
                               form=form,
                               t=result,
                               n=err)

    else:
        return render_template('read_my_theories.html',
                               n=err,
                               t=all_teories,
                               tit=tit,
                               form=form)
Beispiel #3
0
def add_theory():
    if 'username' not in session:
        return redirect('/sign_in')

    form = AddTheoryForm()
    data = datetime.date.today()
    err = None

    if form.validate_on_submit():
        title = request.form['title']
        text = request.form['content']
        f = form.file.data

        # Провека валидности
        if len(title) < 10:
            err = 'Длина заголовка должна быть больше 10 символов'
            return render_template('add_theory.html', form=form, err=err)

        if len(text) < 20:
            err = 'Длина текста должна быть больше 20 символов'
            return render_template('add_theory.html', form=form, err=err)

        if len(text) > 10000:
            err = 'Длина текста должна быть меньше 1000 символов'
            return render_template('add_theory.html', form=form, err=err)

        if f:
            # То же самое, что и с личным кабинетом, если фотка есть - удаляем
            name = f.filename
            result = open(name, 'wb')
            result.write(f.read())
            result.close()

            way = 'static/img/' + name

            move_photo(way, name)

            if not imghdr.what(way):
                err = 'Файл недопустимого формата'
                os.remove(way)
                return render_template('add_theory.html', form=form, err=err)
        else:
            name = None

        theor = TheoryModel(db.get_connection())
        if UserModel(db.get_connection()).exists(session['username'])[0]:
            id = UserModel(db.get_connection()).exists(session['username'])[1]
        theor.insert(title, text, session['username'], data, name, id)

        return redirect('/theories')

    else:
        return render_template('add_theory.html', form=form, err=err)
Beispiel #4
0
def read_theory(theory_id):
    theor = TheoryModel(db.get_connection()).get(theory_id)
    id = theor[6]

    if UserModel(db.get_connection()).exists(theor[3])[0]:
        photo = UserModel(db.get_connection()).get(id)[6]
    else:
        photo = 'delete_user.png'
    return render_template('read_theory.html', t=theor, p=photo, u=None)
Beispiel #5
0
def cabinet_other(user_id):
    if 'username' not in session:
        return redirect('/sign_in')

    if user_id == session['id']:
        return redirect('/cabinet')

    um = UserModel(db.get_connection())
    all = um.get(user_id)

    if all:
        tm = TheoryModel(db.get_connection())
        content = 'Всего теорий: ' + str(len(tm.get_all(user_id=all[0])))

        return render_template('cabinet_other.html',
                               n=all[1],
                               i=all[0],
                               d=all[4],
                               l=content,
                               q=None,
                               s=all[5],
                               p=all[6])
    else:
        return render_template('cabinet_other.html', q='1')
Beispiel #6
0
def read_theory_my(theory_id):
    theor = TheoryModel(db.get_connection()).get(theory_id)
    return render_template('read_theory.html', t=theor, u='1')
Beispiel #7
0
def delete_theory(theory_id):
    TheoryModel(db.get_connection()).delete(theory_id)

    return redirect('/read_my_theories')
Beispiel #8
0
def cabinet():
    if 'username' not in session:
        return redirect('/sign_in')

    um = UserModel(db.get_connection())
    all = []
    err = None

    if um.exists(session['username'])[0]:
        all = um.get(um.exists(session['username'])[1])

    tm = TheoryModel(db.get_connection())
    content = 'Всего теорий: ' + str(len(tm.get_all(user_id=all[0])))

    form = LoadPhotoForm()

    # Загрузка фотографии
    if form.validate_on_submit():
        f = form.file.data

        if f:
            name = f.filename
            session['photo'] = name
            result = open(name, 'wb')
            result.write(f.read())
            result.close()

            way = 'static/img/' + name

            # Если фотография уже существует в нашей папке, то удаляем ее
            move_photo(way, name)

            # Проверка того, является ли файл фотографией
            if not imghdr.what(way):
                err = 'Файл недопустимого формата'
                os.remove(way)
                return render_template('cabinet.html',
                                       n=session['username'],
                                       i=all[0],
                                       d=all[4],
                                       l=content,
                                       s=all[5],
                                       p=all[6],
                                       err=err)
            else:
                um = UserModel(db.get_connection())
                if um.exists(session['username'])[0]:
                    id = um.exists(session['username'])[1]
                um.change_photo(name, id)

        return redirect('/cabinet')

    else:
        return render_template('cabinet.html',
                               n=session['username'],
                               i=all[0],
                               d=all[4],
                               l=content,
                               s=all[5],
                               p=all[6],
                               err=err,
                               form=form)