Esempio n. 1
0
 def test_newDuplicateNullEmail(self):
     Provider.create(name="Test Provider",
                     telephone="1234567891",
                     email='',
                     categories=[Category.query.get(1)])
     p = Provider.query.filter_by(name="Test Provider").first()
     assert p is not None
Esempio n. 2
0
 def setUp(self):
     '''
     Set up method that will run before every Test
     '''
     self.new_provider = Provider(1234, 'Python Must Be Crazy',
                                  'A thrilling new Python Series',
                                  '/khsjha27hbs', 8.5, 129993)
Esempio n. 3
0
def create_providers():
    """
    creates 1000 sample provides
    :return: None
    """
    fake = Faker()
    for i in range(1000):
        provider_obj = Provider()
        provider_obj.name = fake.company()
        provider_obj.phone_number = fake.phone_number()
        provider_obj.email = "email" + str(random.randint(0, 9999)) + "@email.com"
        provider_obj.currency = config.CURRENCY[random.randint(0, len(config.CURRENCY) - 1)][0]
        provider_obj.language = config.LANGUAGES[random.randint(0, len(config.LANGUAGES) - 1)][0]
        provider_obj.created_by = User.objects.get(id=1)
        provider_obj.modified_by = User.objects.get(id=1)
        provider_obj.save()
Esempio n. 4
0
def provider_add():
    """Adds provider to db."""
    form = ProviderAddForm()
    form.populate_choices()
    form_dict = form.data
    if form.validate_on_submit():
        address = Address(unknown=form.address.unknown.data,
                          line1=form.address.line1.data,
                          line2=form.address.line2.data,
                          city=form.address.city.data,
                          state_id=form.address.state.data,
                          zip=form.address.zip.data)
        categories = [Category.query.get(cat) for cat in form.category.data]
        provider = Provider.create(name=form.name.data,
                                   email=form.email.data,
                                   telephone=form.telephone.data,
                                   website=form.website.data,
                                   address=address,
                                   categories=categories)
        address.get_coordinates()
        flash(provider.name + " added.")
        return redirect(url_for("main.index"))
    elif request.method == "POST" and not form.validate():
        flash("Failed to add provider")
        return render_template("provideradd.html",
                               title="Add Provider",
                               form=form,
                               form_dict=form_dict), 422
    if not current_user.email_verified:
        disableForm(form)
        flash("Form disabled. Please verify email to unlock.")
    return render_template("provideradd.html",
                           title="Add Provider",
                           form=form,
                           form_dict=form_dict)
Esempio n. 5
0
def providerAutocomplete():
    """Pulls list of providers matching input text."""
    form = ProviderSearchForm(request.args)
    form.populate_choices()
    print(form.data)
    del form.sort
    if form.validate():
        try:
            searchLocation = Location(form.location.data,
                                      form.manual_location.data,
                                      (form.gpsLat.data, form.gpsLong.data))
        except AddressError:
            msg = {"status": "failed", "reason": "invalid address"}
            return jsonify(msg), 422
        searchLocation.setRangeCoordinates()
        filters = {
            "name": form.name.data,
            "category": Category.query.get(form.category.data),
            "location": searchLocation
        }
        sortCriteria = "name"
        providers = Provider.search(filters, sortCriteria, limit=10)
        providers = [{
            "id": provider.id,
            "name": provider.name,
            "line1": provider.line1,
            "city": provider.city,
            "state": provider.state_short
        } for provider in providers]
        return jsonify(providers)
    msg = {"status": "failed", "reason": "invalid form data"}
    return jsonify(msg), 422
Esempio n. 6
0
 def test_searchShortDistance(self, activeClient, baseProviderSearch):
     baseProviderSearch.update({"searchRange": 7})
     filters, sort = self.generateSearchFilters(baseProviderSearch)
     providers = Provider.search(filters, sort)
     assert len(providers) == 2
     assert providers[0].name == 'Douthit Electrical'
     assert providers[1].name == 'Preferred Electric Co'
