Example #1
0
def phil_test(request):
    import tempfile
    from atrinsic.base.models import Website
    from atrinsic.web.helpers import base36_encode
    from django.utils.encoding import smart_str
    from atrinsic.util.xls import write_rows

    file_id, file_path = tempfile.mkstemp()

    #date joined in PublisherRelationship

    res = [["Website ID", "Encoded id", "Website Url"]]
    qs = Website.objects.filter(publisher=1101)
    for row in qs:
        """dateJoined = smart_str(PublisherRelationship.objects.get(advertiser=request.organization, publisher=row, status = 3).date_accepted)
        if dateJoined == 'None':
            dateJoined = smart_str(PublisherRelationship.objects.get(advertiser=request.organization, publisher=row, status = 3).date_initiated)
            print '****** %s', dateJoined"""
        #base publisher relationship.. for Date Joined

        res.append([
            str(int(row.pk)),
            str(base36_encode(int(row.pk))),
            smart_str(row.url)
        ])
    write_rows(file_path, res)
    print res
    res = open(file_path).read()

    response = HttpResponse(res, mimetype="application/vnd.ms-excel")
    response['Content-Disposition'] = 'attachment; filename=mypublishers.xls'
    return response
Example #2
0
def phil_test(request):
    import tempfile
    from atrinsic.base.models import Website
    from atrinsic.web.helpers import base36_encode
    from django.utils.encoding import smart_str
    from atrinsic.util.xls import write_rows
    
    file_id,file_path = tempfile.mkstemp()
	
    #date joined in PublisherRelationship
	
    res = [["Website ID","Encoded id","Website Url"]]
    qs = Website.objects.filter(publisher=1101)
    for row in qs:
        """dateJoined = smart_str(PublisherRelationship.objects.get(advertiser=request.organization, publisher=row, status = 3).date_accepted)
        if dateJoined == 'None':
            dateJoined = smart_str(PublisherRelationship.objects.get(advertiser=request.organization, publisher=row, status = 3).date_initiated)
            print '****** %s', dateJoined"""
        #base publisher relationship.. for Date Joined

        res.append([str(int(row.pk)),
                    str(base36_encode(int(row.pk))),
                    smart_str(row.url)])
    write_rows(file_path,res)
    print res
    res = open(file_path).read()
    
    response = HttpResponse(res,mimetype="application/vnd.ms-excel")
    response['Content-Disposition'] = 'attachment; filename=mypublishers.xls'
    return response
Example #3
0
def publisher_links_download(request):
    ''' View to download Publishers Links '''
    from atrinsic.util.xls import write_rows
    import tempfile

    filename = None

    try:
        link_ids = request.REQUEST.getlist('link_id')
    except:
        link_ids = []

    qs = request.organization.available_links().filter(id__in=link_ids)
    default_website = request.organization.get_default_website()

    file_id, file_path = tempfile.mkstemp()
    res = [["Link ID", "Link Type", "Link Name", "Link Copy", "Link"]]

    for l in qs:
        if filename is None:
            filename = '%s.xls' % l.get_link_type_display()

        res.append([
            str(l.link_id),
            str(l.get_link_type_display()),
            str(l.name),
            str(l.link_content),
            str(l.track_text(default_website))
        ])

    if filename is None:
        filename = 'links.xls'

    write_rows(file_path, res)
    res = open(file_path).read()

    response = HttpResponse(res, mimetype="application/vnd.ms-excel")
    response['Content-Disposition'] = 'attachment; filename=%s' % filename

    return response
Example #4
0
def publisher_links_download(request):
    ''' View to download Publishers Links '''
    from atrinsic.util.xls import write_rows
    import tempfile
    
    filename = None

    try:
        link_ids = request.REQUEST.getlist('link_id')
    except:
        link_ids = []

    qs = request.organization.available_links().filter(id__in=link_ids)
    default_website = request.organization.get_default_website()

    file_id,file_path = tempfile.mkstemp()
    res = [["Link ID", "Link Type", "Link Name", "Link Copy", "Link" ]]
        
    for l in qs:
        if filename is None:
            filename = '%s.xls' % l.get_link_type_display()

        res.append([ str(l.link_id),
             str(l.get_link_type_display()),
             str(l.name),
             str(l.link_content),
             str(l.track_text(default_website))
                   ])

    if filename is None:
        filename = 'links.xls'

    write_rows(file_path,res)
    res = open(file_path).read()

    response = HttpResponse(res,mimetype="application/vnd.ms-excel")
    response['Content-Disposition'] = 'attachment; filename=%s' % filename

    return response
Example #5
0
def publisher_links_adbuilder(request):
    '''@tab("Publisher","Links","Links")'''
    from forms import adbuilderForm
    from atrinsic.base.models import Organization, PublisherRelationship
    from atrinsic.util.xls import write_rows
    import tempfile
    from atrinsic.web.helpers import base36_encode

    pubs = PublisherRelationship.objects.filter(advertiser='711')
    res = [["pub id", "encrypted"]]

    file_id, file_path = tempfile.mkstemp()
    filename = 'pubs.xls'

    for p in pubs:
        res.append([str(p.publisher.pk), str(base36_encode(p.publisher.pk))])

    write_rows(file_path, res)
    res = open(file_path).read()

    response = HttpResponse(res, mimetype="application/vnd.ms-excel")
    response['Content-Disposition'] = 'attachment; filename=%s' % filename

    return response
