Exemplo n.º 1
0
 def get(self):
     response_data = deepcopy(self.base_response_data)
     page, size = get_values_by_keys(
         self.parser.parse_args(),
         [('page', current_app.config['DEFAULTPAGE']),
          ('size', current_app.config['DEFAULTSIZE'])])
     response_data = self.make_pagination_data(page, size, response_data)
     return response_data, 200
Exemplo n.º 2
0
 def delete(self):
     response_data = deepcopy(self.base_response_data)
     tag_id = get_values_by_keys(self.parser.parse_args(), [('id', -1)])
     res = self.delete_data_by_id(TagModel, tag_id)
     if not res:
         response_data['res'] = 0
         response_data['message'] = "the id is invalid."
     return response_data, 200
Exemplo n.º 3
0
 def get(self):
     response_data = deepcopy(self.base_response_data)
     count, = get_values_by_keys(
         self.parser.parse_args(),
         [('count', current_app.config["DEFAULTCOUNT"])])
     articles = self.requester.get_popular_posts(ArticleModel, count=count)
     response_data['data'] = marshal(data=articles, fields=self.fields)
     return response_data, 200
Exemplo n.º 4
0
    def post(self):
        response_data = deepcopy(self.base_response_data)
        about_data = self.requester.get_model_all(AboutModel)[0]
        new_content, = get_values_by_keys(self.parser.parse_args(),
                                          [("content", about_data.content)])
        about_data.content = new_content
        self.requester.commit()

        return response_data
Exemplo n.º 5
0
    def put(self):
        response_data = deepcopy(self.base_response_data)
        tag_name, = get_values_by_keys(self.parser.parse_args(),
                                       [('name', '全部')])

        res = self.add_new_tag(tag_name)
        if not res:
            response_data['res'] = 0
            response_data['message'] = "the name is invalid."
        return response_data, 200
Exemplo n.º 6
0
 def delete(self):
     """
     删除分类,同该分类下的文章一同删除
     :return:
     """
     response_data = deepcopy(self.base_response_data)
     category_id = get_values_by_keys(self.parser.parse_args(),
                                      [('id', -1)])
     res = self.delete_data_by_id(CategoryModel, category_id)
     if not res:
         response_data['res'] = 0
         response_data['message'] = "the id is invalid."
     return response_data, 200
Exemplo n.º 7
0
 def post(self):
     """
     修改分类
     :return:
     """
     response_data = deepcopy(self.base_response_data)
     name, category_id = get_values_by_keys(self.parser.parse_args(),
                                            [('name', None), ('id', -1)])
     res = self.modify_category(name, category_id)
     if not res:
         response_data['res'] = 0
         response_data['message'] = "the id or name is invalid."
     return response_data, 200
Exemplo n.º 8
0
 def put(self):
     """
     添加一个新的分类
     :return:
     """
     response_data = deepcopy(self.base_response_data)
     category_name, = get_values_by_keys(self.parser.parse_args(),
                                         [('name', '全部')])
     res = self.add_new_category(name=category_name)
     if not res:
         response_data['res'] = 0
         response_data['message'] = "the name is invalid"
     return response_data
Exemplo n.º 9
0
    def delete(self):
        response_data = deepcopy(self.base_response_data)
        # 从parser中获取提交的数据,如果提交的数据没有通过验证将自动返回错误信息。
        # 返回值是一个列表,所有加','解包
        article_uuid, = get_values_by_keys(self.parser.parse_args(),
                                           [('uuid', -1)])

        res = self.delete_data(ArticleModel, article_uuid)

        if not res:
            response_data['res'] = 0
            response_data['message'] = 'the id is invalid.'
        return response_data, 200
Exemplo n.º 10
0
 def get(self):
     """
     获取指定id所对应的tag信息
     :return:
     """
     response_data = deepcopy(self.base_response_data)
     tag_id = get_values_by_keys(self.parser.parse_args(), [('id', -1)])
     res, tag = self.requester.get_model_by_id(TagModel, tag_id)
     if res:
         response_data['data'] = marshal(tag, fields=self.fields)
     else:
         response_data['res'] = 0
         response_data['message'] = "the id is invalid."
     return response_data, 200
Exemplo n.º 11
0
    def post(self):
        """
        修改指定id对应的tag的name
        :return:
        """
        response_data = deepcopy(self.base_response_data)
        tag_id, tag_name = get_values_by_keys(self.parser.parse_args(),
                                              [('id', -1), ('name', None)])

        res = self.modify_tag(tag_id, tag_name)
        if not res:
            response_data['res'] = 0
            response_data['message'] = "the id or name is invalid."
        return response_data, 200