Esempio n. 7
0
def searchJSON():
    form = ProviderSearchForm(request.args).populate_choices()
    del form.location
    page = request.args.get('page', 1, int)
    if form.validate() or request.args.get('page') is not None:
        location = session['location']
        searchLocation = Location(location['source'], location['address'],
                                  location['coordinates'])
        searchLocation.setRangeCoordinates()
        reviewFilters = {
            "friends": form.friends_filter.data,
            "groups": form.groups_filter.data,
            "reviewed": form.reviewed_filter.data
        }
        filters = {
            "name": form.name.data,
            "category": Category.query.get(form.category.data),
            "location": searchLocation
        }
        sortCriteria = form.sort.data
        providers = Provider.search(filters, sortCriteria, reviewFilters)
        if sortCriteria == "distance":
            providers = sortByDistance(searchLocation.coordinates, providers)
        pagination = Pagination(providers, page,
                                current_app.config.get('PER_PAGE'))
        providers = pagination.paginatedData
        providersDict = [provider._asdict() for provider in providers]
        return jsonify(providersDict, location)
Esempio n. 8
0
def test_create_appointment():
    """
    Test creating an appointment with a patient and a provider
    """
    # Arrange
    patient = Patient(first_name="Aly", last_name="Sivji")
    provider = Provider(first_name="Doctor", last_name="Acula")
    now = datetime.now()
    a = Appointment(start=now,
                    end=now,
                    department='foo',
                    patient=patient,
                    provider=provider)

    # Act
    db.session.add(a)
    db.session.commit()

    # Assert
    assert len(Appointment.query.all()) == 1

    queried_appointment = Appointment.query.one()
    assert queried_appointment.department == 'foo'
    assert queried_appointment.patient_id == patient.id
    assert queried_appointment.provider_id == provider.id

    db.session.delete(a)
    db.session.delete(patient)
    db.session.delete(provider)
    db.session.commit()
Esempio n. 9
0
 def test_searchReviewed(self, activeClient, baseProviderSearch):
     baseProviderSearch['reviewed_filter'] = True
     filters, sort = self.generateSearchFilters(baseProviderSearch)
     providers = Provider.search(filters, sort=sort)
     assert len(providers) == 2
     assert providers[0].name == 'Douthit Electrical'
     assert providers[1].name == 'Preferred Electric Co'
def upgrade() -> None:
    session = Session(bind=op.get_bind())
    BaseModel.set_session(session)
    # ### commands auto generated by Alembic - please adjust! ###
    provider = Provider.all()[0]
    collection = seed_initial_collection(provider.uuid)
    seed_initial_items(collection.uuid)
Esempio n. 11
0
def update_provider(provider_uuid: UUID,
                    provider_update: ProviderDTO) -> ProviderDTO:
    provider = Provider.find_or_fail(provider_uuid)
    provider.name = provider_update.name
    provider.save()
    provider.session.commit()
    return to_model(provider, ProviderDTO)
Esempio n. 12
0
def provider_list():
    """Pulls list of providers matching category from db."""
    category_id = request.args.get("category")
    provider_list = Provider.list(category_id, format="dict")
    optional = request.args.get("optional")
    if optional == "true":
        provider_list.insert(0, {"id": 0, "name": "<---Choose from list--->"})
    provider_list = jsonify(provider_list)
    return provider_list
Esempio n. 13
0
 def test_searchLimit(self, activeClient, baseProviderSearch):
     filters, sort = self.generateSearchFilters(baseProviderSearch)
     limit = 1
     providers = Provider.search(filters, sort=sort, limit=limit)
     assert len(providers) == 1
     assert providers[0].name == 'Douthit Electrical'
     assert providers[0].reviewAverage == (10 / 4)
     assert providers[0].reviewCount == 4
     assert providers[0].reviewCost == (18 / 4)
Esempio n. 14
0
 def test_searchRatingSort(self, activeClient, baseProviderSearch):
     baseProviderSearch['sort'] = 'rating'
     filters, sort = self.generateSearchFilters(baseProviderSearch)
     providers = Provider.search(filters, sort)
     assert len(providers) == 3
     assert providers[0].name == 'Preferred Electric Co'
     assert providers[1].name == 'Douthit Electrical'
     assert providers[2].name == 'Evers Electric'
     assert providers[1].categories == "Electrician,Plumber"
Esempio n. 15
0
 def test_searchName(self, activeClient, baseProviderSearch):
     baseProviderSearch['name'] = 'Evers Electric'
     filters, sort = self.generateSearchFilters(baseProviderSearch)
     providers = Provider.search(filters, sort)
     assert providers[0].name == 'Evers Electric'
     assert providers[0].website == 'www.everselectric.com/'
     assert providers[0].reviewAverage is None
     assert providers[0].reviewCount == 0
     assert providers[0].reviewCost is None
