Ejemplo n.º 1
0
    def calculate(self):
        from app.db_manager.content_manager import get_tag_by_id, filter_tag_by_start_name
        if not self.args:
            self.args = ''
        self.args = self.args.strip()

        if re.search(r'\|', self.args):
            temp_args = self.args.split('|')
            temp_args[-1] = temp_args[-1].strip()
            if temp_args[-1] not in ['name', 'url']:
                raise ExpressionTypeError('表达式 tag 最后一个参数仅支持 ["name","url"]')
            tag = None
            if re.search(r'=', temp_args[0]):
                k, v = temp_args[0].split('=')
                k = k.strip()
                v = v.strip()
                if k == 'id':
                    tag = get_tag_by_id(v)
                elif k == 'name':
                    tag = filter_tag_by_start_name(v)[0]
            else:
                v = temp_args[0].strip()
                tag = get_tag_by_id(v)
                if not tag:
                    tag = filter_tag_by_start_name(v)[0]
        else:
            raise ExpressionTypeError('表达式 tag 至少需要一个参数')

        if not tag:
            self.result = ''

        if temp_args[-1] == 'name':
            self.result = tag.name
        elif temp_args[-1] == 'url':
            self.result = tag.url()
Ejemplo n.º 2
0
    def calculate(self):
        """
        解析结果,要重写
        :return:
        :rtype: dict
        """
        from app.db_manager.content_manager import get_category_by_id, filter_category_by_start_name, get_tag_by_id, \
            filter_tag_by_start_name

        v = self.args['value'].strip()
        if self.args['type'] == 'url':
            return v
        elif self.args['type'] == 'cat':
            category = get_category_by_id(v)
            if not category:
                try:
                    category = filter_category_by_start_name(v)[0]
                except:
                    category = None
            if category:
                return category.url()
            else:
                return ''
        elif self.args['type'] == 'tag':
            tag = get_tag_by_id(v)
            if not tag:
                try:
                    tag = filter_tag_by_start_name(v)[0]
                except:
                    tag = None
            if tag:
                return tag.url()
            else:
                return ''
Ejemplo n.º 3
0
 def get_context_data(self, **kwargs):
     tag_id = self.kwargs['tag_id']
     context = super().get_context_data(**kwargs)
     tag = get_tag_by_id(tag_id)
     if not tag:
         raise Http404()
     context['tag'] = tag
     return context
Ejemplo n.º 4
0
def tag_article_list_view(request, tag_id):
    """
    """
    page = int(request.GET.get('page', 1))
    tag = get_tag_by_id(tag_id)
    if not tag:
        raise Http404()
    t = get_tag_template(tag, page)

    return HttpResponse(t.get_html(request))
Ejemplo n.º 5
0
def get_aside_tags():
    article_tag = ArticleTag.objects.values('tag_id').annotate(
        article_num=Count('id')).order_by('-article_num')[:20]
    aside_tags = [[get_tag_by_id(at['tag_id']), at['article_num']]
                  for at in article_tag]
    fill_tags = []
    if len(aside_tags) != 20:
        fill_tags = Tag.objects.exclude(
            id__in=[at['tag_id']
                    for at in article_tag])[:20 - len(article_tag)]

        fill_tags = [[t, 0] for t in fill_tags]

    return aside_tags + fill_tags
Ejemplo n.º 6
0
def detail_tag_view(request, tag_id):
    tag = get_tag_by_id(tag_id)
    if not tag:
        return JsonFailResponse({'code': 404, 'msg': '404'})

    return JsonSuccessResponse(detail_tag_dict(tag))
Ejemplo n.º 7
0
    def tag(self):
        from app.db_manager.content_manager import get_tag_by_id

        return get_tag_by_id(self.tag_id)