Ejemplo n.º 1
0
def summarize(request, projectId):
    summary = Summary()
    summary.project = get_object_or_404(Project, pk=projectId)
    now = date.today()
    summary.dateStart = now - timedelta(days=7)
    summary.dateEnd = now
    #Get sale info from Niki REST API
    nikiconverter = NikiConverter()
    availability = nikiconverter.getAvailability(summary.project.nikiProject)
    summary.housesForSaleOrRent = availability[0]
    summary.housesSoldOrRented = availability[1]
    summary.housesUnderOption = availability[2]

    #GET interest info from Niki Interest API
    interestManager = interestmanager()
    projectId = '36002'
    account = InterestAccount.objects.get(username = "******")
    interestStart = datetime.combine(summary.dateStart, datetime.min.time())
    summary.interest = len(interestManager.getIdsByProjectFrom(account, projectId, interestStart))
    summary.cummulativeInterest = len(interestManager.getIdsByProject(account, projectId))



    Summary.save(summary);
    return HttpResponseRedirect(reverse('summary'))
Ejemplo n.º 2
0
def nikirentcount(request):
    """
    Return rent status of project in cyfe data format
    """
    project = request.GET.get("project")
    nikimanager = NikiConverter()
    availability = nikimanager.getAvailability(project)
    result = "Te huur, Optie, Verhuurd\n"
    result += ",".join([str(i) for i in availability]) + "\n"
    result += "Color,#00cb13,#ff7f00,#ee0000"
    return HttpResponse(result)
Ejemplo n.º 3
0
def nikiglobalstats(request):
    """
    Return a list of miscellanious project properties
    """
    projectcode = request.GET.get("project")
    nikimanager = NikiConverter()
    project = nikimanager.apiRequest(projectcode)
    result = "Projecteigenschap,Beschikbaar,Totaal\n"
    result += "Projectvoortgang,-,{}\n".format(project.get("progress"))
    result += "Aantal woningen,"
    return HttpResponse(result)
    """
Ejemplo n.º 4
0
def nikirenttable(request):
    """
    Return list of housetypes with according rent status
    """
    project = request.GET.get("project")
    nikimanager = NikiConverter()
    housetypes = nikimanager.getHouseTypes(project)
    result = ""
    for housetype in housetypes:
        sale = housetype.get("houses").get("for-rent") if housetype.get("houses").get("for-rent") else 0
        option = housetype.get("houses").get("option") if housetype.get("houses").get("option") else 0
        sold = housetype.get("houses").get("rented") if housetype.get("houses").get("rented") else 0
        result += "{},{},{},{}\n".format(housetype.get("name"), sale, option, sold).replace(",", ",")

    # result = "Woningtype,te koop, in optie, verkocht\n"
    return HttpResponse(result)
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
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