Пример #1
0
def create_thread_page():
    form = ThreadCreateForm()
    if form.validate_on_submit():
        thread_title = form.title.data
        thread_theme = form.theme.data
        thread_main_text = form.text.data
        # Создаем запись в таблице posts
        post = Post()
        post.type = 'thread'
        post.created_date = datetime.now().date()
        post.created_time = datetime.now().time()
        db_sess = db_session.create_session()
        db_sess.add(post)
        db_sess.commit()
        # Собираем фотографии с формы
        images = []
        for file in [
                form.image_1.data, form.image_2.data, form.image_3.data,
                form.image_4.data
        ]:
            if file:
                filename = secure_filename(file.filename)
                filename = generate_s(9) + '.' + filename.split('.')[-1]
                filepath = 'static/images/' + filename
                file.save(filepath)
                image = Image()
                image.post_id = post.id
                image.title = filename
                image.file_path = filepath
                images.append(filepath)
                db_sess.add(image)
                db_sess.commit()
        # Создаем запись в таблице threads
        thread = Thread()
        thread.title = form_text(thread_title, 156)
        thread.post_id = post.id
        thread.theme = form_text(thread_theme, 156)
        thread.main_text = form_text(thread_main_text, 156)
        thread.images = images
        thread.answers_amount = 0
        thread.date = post.created_date.strftime("%d/%m/%Y")
        thread.time = post.created_time.strftime("%H.%M.%S")
        db_sess.add(thread)
        db_sess.commit()
        return redirect('/home')
    param = dict()
    param['title'] = 'Три.ч - Создание треда'
    param['form'] = form
    return render_template('create-thread.html', **param)
Пример #2
0
def posts():
    if current_user.is_authenticated and current_user.position == 1:
        session = db_session.create_session()
        s = []
        for i in session.query(Teacher).filter(
                current_user.id == Teacher.id_users):
            s.append(i.subjects)
        s = list(map(int, s[0].split(',')))
        sub = session.query(numberSubject).filter(numberSubject.id.in_(s))
        form = PostForm()
        if form.validate_on_submit():
            session = db_session.create_session()
            post = Post()
            post.headline = form.title.data
            post.text = form.content.data
            post.pathPict = form.img.data.filename
            post.id_user = current_user.id
            post.position = int(form.position.data)
            session.add(post)
            session.merge(current_user)
            session.commit()
            rez = Image.open(BytesIO(form.img.data.read()))
            rez.save(f'static/img/{form.img.data.filename}', 'PNG')
            vk_send(int(form.position.data), form.title.data,
                    form.content.data)
            return redirect('/posts')
        return render_template('posts.html', form=form, sub=sub)
Пример #3
0
def add_post():
    if not current_user.is_authenticated:
        return redirect('/login')
    form = AddPostForm()
    content = form.content.data
    if request.method == 'POST' and content:
        session = db_session.create_session()
        post = Post(user=session.query(User).get(current_user.id))
        post.content = content
        hash_tags = extract_hash_tags(content)
        for hash_tag in hash_tags:
            tag = Tag()
            tag.tag = hash_tag
            tag.post_id = post.id
            tag.post = post
            session.add(tag)
        session.add(post)  # TODO: TO USE API IN FUTURE
        session.commit()
    return render_template('add_post.html', form=form)
Пример #4
0
def create_post():
    if not request.json:
        return jsonify({'error': 'Empty request'})
    elif not all(key in request.json
                 for key in ['title', 'content', 'user_id', 'is_private']):
        return jsonify({'error': 'Bad request'})
    db_sess = db_session.create_session()
    posts = Post(title=request.json['title'],
                 content=request.json['content'],
                 user_id=request.json['user_id'],
                 is_private=request.json['is_private'],
                 image_name=request.json['image_name'])
    db_sess.add(posts)
    db_sess.commit()
    return jsonify({'success': 'OK'})
Пример #5
0
def get_film(film_id):
    if not current_user.is_authenticated:
        return redirect('/login')
    film = search.get_info(film_id)
    if request.method == 'POST':
        if 'like' in dict(request.form).keys():
            if request.form['like'] == 'Нравится':
                print(1)
            elif request.form['like'] == 'Не нравится':
                print(2)
        elif 'submit_button' in dict(request.form).keys():
            text = request.form['text']
            post = Post()
            post.creator_id = current_user.id
            post.text = text
            post.film_id = film_id
            db_sess.add(post)
            db_sess.commit()
            user = db_sess.query(User).filter(
                User.id == current_user.id).first()
            user.number_own_posts += 1
            current_user.number_own_posts += 1
            db_sess.commit()
    return render_template('film.html', film=film)
Пример #6
0
def create_post():
    form = PostForm()

    db_sess = db_session.create_session()
    categories = db_sess.query(Category).all()
    # заполнение комбобокса категориями
    form.category.choices = [(c.id, c.name) for c in categories]

    if form.validate_on_submit():
        post = Post()
        post.title = form.title.data
        post.content = form.content.data
        post.author_id = current_user.id

        path = 'static/img/thumbnails'
        filename = f'post_{uuid.uuid4().hex}.jpg'

        if form.icon.data:
            # если прикреплённый файл является изображением
            if form.icon.data.content_type.startswith('image'):
                image: Image.Image = Image.open(form.icon.data)
                image.thumbnail((350, 350))
                image = image.convert('RGB')
                image.save(os.path.join(path, filename))
                post.icon = filename
            else:
                return render_template('add_edit_post.html',
                                       title='Добавление поста',
                                       message='Надо прекреплять изображение',
                                       form=form)

        categories = db_sess.query(Category).filter(
            Category.id.in_(form.category.data)).all()
        post.add_categories(categories)

        db_sess.add(post)
        db_sess.commit()

        return redirect('/')

    return render_template('add_edit_post.html',
                           title='Добавление поста',
                           form=form,
                           categories=categories)