Exemplo n.º 12
0
    def get(self):
        # 响应数据
        response_data = deepcopy(self.base_response_data)

        # 从请求中查询参数
        article_uuid, = get_values_by_keys(self.parser.parse_args(),
                                           [('uuid', '-1')])
        res, article = self.requester.get_model_by_uuid(
            ArticleModel, article_uuid)
        if res:  # 查找成功
            response_data['data'] = marshal(data=article, fields=self.fields)
        else:
            response_data['res'] = 0
            response_data['message'] = 'the uuid is invalid.'
        return response_data, 200
Exemplo n.º 13
0
    def post(self):
        response_data = deepcopy(self.base_response_data)
        # 从parser中获取提交的数据,如果提交的数据没有通过验证将自动返回错误信息。
        args = self.parser.parse_args()
        article_id, = get_values_by_keys(args, [('id', -1)])

        # 根据id查找文章
        res, article = self.requester.get_model_by_id(ArticleModel, article_id)
        if res:
            # 更新文章
            self.update_article(article, args)
        else:
            response_data['res'] = 0
            response_data['message'] = 'the id is invalid.'

        return response_data, 201
Exemplo n.º 14
0
    def get(self):
        """
        使用id查询某个分类信息
        :return:
        """

        response_data = deepcopy(self.base_response_data)
        category_id, = get_values_by_keys(self.parser.parse_args(),
                                          [('id', -1)])
        res, category = self.requester.get_model_by_id(CategoryModel,
                                                       category_id)
        if res:
            response_data['data'] = marshal(category, self.fields)
        else:
            response_data['res'] = 0
            response_data['message'] = "the id is invalid."
        return response_data, 200
Exemplo n.º 15
0
    def update_article(self, article, data):
        """
        修改文章
        :param article: 数据库查询的article
        :param data: 需要更新的数据
        :return: None
        """

        # 处理原文章没有标签添加标签时出错的问题
        if article.tags.all() is None:
            origin_tag_name_list = None
        else:
            origin_tag_name_list = [tag.name for tag in article.tags.all()]
        # 处理原文章没有分类时添加分类出错的问题
        if article.category is None:
            origin_category_name = None
        else:
            origin_category_name = article.category.name
        title, content, abstract, like_num, c_name, t_names, view_num, post_time, img_url = get_values_by_keys(
            data, [('title', article.title), ('content', article.content),
                   ('abstract', article.abstract),
                   ('likeNum', article.like_num),
                   ('category', origin_category_name),
                   ('tags', origin_tag_name_list),
                   ('viewNum', article.view_num),
                   ('postTime', article.post_time),
                   ("coverImgUrl", article.img_url)])
        try:
            post_uuid = article.uuid
            if title is not article.title:  # title值被修改需要重新生成uuid
                post_uuid = ArticleModel.generate_uuid(title)
            article.uuid = post_uuid
            article.title = title
            article.content = content
            article.abstract = abstract
            article.like_num = like_num
            article.category = self.requester.get_model_by_name(
                CategoryModel, c_name)
            article.tags = self.requester.get_model_by_names(TagModel, t_names)
            article.view_num = view_num
            article.img_url = img_url
            # 更新发布时间时需要将前端传来的时间戳转化为datetime对象
            if type(post_time) is int:
                post_time = get_datetime(int(post_time))
            article.post_time = post_time

            self.requester.commit()
            return True
        except:
            return False
Exemplo n.º 16
0
    def put(self):
        response_data = deepcopy(self.base_response_data)

        # 从parser中获取提交的数据,如果提交的数据没有通过验证将自动返回错误信息。
        title, content, abstract, c_name, t_names, like_num, view_num, post_time, cover_img_url = get_values_by_keys(
            self.parser.parse_args(), [
                'title', 'content', 'abstract', 'category', 'tags',
                ('likeNum', 0), ('viewNum', 0), ("postTime", None),
                ("coverImgUrl", "")
            ])  # tags 为列表,其余为字符串
        res, new_post = self.build_article(title=title,
                                           content=content,
                                           abstract=abstract,
                                           c_name=c_name,
                                           t_names=t_names,
                                           like_num=like_num,
                                           view_num=view_num,
                                           post_time=post_time,
                                           img_url=cover_img_url)
        if res:
            self.requester.add(new_post)
            self.requester.commit()
        else:
            response_data['res'] = 0
            response_data['message'] = "error"

        return response_data, 201