def register_device(request): def report_conversion(udid): url = "http://tracking.taptica.com/aff_u" payload = urlencode({ "tt_adv_id": 612, "tt_deviceid": udid, "tt_appid": 501682022, "tt_time": default_tz_now().strftime("%Y-%m-%d %H:%M:%S.%f"), }) url = "%s?%s" % (url, payload) logging.info("report_conversion: %s" % url) res = safe_fetch(url, method="GET", deadline=15) if res: res = simplejson.loads(res.content)["tt_cid"] return res local_phone = request.POST.get("local_phone") udid = request.POST.get("UDID") gudid = request.POST.get("GUDID") app_udid = request.POST.get("APP_UDID") app_name = request.POST.get("application_name") installed_app = InstalledApp.by_app_udid(app_udid) device = Device.by_udid(udid) passenger_created = False cid = report_conversion(udid) if cid: logging.info("cid = %s" % cid) if installed_app and device: assert installed_app.device == device if not device: logging.info("creating device with udid=%s and gudid=%s" % (udid, gudid)) device = Device(udid=udid, gudid=gudid) device.save() if not installed_app: logging.info("creating installed app with app_udid=%s" % app_udid) installed_app = InstalledApp( app_udid=app_udid, name=app_name, cid=cid, device=device, user_agent=request.META.get("HTTP_USER_AGENT")) else: logging.info("installed app exists, updating") installed_app.install_count += 1 if cid: installed_app.cid = cid country = get_object_or_404(Country, code=request.POST.get('country_code', "")) passengers = Passenger.objects.filter(country=country, phone=local_phone) if passengers: passenger = passengers[0] else: passenger = create_passenger(None, country, local_phone, save=False) passenger.login_token = hashlib.sha1( generate_random_token(length=40)).hexdigest() passenger.save() passenger_created = True request.session[CURRENT_PASSENGER_KEY] = passenger if passenger_created: installed_app.passenger = passenger installed_app.user_agent = request.META.get("HTTP_USER_AGENT") installed_app.save() if local_phone == settings.APPLE_TESTER_PHONE_NUMBER: return JSONResponse({PASSENGER_TOKEN: passenger.login_token}) if installed_app.passenger != passenger: return HttpResponseBadRequest( _("The phone number is already registered.")) return JSONResponse({PASSENGER_TOKEN: passenger.login_token})
def register_device(request): def report_conversion(udid): url = "http://tracking.taptica.com/aff_u" payload = urlencode( { "tt_adv_id": 612, "tt_deviceid": udid, "tt_appid": 501682022, "tt_time": default_tz_now().strftime("%Y-%m-%d %H:%M:%S.%f"), } ) url = "%s?%s" % (url, payload) logging.info("report_conversion: %s" % url) res = safe_fetch(url, method="GET", deadline=15) if res: res = simplejson.loads(res.content)["tt_cid"] return res local_phone = request.POST.get("local_phone") udid = request.POST.get("UDID") gudid = request.POST.get("GUDID") app_udid = request.POST.get("APP_UDID") app_name = request.POST.get("application_name") installed_app = InstalledApp.by_app_udid(app_udid) device = Device.by_udid(udid) passenger_created = False cid = report_conversion(udid) if cid: logging.info("cid = %s" % cid) if installed_app and device: assert installed_app.device == device if not device: logging.info("creating device with udid=%s and gudid=%s" % (udid, gudid)) device = Device(udid=udid, gudid=gudid) device.save() if not installed_app: logging.info("creating installed app with app_udid=%s" % app_udid) installed_app = InstalledApp( app_udid=app_udid, name=app_name, cid=cid, device=device, user_agent=request.META.get("HTTP_USER_AGENT") ) else: logging.info("installed app exists, updating") installed_app.install_count += 1 if cid: installed_app.cid = cid country = get_object_or_404(Country, code=request.POST.get("country_code", "")) passengers = Passenger.objects.filter(country=country, phone=local_phone) if passengers: passenger = passengers[0] else: passenger = create_passenger(None, country, local_phone, save=False) passenger.login_token = hashlib.sha1(generate_random_token(length=40)).hexdigest() passenger.save() passenger_created = True request.session[CURRENT_PASSENGER_KEY] = passenger if passenger_created: installed_app.passenger = passenger installed_app.user_agent = request.META.get("HTTP_USER_AGENT") installed_app.save() if local_phone == settings.APPLE_TESTER_PHONE_NUMBER: return JSONResponse({PASSENGER_TOKEN: passenger.login_token}) if installed_app.passenger != passenger: return HttpResponseBadRequest(_("The phone number is already registered.")) return JSONResponse({PASSENGER_TOKEN: passenger.login_token})
form_data = get_business_order_form_data(request, passenger) form = OrderForm(data=form_data, passenger=passenger) if form.is_valid(): if passenger.orders.all()[:1]: last_order = passenger.orders.order_by("-create_date")[0] interval = BUSINESS_ORDERING_INTERVAL if passenger.business else ORDERING_INTERVAL if (utc_now() - last_order.create_date).seconds < interval: return error_response( _("Ordering is not allowed so soon after another order")) app_udid = request.POST.get("APP_UDID") installed_app = None if app_udid: # this came from a device that sends app specific id installed_app = InstalledApp.by_app_udid(app_udid) if not installed_app: return error_response( _("Please register before attempting to order")) if installed_app.blocked: return error_response( _("Your account has been suspended. Please contact [email protected]" )) order = form.save(commit=False) order.language_code = request.POST.get( "language_code", get_language_from_request(request)) order.debug = settings.DEV order.passenger = passenger order.mobile = request.mobile order.user_agent = request.META.get("HTTP_USER_AGENT")
if passenger.business and request.POST.get("business_order"): form_data = get_business_order_form_data(request, passenger) form = OrderForm(data=form_data, passenger=passenger) if form.is_valid(): if passenger.orders.all()[:1]: last_order = passenger.orders.order_by("-create_date")[0] interval = BUSINESS_ORDERING_INTERVAL if passenger.business else ORDERING_INTERVAL if (utc_now() - last_order.create_date).seconds < interval: return error_response(_("Ordering is not allowed so soon after another order")) app_udid = request.POST.get("APP_UDID") installed_app = None if app_udid: # this came from a device that sends app specific id installed_app = InstalledApp.by_app_udid(app_udid) if not installed_app: return error_response(_("Please register before attempting to order")) if installed_app.blocked: return error_response(_("Your account has been suspended. Please contact [email protected]")) order = form.save(commit=False) order.language_code = request.POST.get("language_code", get_language_from_request(request)) order.debug = settings.DEV order.passenger = passenger order.mobile = request.mobile order.user_agent = request.META.get("HTTP_USER_AGENT") order.installed_app = installed_app if not order.from_house_number: order.from_house_number = _fix_missing_house_number(order, "from")