示例#1
0
   def _get_social_data(self):
       today = self.period.end_date
       month_stats_range = utils.list_of_months(today, 3)
 
       for month in month_stats_range:
           new_row = {}
           new_row["month"] = month.name
           data = AnalyticsData(self.sites, month, "MONTHLY")
           new_row["data"] = data.social_network_table(0)
           #new_row["summary"] = data.summary_table()
           social.append(new_row)            
       return social
示例#2
0
 def __init__(self, sites, period, recipients, frequency, subject):
     super(AnalyticsSocialReport, self).__init__(sites, period, recipients, frequency, subject)
     self.sites = sites
     self.period = period
     self.recipients = recipients
     self.frequency = frequency
     self.subject = subject		
     self.data = AnalyticsData(self.sites, self.period, self.frequency)    
     self.warning_sites = []
     self.template = self.env.get_template("GA/social_report.html")
     self.imgdata = None
     
     logger.debug("Running analytics social report")
     
     if self.sites == len(ga_config.TABLES.keys()):
         self.all_sites = True
     else:
         self.all_sites = False
示例#3
0
 def __init__(self, sites, period, recipients, frequency, subject):
     super(AnalyticsCoreReport, self).__init__(sites, period, recipients, frequency, subject)
     self.sites = sites
     self.period = period
     self.recipients = recipients
     self.frequency = frequency
     self.subject = subject
     self.data = AnalyticsData(self.sites, self.period, self.frequency)
     self.warning_sites = []
     self.template = self.env.get_template("GA/base.html")
     self.imgdata = None
     
     if self.sites == ga_config.ALL_NETWORK_SITES:
         self.all_sites = True
     else:
         self.all_sites = False
     
     logger.debug("Running analytics core report")
示例#4
0
    def generate_html(self):

        month_stats_range = utils.list_of_months(self.period.end_date, 1)
        social_export = []   
        for month in month_stats_range:
            new_row = {}
            new_row["month"] = month.get_start()
            data = AnalyticsData(self.sites, month, self.frequency)
            new_row["data"] = data.social_network_table(0)
            social_export.append(new_row)
            

        csv = self.template.render(
            subject=self.get_subject(),
            change=self.get_freq_label(),
            report_span = self.frequency,
            warning_sites = self.warning_sites,
            social_export = social_export	
        )
        return csv		
示例#5
0
    def _get_top_networks(self):
        top_networks_past_year = AnalyticsData(self.sites, utils.StatsRange("year", start_month, today), "YEARLY").social_network_table(0)

        top_network = ["Facebook", "Twitter", "reddit"]
        for row in top_networks_past_year:
            if row["social_network"] not in top_network:            
                top_network.append(row["social_network"])
            else:
                continue
        top_network = top_network[:6]
        return top_network                    
示例#6
0
 def __init__(self, sites, period, recipients, frequency, subject):
     super(AnalyticsSocialExport, self).__init__(sites, period, recipients, frequency, subject)
     self.sites = sites
     self.period = period
     self.recipients = recipients
     self.frequency = frequency
     self.subject = subject		 
     self.data = AnalyticsData(self.sites, self.period, self.frequency)    
     self.warning_sites = []
     self.template = self.env.get_template("social.csv")
     
     logger.debug("Running analytics social export")   	        
示例#7
0
    def generate_html(self):
        #TO DO 
        
        summary_table = self.data.summary_table()
        network_data = AnalyticsData(ga_config.TABLES.keys(), self.period, self.frequency)
        network_summary_table = network_data.summary_table()
        
        social_table = self.data.social_network_table(10)
        self.imgdata = self.data.social_chart()

        html = self.template.render(
            subject=self.get_subject(),
            change=self.get_freq_label(),
            site = self.get_site(),
            all_sites = self.all_sites,
            report_span = self.frequency,
            warning_sites = self.warning_sites,
            network_summary_table = network_summary_table,
            summary_table=summary_table,
            #top_articles=article_table,
            social_table=social_table, 		
        )
        return html		
示例#8
0
    def __init__(self, sites, period, recipients, frequency, subject):
        super(AnalyticsYearSocialReport, self).__init__(sites, period, recipients, frequency, subject)
        self.sites = sites
        self.period = period
        self.recipients = recipients
        self.frequency = frequency
        self.subject = subject		 
        self.data = AnalyticsData(self.sites, self.period, self.frequency)    
        self.warning_sites = []
        self.template = self.env.get_template("GA/year_social_report.html")
        
        logger.debug("Running analytics top social network report for the year")      

        if len(self.sites) == len(ga_config.TABLES.keys()):
            self.all_sites = True
        else:
            self.all_sites = False
