Ejemplo n.º 1
0
 def fake_posts(cls, count: int = 50):
     """
     生成博客文章虚拟数据
     :param count: default=50,生成 50 条文章记录
     :return: None
     """
     for i in range(count):
         with db.auto_commit():
             post = Post()
             post.title = FakeData.FAKER.sentence()
             post.content = FakeData.FAKER.text(4000)
             # description 字段是为了 SEO 准备的,最大不超过 150 字符,默认取文章开头前 150 个字符
             post.description = post.content[0: 149]
             category_id_one = random.randint(1, Category.query.count())
             category_id_two = random.randint(1, Category.query.count())
             # 分类 id 为 1 是默认分类,如果出现,则只给文章默认分类
             if category_id_one == 1 or category_id_two == 1:
                 post.categories = [Category.query.get(1)]
             # 如果分类 id 相同那么只取其中一个
             elif category_id_one == category_id_two:
                 post.categories = [Category.query.get(category_id_one)]
             else:
                 post.categories = [
                     Category.query.get(category_id_one),
                     Category.query.get(category_id_two)
                 ]
             db.session.add(post)
Ejemplo n.º 2
0
def newPost(request, id):
    langCode = request.build_absolute_uri().split("/")[-5]
    if not request.session.has_key('username'):
        return redirect('/' + langCode + '/login')
    if request.method == 'POST':
        form = PostForm(request.POST)
        if form.is_valid():
            content = form.cleaned_data["content"]
            post = Post()
            post.content = content
            post.user = User.objects.get(username=request.session["username"])
            post.thread = Thread.objects.get(pk=id)
            post.date = timezone.now()
            post.positionInThread = len(post.thread.thread_posts.all())
            post.save()
            print('/' + langCode + '/forum/thread/' + str(id))
            return redirect('/' + langCode + '/forum/thread/' + str(id))
    else:
        # GET
        form = PostForm()
        thread = Thread.objects.get(pk=id)
        return render(
            request, "forum/newpost.html", {
                "form": form,
                "thread": thread,
                "numberOfPosts": thread.thread_posts.count()
            })
Ejemplo n.º 3
0
def sendpost(rq):
    if 'user_id' not in rq.session.keys():
        return redirect('/login')

    if rq.method != "POST":
        return redirect('/')

    u = User.objects.get(pk=rq.session['user_id'])
    p = Post()
    p.user = u
    p.content = rq.POST['post']
    p.creationdatetime = dt.datetime.now()
    p.posttype = posttypes['normal']

    if 'connected' in rq.POST.keys():
        p.connected = Post.objects.get(pk=rq.POST['connected'])

    p.save()

    if 'usertagged' in rq.POST.keys():
        userstagged = rq.POST.getlist('usertagged')
        if str(0) in userstagged:
            for ut in User.objects.all():
                t = TaggedPost(user=ut, post=p)
                t.save()
        else:
            for ut in userstagged:
                t = TaggedPost(user=User.objects.get(pk=int(ut)), post=p)
                t.save()

    if 'connected' in rq.POST.keys():
        return redirect('/post/%d' % int(rq.POST['connected']))
    return redirect('/')
Ejemplo n.º 4
0
    def update_or_insert_post(self, post_detail_dict):

        tag_list = post_detail_dict.get("tag_list")
        title = post_detail_dict.get("title")
        content = post_detail_dict.get("content")
        create_at = post_detail_dict.get("create_at")

        print("generate post {} ...".format(title))

        all_tag_list = []
        for tag_name in tag_list:
            tag = Tag.query.filter_by(tag=tag_name).first()
            if tag is None:
                tag = Tag(tag=tag_name)
            all_tag_list.append(tag)
        post = Post.query.filter_by(title=title).first()
        if post is None:
            post = Post(title=title,
                        content=content,
                        create_at=datetime.strptime(create_at, "%Y-%m-%d"))
        else:
            post.content = content
            post.create_at = create_at = datetime.strptime(
                create_at, "%Y-%m-%d")
        post.tags.extend(all_tag_list)
        self.db.session.add(post)
        try:
            self.db.session.commit()
        except Exception as e:
            self.db.session.rollback()
            print(e)
Ejemplo n.º 5
0
def newThread(request):
    langCode = request.build_absolute_uri().split("/")[-4]
    if not request.session.has_key('username'):
        return redirect('/' + langCode + '/login')
    if request.method == 'POST':
        thread_form = ThreadForm(request.POST)
        post_form = PostForm(request.POST)
        if thread_form.is_valid() and post_form.is_valid():
            thread = Thread()
            thread.title = thread_form.cleaned_data["title"]
            thread.description = thread_form.cleaned_data["description"]
            thread.save()
            post = Post()
            post.content = post_form.cleaned_data["content"]
            post.date = timezone.now()
            post.user = User.objects.get(username=request.session["username"])
            post.positionInThread = 0
            post.thread = thread
            post.save()
            thread.originalPost = post
            thread.save()
            return redirect("/" + langCode + "/forum/thread/" + str(thread.pk))
    else:
        # GET
        return render(request, 'forum/newthread.html', {
            "thread_form": ThreadForm(),
            "post_form": PostForm()
        })
