Beispiel #1
0
def display_general_provider_universe_stats(booking):
    # unpack booking request
    request_category = booking.request_category
    
    # ignore location for now
    #request_location = booking.request_location
    
    # general debug stats
    providerUniverseCount = Provider.query().count()
    logging.info('Total provider universe: %s' % providerUniverseCount)
    broadMatchCount = Provider.query(Provider.category==request_category).count()
    logging.info('Found %s providers offering %s (ignoring enable and terms agreement)' % (broadMatchCount, request_category))
Beispiel #2
0
def display_general_provider_universe_stats(booking):
    # unpack booking request
    request_category = booking.request_category

    # ignore location for now
    #request_location = booking.request_location

    # general debug stats
    providerUniverseCount = Provider.query().count()
    logging.info('Total provider universe: %s' % providerUniverseCount)
    broadMatchCount = Provider.query(
        Provider.category == request_category).count()
    logging.info(
        'Found %s providers offering %s (ignoring enable and terms agreement)'
        % (broadMatchCount, request_category))
Beispiel #3
0
    def get(self):
        stats_map = {}

        # get hits to any page
        stats_map['page_hit_count'] = SiteLog.query(SiteLog.page == '/', SiteLog.admin_email == None).count()
      
        # get hits to home page
        stats_map['homepage_hit_count'] = SiteLog.query(SiteLog.page == '/', SiteLog.admin_email == None).count()

        # get hits to provider signup page
        stats_map['provider_signup_hit_count'] = SiteLog.query(SiteLog.page == '/signup/provider', SiteLog.admin_email == None).count()

        # get total # of providers
        stats_map['provider_total_count'] = Provider.query().count()

        # get hits from Internet Explorer
        stats_map['internet_explorer_count'] = db.get_site_counter().internet_explorer_hits

        # number of times exiting site to blog
        stats_map['blog_clicks'] = db.get_site_counter().blog_clicks
        
        stats_map['click_full_button'] = db.get_site_counter().click_full_button
        stats_map['click_preview_button'] = db.get_site_counter().click_preview_button
        
        stats_map['signup_full_button'] = db.get_signup_from_origin('full')
        stats_map['signup_preview_button'] = db.get_signup_from_origin('preview')

        stats_map['paid_full_button'] = db.get_paid_from_origin('full')
        stats_map['paid_preview_button'] = db.get_paid_from_origin('preview')

        self.render_template('admin/dashboard.html', stats_map=stats_map)
Beispiel #4
0
def provider_search(booking):
    '''
        1. Select the closest available timeslot per provider
        2. Sorts all booking responses by proximity to requested time
        
        Returns list of BookingResponse
    '''
    display_general_provider_universe_stats(booking)
    # unpack booking request
    request_category = booking.request_category
    #request_location = booking.request_location
    # match on location and category, sort by experience (ascending start_year)
    providers_wide_query = Provider.query(
        Provider.category == request_category).order(Provider.start_year,
                                                     Provider.created_on)

    # remove disabled providers (ie. keep only enabled)
    providers_wide_query = providers_wide_query.filter(
        Provider.status.IN([
            'prospect', 'contacted_phone', 'contacted_meeting',
            'client_enabled'
        ]))

    #if booking.request_homecare:
    #    providers_wide_query = providers_wide_query.filter(Provider.practice_sites=='onsite')
    logging.info('Found %s providers offering %s (enabled and with terms)' %
                 (providers_wide_query.count(), request_category))
    # sort by best available timeslot and filter out booking conflicts
    booking_responses = filter_and_sort_providers_based_on_schedule(
        booking, providers_wide_query)
    logging.info(
        'Returning %s booking-responses offering %s at requested date and time'
        % (len(booking_responses), request_category))
    return booking_responses
Beispiel #5
0
def get_paid_from_origin(origin):
    if origin:
        provider_keys = Provider.query(Provider.signup_origin == origin).fetch(keys_only=True)
        if provider_keys:
            provider_account_count = ProviderAccount.query(ProviderAccount.provider.IN(provider_keys)).count()
            return provider_account_count
        else:
            return 0
Beispiel #6
0
def get_paid_from_origin(origin):
    if origin:
        provider_keys = Provider.query(Provider.signup_origin == origin).fetch(
            keys_only=True)
        if provider_keys:
            provider_account_count = ProviderAccount.query(
                ProviderAccount.provider.IN(provider_keys)).count()
            return provider_account_count
        else:
            return 0
Beispiel #7
0
    def get(self):
        #vanity_url_list = db.get_all_vanity_urls()
        categories = []

        domain_setup = self.get_domain_setup()
        if domain_setup and domain_setup.categories_json:
            categories_json = domain_setup.categories_json
            categories_from_json = json.loads(categories_json)
            
            for (key, english_string) in categories_from_json:
                categories.append(key)
        
        vanity_url_list = []
        if categories:
            vanity_url_list = Provider.query(Provider.category.IN(categories)).fetch(projection=['vanity_url'])            
        
        self.render_template("sitemap.xml", vanity_url_list=vanity_url_list)