Example #6
0
def publisher_links_adbuilder(request):
    '''@tab("Publisher","Links","Links")'''
    from forms import adbuilderForm
    from atrinsic.base.models import Organization,PublisherRelationship
    from atrinsic.util.xls import write_rows
    import tempfile
    from atrinsic.web.helpers import base36_encode 
    
    pubs =  PublisherRelationship.objects.filter(advertiser='711')
    res = [["pub id", "encrypted"]]
    
    file_id,file_path = tempfile.mkstemp()
    filename = 'pubs.xls'
    
    for p in pubs:
        res.append([str(p.publisher.pk),str(base36_encode(p.publisher.pk))])
    
    write_rows(file_path,res)
    res = open(file_path).read()

    response = HttpResponse(res,mimetype="application/vnd.ms-excel")
    response['Content-Disposition'] = 'attachment; filename=%s' % filename

    return response
Example #7
0
def publisher_advertisers(request,
                          view='my',
                          page=None,
                          template='publisher/advertisers/index.html'):
    ''' View to manage Publisher's Advertisers.  This view has three different resultsets
        based on the URL specified.  '/my/' displays this Publishers Advertisers.
        '/find/' provides a search interface to all Advertisers, and '/expired/'
        displays this Publisher's expired Advertisers.  This View has sortable result
        columns based on the GET variable 'sort' and the template displays different
        actions for each View based upon the form variable "view" which is derived
        from the URL.
    '''
    from atrinsic.base.models import Organization
    from atrinsic.util.xls import write_rows
    from forms import AdvertiserSearchForm
    import tempfile
    from django.db.models import Q

    q = None
    vertical = None
    sort_next = '#'

    download = False

    if request.GET:
        form = AdvertiserSearchForm(request.organization, request.GET)

        if form.is_valid():
            q = form.cleaned_data.get('q', None)
            vertical = form.cleaned_data.get('vertical', None)
            min_rating = form.cleaned_data.get('network_rating', None)
            date_from = form.cleaned_data.get('date_from', None)
            date_to = form.cleaned_data.get('date_to', None)

            if (vertical == '-1') or len(vertical) < 1:
                vertical = None

            if view == 'my':
                settab(request, "Publisher", "Advertisers", "My Advertisers")
                # My Advertisers
                qs = Organization.objects.filter(
                    publisher_relationships__status=RELATIONSHIP_ACCEPTED,
                    status=ORGSTATUS_LIVE,
                    publisher_relationships__publisher=request.organization
                ).extra(
                    select={
                        "publisher_id":
                        "select publisher_id from base_organization where id="
                        + str(request.organization.id)
                    })

                if request.GET.get('download', None) is not None:
                    template = 'publisher/advertisers/download.csv'
                    download = True

            elif view == 'expired':
                settab(request, "Publisher", "Advertisers",
                       "Expired Advertisers")
                qs = Organization.objects.filter(
                    publisher_relationships__status__in=[
                        RELATIONSHIP_EXPIRED, RELATIONSHIP_DECLINED
                    ],
                    status=ORGSTATUS_LIVE,
                    publisher_relationships__publisher=request.organization
                ).extra(
                    select={
                        "publisher_id":
                        "select publisher_id from base_organization where id="
                        + str(request.organization.id)
                    })

            else:
                # Default Advertiser Finder
                qs = Organization.objects.filter(org_type=ORGTYPE_ADVERTISER,
                                                 status=ORGSTATUS_LIVE).filter(
                                                     has_program_term=True,
                                                     is_private=False)
            if q is not None:
                qs = qs.filter(
                    (Q(show_alias=True) & Q(company_alias__icontains=q))
                    | (Q(show_alias=False) & Q(company_name__icontains=q)))

            if vertical is not None:
                qs = qs.filter(vertical__order=vertical)
            else:
                qs = qs.filter(is_adult=request.organization.is_adult)

            if min_rating is not None:
                qs = qs.filter(network_rating__gte=str(min_rating))

            if form.cleaned_data.get('email_marketing', False):
                qs = qs.filter(allow_third_party_email_campaigns=True)

            if form.cleaned_data.get('direct_linking', False):
                qs = qs.filter(allow_direct_linking_through_ppc=True)

            if form.cleaned_data.get('trademark_bidding', False):
                qs = qs.filter(allow_trademark_bidding_through_ppc=True)

            if date_from is not None:
                qs = qs.filter(date_joined__gte=date_from)

            if date_to is not None:
                qs = qs.filter(date_joined__lte=date_to)
        else:
            qs = QuerySet()

    else:
        form = AdvertiserSearchForm(organization=request.organization)

        if view == 'my':
            settab(request, "Publisher", "Advertisers", "My Advertisers")
            # My Advertisers
            qs = Organization.objects.filter(
                publisher_relationships__status=RELATIONSHIP_ACCEPTED,
                status=ORGSTATUS_LIVE,
                publisher_relationships__publisher=request.organization
            ).extra(
                select={
                    "publisher_id":
                    "select publisher_id from base_organization where id=" +
                    str(request.organization.id)
                })
        elif view == 'expired':
            settab(request, "Publisher", "Advertisers", "Expired Advertisers")
            qs = Organization.objects.filter(
                publisher_relationships__status__in=[
                    RELATIONSHIP_EXPIRED, RELATIONSHIP_DECLINED
                ],
                status=ORGSTATUS_LIVE,
                publisher_relationships__publisher=request.organization
            ).extra(
                select={
                    "publisher_id":
                    "select publisher_id from base_organization where id=" +
                    str(request.organization.id)
                })
        else:
            # XXX
            qs = Organization.objects.none()

    sort = request.GET.get('sort', 'date_joined').lower()
    if qs.model and qs.count():
        display_results = True
        sort_fields = [
            'ticker',
            'company_name',
            'state',
            'country',
            'vertical',
            'network_rating',
            'date_joined',
            'contact_firstname',
            'force',
        ]

        for f in sort_fields:
            if sort.endswith(f):
                if sort.startswith('-'):
                    sort_next = sort[1:]
                else:
                    sort_next = '-%s' % sort

                qs = qs.order_by(sort)
                break
        # if finding, remove all the advertisers that have outstanding relationships
        if view == 'find':
            result = []
            for i in qs:
                rs = i.get_advertiser_relationship(request.organization)
                if rs == None:
                    result.append(i)
                elif rs.status == RELATIONSHIP_NONE:
                    result.append(i)
            total_results = len(result)
            qs = result
        else:
            total_results = qs.count()

    else:
        if view == 'expired':
            display_results = True
            total_results = 0
        elif form.is_valid():
            display_results = True
            total_results = 0
        else:
            display_results = False
            total_results = 0

    if download == True:
        file_id, file_path = tempfile.mkstemp()

        res = [[
            'Ticker', 'Company Name', 'State', 'Country', 'Vertical',
            'Network Rating', 'Date Joined', 'Force'
        ]]
        for row in qs:
            res.append([
                str(row.ticker),
                str(row.company_name),
                str(row.state),
                str(row.country),
                str(row.vertical),
                str(row.network_rating),
                str(row.date_joined),
                str(row.force)
            ])

        write_rows(file_path, res)
        res = open(file_path).read()

        response = HttpResponse(res, mimetype="application/vnd.ms-excel")
        response[
            'Content-Disposition'] = 'attachment; filename=myadvertisers.xls'
        return response
    else:
        return object_list(request,
                           queryset=qs,
                           allow_empty=True,
                           page=page,
                           template_name='publisher/advertisers/index.html',
                           paginate_by=50,
                           extra_context={
                               'q': q,
                               'display_results': display_results,
                               'form': form,
                               'sort': sort,
                               'sort_next': sort_next,
                               'total_results': total_results,
                               'view': view,
                           })