Ejemplo n.º 6
0
def admin_index():
    if request.method == 'GET':
        user = request.args.get('user')

        if user == app.config['LEIHUNAG_ADMIN_KEY']:
            categories = Category.query.all()
            return render_template('admin/index.html', categories=categories)
        else:
            return render_template('404.html')
    else:
        post = Post()
        post.title = request.values.get("title")
        post.path_name = request.values.get("path")

        post.category_id = request.values.get("category")
        post.author = request.values.get("author")
        category = Category.query.filter_by(
            category_id=post.category_id).first()
        category.post_num += 1
        post.content = request.values.get("content")

        post.create_time = datetime.now()
        if exist_post(post.title):
            return '已经存在此博客'
        if exist_path_name(post.path_name):
            return '已经存在此路径的博客'

        db.session.add(post)
        db.session.flush()
        db.session.commit()
        return 'ok'
Ejemplo n.º 7
0
def posts():
    form = PostForm(request.form)
    posts = Post.objects()
    if request.method == 'POST' and form.validate():
        new_post = Post(title=form.title.data)
        new_post.content = form.content.data or ''
        new_post.name = form.name.data or 'anonymous_user'
        new_post.time = datetime.utcnow()
        new_post.save()
        return redirect(url_for('posts'))
    return render_template('index.html', form=form, posts=posts)
Ejemplo n.º 8
0
def createpost(request):
    if request.method == 'POST':
        if request.POST.get('sapname') and request.POST.get('vorname'):
            post = Post()
            post.title = request.POST.get('sapname')
            post.content = request.POST.get('vorname')
            post.save()

            return render(request, 'app/index.html')

    else:
        return render(request, 'app/index.html')
Ejemplo n.º 9
0
def dashboard_post_new():
    form = CreatePostForm()
    if form.validate_on_submit():
        post = Post()
        post.title = form.title.data
        post.content = form.content.data
        post.user_id = current_user.id
        db.session.add(post)
        db.session.commit()
        flash('Congratulations, you are now a registered user!', 'success')
        return redirect(url_for('dashboard'))
    return render_template('dashboard/post_new.html',
                           title="New Post",
                           form=form)
Ejemplo n.º 10
0
def add_post():
    print('postapi add_post')
    form = AddPostForm(request.form)
    if request.method == 'GET':
        return render_template('add_post.html', form=form)
    else:
        if form.validate():
            post = Post()
            post.title = form.title.data
            post.content = form.content.data
            db.session.add(post)
            db.session.commit()
        else:
            print(form.errors)
        return redirect('/')
Ejemplo n.º 11
0
def edit_post(id: int):
    post = Post.query.get(id)
    if post is None:
        post = Post(userid=current_user.id)
    elif post not in current_user.posts:
        return redirect(url_for('main.post', id=id))
    form = PostForm()
    if form.validate_on_submit():
        post.title = form.title.data
        post.content = form.content.data
        db.session.add(post)
        db.session.commit()
        return redirect(url_for('main.post', id=id))
    form.title.data = post.title
    form.content.data = post.content
    return render_template('edit_post.html', form=form)
Ejemplo n.º 12
0
def new():
    if request.method == 'POST':
        title = request.form['title']
        content = request.form['content']
        post_id = request.form['post_id']

        post = Post.query.get(post_id)
        
        if not post: post = Post()    

        if title:
            post.set_title(title)
            post.time = datetime.now()
            post.content = content
            db.session.add(post)
            db.session.commit()
            flash('The post has been saved')
            return redirect(url_for('base.index'))
        
        else:
            flash('Your post needs at least a title!')

    return render_template('post/new.html')
Ejemplo n.º 13
0
def create_post():
    form = PostForm(form=request.form)
    if request.method == 'POST' and form.validate():
        publish = False
        filename = None
        if form.publish.data:
            publish = True
        if 'cover_image' in request.files:
            cover_image = request.files['cover_image']
            image_name = cover_image.filename
            image_name_parts = image_name.split('.')
            image_name = append_timestamp(
                image_name_parts[0]) + '.' + image_name_parts[1]
            filename = uploads.save(cover_image, name=image_name)
        post = Post()
        post.post_title = form.title.data
        post.content = form.content.data
        post.user_id = current_user.user_id
        post.published = publish
        if filename:
            post.cover_image = filename
        tags = form.tags.data
        for tag_id in tags:
            tag = check_tag(tag_id)
            if tag:
                post.tags.append(tag)
        db.session.add(post)
        db.session.commit()

        flash('Post created successfully', 'success')
        return redirect(url_for('admin.list_posts'))

    data = {
        'title': 'Create Post',
        'form': form,
    }
    return render_template('admin/posts/create.html', **data)
Ejemplo n.º 14
0
def submission():
    form = PostForm()
    form.tag(placeholder='aaa')
    if form.validate_on_submit():
        save_to_db_objs = []
        post = Post()
        post.title = form.titile.data
        post.content = form.content.data
        post.category_id = form.category.data
        post.author_id = current_user.id
        if form.tag.data:
            tags = form.tag.data.split(',')
            for t in tags:
                tag_obj = Tag.query.filter_by(name=t).first()
                if tag_obj is None:
                    tag_obj = Tag(name=t)
                post.tags.append(tag_obj)
                save_to_db_objs.append(tag_obj)
        save_to_db_objs.append(post)
        db.session.add_all(save_to_db_objs)
        db.session.commit()
        return redirect(url_for('.post_index'))

    return render_template('frontend/submission.html', form=form)