Exemple #1
0
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}
    )
Exemple #2
0
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}
    )