Exemple #1
0
 def create(self, *args, **kwargs):
     u"""メモの新規保存処理をします。"""
     form = request.form.copy()
     result, data = ArticleModel.validate(form)
     if not result:
         alert = {'errors': data}
         tmp = self.renderTemplate('index/form.html',
                                   action="/",
                                   method="POST")
         defaults = {
             'title': form['title'],
             'text': form['text'],
             'tags': form['tags']
         }
         form = htmlfill.render(tmp, defaults)
         return self.renderTemplate('index/new.html',
                                    form=form,
                                    alert=alert)
     else:
         model = ArticleModel()
     try:
         model.publish(title=data['title'], text=data['text'])
         SystemInfoModel.incrementArticleCount()
         createTags(data['tags'], model)
         flash(u'保存したかもしれない', 'success')
     except:
         flash((u'失敗したぽよ'), 'errors')
     return redirect('/')
def post_article(title: str = Form(...),
                 body: str = Form(...),
                 session_id=Cookie(default=None)):
    article_model = ArticleModel(config)
    user_id = session.get(session_id).get("user").get("id")
    article_model.create_article(user_id, title, body)
    return RedirectResponse("/articles", status_code=HTTP_302_FOUND)
Exemple #3
0
 def show(self, *args, **kwargs):
     u"""メモの詳細を表示します。"""
     id = kwargs["id"]
     model = ArticleModel.get_by_id(id)
     article = ArticleModel.getArticle(model)
     alert = dict(getFlashedMessage(withCategory=True))
     return self.renderTemplate("index/show.html", article=article, alert=alert)
Exemple #4
0
 def show(self, *args, **kwargs):
     u"""メモの詳細を表示します。"""
     id = kwargs['id']
     model = ArticleModel.get_by_id(id)
     article = ArticleModel.getArticle(model)
     alert = dict(getFlashedMessage(withCategory=True))
     return self.renderTemplate('index/show.html',
                                article=article,
                                alert=alert)
Exemple #5
0
def article_detail_page(request: Request, article_id: int, session_id=Cookie(default=None)):
    article_model = ArticleModel(config)
    article = article_model.fetch_article_by_id(article_id)
    user = session.get(session_id).get("user")
    return templates.TemplateResponse("article-detail.html", {
        "request": request,
        "article": article,
        "user": user
    })
Exemple #6
0
def articles_index(request: Request, session_id=Cookie(default=None)):
    user = session.get(session_id).get("user")
    article_model = ArticleModel(config)
    articles = article_model.fetch_recent_articles()
    return templates.TemplateResponse("article-index.html", {
        "request": request,
        "articles": articles,
        "user": user
    })
Exemple #7
0
 def destroy(self, *args, **kwargs):
     u"""メモを破棄します。"""
     id = kwargs["id"]
     try:
         ArticleModel.deleteModel(id)
         SystemInfoModel.decrementArticleCount()
         flash(u"次はお前がこうなる番だ…", "success")
     except:
         flash((u"失敗したよ"), "errors")
     return "/"
Exemple #8
0
 def destroy(self, *args, **kwargs):
     u"""メモを破棄します。"""
     id = kwargs['id']
     try:
         ArticleModel.deleteModel(id)
         SystemInfoModel.decrementArticleCount()
         flash(u'次はお前がこうなる番だ…', 'success')
     except:
         flash((u'失敗したよ'), 'errors')
     return '/'
Exemple #9
0
 def edit(self, *args, **kwargs):
     u"""メモを編集します。"""
     alert = dict(getFlashedMessage(withCategory=True))
     id = kwargs["id"]
     model = ArticleModel.get_by_id(id)
     form = self.renderTemplate("index/form.html", action="/" + str(id), method="PUT")
     defaults = {"title": model.title, "text": model.text, "tags": ",".join([tag.tagname for tag in model.tags])}
     form = htmlfill.render(form, defaults)
     return self.renderTemplate("index/edit.html", form=form, alert=alert)
Exemple #10
0
 def index(self, *args, **kwargs):
     u"""メモを一覧で表示します。"""
     page = kwargs["page"] if "page" in kwargs else 1
     count = SystemInfoModel.getArticleCount()
     articles = ArticleModel.getArticleForPage(page, PER_PAGE)
     pagination = Pagination(page, PER_PAGE, count)
     alert = dict(getFlashedMessage(withCategory=True))
     return self.renderTemplate(
         "index/index.html", articles=articles, pagination=pagination, pagePath="/page/", alert=alert
     )
