예제 #1
0
    def dispatch_request(self):
        form = PostForm()
        username = session['active_user']['username']
        author = db_user(username=username)
        posts = db_posts(author=author)

        if request.method == 'POST':
            if form.validate_on_submit():
                title = form.title.data
                content = form.content.data
                tag = form.tag.data

                try:
                    new_post = Post(author=author,
                                    title=title,
                                    content=content,
                                    tag=tag)
                    db.session.add(new_post)
                    db.session.commit()
                    flash('Your post is successfully submitted', 'success')
                    return redirect(url_for(request.endpoint))
                except Exception as e:
                    flash('Invalid inputs.', 'error')
                    return redirect(url_for(request.endpoint))

        return render_template('admin.html',
                               username=username,
                               form=form,
                               posts=posts)
예제 #2
0
    def search_posts(
        self, field=None, field_type=ID, start_time=None,
        start_post=0, num_posts=0, direction=ASCENDING):
        '''
            Searches database for posts that meet parameters
            :id: int
            :return: [Post, Post, ...]
        '''

        search = {}
        if field:
            if field_type is ID:
                try:
                    search[field_type] = ObjectId(field)
                except InvalidId:
                    return None
            else:
                search[field_type] = field

        if start_time != None:
            search[TIME] = {'$lte': start_time}

        query = self._collection.find(search) \
                .sort(field_type, direction) \
                .skip(start_post) \
                .limit(num_posts)

        posts = []
        for item in query:
            post_data = generate_post_data(item)
            posts.append(Post(**post_data))

        return posts
예제 #3
0
def new():
    form = NewPostForm()
    post = Post()
    if form.validate_on_submit():
        form.populate_obj(post)
        db.session.add(post)
        db.session.commit()
        posts = Post.nearby_posts(post.lat, post.long, POST_DISTANCE_THRESHOLD)
        return jsonify(result=[{'long': str(p.long), 'lat': str(p.lat), 'secret': p.secret, 'created': str(p.created_time)} for p in posts]), 200
    return jsonify(result={'error': 'invalid form.'})
예제 #4
0
def editpost():
    if g.auth is not None and g.auth.role is not USER.ADMIN:
        return redirect(url_for('not_found'))

    if request.method == 'POST':
        try:
            form = request.args

            title = form.get('title')
            pid = form.get('drafts')
            dopost = form.get('dopost')
            post = Post.query.filter_by(title=title).first()
            if post is None:
                post = Post.query.filter_by(id=pid).first()

            if post is None:
                post = Post()
                post.user_id = g.user.id
                post.title = title
                post.textbody = form.get('textbody').encode('u8')
                post.htmlbody = form.get('htmlbody').encode('u8')
                if dopost == True or dopost == "true":
                    post.draft = False
                    post.posted = datetime.datetime.now()
                db.session.add(post)
            else:
                post.title = title
                post.textbody = form.get('textbody').encode('u8')
                post.htmlbody = form.get('htmlbody').encode('u8')
                if dopost == True or dopost == "true":
                    post.draft = False
                    post.posted = datetime.datetime.now()

            db.session.commit()

            return make_response("Post Saved")
        except:
            print >> sys.stderr, sys.exc_info()
            return make_response("Exceptional Error")

    pid = request.args.get('pid')

    form = PostForm()
    form.drafts.choices = [
        (p.id, p.title)
        for p in Post.query.filter_by(draft=True).order_by(Post.title).all()
    ]
    form.drafts.choices.insert(0, (-1, "New Post"))

    return render_template("posts/editpost.html",
                           form=form,
                           user=g.user,
                           admin=g.admin,
                           pid=pid)
예제 #5
0
    def add_post(self, post):
        '''
            Save post to database
            :data: Post
            :return: Post
        '''
        self._collection.insert_one(post)
        post_data = generate_post_data(post)
        new_post = Post(**post_data)

        return new_post
예제 #6
0
    def execute(self, user_id: int, caption: str) -> Union[Post, NoReturn]:
        post = Post(user_id=user_id, caption=caption)

        try:
            session.add(post)
            session.commit()
        except IntegrityError as e:
            session.rollback()
            raise CustomException(str(e), code=500)

        return post