示例#9
0
class AnalyticsSocialReport(Report):
    
    def __init__(self, sites, period, recipients, frequency, subject):
        super(AnalyticsSocialReport, self).__init__(sites, period, recipients, frequency, subject)
        self.sites = sites
        self.period = period
        self.recipients = recipients
        self.frequency = frequency
        self.subject = subject		
        self.data = AnalyticsData(self.sites, self.period, self.frequency)    
        self.warning_sites = []
        self.template = self.env.get_template("GA/social_report.html")
        self.imgdata = None
        
        logger.debug("Running analytics social report")
        
        if self.sites == len(ga_config.TABLES.keys()):
            self.all_sites = True
        else:
            self.all_sites = False
                
    def get_site(self):
        if len(self.sites) == 1:
            return self.sites[0]
        elif len(self.sites) == len(ga_config.TABLES.keys()):
            return ga_config.ALL_SITES_NAME
    	
                
    def generate_html(self):
        #TO DO 
        
        summary_table = self.data.summary_table()
        network_data = AnalyticsData(ga_config.TABLES.keys(), self.period, self.frequency)
        network_summary_table = network_data.summary_table()
        
        social_table = self.data.social_network_table(10)
        self.imgdata = self.data.social_chart()

        html = self.template.render(
            subject=self.get_subject(),
            change=self.get_freq_label(),
            site = self.get_site(),
            all_sites = self.all_sites,
            report_span = self.frequency,
            warning_sites = self.warning_sites,
            network_summary_table = network_summary_table,
            summary_table=summary_table,
            #top_articles=article_table,
            social_table=social_table, 		
        )
        return html		

    def send_email(self, html):
        """
        Send html email using config parameters
        """
        html = transform(html) #inline css using premailer
        msg = MIMEMultipart('alternative')
        msg.set_charset('utf8')
        msg['Subject'] = self.get_subject()
        msg['From'] = config.SEND_FROM
        msg['To'] = ', '.join(self.recipients)
        text_part = MIMEText("Please open with an HTML-enabled Email client.", 'plain')
        html_part = MIMEText(html.encode("utf-8"), 'html')


        if self.imgdata:
            img_part = MIMEImage(self.imgdata, 'png')
            img_part.add_header('Content-ID', '<graph>')
            msg.attach(img_part)
                    
        msg.attach(text_part)
        msg.attach(html_part)
        
        sender = smtplib.SMTP(config.SMTP_ADDRESS)
        sender.sendmail(config.SEND_FROM, self.recipients, msg.as_string())
    
        sender.quit()
示例#10
0
    def generate_html(self):
        
        to_month_table = None
        num_days = None
        full_month_table = None
        network_summary_table = None
        network_month_summary_table = None
        device_img = None
        num_articles = 5
        today = self.period.end_date
        
        if self.frequency != "MONTHLY":
            num_articles = 1
            #today = self.period.end_date
            first = datetime(today.year, today.month, 1).date()
            month_range = utils.StatsRange("Month to date Aggregate", first, today)            
            to_month_data = AnalyticsData(self.sites, month_range, self.frequency)
            to_month_table = to_month_data.summary_table()
            
            last = utils.add_one_month(first) - timedelta(days=1)
            num_days = (last - self.period.end_date).days
            month_range = utils.StatsRange("Month to date Aggregate", first, last)           
            full_month_data = AnalyticsData(self.sites, month_range, self.frequency)
            full_month_table = full_month_data.summary_table()            
            
        elif self.frequency == "MONTHLY":

            month_stats_range = utils.list_of_months(today, 1)
        
            device = []  
            for month in month_stats_range:
                new_row = {}
                new_row["month"] = month.get_start()
                data = AnalyticsData(self.sites, month, "MONTHLY")
                new_row["data"] = data.device_table()
                new_row["summary"] = data.summary_table()
                device.append(new_row)
                
            self.imgdata = self.data.device_chart(device)


        if not self.all_sites:
            network_data = AnalyticsData(ga_config.TABLES.keys(), self.period, self.frequency)
            network_summary_table = network_data.summary_table()
            if self.frequency != "MONTHLY":
                network_month_data = AnalyticsData(ga_config.TABLES.keys(), month_range, self.frequency)
                network_month_summary_table = network_month_data.summary_table()
        
            
        summary_table = self.data.summary_table()    
        site_table = self.data.site_summary_table()
        country_table = self.data.country_table()
        article_table = self.data.article_table()
        traffic_table = self.data.traffic_source_table()
        referring_site_table = self.data.referring_sites_table(num_articles)
        device_table = self.data.device_table()
        social_table = self.data.social_network_table(num_articles)

        
        html = self.template.render(
            subject=self.get_subject(),
            change=self.get_freq_label(),
            site = self.get_site(),
            all_sites = self.all_sites,
            report_span = self.frequency,
            warning_sites = self.warning_sites,
            month_summary_table = to_month_table,
            num_days = num_days,
            full_month_summary_table = full_month_table,
            network_summary_table = network_summary_table,
            network_month_summary_table = network_month_summary_table,
            summary_table=summary_table,
            geo_table=country_table,
            site_summary=site_table,
            top_articles=article_table,
            traffic_table=traffic_table,	
            referrals=referring_site_table,
            device_table=device_table,
            social_table=social_table, 		
        )
        return html		