Example #8
0
def publisher_reports(request):
    from forms import ReportFormPublisher
    from atrinsic.base.models import Organization, AqWidget, UserAqWidget
    from reports import *
    inits = {}
    inits = {
        'start_date': request.GET.get('start_date', None),
        'end_date': request.GET.get('end_date', None),
        'group_by': request.GET.get('group_by', 0),
        'run_reporting_by': request.GET.get('run_reporting_by', 0),
        'report_type': request.GET.get('report_type', 0),
        'specific_advertiser': request.GET.get('specific_advertiser'),
        'advertiser_category': request.GET.getlist('advertiser_category'),
    }
    this_page = 'publisher-reports'
    widget_report = None
    report = None
    refilter = 0
    if request.GET:
        form = ReportFormPublisher(request.organization, inits)
        if form.is_valid():
            refilter = 1
            date_start, date_end = time_period(form)
            if date_start == None:
                date_start = datetime.datetime.now()
            if date_end == None:
                date_end = datetime.datetime.now()
            all_advertisers = Organization.objects.filter(
                publisher_relationships__status=RELATIONSHIP_ACCEPTED,
                publisher_relationships__publisher=request.organization)

            aids = []

            if form.cleaned_data["run_reporting_by"] == '0':  # all advertisers
                aids = [j.id for j in all_advertisers]
            elif form.cleaned_data[
                    "run_reporting_by"] == '1':  # specific advertiser
                abc = form.cleaned_data["specific_advertiser"]
                aids.append(int(form.cleaned_data["specific_advertiser"][2:]))
            elif form.cleaned_data[
                    "run_reporting_by"] == '2':  # advertiser by category
                aids = []
                for j in all_advertisers:
                    for site in j.website_set.all():
                        if site.vertical in form.cleaned_data[
                                "advertiser_category"]:
                            aids.append(j.id)

            z, created = UserAqWidget.objects.get_or_create(
                page=this_page,
                zone=4,
                organization=request.organization,
                widget=AqWidget.objects.get(
                    pk=form.cleaned_data["report_type"]))
            z.custom_date_range = date_start.strftime(
                '%m/%d/%Y') + "," + date_end.strftime('%m/%d/%Y')
            z.save()

            widget = UserAqWidget.prep([z], request, aids)
            widget_report = widget[0]

        else:
            report = None
            form = ReportFormPublisher(request.organization)

        #if request.GET.get("target",None):
        #target = int(request.GET.get("target"))

        if request.GET.get("target", None) or int(
                request.GET['report_type']) == REPORTTYPE_ORDER_DETAIL:
            if int(request.GET['report_type']) == REPORTTYPE_ORDER_DETAIL:
                target = REPORTFORMAT_CSV
            else:
                target = int(request.GET.get("target"))

            if int(form.cleaned_data["report_type"]) == REPORTTYPE_SALES:
                report = DateReport(
                    date_start,
                    date_end,
                    request.organization,
                    form.cleaned_data["group_by"],
                    spec=REPORTTYPE_SALES,
                    advertiser_set=aids,
                )

            if form.cleaned_data[
                    "report_type"] == REPORTTYPE_SALES_BY_ADVERTISER:
                report = OrgDateReport(
                    date_start,
                    date_end,
                    request.organization,
                    spec=REPORTTYPE_SALES_BY_ADVERTISER,
                    advertiser_set=aids,
                )

            if form.cleaned_data["report_type"] == REPORTTYPE_REVENUE:
                report = RevenueReport(
                    date_start,
                    date_end,
                    request.organization,
                    form.cleaned_data["group_by"],
                    spec=REPORTTYPE_REVENUE,
                    advertiser_set=aids,
                )

            if form.cleaned_data[
                    "report_type"] == REPORTTYPE_REVENUE_BY_ADVERTISER:
                report = OrgRevenueReport(
                    date_start,
                    date_end,
                    request.organization,
                    form.cleaned_data["group_by"],
                    spec=REPORTTYPE_REVENUE_BY_ADVERTISER,
                    advertiser_set=aids,
                )

            if form.cleaned_data["report_type"] == REPORTTYPE_CREATIVE:
                report = CreativeReport(
                    date_start,
                    date_end,
                    request.organization,
                    form.cleaned_data["group_by"],
                    spec=REPORTTYPE_CREATIVE,
                    advertiser_set=aids,
                )

            if form.cleaned_data[
                    "report_type"] == REPORTTYPE_CREATIVE_BY_PROMO:
                report = PromoReport(
                    date_start,
                    date_end,
                    request.organization,
                    form.cleaned_data["group_by"],
                    spec=REPORTTYPE_CREATIVE_BY_PROMO,
                    advertiser_set=aids,
                )

            if form.cleaned_data["report_type"] == REPORTTYPE_ORDER_DETAIL:
                report = OrderReport(
                    date_start,
                    date_end,
                    request.organization,
                    spec=REPORTTYPE_ORDER_DETAIL,
                    advertiser_set=aids,
                )

            if form.cleaned_data["report_type"] == REPORTTYPE_ACCOUNTING:
                report = OrgDateReport(
                    date_start,
                    date_end,
                    request.organization,
                    form.cleaned_data["group_by"],
                    spec=REPORTTYPE_ACCOUNTING,
                    advertiser_set=aids,
                )
            """
            if form.cleaned_data["report_type"] == REPORTTYPE_ORDER_DETAIL:
                report = OrderReport(date_start,date_end,request.organization,form.cleaned_data["group_by"],spec=REPORTTYPE_ORDER_DETAIL,
                                     publisher_set=pids,
                           )
            """

            if form.cleaned_data["report_type"] == REPORTTYPE_ACCOUNTING:
                report = OrgDateReport(
                    date_start,
                    date_end,
                    request.organization,
                    form.cleaned_data["group_by"],
                    spec=REPORTTYPE_ACCOUNTING,
                    publisher_set=pids,
                )
            if report:
                if target == REPORTFORMAT_EXCEL:
                    from atrinsic.util.xls import write_rows
                    import tempfile

                    file_id, file_path = tempfile.mkstemp()

                    res = [[]]

                    for row in report.RenderHeader():
                        res[0].append(row[0])

                    for row in report.RenderContents():
                        res.append(row)

                    last_row = []
                    res.append([])
                    for row in report.RenderFooter():
                        last_row.append(row[1])
                    res.append(last_row)

                    #return HttpResponse('test')
                    write_rows(file_path, res)
                    res = open(file_path).read()

                    response = HttpResponse(
                        res, mimetype="application/vnd.ms-excel")
                    response[
                        'Content-Disposition'] = 'attachment; filename=report.xls'
                    return response
                    """ The foloowing is the old way of doing it. """
                    #response =  HttpResponse(render_to_string("misc/reports/download.xls",{"report":report}),mimetype="application/vnd.ms-excel")
                    #response['Content-Disposition'] = 'attachment; filename=report.xls'
                    return response
                elif target == REPORTFORMAT_CSV:
                    response = HttpResponse(render_to_string(
                        "misc/reports/download.csv", {"report": report}),
                                            mimetype="text/csv")
                    response[
                        'Content-Disposition'] = 'attachment; filename=report.csv'
                    return response

                elif target == REPORTFORMAT_TSV:
                    response = HttpResponse(
                        render_to_string("misc/reports/download.txt",
                                         {"report": report}),
                        mimetype="application/octet-stream")
                    response[
                        'Content-Disposition'] = 'attachment; filename=report.txt'
                    return response
    else:
        form = ReportFormPublisher(request.organization)
    return AQ_render_to_response(
        request,
        "publisher/reports/index.html",
        {
            "form": form,
            'refilter': refilter,
            "widget": widget_report,
            "reporting": 1,
            "url":
            'publisher/reports/download'  #request.META['REQUEST_URI'].replace('publisher/reports','publisher/reports/download'),
        },
        context_instance=RequestContext(request))
