Exemplo n.º 1
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)
Exemplo n.º 2
0
    def get(self, button = None):
        if button:
            site_counter = db.get_site_counter()
            if button == 'full':
                site_counter.click_full_button += 1
                self.session['signup_button'] = 'full'
                
            if button == 'preview':
                site_counter.click_preview_button += 1
                self.session['signup_button'] = 'preview'

            site_counter.put()

        provider_signup_form = forms.user.ProviderSignupForm1().get_form()
        
        self.render_template('user/signup_provider_1.html', provider_signup_form=provider_signup_form)      
Exemplo n.º 3
0
    def get(self, button=None):
        if button:
            site_counter = db.get_site_counter()
            if button == 'full':
                site_counter.click_full_button += 1
                self.session['signup_button'] = 'full'

            if button == 'preview':
                site_counter.click_preview_button += 1
                self.session['signup_button'] = 'preview'

            site_counter.put()

        provider_signup_form = forms.user.ProviderSignupForm1().get_form()

        self.render_template('user/signup_provider_1.html',
                             provider_signup_form=provider_signup_form)
Exemplo n.º 4
0
    def get(self):
        # offset doesn't work. I give up.

        site_counter = db.get_site_counter()
        log_email_last_offset = site_counter.log_email_last_offset
        end_time = time.time()

        last_offset = None
        message = ""

        for req_log in logservice.fetch(
                end_time=end_time,
                offset=log_email_last_offset,
                #minimum_log_level=logservice.LOG_LEVEL_WARNING,
                include_app_logs=True):

            message += datetime.datetime.fromtimestamp(int(
                req_log.end_time)).strftime('%Y-%m-%d %H:%M:%S')
            message += "\n"
            message += req_log.ip
            message += "\n"
            if req_log.referrer:
                message += req_log.referrer
                message += "\n"

            message += req_log.resource
            message += "\n"

            message += "\n APP MESSAGES \n"
            for app_log in req_log.app_logs:
                if app_log.level >= 3:
                    message += "Log Level: " + str(app_log.level) + "\n"
                    message += app_log.message
                    message += "\n"

            message += "\n\n -------------------------------- \n\n"
            last_offset = req_log.offset

        if last_offset:
            site_counter.log_email_last_offset = last_offset
            site_counter.put()

        logging.info("-------------------------")
        logging.info(message)
Exemplo n.º 5
0
    def get(self):
        # offset doesn't work. I give up.
        
        site_counter = db.get_site_counter()
        log_email_last_offset = site_counter.log_email_last_offset
        end_time = time.time()
        
        last_offset = None
        message = ""
        
        for req_log in logservice.fetch(end_time=end_time, offset=log_email_last_offset,
                                    #minimum_log_level=logservice.LOG_LEVEL_WARNING,
                                    include_app_logs=True):
            
            message += datetime.datetime.fromtimestamp(int(req_log.end_time)).strftime('%Y-%m-%d %H:%M:%S')
            message += "\n"
            message += req_log.ip
            message += "\n"
            if req_log.referrer:
                message += req_log.referrer
                message += "\n"
            
            message += req_log.resource
            message += "\n"

            message += "\n APP MESSAGES \n"
            for app_log in req_log.app_logs:
                if app_log.level >= 3:
                    message += "Log Level: " + str(app_log.level) + "\n"           
                    message += app_log.message 
                    message += "\n"

            message += "\n\n -------------------------------- \n\n"
            last_offset = req_log.offset

        if last_offset:
            site_counter.log_email_last_offset = last_offset
            site_counter.put()
        
        logging.info("-------------------------")
        logging.info(message)
Exemplo n.º 6
0
    def get(self, what=None, prospect_id=None):
        site_counter = db.get_site_counter()
        site_counter.blog_clicks += 1

        language = util.DEFAULT_LANG

        # set prospect and redirect based on that
        if prospect_id:
            prospect = db.get_prospect_from_prospect_id(prospect_id)
            if prospect:
                self.log_prospect(prospect_id)
                language = prospect.language
            else:
                # default language to english for blog since there are more posts
                language = 'en'

        else:
            # figure out the language
            url_obj = urlparse.urlparse(self.request.url)
            path = url_obj.path
            if path:
                path_split = path.split('/')
                lang = path_split[1]
            if lang in util.LANGUAGES:
                logging.info('Setting lang from url %s' % lang)
                self.set_language(lang)

            language = self.get_language()

        if language == 'fr':
            site_counter.blog_clicks_fr += 1
            self.redirect("http://blogue.veosan.com")
        else:
            site_counter.blog_clicks_en += 1
            self.redirect("http://blog.veosan.com")

        site_counter.put_async()
        self.log_entry()
Exemplo n.º 7
0
    def get(self, what = None, prospect_id = None):
        site_counter = db.get_site_counter()
        site_counter.blog_clicks += 1
        
        language = util.DEFAULT_LANG
        
        # set prospect and redirect based on that
        if prospect_id:
            prospect = db.get_prospect_from_prospect_id(prospect_id)
            if prospect:
                self.log_prospect(prospect_id)
                language = prospect.language
            else:
                # default language to english for blog since there are more posts
                language = 'en'
            
        else:
            # figure out the language
            url_obj = urlparse.urlparse(self.request.url)
            path = url_obj.path
            if path:
                path_split = path.split('/')
                lang = path_split[1]
            if lang in util.LANGUAGES:
                logging.info('Setting lang from url %s' % lang)
                self.set_language(lang)
                
            language = self.get_language()
        
        if language == 'fr':
            site_counter.blog_clicks_fr += 1
            self.redirect("http://blogue.veosan.com")
        else:
            site_counter.blog_clicks_en += 1
            self.redirect("http://blog.veosan.com")

        site_counter.put_async()
        self.log_entry()
