Esempio n. 1
0
def practitioners_edit(*args, **kwargs):
    print request.method
    if request.method == 'PUT':
        data = json.loads(request.data)
        user = User.by_id(kwargs.get('user_id'))
        if not user or not user.activated:
            response = jsonify(
                request=request.json,
                response={'error': 'Invalid Practitioner.'})
            response.status_code = 404
            return response

        user.map_data(data)
        db.session.add(user)
        db.session.commit()
        response = jsonify(
            request=data,
            response={
                'practitioner_id': user.id,
                'active': user.active
            }
        )
        response.status_code = 200
        return response
    elif request.method == 'DELETE':
        data = json.loads(request.data)
        user = User.by_id(int(kwargs.get('user_id')))
        requester = User.by_email(request.headers.get('key'))
        if user == requester:
            status = 'Success'
            status_code = 200
            db.session.delete(user)
            db.session.commit()
        else:
            status = 'Not Authorized'
            status_code = 401

        response = jsonify(
            request=data,
            response={
                'status': status
            }
        )
        response.status_code = status_code
        return response
    else:
        print request.method
        response = jsonify(
            request=request.json,
            response={'error': 'This request type not supported'})
        response.status_code = 400
        return response
Esempio n. 2
0
def practitioners_get(*args, **kwargs):
    user = User.by_id(kwargs.get('user_id'))
    if not user or not user.activated:
        response = jsonify(
            request=request.json,
            response={'error': 'Invalid Practitioner.'})
        response.status_code = 404
        return response

    practice = None
    if user.practice:
        practice = practice.id

    response = jsonify(
        request={
            'practitioner_id': user.id,
        },
        response={
            'active': user.active,
            'first_name': user.first_name,
            'last_name': user.last_name,
            'address_one': user.address_one,
            'address_two': user.address_two,
            'city': user.city,
            'state': user.state,
            'zip_code': user.zip_code,
            'email': user.email,
            'activation_code': user.activation_code,
            'primary_color': user.primary_color,
            'secondary_color': user.secondary_color,
            'practice': practice,
        }
    )
    response.status_code = 200
    return response
Esempio n. 3
0
def users_delete(id):
    """This function handles the /users/delete endpoint for the blueprint

    It allows PNT-Admins to delete a user.  It is called via a button on
    the ``users/edit.html`` template

    :param id: The id of the user being deleted
    :type id: int
    :returns: users.users_home
    :rtype: redirect
    """
    user = User.by_id(id)
    if not user:
        abort(404)
    db.session.delete(user)
    db.session.commit()
    return redirect(url_for('users.users_home'))
Esempio n. 4
0
def users_edit(id):
    """This function handles the /users/edit endpoint for the bcornerstone/users/views.py

    It allows PNT-Admins to edit users.  It uses the :ref:`users-forms-label`
    to display UsersEditForm

    :param id: The id of the user being edited
    :type id: int
    :returns: users/edit.html
    :rtype: template
    """
    user = User.by_id(id)
    if not user:
        abort(404)

    form = UserEditForm(obj=user)
    if form.validate_on_submit():
        form.populate_obj(user)
        db.session.add(user)
        db.session.commit()
        return redirect(url_for('users.users_home'))
    return render_template('users/edit.html', form=form, user_id=user.id, admin=True)
Esempio n. 5
0
def users_changepassword(id):
    """This function handles the /users/changepassword endpoint for the blueprint

    It allows PNT-Admins to change a users password.  It uses the
    :ref:`users-forms-label` to display UsersChangePasswordForm

    :param id: The id of the user being edited
    :type id: int
    :returns: users/change_password.html
    :rtype: template
    """
    user = User.by_id(id)
    if not user:
        abort(404)

    form = UserChangePasswordForm(obj=user)
    if form.validate_on_submit():
        form.populate_obj(user)
        user.password = encrypt_password(user.password)
        db.session.add(user)
        db.session.commit()
        return redirect(url_for('users.users_home'))
    return render_template('users/change_password.html', form=form, user_id=user.id, admin=True)