Example #9
0
def publisher_advertisers(request, view='my', page=None, template='publisher/advertisers/index.html'):
    ''' View to manage Publisher's Advertisers.  This view has three different resultsets
        based on the URL specified.  '/my/' displays this Publishers Advertisers.
        '/find/' provides a search interface to all Advertisers, and '/expired/'
        displays this Publisher's expired Advertisers.  This View has sortable result
        columns based on the GET variable 'sort' and the template displays different
        actions for each View based upon the form variable "view" which is derived
        from the URL.
    '''
    from atrinsic.base.models import Organization
    from atrinsic.util.xls import write_rows
    from forms import AdvertiserSearchForm
    import tempfile
    from django.db.models import Q
    
    q = None
    vertical = None
    sort_next = '#'

    download = False
    
    if request.GET:
        form = AdvertiserSearchForm(request.organization, request.GET)

        if form.is_valid():
            q = form.cleaned_data.get('q', None)
            vertical = form.cleaned_data.get('vertical', None)
            min_rating = form.cleaned_data.get('network_rating', None)
            date_from = form.cleaned_data.get('date_from', None)
            date_to = form.cleaned_data.get('date_to', None)
            
            
            if (vertical == '-1') or len(vertical) < 1:
                vertical = None

            if view == 'my':
                settab(request,"Publisher","Advertisers","My Advertisers")
                # My Advertisers
                qs = Organization.objects.filter(publisher_relationships__status=RELATIONSHIP_ACCEPTED,status=ORGSTATUS_LIVE,
                    publisher_relationships__publisher=request.organization).extra(select={"publisher_id":"select publisher_id from base_organization where id="+str(request.organization.id)})

                if request.GET.get('download', None) is not None:
                    template = 'publisher/advertisers/download.csv'
                    download = True

            elif view == 'expired':
                settab(request,"Publisher","Advertisers","Expired Advertisers")
                qs = Organization.objects.filter(publisher_relationships__status__in=[RELATIONSHIP_EXPIRED,RELATIONSHIP_DECLINED],status=ORGSTATUS_LIVE,
                    publisher_relationships__publisher=request.organization).extra(select={"publisher_id":"select publisher_id from base_organization where id="+str(request.organization.id)})

            else:
                # Default Advertiser Finder
                qs = Organization.objects.filter(org_type=ORGTYPE_ADVERTISER,status=ORGSTATUS_LIVE).filter(has_program_term=True, is_private=False)
            if q is not None:
                qs = qs.filter((Q(show_alias=True) & Q(company_alias__icontains=q)) | (Q(show_alias=False) & Q(company_name__icontains=q)))

            if vertical is not None:
                qs = qs.filter(vertical__order=vertical)
            else:
                qs = qs.filter(is_adult=request.organization.is_adult)
                
            if min_rating is not None:
                qs = qs.filter(network_rating__gte=str(min_rating))

            if form.cleaned_data.get('email_marketing', False):
                qs = qs.filter(allow_third_party_email_campaigns=True)
           
            if form.cleaned_data.get('direct_linking', False):
                qs = qs.filter(allow_direct_linking_through_ppc=True)
             
            if form.cleaned_data.get('trademark_bidding', False):
                qs = qs.filter(allow_trademark_bidding_through_ppc=True)                
            
            if date_from is not None:
                qs = qs.filter(date_joined__gte=date_from)

            if date_to is not None:
                qs = qs.filter(date_joined__lte=date_to)
        else:
            qs = QuerySet()

    else:
        form = AdvertiserSearchForm(organization=request.organization)

        if view == 'my':
            settab(request,"Publisher","Advertisers","My Advertisers")
            # My Advertisers
            qs = Organization.objects.filter(publisher_relationships__status=RELATIONSHIP_ACCEPTED,status=ORGSTATUS_LIVE,
                                             publisher_relationships__publisher=request.organization).extra(select={"publisher_id":"select publisher_id from base_organization where id="+str(request.organization.id)})
        elif view == 'expired':
            settab(request,"Publisher","Advertisers","Expired Advertisers")
            qs = Organization.objects.filter(publisher_relationships__status__in=[RELATIONSHIP_EXPIRED,RELATIONSHIP_DECLINED],status=ORGSTATUS_LIVE,
                publisher_relationships__publisher=request.organization).extra(select={"publisher_id":"select publisher_id from base_organization where id="+str(request.organization.id)})
        else:
            # XXX
            qs = Organization.objects.none()

    sort = request.GET.get('sort', 'date_joined').lower()
    if qs.model and qs.count():
        display_results = True
        sort_fields = [ 'ticker', 'company_name', 'state', 'country', 'vertical', 'network_rating',
                    'date_joined', 'contact_firstname', 'force', ]

        for f in sort_fields:
            if sort.endswith(f):
                if sort.startswith('-'):
                    sort_next = sort[1:]
                else:
                    sort_next = '-%s' % sort

                qs = qs.order_by(sort)
                break
        # if finding, remove all the advertisers that have outstanding relationships
        if view == 'find':
            result = []
            for i in qs:
                rs = i.get_advertiser_relationship(request.organization)
                if rs == None:
                    result.append(i)
                elif rs.status == RELATIONSHIP_NONE:
                    result.append(i)
            total_results = len(result)
            qs = result
        else:
            total_results = qs.count()
        
    else:
        if view == 'expired':
            display_results = True
            total_results = 0
        elif form.is_valid():
            display_results = True
            total_results = 0
        else:
            display_results = False
            total_results = 0

    if download == True:
        file_id,file_path = tempfile.mkstemp()

        res = [[ 'Ticker', 'Company Name', 'State', 'Country', 'Vertical', 'Network Rating','Date Joined', 'Force']]
        for row in qs:
            res.append([str(row.ticker),
                        str(row.company_name),
                        str(row.state),
                        str(row.country),
                        str(row.vertical),
                        str(row.network_rating),
                        str(row.date_joined),
                        str(row.force)])
            
        write_rows(file_path,res)
        res = open(file_path).read()
        
        response = HttpResponse(res,mimetype="application/vnd.ms-excel")
        response['Content-Disposition'] = 'attachment; filename=myadvertisers.xls'
        return response
    else:
        return object_list(request, queryset=qs, allow_empty=True, page=page,
                           template_name='publisher/advertisers/index.html', paginate_by=50, extra_context={ 
            'q' : q,
            'display_results' : display_results,
            'form' : form,
            'sort' : sort,
            'sort_next' : sort_next,
            'total_results' : total_results,
                'view' : view,

            })
