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)
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)
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)
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)
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)
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()
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()
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()