예제 #7
0
def index():
    form = PostForm()
    if form.validate_on_submit():
        post = Post(author=current_user, body=form.body.data)
        post.commit()
        # Reload the page to avoid resubmit.
        return redirect(url_for('users.index'))
    posts = Post.query\
        .filter_by(author=current_user, active=True)\
        .order_by(Post.created.desc())\
        .all()
    return render_template('users/index.jinja', form=form, posts=posts)
예제 #8
0
def create_post():  # todo: check if only available to admin
    form = PostForm()

    if form.validate_on_submit():

        post = Post(title=form.title.data,
                    text=form.text.data,
                    user_id=current_user.id)
        db.session.add(post)
        db.session.commit()
        return redirect(url_for('settings_blueprint.administration'))

    return render_template('create_post.html', form=form)
예제 #9
0
def write_posts(login, password, count, owner_id, username):
    urls = get_pic_urls(login, password, count, owner_id)
    user = User.objects(username=username).get()
    posts_value = Post.objects.count()
    last_posts_urls = get_last_urls(50)
    for url in urls:
        if url not in last_posts_urls:
            Post(title=f"Post {posts_value}",
                 urls=[url],
                 tag='vk',
                 text='',
                 user=user).save()
            posts_value += 1
예제 #10
0
def add_post_proc():
    form = PostAddForm()
    #if form.validate_on_submit():
    user = User.objects(id=current_user.id).get()
    post = Post(
        title=form.title.data,
        tag=form.tag.data,
        text=form.text.data,
        urls=form.url.data.split(),
        user=user,
    )
    post.save()
    flash('Add post')
    return redirect(url_for("posts.index"))  #redirect(get_redirect_target())
예제 #11
0
    def get_context(self, slug=None):
        form_cls = model_form(Post, exclude=('created_at', 'comments'))

        if slug:
            post = Post.objects.get_or_404(slug=slug)
            if request.method == 'POST':
                form = form_cls(request.form, inital=post._data)
            else:
                form = form_cls(obj=post)
        else:
            post = Post()
            form = form_cls(request.form)

        context = {"post": post, "form": form, "create": slug is None}
        return context
예제 #12
0
def write_to_db():
    posts = take_posts()
    user = User.objects(username='******').get()
    last_posts_urls = get_last_urls(50)
    posts_value = Post.objects.count()
    for post in posts:
        data = get_data(post)
        if data.get('img') is None:
            continue
        if data.get('img') not in last_posts_urls:
            Post(title=f"Post {posts_value}",
                    urls=[data.get('img')],
                    tag='vk2',
                    text=data.get('text'),
                    user=user).save()
            posts_value += 1
def add_post():
    form = PostForm()
    if form.validate_on_submit():
        post = Post(title=form.title.data,
                    subtitle=form.subtitle.data,
                    content=form.content.data,
                    author=current_user)

        db.session.add(post)
        db.session.commit()

        flash('Post has been created!', 'success')
        return redirect(url_for('posts.home'))
    return render_template('add_post.html',
                           form=form,
                           form_title="Add a new post")
예제 #14
0
 def setUpTestData(cls):
     socialmedia = SocialMedia(socialmedia="linkedin")
     socialmedia.save()
     author = User.objects.create_user(
         username="******",
         email="*****@*****.**",
         password="******",
     )
     author.save()
     post = Post(
         body="Mon post de test",
         author=author,
         schedule_time="2021-09-07 09:23",
     )
     post.save()
     print(post.id)
     post.socialmedia.add(socialmedia.id)
예제 #15
0
def post_editor():
    form = PostingForm()
    if form.validate_on_submit():
        title = form.title.data
        subtitle = form.subtitle.data
        content = form.content.data

        new_post = Post(title=title,
                        subtitle=subtitle,
                        content=content,
                        user_id=current_user.id)

        db.session.add(new_post)
        db.session.commit()

        flash("Post has been created", "success")
        return redirect(url_for("posts.home"))
    return render_template("post_editor.html", form=form, post=None)
def create_posts(n=10, *, user_id=None, session):
    for _ in range(n):
        p = Post(content=fake.unique.text(), user_id=user_id)
        session.add(p)
    session.commit()