Exemple #11
0
 def tagIndex(self, *args, **kwargs):
     name = kwargs['tagname']
     page = kwargs['page'] if 'page' in kwargs else 1
     count = SystemInfoModel.getTagCnt(name)
     start = (page - 1) * PER_PAGE
     models = TagModel.all().filter('tagname =', name).order('-created_at').fetch(PER_PAGE, start)
     pagination = Pagination(page, PER_PAGE, count)
     articles = [ArticleModel.getArticle(m.article) for m in models]
     pagePath = '/tags/' + name + '/page/'
     return self.renderTemplate('index/index.html', articles=articles, pagination=pagination, tagname=name, pagePath=pagePath)
Exemple #12
0
 def create(self, *args, **kwargs):
     u"""メモの新規保存処理をします。"""
     form = request.form.copy()
     result, data = ArticleModel.validate(form)
     if not result:
         alert = {"errors": data}
         tmp = self.renderTemplate("index/form.html", action="/", method="POST")
         defaults = {"title": form["title"], "text": form["text"], "tags": form["tags"]}
         form = htmlfill.render(tmp, defaults)
         return self.renderTemplate("index/new.html", form=form, alert=alert)
     else:
         model = ArticleModel()
     try:
         model.publish(title=data["title"], text=data["text"])
         SystemInfoModel.incrementArticleCount()
         createTags(data["tags"], model)
         flash(u"保存したかもしれない", "success")
     except:
         flash((u"失敗したぽよ"), "errors")
     return redirect("/")
Exemple #13
0
 def update(self, *args, **kwargs):
     u"""メモの編集結果を保存します。"""
     form = request.form.copy()
     id = kwargs['id']
     try:
         model = ArticleModel.get_by_id(id)
         model.publish(title=form['title'], text=form['text'])
         updateTags(form['tags'], model)
         flash(u'保存したと思います。', 'success')
     except:
         flash((u'失敗しますた…'), 'errors')
     return '/' + str(id)
Exemple #14
0
 def update(self, *args, **kwargs):
     u"""メモの編集結果を保存します。"""
     form = request.form.copy()
     id = kwargs["id"]
     try:
         model = ArticleModel.get_by_id(id)
         model.publish(title=form["title"], text=form["text"])
         updateTags(form["tags"], model)
         flash(u"保存したと思います。", "success")
     except:
         flash((u"失敗しますた…"), "errors")
     return "/" + str(id)
Exemple #15
0
 def index(self, *args, **kwargs):
     u"""メモを一覧で表示します。"""
     page = kwargs['page'] if 'page' in kwargs else 1
     count = SystemInfoModel.getArticleCount()
     articles = ArticleModel.getArticleForPage(page, PER_PAGE)
     pagination = Pagination(page, PER_PAGE, count)
     alert = dict(getFlashedMessage(withCategory=True))
     return self.renderTemplate('index/index.html',
                                articles=articles,
                                pagination=pagination,
                                pagePath='/page/',
                                alert=alert)
Exemple #16
0
 def edit(self, *args, **kwargs):
     u"""メモを編集します。"""
     alert = dict(getFlashedMessage(withCategory=True))
     id = kwargs['id']
     model = ArticleModel.get_by_id(id)
     form = self.renderTemplate('index/form.html',
                                action='/' + str(id),
                                method='PUT')
     defaults = {
         'title': model.title,
         'text': model.text,
         'tags': ','.join([tag.tagname for tag in model.tags])
     }
     form = htmlfill.render(form, defaults)
     return self.renderTemplate('index/edit.html', form=form, alert=alert)
Exemple #17
0
 def tagIndex(self, *args, **kwargs):
     name = kwargs['tagname']
     page = kwargs['page'] if 'page' in kwargs else 1
     count = SystemInfoModel.getTagCnt(name)
     start = (page - 1) * PER_PAGE
     models = TagModel.all().filter('tagname =',
                                    name).order('-created_at').fetch(
                                        PER_PAGE, start)
     pagination = Pagination(page, PER_PAGE, count)
     articles = [ArticleModel.getArticle(m.article) for m in models]
     pagePath = '/tags/' + name + '/page/'
     return self.renderTemplate('index/index.html',
                                articles=articles,
                                pagination=pagination,
                                tagname=name,
                                pagePath=pagePath)