Ejemplo n.º 1
0
 def get(self, tag_name):
     page = int(self.request.get('page', 1))
     offset = (page - 1) * self.LIST_PER_PAGE
     tag = Tag.get_by_name(tag_name)
     self.list = Tag.get_article_list(tag=tag, limit=self.LIST_PER_PAGE, offset=offset) if tag else None
     self.count = tag.count if tag else 0
         
     return Action.Result.DEFAULT
Ejemplo n.º 2
0
def tag_index(tag_name, post_per_page=10):
    current_page = 1
    if 'page' in request.args.keys():
        current_page = int(request.args.get('page'))
    try:
        tag = Tag.get_by_name(tag_name)
        posts = Page(post_per_page, current_page, tag).posts()
        more = len(posts) - post_per_page == 1
    except LeanCloudError as e:
        if e.code == 101:
            tag, posts, more = None, None, False
        else:
            raise e
    return render_template('index.html',
                           tag=tag,
                           posts=posts,
                           more=more,
                           page=current_page)
Ejemplo n.º 3
0
def new_post():
    author = User.get_current()
    title, content = request.form['title'], request.form['content']
    tag_names = parse_tag_names(request.form['tags'])

    f = request.files['featuredImage']
    if f.filename == '':
        featuredImage = None
    else:
        featuredImage = Attachment(f.filename, data=f.stream)
    if featuredImage and not allowed_file(featuredImage.extension):
        flash('warning', 'Upload a proper image.')
        return redirect(url_for('post_form'))

    post = Post()
    post.title = title
    post.content = content
    post.markedContent = markdown(content)
    post.author = author
    if featuredImage:
        post.featuredImage = featuredImage

    acl = ACL()
    acl.set_public_read_access(True)
    acl.set_write_access(author.id, True)
    post.set_acl(acl)

    post.save()

    tags = []
    for name in tag_names:
        tag = Tag.get_by_name(name)
        if not tag:
            tag = Tag()
            tag.name = name
        tags.append(tag)
    for tag in tags:
        m = TagPostMap()
        m.set({'tag': tag, 'post': post})
        m.save()
        tag.increment('post_count')
    Tag.save_all(tags)

    return redirect(url_for('show_post', post_id=post.id))
Ejemplo n.º 4
0
    def get(self, tag_name):
        t = Tag.get_by_name(tag_name)
        if t == None:
            # TODO: error page?
            return

        # Gather all the recipes for all the QIs for this ingredient
        recipes = uniq([Recipe.get(key) for key in t.tagged],
                       lambda x: x.title)

        buckets,keys = bucketize(recipes, lambda x: x.title)
        templatevalues = RequestContext(self.request, {
                'tag' : t,
                'recipes' : recipes,
                'buckets' : buckets,
                'keys' : keys
                })
        path = os.path.join(os.path.dirname(__file__), 'recipes_by_tag.html')
        self.response.out.write(template.render(path, templatevalues))
Ejemplo n.º 5
0
Archivo: web.py Proyecto: i19/tagger
def get_item_from_rank():
    resp = Resp()
    rank_id = request.args.get("rank_id", None)
    tag_name = request.args.get("tag_name", None)

    item_ids_from_rank = ItemRank.query.with_entities("item_id").filter_by(
        rank_id=rank_id
    ).all()
    if tag_name:
        tag = Tag.get_by_name(tag_name).first()
    if tag:
        item_ids_from_tag = ItemTag.query.with_entities("item_id").filter_by(
            tag_id=tag.id
        ).all()
    else:
        item_ids_from_tag = []
    item_ids = list(set(item_ids_from_rank) & set(item_ids_from_tag))
    result = []
    for item_id in item_ids:
        item = Item.get_by_id(item_id)
        result.append(item)
    resp.data = result
    return resp