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)
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() })
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('/')
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)
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() })
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'
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)
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')
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)
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('/')
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)
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')
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)
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)