Beispiel #8
0
    def get(self):
        #vanity_url_list = db.get_all_vanity_urls()
        categories = []

        domain_setup = self.get_domain_setup()
        if domain_setup and domain_setup.categories_json:
            categories_json = domain_setup.categories_json
            categories_from_json = json.loads(categories_json)

            for (key, english_string) in categories_from_json:
                categories.append(key)

        vanity_url_list = []
        if categories:
            vanity_url_list = Provider.query(
                Provider.category.IN(categories)).fetch(
                    projection=['vanity_url'])

        self.render_template("sitemap.xml", vanity_url_list=vanity_url_list)
Beispiel #9
0
def provider_search(booking):
    '''
        1. Select the closest available timeslot per provider
        2. Sorts all booking responses by proximity to requested time
        
        Returns list of BookingResponse
    '''
    display_general_provider_universe_stats(booking)
    # unpack booking request
    request_category = booking.request_category
    #request_location = booking.request_location
    # match on location and category, sort by experience (ascending start_year)
    providers_wide_query = Provider.query(Provider.category==request_category).order(Provider.start_year, Provider.created_on)

    # remove disabled providers (ie. keep only enabled)
    providers_wide_query = providers_wide_query.filter(Provider.status.IN(['prospect', 'contacted_phone', 'contacted_meeting', 'client_enabled']))
        
    #if booking.request_homecare:
    #    providers_wide_query = providers_wide_query.filter(Provider.practice_sites=='onsite')
    logging.info('Found %s providers offering %s (enabled and with terms)' % (providers_wide_query.count(), request_category))
    # sort by best available timeslot and filter out booking conflicts
    booking_responses = filter_and_sort_providers_based_on_schedule(booking, providers_wide_query)
    logging.info('Returning %s booking-responses offering %s at requested date and time' % (len(booking_responses), request_category))
    return booking_responses
Beispiel #10
0
def fetch_providers():
    return Provider.query().order(Provider.last_name)
Beispiel #11
0
def get_signup_from_origin(origin):
    if origin:
        return Provider.query(Provider.signup_origin == origin).count()
Beispiel #12
0
def get_provider_from_domain(domain):
    '''returns the first provider profile liked to domain. Returns None if domain is not provided '''
    if domain:
        return Provider.query(Provider.vanity_domain == domain).get()
    else:
        return None
Beispiel #13
0
def get_provider_from_vanity_url(vanity_url):
    '''returns the first provider profile liked to vanity_url. Returns None if vanity_url is not provided '''
    if vanity_url:
        return Provider.query(Provider.vanity_url == vanity_url).get()
    else:
        return None
Beispiel #14
0
def get_provider_from_domain(domain):
    '''returns the first provider profile liked to domain. Returns None if domain is not provided '''
    if domain:
        return Provider.query(Provider.vanity_domain == domain).get()
    else:
        return None  
Beispiel #15
0
def get_provider_from_email(email):
    provider = Provider.query(Provider.email == email).get()
    logging.debug('Provider for email %s is %s' % (email, provider))
    return provider
Beispiel #16
0
def get_provider_from_email(email):
    provider = Provider.query(Provider.email == email).get()
    logging.debug('Provider for email %s is %s' % (email, provider))
    return provider
Beispiel #17
0
def fetch_providers():
    return Provider.query().order(Provider.last_name)
Beispiel #18
0
def get_signup_from_origin(origin):
    if origin:
        return Provider.query(Provider.signup_origin == origin).count()
Beispiel #19
0
def get_provider_from_user(user):
    '''returns the first provider profile liked to user. Returns None if user is not a provider'''
    if user:
        return Provider.query(Provider.user == user.key).get()
    else:
        return None  
Beispiel #20
0
def get_all_vanity_urls():
    return Provider.query().fetch(projection=['vanity_url'])
Beispiel #21
0
def get_all_vanity_urls():
    return Provider.query().fetch(projection=['vanity_url'])
Beispiel #22
0
def get_provider_from_vanity_url(vanity_url):
    '''returns the first provider profile liked to vanity_url. Returns None if vanity_url is not provided '''
    if vanity_url:
        return Provider.query(Provider.vanity_url == vanity_url).get()
    else:
        return None  
Beispiel #23
0
 def get_provider(self):
     return Provider.query(Provider.email == self.email).get()
Beispiel #24
0
def get_provider_from_user(user):
    '''returns the first provider profile liked to user. Returns None if user is not a provider'''
    if user:
        return Provider.query(Provider.user == user.key).get()
    else:
        return None