Esempio n. 16
0
def create_provider(provider_name):
    provider = Provider(name=provider_name)
    check_provider = provider.query.filter_by(name=provider_name).first()
    if check_provider is not None:
        return None
    else:
        db.session.add(provider)
        db.session.commit()
        return provider
Esempio n. 17
0
 def test_searchGroups(self, activeClient, baseProviderSearch):
     baseProviderSearch['groups_filter'] = True
     filters, sort = self.generateSearchFilters(baseProviderSearch)
     providers = Provider.search(filters, sort=sort)
     assert len(providers) == 1
     assert providers[0].name == 'Douthit Electrical'
     assert providers[0].reviewAverage == 5
     assert providers[0].reviewCount == 1
     assert providers[0].reviewCost == 5
     assert providers[0].categories == "Electrician,Plumber"
Esempio n. 18
0
    def setUp(self) -> None:
        self.redis = redis

        self.test_provider1 = Provider(
            'http://www.mocky.io/v2/5d19ec932f00004e00fd7326', 'code', 'rate')
        self.test_provider1.rate_data = {'usd': 6, 'eur': 5, 'gbp': 1}
        self.test_provider2 = Provider(
            'http://www.mocky.io/v2/5d19ec932f00004e00fd7326', 'code', 'rate')
        self.test_provider2.rate_data = {'usd': 2, 'eur': 1, 'gbp': 2}
        self.daily_test_data = [{
            'usd': 1,
            'eur': 2,
            'gbp': 3
        }, {
            'usd': 2,
            'eur': 2,
            'gbp': 7
        }, {
            'usd': 3,
            'eur': 2,
            'gbp': 5
        }]
Esempio n. 19
0
 def test_searchFriendsOrGroups(self, activeClient, baseProviderSearch):
     baseProviderSearch.update({
         "friends_filter": True,
         "groups_filter": True
     })
     filters, sort = self.generateSearchFilters(baseProviderSearch)
     providers = Provider.search(filters, sort=sort)
     assert len(providers) == 1
     assert providers[0].name == 'Douthit Electrical'
     assertEqualsTolerance(providers[0].reviewAverage, (7 / 3), 3)
     assert providers[0].reviewCount == 3
     assert providers[0].reviewCost == 5
     assert providers[0].categories == "Electrician,Plumber"
Esempio n. 20
0
    def test_searchNoName(self, activeClient, baseProviderSearch):
        # create filters, location, category

        filters, sort = self.generateSearchFilters(baseProviderSearch)
        providers = Provider.search(filters, sort)
        assert len(providers) == 3
        assert providers[0].name == 'Douthit Electrical'
        assert providers[1].name == 'Evers Electric'
        assert providers[2].name == 'Preferred Electric Co'
        assert providers[0].reviewAverage == (10 / 4)
        assert providers[0].reviewCount == 4
        assert providers[0].reviewCost == (18 / 4)
        assert providers[0].categories == "Electrician,Plumber"
Esempio n. 21
0
def create_acl(user: InternalUserDTO, acl: ACLDTO) -> ACLDTO:
    if acl.collection_uuid:
        collection = Collection.find_writeable_or_fail(user,
                                                       acl.collection_uuid)
        if collection.provider_uuid != user.provider_uuid:
            raise PermissionError

    if acl.item_uuid:
        item = Item.find_writeable_or_fail(user, acl.item_uuid)
        if item.collection.provider_uuid != user.provider_uuid:
            raise PermissionError

    if acl.granted_provider_uuid:
        Provider.find_or_fail(acl.granted_provider_uuid)

    if acl.granted_user_uuid:
        User.find_or_fail(acl.granted_user_uuid)

    acl.provider_uuid = user.provider_uuid
    acl = ACL(**acl.to_dict())
    acl.save()
    acl.session.commit()
    return to_model(acl, ACLDTO)
