Exemplo n.º 1
0
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")
Exemplo n.º 2
0
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")
Exemplo n.º 3
0
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")
Exemplo n.º 4
0
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)})
Exemplo n.º 5
0
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)
Exemplo n.º 6
0
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)
Exemplo n.º 7
0
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")
Exemplo n.º 8
0
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")
Exemplo n.º 9
0
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)})