def add_business(request): try: user = authenticate_api_request(request) authorize_user(user, request, "add") bus = Business() name=get_json_post_or_error('businessName', request) addr=get_json_post_or_error('streetAddr', request) city = get_json_post_or_error('businessCity', request) state = get_json_post_or_error('businessState', request) phone = get_json_post_or_error('businessPhone', request) #already exists if Business.objects.filter(name=name,address=addr,city=city,state=state).count() == 0: bus = Business(name=name,address=addr,city=city,state=state) bus.save() elif Business.objects.filter(name=name,address=addr,city=city,state=state).count() > 1: #too many Business.objects.filter(name=name,address=addr,city=city,state=state).delete() Business.objects.create(name=name,address=addr,city=city,state=state,phone=phone) else: bus = Business.objects.get(name=name,address=addr,city=city,state=state) except ReadJSONError as e: return server_error(e.value) except (AuthenticationFailed, AuthorizationError) as e: return server_error(e.value) 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_query(request): try: user = authenticate_api_request(request) authorize_user(user, request, "add") query = Query() query.name = get_json_post_or_error('queryName',request) query.creator = user#get_json_or_error('queryName',request) query.proximity = get_json_post_or_error('proximityWeight',request) query.price = get_json_post_or_error('priceWeight',request) query.value = get_json_post_or_error('valueWeight',request) query.score = get_json_post_or_error('scoreWeight',request) query.userHasVisited = get_json_post_or_error('userHasVisited',request) query.text = get_json_post_or_error('searchText',request) query.networked = get_json_post_or_error('networked',request) query.deal = get_json_post_or_error('deal',request) query.is_default = False# get_json_or_error('deal',request) query.save() if 'queryTags' not in request.POST: return server_error("Categories did not provide a list") categoryList = request.POST.getlist('queryCategories') for c in categoryList: if Tag.objects.filter(id=c).count() == 0: return server_error("Invalid Category provided") cat = Tag.objects.get(id=c) QueryTag.objects.create(query=query,tag=cat) except ReadJSONError as e: return server_error(e.value) except (AuthenticationFailed, AuthorizationError) as e: return server_error(e.value) except: return server_error("Could not save the object") data = get_query_data(query,user) return server_data(data)
def edit_comment(request,oid): try: user = authenticate_api_request(request) authorize_user(user, request, "edit") 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) comment = CategoryDiscussion.objects.create(id=oid,content=content) data = get_comment_data(comment,user) return server_data(data)
def add_photo(request): try: user = authenticate_api_request(request) authorize_user(user, request, "add") caption = get_json_post_or_error('photoCaption', request) title = get_json_post_or_error('photoTitle', request) except ReadJSONError as e: return server_error(e.value) except (AuthenticationFailed, AuthorizationError) as e: return server_error(e.value) if 'businessID' not in request.GET: b = None defaultUserPhoto = True else: defaultUserPhoto = False bid = request.GET['businessID'] try: b = Business.objects.get(id=bid) except: return server_error("Could not retrieve business with ID "+str(bid)+ " for add_photo") if 'image' in request.FILES: img = request.FILES['image'] photo = add_photo_by_upload(img,b,request.user,defaultUserPhoto,caption,title) elif 'url' in request.POST: url = request.POST['url'] if url != '': photo = add_photo_by_url(url, b, request.user, defaultUserPhoto,caption,title) else: return server_error("No photo specified in request.FILES or URL in request.POST") data = get_photo_data(photo,user) return server_data(data)
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)