def add_comment(request): try: user = authenticate_api_request(request) oid = get_json_get_or_error('commentBaseID', request) commentType = get_json_get_or_error('type', request) content = get_json_post_or_error('commentContent', request) except ReadJSONError as e: return server_error(e.value) except (AuthenticationFailed, AuthorizationError) as e: return server_error(e.value) try: if 'replyTo' in request.GET: replyToID = request.GET['replyTo'] replyComment = Discussion.objects.get(id=replyToID) else: replyComment = None except: return server_error("No comment found with id "+str(replyToID)) if commentType == 'business': try: bus = Business.objects.get(id=oid) except: return server_error("Business with ID "+str(oid)+ " does not exist") comment = BusinessDiscussion.objects.create(user=user,reply_to=replyComment,content=content,business=bus) elif commentType == 'category': try: btag = BusinessTag.objects.get(id=oid) except: return server_error("Category with ID "+str(oid)+ " does not exist") comment = CategoryDiscussion.objects.create(user=user,reply_to=replyComment,content=content,businesstag=btag) elif commentType == 'photo': try: photo = Photo.objects.get(id=oid) except: return server_error("Photo with ID "+str(oid)+ " does not exist") comment = PhotoDiscussion.objects.create(user=user,reply_to=replyComment,content=content,photo=photo) else: return server_error("Invalid commentType "+str(commentType)) data = get_comment_data(comment,user) return server_data(data)
def get_photos(request,oid): try: user = authenticate_api_request(request) authorize_user(user, request, "get") phototype = get_json_get_or_error('type', request) order_by = get_json_get_or_error('order_by', request) except ReadJSONError as e: return server_error(e.value) except (AuthenticationFailed, AuthorizationError) as e: return server_error(e.value) if phototype=="business": try: bus = Business.objects.get(id=oid) except: return server_error("No business with ID"+str(oid)+" found") allphotos= Photo.objects.filter(business=bus) else: allphotos= Photo.objects.filter(user=user,business=None) data = get_photos_data(allphotos,user,order_by=order_by) return server_data(data)
def rate_photo(request,oid): try: user = authenticate_api_request(request) authorize_user(user, request, "rate") rating = get_json_get_or_error('rating', request) except ReadJSONError as e: return server_error(e.value) except (AuthenticationFailed, AuthorizationError) as e: return server_error(e.value) photo = Photo.objects.get(id=oid) PhotoRating.objects.create(rating = rating,user=user,photo=photo) data = get_photo_data(photo,user) return server_data(data)
def rate_comment(request,oid): try: user = authenticate_api_request(request) authorize_user(user, request, "rate") rating = get_json_get_or_error('rating', request) comment = Discussion.objects.get(id=oid) except ReadJSONError as e: return server_error(e.value) except (AuthenticationFailed, AuthorizationError) as e: return server_error(e.value) except: return server_error('Comment with id '+str(oid)+'not found') CommentRating.objects.create(user=user,rating=rating,comment=comment) data = get_comment_data(comment,user) return server_data(data)
def rate_business_category(request,oid): try: user = authenticate_api_request(request) authorize_user(user, request, "rate") rating = get_json_get_or_error('rating', request) category = BusinessTag.objects.get(id=oid) except ReadJSONError as e: return server_error(e.value) except (AuthenticationFailed, AuthorizationError) as e: return server_error(e.value) except: return server_error('Category with id '+str(oid)+'not found') TagRating.objects.create(user=user,tag=category,rating=rating) data = get_category_data(category,user) return server_data(data)
def get_queries(request): try: user = authenticate_api_request(request) authorize_user(user, request, "get") querytype = get_json_get_or_error('type', request) except ReadJSONError as e: return server_error(e.value) except (AuthenticationFailed, AuthorizationError) as e: return server_error(e.value) if querytype=='yours': queries = Query.objects.filter(creator=user) elif querytype=='popular': queries = Query.objects.filter(is_default=True) else: queries = Query.objects.filter(creator=user) data = get_queries_data(queries,user) return server_data(data)
def rate_business(request,oid): try: user = authenticate_api_request(request) authorize_user(user, request, "rate") rating = get_json_get_or_error('rating', request) bus = Business.objects.get(id=oid) except ReadJSONError as e: return server_error(e.value) except (AuthenticationFailed, AuthorizationError) as e: return server_error(e.value) except: return server_error('Business with id '+str(oid)+'not found') if Rating.objects.filter(business=bus,user=user).count() > 0: Rating.objects.filter(business=bus,user=user).delete() Rating.objects.create(business=bus, rating=rating,user=user) bus.dist = distance.distance(user.current_location,(bus.lat,bus.lon)).miles bus_data = get_single_bus_data_ios(bus,user) return server_data(bus_data)
def add_business_category(request,oid): try: user = authenticate_api_request(request) authorize_user(user, request, "add") tagid = get_json_get_or_error('tagID', request) bus = Business.objects.get(id=oid) tag = Tag.objects.get(id=tagid) except ReadJSONError as e: return server_error(e.value) except (AuthenticationFailed, AuthorizationError) as e: return server_error(e.value) except: return server_error('Retrieving business and category failed (IDs: '+str(oid)+ ' and ' + str(tagid)) if BusinessTag.objects.filter(business=bus,tag=tag).count() > 0: category = BusinessTag.objects.get(business=bus, tag=tag) else: category = BusinessTag.objects.create(business=bus,tag=tag,creator=user) data = get_category_data(category,user) return server_data(data)