Example #10
0
def publisher_reports(request):
    from forms import ReportFormPublisher
    from atrinsic.base.models import Organization, AqWidget, UserAqWidget
    from reports import *

    inits = {}
    inits = {
        "start_date": request.GET.get("start_date", None),
        "end_date": request.GET.get("end_date", None),
        "group_by": request.GET.get("group_by", 0),
        "run_reporting_by": request.GET.get("run_reporting_by", 0),
        "report_type": request.GET.get("report_type", 0),
        "specific_advertiser": request.GET.get("specific_advertiser"),
        "advertiser_category": request.GET.getlist("advertiser_category"),
    }
    this_page = "publisher-reports"
    widget_report = None
    report = None
    refilter = 0
    if request.GET:
        form = ReportFormPublisher(request.organization, inits)
        if form.is_valid():
            refilter = 1
            date_start, date_end = time_period(form)
            if date_start == None:
                date_start = datetime.datetime.now()
            if date_end == None:
                date_end = datetime.datetime.now()
            all_advertisers = Organization.objects.filter(
                publisher_relationships__status=RELATIONSHIP_ACCEPTED,
                publisher_relationships__publisher=request.organization,
            )

            aids = []

            if form.cleaned_data["run_reporting_by"] == "0":  # all advertisers
                aids = [j.id for j in all_advertisers]
            elif form.cleaned_data["run_reporting_by"] == "1":  # specific advertiser
                abc = form.cleaned_data["specific_advertiser"]
                aids.append(int(form.cleaned_data["specific_advertiser"][2:]))
            elif form.cleaned_data["run_reporting_by"] == "2":  # advertiser by category
                aids = []
                for j in all_advertisers:
                    for site in j.website_set.all():
                        if site.vertical in form.cleaned_data["advertiser_category"]:
                            aids.append(j.id)

            z, created = UserAqWidget.objects.get_or_create(
                page=this_page,
                zone=4,
                organization=request.organization,
                widget=AqWidget.objects.get(pk=form.cleaned_data["report_type"]),
            )
            z.custom_date_range = date_start.strftime("%m/%d/%Y") + "," + date_end.strftime("%m/%d/%Y")
            z.save()

            widget = UserAqWidget.prep([z], request, aids)
            widget_report = widget[0]

        else:
            report = None
            form = ReportFormPublisher(request.organization)

        # if request.GET.get("target",None):
        # target = int(request.GET.get("target"))

        if request.GET.get("target", None) or int(request.GET["report_type"]) == REPORTTYPE_ORDER_DETAIL:
            if int(request.GET["report_type"]) == REPORTTYPE_ORDER_DETAIL:
                target = REPORTFORMAT_CSV
            else:
                target = int(request.GET.get("target"))

            if int(form.cleaned_data["report_type"]) == REPORTTYPE_SALES:
                report = DateReport(
                    date_start,
                    date_end,
                    request.organization,
                    form.cleaned_data["group_by"],
                    spec=REPORTTYPE_SALES,
                    advertiser_set=aids,
                )

            if form.cleaned_data["report_type"] == REPORTTYPE_SALES_BY_ADVERTISER:
                report = OrgDateReport(
                    date_start, date_end, request.organization, spec=REPORTTYPE_SALES_BY_ADVERTISER, advertiser_set=aids
                )

            if form.cleaned_data["report_type"] == REPORTTYPE_REVENUE:
                report = RevenueReport(
                    date_start,
                    date_end,
                    request.organization,
                    form.cleaned_data["group_by"],
                    spec=REPORTTYPE_REVENUE,
                    advertiser_set=aids,
                )

            if form.cleaned_data["report_type"] == REPORTTYPE_REVENUE_BY_ADVERTISER:
                report = OrgRevenueReport(
                    date_start,
                    date_end,
                    request.organization,
                    form.cleaned_data["group_by"],
                    spec=REPORTTYPE_REVENUE_BY_ADVERTISER,
                    advertiser_set=aids,
                )

            if form.cleaned_data["report_type"] == REPORTTYPE_CREATIVE:
                report = CreativeReport(
                    date_start,
                    date_end,
                    request.organization,
                    form.cleaned_data["group_by"],
                    spec=REPORTTYPE_CREATIVE,
                    advertiser_set=aids,
                )

            if form.cleaned_data["report_type"] == REPORTTYPE_CREATIVE_BY_PROMO:
                report = PromoReport(
                    date_start,
                    date_end,
                    request.organization,
                    form.cleaned_data["group_by"],
                    spec=REPORTTYPE_CREATIVE_BY_PROMO,
                    advertiser_set=aids,
                )

            if form.cleaned_data["report_type"] == REPORTTYPE_ORDER_DETAIL:
                report = OrderReport(
                    date_start, date_end, request.organization, spec=REPORTTYPE_ORDER_DETAIL, advertiser_set=aids
                )

            if form.cleaned_data["report_type"] == REPORTTYPE_ACCOUNTING:
                report = OrgDateReport(
                    date_start,
                    date_end,
                    request.organization,
                    form.cleaned_data["group_by"],
                    spec=REPORTTYPE_ACCOUNTING,
                    advertiser_set=aids,
                )
            """
            if form.cleaned_data["report_type"] == REPORTTYPE_ORDER_DETAIL:
                report = OrderReport(date_start,date_end,request.organization,form.cleaned_data["group_by"],spec=REPORTTYPE_ORDER_DETAIL,
                                     publisher_set=pids,
                           )
            """

            if form.cleaned_data["report_type"] == REPORTTYPE_ACCOUNTING:
                report = OrgDateReport(
                    date_start,
                    date_end,
                    request.organization,
                    form.cleaned_data["group_by"],
                    spec=REPORTTYPE_ACCOUNTING,
                    publisher_set=pids,
                )
            if report:
                if target == REPORTFORMAT_EXCEL:
                    from atrinsic.util.xls import write_rows
                    import tempfile

                    file_id, file_path = tempfile.mkstemp()

                    res = [[]]

                    for row in report.RenderHeader():
                        res[0].append(row[0])

                    for row in report.RenderContents():
                        res.append(row)

                    last_row = []
                    res.append([])
                    for row in report.RenderFooter():
                        last_row.append(row[1])
                    res.append(last_row)

                    # return HttpResponse('test')
                    write_rows(file_path, res)
                    res = open(file_path).read()

                    response = HttpResponse(res, mimetype="application/vnd.ms-excel")
                    response["Content-Disposition"] = "attachment; filename=report.xls"
                    return response

                    """ The foloowing is the old way of doing it. """
                    # response =  HttpResponse(render_to_string("misc/reports/download.xls",{"report":report}),mimetype="application/vnd.ms-excel")
                    # response['Content-Disposition'] = 'attachment; filename=report.xls'
                    return response
                elif target == REPORTFORMAT_CSV:
                    response = HttpResponse(
                        render_to_string("misc/reports/download.csv", {"report": report}), mimetype="text/csv"
                    )
                    response["Content-Disposition"] = "attachment; filename=report.csv"
                    return response

                elif target == REPORTFORMAT_TSV:
                    response = HttpResponse(
                        render_to_string("misc/reports/download.txt", {"report": report}),
                        mimetype="application/octet-stream",
                    )
                    response["Content-Disposition"] = "attachment; filename=report.txt"
                    return response
    else:
        form = ReportFormPublisher(request.organization)
    return AQ_render_to_response(
        request,
        "publisher/reports/index.html",
        {
            "form": form,
            "refilter": refilter,
            "widget": widget_report,
            "reporting": 1,
            "url": "publisher/reports/download",  # request.META['REQUEST_URI'].replace('publisher/reports','publisher/reports/download'),
        },
        context_instance=RequestContext(request),
    )