Esempio n. 22
0
def lowest_rate(currency):
    currency = currency.lower()
    if currency not in AVAILABLE_CURRENCY_UNITS:
        return 'Lutfen gecerli bir para birimi giriniz'
    rate = is_cache_available_for_ten_mins()
    if rate:
        rate = parse_rate(rate)
        return json.dumps(rate['rates'][currency])
    providers_env = json.loads(os.getenv('providers'))
    provider_list = []
    for provider in providers_env:
        provider_list.append(Provider(provider['url'], provider['code_key'], provider['rate_key']))
    rate = compare_providers(provider_list)
    return json.dumps(rate[currency])
def seed_initial_user():
    session = Session(bind=op.get_bind())
    BaseModel.set_session(session)
    provider = Provider.create(name="fpx")
    password = None
    try:
        password = os.environ["FIRST_SUPERUSER_PASSWORD"].encode("utf-8")
    except KeyError:
        print("You must set env variable USER_PASSWORD!!!")
        exit()

    user = User.create(
        email=os.environ.get("FIRST_SUPERUSER", "*****@*****.**"),
        provider_uuid=provider.uuid,
        password=bcrypt.hashpw(password, bcrypt.gensalt()).decode("utf-8"),
    )
    print("Your master user token: " + create_access_token(str(user.uuid)))
Esempio n. 24
0
def test_create_invalid_appointment_missing_patient():
    """
    Test creating an appointment with a provider and no patient
    """
    # Arrange
    provider = Provider(first_name="Doctor", last_name="Acula")
    now = datetime.now()
    a = Appointment(start=now, end=now, department='foo', provider=provider)

    # Act
    db.session.add(a)

    # Assert
    with pytest.raises(IntegrityError):
        db.session.commit()

    db.session.rollback()
    assert len(Appointment.query.all()) == 0
Esempio n. 25
0
def provider(name, id):
    """Generate provider profile page."""
    form = ProviderFilterForm(request.args)
    filters = {"id": id, "name": name}
    try:
        provider = Provider.search(filters)[0]
    except IndexError:
        flash("Provider not found.  Please try a different search.")
        return render_template('errors/404.html'), 404
    if form.validate():
        reviewFilter = {
            "friends_filter": form.friends_filter.data,
            "groups_filter": form.groups_filter.data
        }
        page = request.args.get('page', 1, int)
        return_code = 200
    else:
        last = dict(parse.parse_qsl(parse.urlsplit(request.referrer).query))
        filter_keys = ['friends_filter', 'groups_filter']
        reviewFilter = {k: last.get(k) == 'y' for k in filter_keys}
        page = last.get('page', 1)
        return_code = 422
    if provider.reviewCount > 0:
        reviews = Review.search(provider_id=provider.id, filter=reviewFilter)
        pagination = Pagination(reviews, page,
                                current_app.config.get('PER_PAGE'))
        pag_args = {"name": name, "id": id}
        pag_urls = pagination.get_urls('main.provider', pag_args)
        reviews = pagination.paginatedData
    else:
        reviews = None
        pag_urls = None

    provider_json = simplejson.dumps(provider._asdict(), sort_keys=True)

    return render_template("provider_profile.html",
                           title="Provider Profile",
                           provider=provider,
                           pag_urls=pag_urls,
                           reviews=reviews,
                           form=form,
                           reviewFilter=reviewFilter,
                           provider_json=provider_json), return_code
Esempio n. 26
0
def addProvider(request):
    args = {}
    args = getBasicInfo(args, "Agregar Proveedor")

    if request.POST:
        name = request.POST['name']
        short_description = request.POST['short-description']
        large_description = request.POST['large-description']
        web_page = request.POST['web-page']
        logo = request.FILES['logo']
        new_provider = Provider()
        new_provider.name = name
        new_provider.short_description = short_description
        new_provider.description = large_description
        new_provider.web_page = web_page
        if logo:
            new_provider.logo = logo
        new_provider.save()
        args['msg'] = "Proveedor agregado correctamente"
        return render_to_response('aeadmin/providers/add_provider.html', args, context_instance=RequestContext(request))
    else:
        return render_to_response('aeadmin/providers/add_provider.html', args, context_instance=RequestContext(request))
Esempio n. 27
0
def test_create_provider():
    """
    Test creating a provider
    """
    # Arrange
    p = Provider(first_name="Doctor", last_name="Acula")

    # Act
    db.session.add(p)
    db.session.commit()

    # Assert
    assert len(Provider.query.all()) == 1

    queried_provider = Provider.query.one()
    assert queried_provider.first_name == 'Doctor'
    assert queried_provider.last_name == 'Acula'

    db.session.delete(p)
    db.session.commit()
