def update_status(request): """ View for calls by ISRProxy backend on ride status updates. """ raw_data = request.raw_post_data logging.info("isrproxy update_status: %s" % raw_data) update_status_data = simplejson.loads(raw_data) # redirect update to dev server in production environment if update_status_data.get('Operator_ID') == WB_DEV_OPERATOR_ID and not settings.DEV: deferred.defer(safe_fetch, url="http://dev.latest.waybetter-app.appspot.com/fleet/isrproxy/update/status/", payload=raw_data, method=POST, notify=False) return HttpResponse("OK") fmr = ISRProxy._create_fmr(update_status_data) fleet_manager.update_ride(fmr) mcns = "ga_isrproxy_ride_updates" getkey = lambda fmr: str(fmr.id) now = datetime.datetime.now() last_update_dt = memcache.get(getkey(fmr), namespace=mcns) val = (now - last_update_dt).seconds if last_update_dt else 0 memcache.set(getkey(fmr), now, namespace=mcns) # Log status position as a position update if fmr.lat and fmr.lon: taxi_position = TaxiRidePosition(fmr.station_id, fmr.taxi_id, fmr.id, fmr.lat, fmr.lon, fmr.timestamp) fleet_manager.update_positions([taxi_position]) else: logging.warning("ride update with no location info received: %s" % fmr.serialize()) ga_track_event(request, "isr", "update_ride", fmr.id) ga_track_event(request, "isr", fmr.raw_status, fmr.id, val) return HttpResponse("OK")
def campaign_handler(request, campaign_id): logging.info("campaign_handler with id: %s" % campaign_id) ga_track_event(request, "campaign", campaign_id) if campaign_id == "tlv_taxi_mobile": return HttpResponseRedirect("http://tlv.taxiapp.co.il") return HttpResponseRedirect("/")
def transaction_error(request): if request.GET.get("lang") == u"HE": request.encoding = "cp1255" error_code = request.GET.get("ErrorCode") error_text = get_custom_message(error_code, request.GET.get("ErrorText")) ga_track_event(request, "registration", "credit_card_validation", "not_approved", int(error_code)) request.session['credit_card_error'] = error_text account_url = reverse(mobile_account_view if request.mobile else web_account_view) return HttpResponseRedirect(account_url)
def registration(request, step="auth"): country_code = settings.DEFAULT_COUNTRY_CODE page_specific_class = "registration" login_controller_url = reverse("mobile_auth_login") if request.mobile else reverse("auth_login") BIEvent.log(BIEventType.REGISTRATION_START, request=request) login_link = "%s?next=%s" % (login_controller_url, reverse(post_login_redirect)) form = UserRegistrationForm() ga_track_event(request, "registration", "register_now", "after_ordering" if request.session.get(CURRENT_BOOKING_DATA_KEY) else "direct") if request.user.is_authenticated() and step == "auth": return post_login_redirect(request) return custom_render_to_response("passenger_registration.html", locals(), context_instance=RequestContext(request))
def create_ride(cls, ride, station, taxi_number=None): fmr = None reply = None for retry in range(3): last_try = (retry == 2) reply = cls._fetch("CreateRide.aspx", {'ride': cls._create_ride(ride, station.fleet_station_id, taxi_number=taxi_number)}, notify=last_try) if reply: break if reply: fmr = cls._create_fmr_from_reply(reply) ga_track_event(None, "isr", "create_ride_success", ride.id) else: ga_track_event(None, "isr", "create_ride_failure", ride.id) return fmr
def update_status(request): """ View for calls by ISRProxy backend on ride status updates. """ raw_data = request.raw_post_data logging.info("isrproxy update_status: %s" % raw_data) update_status_data = simplejson.loads(raw_data) # redirect update to dev server in production environment if update_status_data.get( 'Operator_ID') == WB_DEV_OPERATOR_ID and not settings.DEV: deferred.defer( safe_fetch, url= "http://dev.latest.waybetter-app.appspot.com/fleet/isrproxy/update/status/", payload=raw_data, method=POST, notify=False) return HttpResponse("OK") fmr = ISRProxy._create_fmr(update_status_data) fleet_manager.update_ride(fmr) mcns = "ga_isrproxy_ride_updates" getkey = lambda fmr: str(fmr.id) now = datetime.datetime.now() last_update_dt = memcache.get(getkey(fmr), namespace=mcns) val = (now - last_update_dt).seconds if last_update_dt else 0 memcache.set(getkey(fmr), now, namespace=mcns) # Log status position as a position update if fmr.lat and fmr.lon: taxi_position = TaxiRidePosition(fmr.station_id, fmr.taxi_id, fmr.id, fmr.lat, fmr.lon, fmr.timestamp) fleet_manager.update_positions([taxi_position]) else: logging.warning("ride update with no location info received: %s" % fmr.serialize()) ga_track_event(request, "isr", "update_ride", fmr.id) ga_track_event(request, "isr", fmr.raw_status, fmr.id, val) return HttpResponse("OK")
def registration(request, step="auth"): country_code = settings.DEFAULT_COUNTRY_CODE page_specific_class = "registration" login_controller_url = reverse( "mobile_auth_login") if request.mobile else reverse("auth_login") BIEvent.log(BIEventType.REGISTRATION_START, request=request) login_link = "%s?next=%s" % (login_controller_url, reverse(post_login_redirect)) form = UserRegistrationForm() ga_track_event( request, "registration", "register_now", "after_ordering" if request.session.get(CURRENT_BOOKING_DATA_KEY) else "direct") if request.user.is_authenticated() and step == "auth": return post_login_redirect(request) return custom_render_to_response("passenger_registration.html", locals(), context_instance=RequestContext(request))
def create_ride(cls, ride, station, taxi_number=None): fmr = None reply = None for retry in range(3): last_try = (retry == 2) reply = cls._fetch("CreateRide.aspx", { 'ride': cls._create_ride( ride, station.fleet_station_id, taxi_number=taxi_number) }, notify=last_try) if reply: break if reply: fmr = cls._create_fmr_from_reply(reply) ga_track_event(None, "isr", "create_ride_success", ride.id) else: ga_track_event(None, "isr", "create_ride_failure", ride.id) return fmr
def transaction_ok(request): from analytics.models import BIEvent, BIEventType passenger = Passenger.from_request(request) if not passenger: logging.info("[transaction_ok] not a passenger") registration_url = reverse(mobile_registration_view if request.mobiel else web_registration_view) return HttpResponseRedirect(registration_url) #TODO: handle errors #TODO: makesure referrer is creditguard ga_track_event(request, "registration", "credit_card_validation", "approved") date_string = request.GET.get("cardExp") exp_date = date(year=int(date_string[2:]) + 2000, month=int(date_string[:2]), day=1) kwargs = { "passenger" : passenger, "token" : request.GET.get("cardToken"), "expiration_date" : exp_date, "card_repr" : request.GET.get("cardMask"), "personal_id" : request.GET.get("personalId") } # clean up old billing info objects BillingInfo.objects.filter(passenger=passenger).delete() # save new billing info billing_info = BillingInfo(**kwargs) billing_info.save() BIEvent.log(BIEventType.BILLING_INFO_COMPLETE, passenger=passenger, request=request) if request.session.get(CURRENT_BOOKING_DATA_KEY): # continue booking process continue_booking_url = settings.CLOSE_CHILD_BROWSER_URI if request.mobile else reverse("booking_continued") logging.info("[transaction_ok] continue booking after billing registration --> %s" % continue_booking_url) return HttpResponseRedirect(continue_booking_url) else: account_url = reverse(mobile_account_view if request.mobile else web_account_view) return HttpResponseRedirect(account_url)
def test_ga(request): ga_track_event(request, "test_cat", "test_action") return HttpResponse("GA test OK")