def destroy_selenium_test_data(request): # Delete selenium users, passengers, stations and work stations for user in User.objects.filter(username__in=SELENIUM_USER_NAMES): try: passenger = Passenger.objects.get(user=user) Order.objects.filter(passenger=passenger).delete() passenger.delete() except Passenger.DoesNotExist: pass try: Station.objects.get(user=user).delete() except Station.DoesNotExist: pass try: WorkStation.objects.get(user=user).delete() except WorkStation.DoesNotExist: pass safe_delete_user(user, remove_from_db=True) # user created by socialauth for user in User.objects.filter(email=SELENIUM_EMAIL): safe_delete_user(user, remove_from_db=True) return HttpResponse("selenium data destroyed")
def delete_workstation(request, station): token = request.POST.get('token') workstation = get_object_or_404(WorkStation, token=token, station=station) user = workstation.user workstation.delete() safe_delete_user(user) station.build_workstations() return HttpResponse("Ok")
def do_register_passenger(request): """ A one stop shop for handling registration of a new phone number, generationg a login token and updating the session. We make sure the request is made by an authenticated user. In case of validating: 1. Existing phone number (existing passenger) If request.user is already a passenger, merge request.user.passenger into the existing passenger. Connect the (merged) existing passenger to request.user and delete any previous passenger.user. 2. New phone number (new passenger) If request.user is already a passenger change his phone number. Otherwise, create a new passenger connected to request.user. """ if not request.user.is_authenticated(): return HttpResponseForbidden(_("You must be logged in to validate your phone.")) local_phone = request.POST.get('local_phone') country = Country.objects.get(code=settings.DEFAULT_COUNTRY_CODE) verification_code = int(request.POST.get('verification_code', -1)) response, passenger = validate_passenger_phone(request, local_phone, country, verification_code) if response.status_code != 200: # verification failed return response if passenger: # existing passenger try: user_passenger = request.user.passenger except Passenger.DoesNotExist: user_passenger = None if user_passenger and passenger != user_passenger: #TODO_WB: merge passengers notify_by_email("Merge Passengers Required", u"request.user.passenger:%s\nvalidated passenger:%s" % (request.user.passenger, passenger)) return HttpResponseBadRequest(_("We are sorry but your phone cannot be changed now. We will contact you to resolve this issue as soon as possible")) # request.user should be is_authenticated if we get here if passenger.user and passenger.user != request.user: safe_delete_user(passenger.user, remove_from_db=True) passenger.user = request.user else: # new passenger try: # user is already a passenger, change phone passenger = request.user.passenger passenger.phone = local_phone except Passenger.DoesNotExist: # user is not a passenger, create new passenger = create_passenger(request.user, country, local_phone, save=False) # request.session[CURRENT_PASSENGER_KEY] = passenger passenger.login_token = hashlib.sha1(generate_random_token(length=40)).hexdigest() passenger.save() request.session[CURRENT_PASSENGER_KEY] = passenger return JSONResponse({"redirect": reverse(post_login_redirect)})
def update_passenger(request, user): if CURRENT_PASSENGER_KEY in request.session: passenger = request.session[CURRENT_PASSENGER_KEY] if user.is_authenticated(): old_user = passenger.user if old_user and old_user != user: # keep old user data if old_user.email and not user.email: user.email = old_user.email user.save() passenger.user = user passenger.save() safe_delete_user(old_user, remove_from_db=True)
def change_credentials(request, passenger): user = passenger.user if not user: return HttpResponseBadRequest(_("Must have a user to change credentials")) new_password = request.POST.get("password", None) new_email = request.POST.get("email", None) if new_email and new_email != user.email: passenger.user = create_user(new_email, new_password, new_email) passenger.save() safe_delete_user(user, remove_from_db=True) new_user = authenticate(username=new_email, password=new_password) else: user.set_password(new_password) user.save() new_user = authenticate(username=user.username, password=new_password) login(request, new_user) return HttpResponse("OK")
def change_credentials(request, passenger): user = passenger.user if not user: return HttpResponseBadRequest( _("Must have a user to change credentials")) new_password = request.POST.get('password', None) new_email = request.POST.get('email', None) if new_email and new_email != user.email: passenger.user = create_user(new_email, new_password, new_email) passenger.save() safe_delete_user(user, remove_from_db=True) new_user = authenticate(username=new_email, password=new_password) else: user.set_password(new_password) user.save() new_user = authenticate(username=user.username, password=new_password) login(request, new_user) return HttpResponse("OK")
def do_register_passenger(request): """ A one stop shop for handling registration of a new phone number, generationg a login token and updating the session. We make sure the request is made by an authenticated user. In case of validating: 1. Existing phone number (existing passenger) If request.user is already a passenger, merge request.user.passenger into the existing passenger. Connect the (merged) existing passenger to request.user and delete any previous passenger.user. 2. New phone number (new passenger) If request.user is already a passenger change his phone number. Otherwise, create a new passenger connected to request.user. """ if not request.user.is_authenticated(): return HttpResponseForbidden( _("You must be logged in to validate your phone.")) local_phone = request.POST.get('local_phone') country = Country.objects.get(code=settings.DEFAULT_COUNTRY_CODE) verification_code = int(request.POST.get('verification_code', -1)) response, passenger = validate_passenger_phone(request, local_phone, country, verification_code) if response.status_code != 200: # verification failed return response if passenger: # existing passenger try: user_passenger = request.user.passenger except Passenger.DoesNotExist: user_passenger = None if user_passenger and passenger != user_passenger: #TODO_WB: merge passengers notify_by_email( "Merge Passengers Required", u"request.user.passenger:%s\nvalidated passenger:%s" % (request.user.passenger, passenger)) return HttpResponseBadRequest( _("We are sorry but your phone cannot be changed now. We will contact you to resolve this issue as soon as possible" )) # request.user should be is_authenticated if we get here if passenger.user and passenger.user != request.user: safe_delete_user(passenger.user, remove_from_db=True) passenger.user = request.user else: # new passenger try: # user is already a passenger, change phone passenger = request.user.passenger passenger.phone = local_phone except Passenger.DoesNotExist: # user is not a passenger, create new passenger = create_passenger(request.user, country, local_phone, save=False) # request.session[CURRENT_PASSENGER_KEY] = passenger passenger.login_token = hashlib.sha1( generate_random_token(length=40)).hexdigest() passenger.save() request.session[CURRENT_PASSENGER_KEY] = passenger return JSONResponse({"redirect": reverse(post_login_redirect)})