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});
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']});
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'))