示例#11
0
class AnalyticsCoreReport(Report):
    
    def __init__(self, sites, period, recipients, frequency, subject):
        super(AnalyticsCoreReport, self).__init__(sites, period, recipients, frequency, subject)
        self.sites = sites
        self.period = period
        self.recipients = recipients
        self.frequency = frequency
        self.subject = subject
        self.data = AnalyticsData(self.sites, self.period, self.frequency)
        self.warning_sites = []
        self.template = self.env.get_template("GA/base.html")
        self.imgdata = None
        
        if self.sites == ga_config.ALL_NETWORK_SITES:
            self.all_sites = True
        else:
            self.all_sites = False
        
        logger.debug("Running analytics core report")
                
                
    def get_site(self):
        if len(self.sites) == 1:
            return self.sites[0]
        elif self.all_sites:
            return ga_config.ALL_SITES_NAME
    

    def generate_html(self):
        
        to_month_table = None
        num_days = None
        full_month_table = None
        network_summary_table = None
        network_month_summary_table = None
        device_img = None
        num_articles = 5
        today = self.period.end_date
        
        if self.frequency != "MONTHLY":
            num_articles = 1
            #today = self.period.end_date
            first = datetime(today.year, today.month, 1).date()
            month_range = utils.StatsRange("Month to date Aggregate", first, today)            
            to_month_data = AnalyticsData(self.sites, month_range, self.frequency)
            to_month_table = to_month_data.summary_table()
            
            last = utils.add_one_month(first) - timedelta(days=1)
            num_days = (last - self.period.end_date).days
            month_range = utils.StatsRange("Month to date Aggregate", first, last)           
            full_month_data = AnalyticsData(self.sites, month_range, self.frequency)
            full_month_table = full_month_data.summary_table()            
            
        elif self.frequency == "MONTHLY":

            month_stats_range = utils.list_of_months(today, 1)
        
            device = []  
            for month in month_stats_range:
                new_row = {}
                new_row["month"] = month.get_start()
                data = AnalyticsData(self.sites, month, "MONTHLY")
                new_row["data"] = data.device_table()
                new_row["summary"] = data.summary_table()
                device.append(new_row)
                
            self.imgdata = self.data.device_chart(device)


        if not self.all_sites:
            network_data = AnalyticsData(ga_config.TABLES.keys(), self.period, self.frequency)
            network_summary_table = network_data.summary_table()
            if self.frequency != "MONTHLY":
                network_month_data = AnalyticsData(ga_config.TABLES.keys(), month_range, self.frequency)
                network_month_summary_table = network_month_data.summary_table()
        
            
        summary_table = self.data.summary_table()    
        site_table = self.data.site_summary_table()
        country_table = self.data.country_table()
        article_table = self.data.article_table()
        traffic_table = self.data.traffic_source_table()
        referring_site_table = self.data.referring_sites_table(num_articles)
        device_table = self.data.device_table()
        social_table = self.data.social_network_table(num_articles)

        
        html = self.template.render(
            subject=self.get_subject(),
            change=self.get_freq_label(),
            site = self.get_site(),
            all_sites = self.all_sites,
            report_span = self.frequency,
            warning_sites = self.warning_sites,
            month_summary_table = to_month_table,
            num_days = num_days,
            full_month_summary_table = full_month_table,
            network_summary_table = network_summary_table,
            network_month_summary_table = network_month_summary_table,
            summary_table=summary_table,
            geo_table=country_table,
            site_summary=site_table,
            top_articles=article_table,
            traffic_table=traffic_table,	
            referrals=referring_site_table,
            device_table=device_table,
            social_table=social_table, 		
        )
        return html		
        
        
    def send_email(self, html):
        """
        Send html email using config parameters
        """
        html = transform(html) #inline css using premailer
        msg = MIMEMultipart('alternative')
        msg.set_charset('utf8')
        msg['Subject'] = self.get_subject()
        msg['From'] = config.SEND_FROM
        msg['To'] = ', '.join(self.recipients)
        text_part = MIMEText("Please open with an HTML-enabled Email client.", 'plain')
        html_part = MIMEText(html.encode("utf-8"), 'html')


        if self.imgdata:
            img_part = MIMEImage(self.imgdata, 'png')
            img_part.add_header('Content-ID', '<graph>')
            msg.attach(img_part)
                    
        msg.attach(text_part)
        msg.attach(html_part)
        
        sender = smtplib.SMTP(config.SMTP_ADDRESS)
        sender.sendmail(config.SEND_FROM, self.recipients, msg.as_string())
    
        sender.quit()