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)
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='Новости на главной странице')
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='Профиль')