Example #11
0
def advertiser_reports(request):
    from atrinsic.base.models import Organization,PublisherGroup,UserAqWidget,AqWidget, Report_Adv_Pub
    from forms import ReportForm
    inits = {}
    inits = {
        'start_date':request.GET.get('start_date',None),
        'end_date':request.GET.get('end_date',None),
        'group_by':request.GET.get('group_by',0),
        'run_reporting_by':request.GET.get('run_reporting_by',0),
        'report_type':request.GET.get('report_type',0),
        'specific_advertiser':request.GET.get('specific_advertiser',None),
        'advertiser_category':request.GET.get('advertiser_category',None),
        'run_reporting_by_publisher':request.GET.getlist('run_reporting_by_publisher'),
        'run_reporting_by_vertical':request.GET.getlist('run_reporting_by_vertical'),
        'run_reporting_by_group':request.GET.getlist('run_reporting_by_group'),
    }
        
    this_page = 'advertiser-reports'
    form = ReportForm(request.organization,inits)
    refilter=0
    widget_report = None
    if request.GET:
        if form.is_valid():
            refilter=1
            date_start,date_end = time_period(form)
            if date_start == None:
                date_start = datetime.datetime.now()
            if date_end == None:
                date_end = datetime.datetime.now()
            all_publishers = Organization.objects.filter(advertiser_relationships__status=RELATIONSHIP_ACCEPTED,
                                                     advertiser_relationships__advertiser=request.organization)
            
            pids = []
            if form.cleaned_data["run_reporting_by"] == '0': # all publishers
                pids = [j.id for j in all_publishers]
            elif form.cleaned_data["run_reporting_by"] == '3': # specific publisher
                if inits.has_key("run_reporting_by_publisher"):
                    pids.extend([int(x[2:]) for x in inits["run_reporting_by_publisher"]])
                else:
                    pids = []
                    for j in all_publishers:
                        pids.append(j.id)
            elif form.cleaned_data["run_reporting_by"] == '2': # publisher by category
                pids = []
                
                for j in all_publishers:
                    for site in j.website_set.all():
                        try:
                            if site.vertical in form.cleaned_data["run_reporting_by_vertical"]:
                                pids.append(j.id)
                        except:
                            print '   -  web site with bad vertical: %s -- %s' % (site,site.id)
                
                
            elif form.cleaned_data["run_reporting_by"] == '1': # publisher by group
                for g_id in form.cleaned_data["run_reporting_by_group"]:
                    group = PublisherGroup.objects.get(id=int(g_id[2:]))
                    pids.extend([g.id for g in group.publishers.all()])
            z,created = UserAqWidget.objects.get_or_create(page=this_page,zone=4,organization=request.organization, widget=AqWidget.objects.get(pk=form.cleaned_data["report_type"]))
            z.custom_date_range = date_start.strftime('%m/%d/%Y')+","+date_end.strftime('%m/%d/%Y')
            z.save()
            widget = UserAqWidget.prep([z],request,pids)
            widget_report = widget[0]
        else:
            report = None
            form = ReportForm(request.organization)
    
        if request.GET.get("target",None) or int(request.GET['report_type']) == REPORTTYPE_ORDER_DETAIL:
            if int(request.GET['report_type']) == REPORTTYPE_ORDER_DETAIL:
                target = REPORTFORMAT_CSV
            else:
                target = int(request.GET.get("target"))
                
            from AqWidgets import QuickReports
            if int(form.cleaned_data["report_type"]) == REPORTTYPE_SALES:
                report = DateReport(date_start,date_end,request.organization,group_by=form.cleaned_data["group_by"], spec=REPORTTYPE_SALES, publisher_set=pids)
                                          
            if form.cleaned_data["report_type"] == REPORTTYPE_SALES_BY_PUBLISHER:
                report = OrgDateReport(date_start,date_end,request.organization,group_by=form.cleaned_data["group_by"], spec=REPORTTYPE_SALES_BY_PUBLISHER, publisher_set=pids)
    
            if form.cleaned_data["report_type"] == REPORTTYPE_REVENUE:
                report = RevenueReport(date_start,date_end,request.organization,group_by=form.cleaned_data["group_by"], spec=REPORTTYPE_REVENUE, publisher_set=pids)
    
            if form.cleaned_data["report_type"] == REPORTTYPE_REVENUE_BY_PUBLISHER:
                report = OrgRevenueReport(date_start,date_end,request.organization,group_by=form.cleaned_data["group_by"], spec=REPORTTYPE_REVENUE_BY_PUBLISHER, publisher_set=pids)
    
            if form.cleaned_data["report_type"] == REPORTTYPE_CREATIVE:
                report = CreativeReport(date_start,date_end,request.organization,group_by=form.cleaned_data["group_by"], spec=REPORTTYPE_CREATIVE, publisher_set=pids)
    
            if form.cleaned_data["report_type"] == REPORTTYPE_CREATIVE_BY_PROMO:
                report = PromoReport(date_start,date_end,request.organization,group_by=form.cleaned_data["group_by"], spec=REPORTTYPE_CREATIVE_BY_PROMO, publisher_set=pids)
            
            if form.cleaned_data["report_type"] == REPORTTYPE_ORDER_DETAIL:
                report = OrderReport(date_start,date_end,request.organization,group_by=form.cleaned_data["group_by"], spec=REPORTTYPE_ORDER_DETAIL, publisher_set=pids)
                
            if form.cleaned_data["report_type"] == REPORTTYPE_ACCOUNTING:
                report = AccountingReport(date_start,date_end,request.organization,group_by=form.cleaned_data["group_by"], spec=REPORTTYPE_ACCOUNTING, publisher_set=pids)    

            if target == REPORTFORMAT_EXCEL:
                from atrinsic.util.xls import write_rows
                import tempfile
                file_id,file_path = tempfile.mkstemp()
                
                res = [[]]
                
                for row in report.RenderHeader():
                    res[0].append(row[0])
                
                for row in report.RenderContents():
                    res.append(row)
                
                last_row = []
                res.append([])
                for row in report.RenderFooter():
                    last_row.append(row[1])
                res.append(last_row)
                
                #return HttpResponse(str(res))
                write_rows(file_path,res)
                res = open(file_path).read()
                
                #return HttpResponse(str(res))
                
                response = HttpResponse(res,mimetype="application/vnd.ms-excel")
                response['Content-Disposition'] = 'attachment; filename=download.xls'
                return response
                
                
                
                
                
                
                
                
                """ Old way of doing it"""
                response = render_to_response("misc/reports/dataxls.html", {'report': report,})
                filename = "misc/reports/download.xls"                
                response['Content-Disposition'] = 'attachment; filename='+filename
                response['Content-Type'] = 'application/vnd.ms-excel; charset=utf-8'
                return response
            elif target == REPORTFORMAT_CSV:
                response =  HttpResponse(render_to_string("misc/reports/download.csv",{"report":report}),mimetype="text/csv")
                response['Content-Disposition'] = 'attachment; filename=report.csv'
                return response
            elif target == REPORTFORMAT_TSV:
                response =  HttpResponse(render_to_string("misc/reports/download.txt",{"report":report}),mimetype="application/octet-stream")
                response['Content-Disposition'] = 'attachment; filename=report.txt'
                return response
    return AQ_render_to_response(request, "advertiser/reports/index.html",{
        "form":form,
        'refilter':refilter,
        "widget":widget_report,
        "reporting":1,
        "url": 'advertiser/reports/download'#request.META['REQUEST_URI'].replace('advertiser/reports','advertiser/reports/download'),
        },context_instance=RequestContext(request))