def get_context_data(self, **kwargs): context = super(self.__class__, self).get_context_data(**kwargs) if self.extra_context is not None: for key, value in self.extra_context.items(): if callable(value): context[key] = value() else: context[key] = value #get testproject project = Project.objects.get(name = context['projectname']) context['project'] = project #for testing purpose add content directly to context ga_manager = AnalyticsManager() ga_view = project.ga_view visits = ga_manager.get_weekly_visits(ga_view, '2014-08-01', '2014-08-14') context['traffic'] = visits['rows'] conversions = ga_manager.get_conversion_count_for_goal(ga_view, 1 ,'2014-08-01', '2014-08-14') context['conversions'] = conversions conversion_rate = ga_manager.get_conversion_rate_for_goal(ga_view, 1, '2014-08-01', '2014-08-14') previous_conversion_rate = ga_manager.get_conversion_rate_for_goal(ga_view, 1, '2014-07-14', '2014-07-30') context['conversionrate'] = conversion_rate context['previousconversionrate'] = previous_conversion_rate interestManager = InterestManager() account = InterestAccount.objects.get(username='******') projectId = '36002' start = datetime.today() - timedelta(days=360) idlist = interestManager.getIdsByProjectFrom(account, projectId, start) context['interest'] = len(idlist) nikimanager = NikiConverter() context['availability'] = nikimanager.getAvailability(project.nikiProject) #Get the sex and age spread of likes on the fanpage fbmanager = FacebookManager() agesexspread = fbmanager.get_likes_sex_age_spread_sorted('217907011622497') context['fbagesexspread'] = agesexspread #Get Mailchimp list growth statistics mcmanager = MailchimpManager(project.mailchimp_api_token) context['mailchimp'] = mcmanager.get_list_growth_data(project.mailchimp_list_id) return context
def fill_context(context, summary): """Fetch all data and add to given dict""" logger = logging.getLogger(__name__) current_site = Site.objects.get_current() context["domain"] = current_site.domain context["summary"] = summary """ Fetch project from summary """ project = summary.project context["project"] = project """ dates for this mailing """ currentstart = summary.dateStart currentend = summary.dateEnd previousstart = summary.dateStart - timedelta(days=15) previousend = summary.dateStart """ Fetch Analytics settings for this project """ ga_settings = AnalyticsSettings.objects.get(project=project) logger.debug("fetched analytics settings: {}".format(ga_settings)) ga_view = ga_settings.ga_view ga_goal = ga_settings.goal_to_track """ for testing purpose add content directly to context """ ga_manager = AnalyticsManager() visits = ga_manager.get_weekly_visits(ga_view, currentstart.isoformat(), currentend.isoformat()) context["traffic"] = visits["rows"] context["traffic_target_sessions"] = ga_settings.sessions_target context["traffic_target_pageviews"] = ga_settings.pageviews_target """ Get Google Analytics conversions for this and previous period """ if not ga_goal == "0": conversions = ga_manager.get_conversion_count_for_goal( ga_view, ga_goal, currentstart.isoformat(), currentend.isoformat() ) context["conversions"] = conversions previous_conversions = ga_manager.get_conversion_count_for_goal( ga_view, ga_goal, previousstart.isoformat(), previousend.isoformat() ) context["previous_conversions"] = previous_conversions total_conversions = ga_manager.get_conversion_count_for_goal( ga_view, ga_goal, ga_manager.GA_NULL_DATE, currentend.isoformat() ) context["total_conversions"] = total_conversions """ Get Google Analytics conversion rate for this and previous period """ logger.debug("analytics period: {} - {}".format(currentstart.isoformat(), currentend.isoformat())) conversion_rate = ga_manager.get_conversion_rate_for_goal( ga_view, ga_goal, currentstart.isoformat(), currentend.isoformat() ) context["conversionrate"] = conversion_rate previous_conversion_rate = ga_manager.get_conversion_rate_for_goal( ga_view, ga_goal, previousstart.isoformat(), previousend.isoformat() ) context["previousconversionrate"] = previous_conversion_rate total_conversion_rate = ga_manager.get_conversion_rate_for_goal( ga_view, ga_goal, ga_manager.GA_NULL_DATE, currentend.isoformat() ) context["total_conversion_rate"] = total_conversion_rate else: context["conversions"] = 0 context["previous_conversions"] = 0 context["total_conversions"] = 0 context["conversionrate"] = 0 context["previousconversionrate"] = 0 context["total_conversion_rate"] = 0 """ Get top pages """ context["top_pages"] = ga_manager.get_top_pages(ga_view, currentstart, currentend) """ Get number of interested people from niki for this and previous period """ interestManager = InterestManager() nip = interestManager.getNikiInterestProjectByProject(project) idlist = [] context["interest"] = 0 context["previousinterest"] = 0 context["interesttotal"] = 0 if nip is not None: account = nip.interestAccount idlist = interestManager.getIdsByProjectBetween( account, nip.nikiProjectId, util.date_to_datetime(currentstart), util.date_to_datetime(currentend) ) logger.debug("fetched idlist from nikiinterest: {}".format(idlist)) context["interest"] = len(idlist) previousidlist = interestManager.getIdsByProjectBetween( account, nip.nikiProjectId, util.date_to_datetime(previousstart), util.date_to_datetime(previousend) ) context["previousinterest"] = len(previousidlist) interest_total = len(interestManager.getIdsByProject(account, nip.nikiProjectId)) context["interesttotal"] = interest_total if project.nikiProject != "0": """ Get project Niki sales stats """ nikimanager = NikiConverter() context["availability"] = nikimanager.getAvailability(project.nikiProject) context["nikisalerent"] = nikimanager.getProjectSaleRentType(project.nikiProject) if context["availability"] is not None: sold_count = context["availability"][2] if project.fanpage_id != "0": """ Get the sex and age spread of likes on the fanpage """ fbmanager = FacebookManager() agesexspread = fbmanager.get_likes_sex_age_spread_sorted(project) if not agesexspread == []: context["fbagesexspread"] = agesexspread if project.mailchimp_list_id != "0": """ Get Mailchimp list growth statistics """ mcmanager = MailchimpManager(project.mailchimp_api_token) context["mailchimp"] = mcmanager.get_list_growth_data(project.mailchimp_list_id) try: context["project_score"] = util.project_score(sold_count, interest_total, total_conversion_rate) except: context["project_score"] = 0 return context