Exemplo n.º 8
0
    def render_template(self, filename, provider=None, **kw):
        '''
            Common template rendering function
        '''
                
        # domain setup
        domain_without_ports = self.request.host.split(":")[0]
        domain = domain_without_www = domain_without_ports.replace("www.", "")
        kw['domain_setup'] = db.get_domain_setup(domain_without_www)
        
        kw['valid_domains'] = util.DOMAINS
        
        # add template arguments common to all templates
        user = self.get_current_user()
        roles = []
        
        # hack for providers 
        # (allows provider pages to be accessed without a user logged in but knowing the provider key)
        kw['provider'] = provider
        kw['provider_from_user'] = None

        # somebody is logged in
        if user:
            logging.info('(BaseHandler.render_template) User logged in: %s with roles %s' % (user.get_email(), user.roles))
            kw['user'] = user
                        
            # extend roles
            roles.extend(user.roles)
            
            # is it a provider?
            if handler.auth.PROVIDER_ROLE in roles:
                provider_from_user = data.db.get_provider_from_user(user)
                logging.info('(BaseHandler.render_template) Provider logged in: ' + user.get_email())
                
                # overwrite for menu from logged in user
                kw['provider_from_user'] = provider_from_user


                # verify user->provider matches request->provider passed as paramater (ie. from request key)
                if provider: 
                    if not provider_from_user == provider:
                        logging.error("(BaseHandler.render_template) Logged in user does not match provider_key. We have a problem.")
                        
          
            if handler.auth.PATIENT_ROLE in roles:
                patient = data.db.get_patient_from_user(user)
                logging.info('(BaseHandler.render_template) Patient logged in: ' + user.get_email())
                if patient:
                    kw['patient'] = patient

        
        google_user = users.get_current_user()
        if google_user:
            logging.info('(BaseHandler.render_template) Google User also logged in: ' + str(google_user))
            kw['google_user'] = google_user

            # check google account for admin, add to roles
            if users.is_current_user_admin():
                roles.append(handler.auth.ADMIN_ROLE)
                
                # add fake login for current user
                kw['provider_from_user'] = kw['provider']

        
        # set the roles
        kw['roles'] = roles
            
        # set the language
        lang = self.get_language()
        logging.debug('(BaseHandler.render_template) Language is %s' % lang)
        kw['lang'] = lang
        kw['other_languages'] = filter(lambda l: l not in lang, util.LANGUAGE_LABELS.keys())

        # Login and logout URLs (why is this coded here? : Beacause historically for google users you had to call a method to get the login and logout urls)
        kw['login_url'] = '/' + lang + '/login'
        kw['logout_url'] = '/logout'
        kw['admin_logout_url'] = users.create_logout_url('/')
        
        kw['language_labels'] = util.LANGUAGE_LABELS
        kw['is_url_translatable'] = language.is_url_translatable(self.request.url)
        if kw['is_url_translatable']:
            kw['url_post_language'] = language.get_url_post_language(self.request.url)
        
        
        # make all session variables available to templates
        kw['session'] = self.session
        kw['host'] = self.request.host
        
        # ---------------
        # Site config
        # ---------------
        
        site_config = db.get_site_config()
        if site_config:
            kw['site_config'] = site_config
            kw['booking_enabled'] = site_config.booking_enabled
            kw['google_analytics_enabled'] = site_config.google_analytics_enabled
            kw['facebook_like_enabled'] = site_config.facebook_like_enabled

        else:
            # no site configuration exists in database, create one
            site_config = SiteConfig()
            
            # take defaul state for booking enabled from util 
            # (so it can be set before the handler is called in unit tests)
            site_config.booking_enabled = util.BOOKING_ENABLED
            
            site_config.put()
            kw['site_config'] = site_config
            kw['booking_enabled'] = site_config.booking_enabled
            kw['google_analytics_enabled'] = site_config.google_analytics_enabled
            kw['facebook_like_enabled'] = site_config.facebook_like_enabled

        # render
                
        # check if we have internet exploder
        kw['internet_explorer_old'] = False
        user_agent = self.request.headers.get('User-Agent')
        if user_agent:
            is_msie = re.search("MSIE ([0-9]{1,}[\.0-9]{0,})", user_agent);
            logging.debug("Browser User-Agent: %s" % user_agent)
    
            if is_msie:
                msie_str = is_msie.group()
                version_str = re.search("([0-9]{1,}[\.0-9]{0,})", msie_str)
    
                if version_str:
                    version = float(version_str.group())
                    if version < 9:
                        kw['internet_explorer_old'] = True
                        
                        #self.response.write(self.jinja2.render_template('internet_explorer.html', **kw))
                        site_counter = db.get_site_counter()
                        site_counter.internet_explorer_hits += 1
                        site_counter.put_async()
                else:
                    logging.error("Unable to parse version string for Internet Explorer: %s" % is_msie.group())
                    
        else:
            logging.error("Unable to parse empty user agent")
        
        self.response.write(self.jinja2.render_template(filename, **kw))
        
        self.log_entry()