Esempio n. 28
0
 def add_provider(self, name):
     new_provider = Provider(name=name)
     db.session.add(new_provider)
     db.session.commit()
Esempio n. 29
0
                  first_name="Alissa",
                  last_name="Johnson")

    my_schedule_access = Security_Point(name="provider schedule access")
    orders_access = Security_Point(name="order creation")
    department_schedule_access = Security_Point(
        name="department schedule access")
    patient_search = Security_Point(name="patient search")
    chart_access = Security_Point(name="chart access")
    patient_checkin_access = Security_Point(name="patient checkin")
    patient_registration_access = Security_Point(name="patient registration")
    patient_user_access = Security_Point(name="patient user access")
    user_editor_access = Security_Point(name="user editor access")
    record_editor_access = Security_Point(name="record editor access")

    demo_provider = Provider(specialty="Family Medicine")

    demo_patient = Patient(
        firstName="Clare",
        lastName="Donohue-Meyer",
        dob=datetime.datetime(1993, 6, 22),
        sex="female",
        address_line_one="221B Baker St.",
        address_city="Austin",
        address_state="TX",
        address_zip="78731",
        bmi="22.74",
        beats_per_minute="75",
        weight="112",
        height="5'4''",
        ethnicity="White",
Esempio n. 30
0
def search():
    form = ProviderSearchForm(request.args)
    form.populate_choices()
    page = request.args.get('page', 1, int)
    form_dict = json.dumps(form.data)
    if form.validate() or request.args.get('page') is not None:
        try:
            searchLocation = Location(form.location.data,
                                      form.manual_location.data,
                                      (form.gpsLat.data, form.gpsLong.data))
        except AddressError:
            flash("Invalid address submitted. Please re-enter and try again.")
            if form.manual_location.data not in [None, ""]:
                msg = "Invalid Address. Please updated."
                form.manual_location.errors.append(msg)
            return render_template("index.html",
                                   form_dict=form_dict,
                                   form=form,
                                   title="Search"), 422

        searchLocation.setRangeCoordinates(form.searchRange.data)
        filters = {
            "name": form.name.data,
            "category": Category.query.get(form.category.data),
            "location": searchLocation,
            "friends": form.friends_filter.data,
            "groups": form.groups_filter.data,
            "reviewed": form.reviewed_filter.data
        }
        sortCriteria = form.sort.data
        providers = Provider.search(filters, sortCriteria)

        if providers == []:
            flash("No results found. Please try a different search.")
            providersDict = simplejson.dumps([], sort_keys=True)
            summary = None
            pag_urls = None
            locationDict = None

        else:
            summary = Review.summaryStatSearch(filters)
            if sortCriteria == "distance":
                providers = sortByDistance(searchLocation.coordinates,
                                           providers)
            pagination = Pagination(providers, page,
                                    current_app.config.get('PER_PAGE'))
            pag_urls = pagination.get_urls('main.search', request.args)
            providers = pagination.paginatedData
            providersDict = [provider._asdict() for provider in providers]
            providersDict = simplejson.dumps(providersDict, sort_keys=True)
            if session.get('location'):
                locationDict = session['location']
                locationDict = simplejson.dumps(locationDict, sort_keys=True)
            else:
                locationDict = None

        filter_fields = [
            form.reviewed_filter, form.friends_filter, form.groups_filter
        ]
        reviewFilter = {}
        for field in filter_fields:
            if field.data is True:
                reviewFilter[field.name] = 'y'
        form.initialize()

        return render_template("index.html",
                               form=form,
                               title="Search",
                               providers=providers,
                               pag_urls=pag_urls,
                               form_dict=form_dict,
                               reviewFilter=reviewFilter,
                               locationDict=locationDict,
                               providersDict=providersDict,
                               summary=summary)
    return render_template("index.html",
                           form=form,
                           form_dict=form_dict,
                           title="Search"), 422
Esempio n. 31
0
def get_providers() -> List[ProviderDTO]:
    providers = Provider.all()
    return to_models(providers, ProviderDTO)
Esempio n. 32
0
def create_provider(provider: ProviderDTO) -> ProviderDTO:
    provider = Provider(**provider.to_dict())
    provider.save()
    provider.session.commit()
    return to_model(provider, ProviderDTO)