Esempio n. 1
0
def add_news():
    form = NewsForm()
    if form.validate_on_submit():
        attachments = []
        f = request.files['file']
        if f:
            files = request.files.to_dict(flat=False)['file']
            for file in files:
                print(file.filename)  # Обработка приложенных файлов
                filename = secure_filename(
                    f'{str(time.time()).replace(".", "-")}-{file.filename}')
                attachments.append(filename)
                # print(filename)
                file.save('static/attachments/' + filename)
        db_sess = db_session.create_session()  # Сохранение и отправка
        news = News()
        news.title = form.title.data
        news.content = form.content.data
        news.is_private = form.is_private.data
        news.attach = '|'.join(attachments)
        current_user.news.append(news)
        db_sess.merge(current_user)
        db_sess.commit()
        return redirect('/feed')
    return render_template('news.html', title='Добавление новости', form=form)
Esempio n. 2
0
def feed():
    session['from_page'] = f'/feed'
    form = NewsForm()  # Подключаем нужные формы
    commsform = CommsForm()
    db_sess = db_session.create_session()
    comms = db_sess.query(Comment).all()

    if current_user.is_authenticated:
        news = db_sess.query(News).filter((
            News.user == current_user) | (News.is_private != True)).order_by(
                News.created_date.desc())  # Достаём новости из БД
        if form.validate_on_submit():  # Форма добавления новости
            attachments = []
            f = request.files['file']
            if f:
                files = request.files.to_dict(flat=False)['file']
                for file in files:
                    print(file.filename)
                    filename = secure_filename(
                        f'{str(time.time()).replace(".", "-")}-{file.filename}'
                    )
                    ftype = ''  # Определяем тип файла для корректного отображения в браузере
                    if filename.endswith('png') or filename.endswith('jpg') \
                            or filename.endswith('jpeg') or filename.endswith('bmp') \
                            or filename.endswith('mp4') or filename.endswith('mov') \
                            or filename.endswith('avi') or filename.endswith('wav') \
                            or filename.endswith('mp3'):
                        ftype = 'media'
                    attachments.append(f'{ftype}{filename}')
                    # print(filename)
                    file.save('static/attachments/' + f'{ftype}{filename}')
            db_sess = db_session.create_session()
            news = News()
            news.title = form.title.data
            news.content = form.content.data
            news.is_private = form.is_private.data
            news.attach = '|'.join(attachments)
            current_user.news.append(news)
            db_sess.merge(current_user)
            db_sess.commit()
            return redirect('/feed')
        if commsform.validate_on_submit():  # Отправка комментария
            db_sess = db_session.create_session()
            comm = Comment()
            comm.to = commsform.to.data
            comm.content = commsform.content.data
            current_user.comm.append(comm)
            db_sess.merge(current_user)
            db_sess.commit()
            return redirect(f'/feed#{comm.to}')
    else:
        news = db_sess.query(News).filter(News.is_private != True).order_by(
            News.created_date.desc())
    return render_template("feed.html",
                           news=news,
                           form=form,
                           comments=comms,
                           commsform=commsform,
                           title='Новости на главной странице')
Esempio n. 3
0
def index(prof_id):
    session[
        'from_page'] = f'/{prof_id}'  # Объявляем переменные, подключаем базу данных, собираем данные
    form = NewsForm()
    commsform = CommsForm()
    db_sess = db_session.create_session()
    comms = db_sess.query(Comment).all()
    prof_user = db_sess.query(User).filter(
        User.id ==
        prof_id)  # Получаем ИД пользователя, в профиль которого мы зашли
    if current_user.is_authenticated:  # Если пользователь аутентифицирован
        news = db_sess.query(News).filter(News.user.has(id=prof_id)).order_by(
            News.created_date.desc())
        if form.validate_on_submit():  # Форма для создания новости
            attachments = []
            f = request.files['file']
            if f:  # Работаем с вложениями: называем каждое вложение, сохраняем в папку
                # print(request.files.to_dict(flat=False)['file'])
                files = request.files.to_dict(flat=False)['file']
                for file in files:
                    filename = secure_filename(
                        f'{str(time.time()).replace(".", "-")}.png')
                    attachments.append(filename)
                    # print(filename)
                    file.save('static/attachments/' + filename)
            db_sess = db_session.create_session()
            news = News(
            )  # Добавляем данные к экземпляру класса News данные и сохраняем
            news.title = form.title.data
            news.content = form.content.data
            news.is_private = form.is_private.data
            news.attach = '|'.join(attachments)
            current_user.news.append(news)
            db_sess.merge(current_user)
            db_sess.commit()
            return redirect(f'/{prof_id}')
        if commsform.validate_on_submit():  # Форма для комментариев
            db_sess = db_session.create_session()
            comm = Comment(
            )  # Добавляем данные к экземпляру класса Comment данные и сохраняем
            comm.to = commsform.to.data
            comm.content = commsform.content.data
            current_user.comm.append(comm)
            db_sess.merge(current_user)
            db_sess.commit()
            return redirect(f'/{prof_id}')
    else:  # Иначе отправляем все новости
        news = db_sess.query(News).filter(News.is_private != True).order_by(
            News.created_date.desc())
    return render_template("profile.html",
                           news=news,
                           form=form,
                           profile_id=prof_id,
                           profile_user=prof_user,
                           comments=comms,
                           commsform=commsform,
                           title='Профиль')