Пример #1
0
def catit():
    request_cat_ids = request.form['cats'].split(',')
    photoid = request.form['photoid']
    
    photo = Query(Photo).get(photoid)
    print photo.get('name')
    cat_relation = photo.relation('category')
    previousCats = cat_relation.query().find()

    # Remove previous category
    for cat in previousCats:
        cat_relation.remove(cat)
    
    # Set new category
    for catid in request_cat_ids:
        cat = Query(Category).get(catid)
        print cat.get('name')
        if cat:
            cat_relation.add(cat)

    # photo.set('featured', True if (featured == 'true') else False)

    photo.save()

    alreadyCategorizedCount = Query.do_cloud_query('select count(*) from Photo where category != null').count
    
    return json.dumps({'status':'OK', 'count': alreadyCategorizedCount, 'photoid': photoid});
Пример #2
0
def tagit():
    tags = request.form['tags'].split(',')
    photo = Query(Photo).get(request.form['photoid'])

    ptags_relation = photo.relation('ptags')

    for tag in tags:
        # Check if tag name existed
        results = Query(Tag).equal_to('name', tag).find()
        if len(results) != 0:
            # existed
            avostag = results[0]
        else:
            # not existed
            # save general tag
            avostag = Tag()
            avostag.set('name', tag)
            avostag.save()
        
        contributors = avostag.relation('contributors')
        contributors.add(g.user)
        avostag.save()

        ptaglist = ptags_relation.query().equal_to('tag', avostag).find()
        if len(ptaglist) == 0:
            # 标签未在该照片标记
            ptag = PhotoTag()
            ptag.set('tag', avostag)
            # 该标签被打在新的照片上
            avostag.increment('count', 1)
            avostag.save()
        else:
            # 标签已在该照片标记
            ptag = ptaglist[0]
            ptag.increment('count', 1)

        ptag.relation('contributors').add(g.user)
        ptag.save()

        # 给照片加标签
        ptags_relation.add(ptag)

    photo.save()

    query = Relation.reverse_query('PhotoTag', 'contributors', g.user)
    count = query.count()
    # count = photo.relation('ptags').query().count()

    return json.dumps({'status':'OK', 'count':count, 'photoid': request.form['photoid']});
Пример #3
0
def tag():
    """Tag Photo"""
    form = MultiTagForm()
    if form.validate_on_submit():
        tags = form.data['tags'].split(',')

        photo = Query(Photo).get(form.data['photoid'])
        relation = photo.relation('tags')

        for tag in tags:
            # Obtain existed tag by name
            results = Query(Tag).equal_to('name', tag).find()
            if len(results) != 0:
                avostag = results[0]
                avostag.increment('count', 1)
            else:
                avostag = Tag()
                avostag.set('name', tag)
                avostag.save()
            contributors = avostag.relation('contributors')
            contributors.add(g.user)
            avostag.save()
            # Add relation to photo
            relation.add(avostag)
        photo.save()

        query = Relation.reverse_query('Tag', 'contributors', g.user)
        count = query.count()
        return render_template('site/tag/done.html', user_tag_count=count)
    else:
        total = Query.do_cloud_query('select count(*) from Photo')
        try:
            # query = Query(Photo).descending('createdAt').skip(randint(0, total.count))
            # item = query.first()
            query = Query(Photo).descending('createdAt').skip(randint(0, total.count)).limit(5)
            results = query.find()

            jsonresult = json.dumps([o.dump() for o in results])

            query = Relation.reverse_query('PhotoTag', 'contributors', g.user)
            count = query.count()

            categories = Query(Category).find()
            return render_template('site/tag/tag.html', current_photo=results[0],
                coming_photos=jsonresult, utagcount=count, categories=categories, form=form)
        except LeanCloudError, e:
            return redirect(url_for('site.about'))