def newpost():
    db_sess = db_session.create_session()
    if session.get('user_id', -1) == -1:
        return redirect('/login')
    elif db_sess.query(User).filter(User.id == session.get('user_id')).first():
        form = PostForm()
        username = db_sess.query(User).filter(User.id == session.get('user_id')).first().name
        if form.validate_on_submit():
            post = Post(
                title=form.title.data,
                content=form.text.data,
                author=session.get('user_id'))
            db_sess.add(post)
            db_sess.commit()
            return redirect('/')
        return render_template('newpost.html', title='Новый пост', form=form, username=username).replace('&lt;', '<').replace('&gt;', '>')
    else:
        return 'Error: user is not registered but logged in'
Пример #8
0
def group(id_group):                                          # возможность писать посты как у юзера и редачить их
    session = db_session.create_session()
    user = session.merge(current_user)
    form = PostForm()
    my = g.user.id
    if form.validate_on_submit():
        way_to_file = ""
        file = form.file_url.data
        if file and allowed_file(file.filename):
            filename = secure_filename(file.filename)
            way_to_file = os.path.join(app.config['UPLOAD_FOLDER_GROUP'], filename)
            file.save(way_to_file)
        post = Post(text=form.text.data,
                    date=datetime.datetime.now().strftime("%A %d %b %Y (%H:%M)"),
                    autor_id=id_group,
                    file=way_to_file)
        session.add(post)
        session.commit()
        return redirect(f'/group/{id_group}')
    posts = session.query(Post).filter(Post.autor_id == id_group).order_by(Post.id.desc())
    group_info = session.query(Group).filter_by(id=id_group).first()
    return render_template('group.html', title='Авторизация', form=form, posts=posts, info=group_info,
                           avatar=group_info.avatar, id=id_group, my=my,  user=user)
Пример #9
0
def add_post():
    """ Обработчик страницы создания поста """

    form = PostForm()
    if form.validate_on_submit():
        session = db_session.create_session()
        post = Post()
        post.title = form.title.data
        post.content = form.content.data
        post.string_created_date = str(datetime.datetime.now())[0:16]
        current_user.posts.append(post)
        session.merge(current_user)
        session.commit()
        if bool(form.attachment.data):
            session = db_session.create_session()
            post = session.query(Post).order_by(Post.id.desc()).first()
            f = form.attachment.data
            type = f.filename.split('.')[-1]
            filename = f'post_attachment_{post.id}.{type}'
            path = os.path.join('static', 'attachments', filename)
            f.save(path)
            post.attachment = path
            session.commit()

        post_id = session.query(Post).order_by(Post.id.desc()).first().id

        # Параллельным процессом запускаем рассыку новости всем зарегистрированным пользователям
        thread.start_new_thread(
            os.system, (f'python send_news_emails.pyw --id {post_id}', ))

        return redirect('/blog')

    return render_template('post.html',
                           title='Новый пост',
                           form=form,
                           css=url_for('static',
                                       filename='css/post_style.css'))
Пример #10
0
def answer_page(post_id):
    db_sess = db_session.create_session()
    answering_to = post_id
    response = db_sess.query(Post).filter(Post.id == answering_to)
    type_of_post = None
    for p in response:
        type_of_post = p.type
    form = AnswerForm()
    if form.validate_on_submit():
        answer_text = form.text.data
        # Заводим запись в таблице posts
        post = Post()
        post.type = 'answer'
        post.created_date = datetime.now().date()
        post.created_time = datetime.now().time()
        db_sess.add(post)
        db_sess.commit()
        # Бежим по фотографиям
        images = []
        for file in [
                form.image_1.data, form.image_2.data, form.image_3.data,
                form.image_4.data
        ]:
            if file:
                filename = secure_filename(file.filename)
                filename = generate_s(9) + '.' + filename.split('.')[-1]
                filepath = 'static/images/' + filename
                file.save(filepath)
                image = Image()
                image.post_id = post.id
                image.title = filename
                image.file_path = filepath
                images.append(filepath)
                db_sess.add(image)
                db_sess.commit()
        # Создаем запись об ответе
        answer = Answer()
        answer.main_text = form_text(answer_text, 176)
        answer.post_id = post.id
        answer.answering_to = answering_to
        answer.images = images
        answer.date = post.created_date.strftime("%d/%m/%Y")
        answer.time = post.created_time.strftime("%H.%M.%S")
        answer.thread_id = answering_to
        if type_of_post == 'thread':
            answer.thread_id = answering_to
            db_sess.add(answer)
            db_sess.commit()
            return redirect(f'/thread/{answering_to}')
        else:
            post = None
            for a in db_sess.query(Answer).filter(
                    Answer.post_id == answering_to):
                post = a
            answer.thread_id = post.thread_id
            db_sess.add(answer)
            db_sess.commit()
            return redirect(f'/thread/{post.thread_id}')
    param = dict()
    param['title'] = f'Три.ч - Ответ №{answering_to}'
    param['post_type'] = type_of_post
    if type_of_post == 'thread':
        param['posts'] = db_sess.query(Thread).filter(
            Thread.post_id == answering_to)
    else:
        param['posts'] = db_sess.query(Answer).filter(
            Answer.post_id == answering_to)
    param['form'] = form
    return render_template('answer.html', **param)