async def question_create(request): """ Question form """ u = User c = Category session_user = ( await u.select(u.id, u.username) .where(u.username == request.user.username) .first() .run() ) data = await request.form() form = QuestionForm(data) form.category.choices = [ (item["id"], item["name"]) for item in await c.select().run() ] title = form.title.data if request.method == "POST" and form.validate(): query = Question( title=title, slug="-".join(title.lower().split()), description=form.description.data, created_at=datetime.datetime.now(), category=form.category.data, user=session_user["id"], ) await query.save().run() return RedirectResponse(url="/questions", status_code=302) return templates.TemplateResponse( "questions/question_create.html", {"request": request, "form": form} )
async def question_create(request): """ Question form """ session_user = request.user.username results = await User.get(username=session_user) data = await request.form() form = QuestionForm(data) title = form.title.data if request.method == "POST" and form.validate(): # possible to insert only one tag without error if "," in form.tags.data or len((form.tags.data).split()) == 1: query = Question( title=title, slug="-".join(title.lower().split()), content=form.content.data, created=datetime.datetime.now(), view=0, question_like=0, user_id=results.id, ) await query.save() tags = [] # split tags and make sure that is valid tags list without empty # space and than insert in db valid_tags_list = [i for i in form.tags.data.split(",") if i != ''] for idx, item in enumerate(valid_tags_list): tag = Tag(name=item.lower()) await tag.save() tags.append(tag) await query.tags.add(tags[idx]) return RedirectResponse(url="/questions/?page=1", status_code=302) tag_error = "Tags must be comma-separated" return templates.TemplateResponse( "questions/question_create.html", {"request": request, "form": form, "tag_error": tag_error}, ) return templates.TemplateResponse( "questions/question_create.html", {"request": request, "form": form} )