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
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
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
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
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
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
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, })
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))
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, })
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), )
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))