def widget_layout(request,widget,user_widget,style): import cjson,urllib from pywik import prep_date from forms import WidgetSettingsForm if user_widget.custom_date_range != None: calc_date = user_widget.custom_date_range elif (request.GET.has_key('start_date')) & (request.GET.has_key('end_date')): calc_date = str(request.GET['start_date'])+","+str(request.GET['end_date']) elif (request.POST.has_key('start_date')) & (request.POST.has_key('end_date')): calc_date = str(request.POST['start_date'])+","+str(request.POST['end_date']) else: calc_date = prep_date(user_widget.widget.widget_date_range) d = { } if user_widget.custom_group != None: d['group_data_by'] = user_widget.custom_group if user_widget.custom_columns != None: x,y = user_widget.custom_columns.split(",") d['variable1'] = x d['variable2'] = y if calc_date != "" and calc_date.find(","): d['start_date'] = calc_date.split(",")[0] d['end_date'] = calc_date.split(",")[1] else: d['start_date'] = "" d['end_date'] = "" my_widget = {} my_widget['form'] = WidgetSettingsForm(initial=d).as_p() if style == 'None': style = widget.widget_style if style == "table": if widget.widget_type == 2: my_widget['html'] = widget.getDataTable(auth=request.organization.pywik_token_auth_key, idSite=request.organization.pywik_siteId,group_by = request.GET.get('group_by',0), period='day', date=calc_date, headers = widget.headers.split(','), data_columns = widget.data_columns.split(",")) else: my_widget['html'] = widget.getAqDataTable(request=request, chart_style=style, date=calc_date, group_by = user_widget.custom_group, widget_id=widget.id, user_widget_id = user_widget.id) my_widget['header'] = widget.widget_name user_widget.custom_style = style if request.GET.get('preview',None) == None: user_widget.save() else: if user_widget.widget.widget_type == 2: my_widget['html'] = openFlashChart.flashHTML('100%', '300', '/api/'+str(user_widget.widget.id)+'/'+str(style)+'/?data=idSite='+str(request.organization.pywik_siteId)+'|date='+str(calc_date)+'|period=day', '/ofc/') else: if user_widget.custom_columns != None: custom_columns = "|custom_columns="+str(user_widget.custom_columns) else: custom_columns = "" my_widget['html'] = openFlashChart.flashHTML('100%', '300', '/api/'+str(user_widget.widget.id)+'/'+str(style)+'/?data=date='+str(calc_date)+'|group_by='+str(user_widget.custom_group)+str(custom_columns), '/ofc/') my_widget['header'] = user_widget.widget.widget_name user_widget.custom_style = style if request.GET.get('preview',None) == None: user_widget.save() my_widget['widget_id'] = user_widget.id return HttpResponse(str(cjson.encode(my_widget)))
def widget_layout(request, widget, user_widget, style): import cjson, urllib from pywik import prep_date from forms import WidgetSettingsForm if user_widget.custom_date_range != None: calc_date = user_widget.custom_date_range elif (request.GET.has_key('start_date')) & ( request.GET.has_key('end_date')): calc_date = str(request.GET['start_date']) + "," + str( request.GET['end_date']) elif (request.POST.has_key('start_date')) & ( request.POST.has_key('end_date')): calc_date = str(request.POST['start_date']) + "," + str( request.POST['end_date']) else: calc_date = prep_date(user_widget.widget.widget_date_range) d = {} if user_widget.custom_group != None: d['group_data_by'] = user_widget.custom_group if user_widget.custom_columns != None: x, y = user_widget.custom_columns.split(",") d['variable1'] = x d['variable2'] = y if calc_date != "" and calc_date.find(","): d['start_date'] = calc_date.split(",")[0] d['end_date'] = calc_date.split(",")[1] else: d['start_date'] = "" d['end_date'] = "" my_widget = {} my_widget['form'] = WidgetSettingsForm(initial=d).as_p() if style == 'None': style = widget.widget_style if style == "table": if widget.widget_type == 2: my_widget['html'] = widget.getDataTable( auth=request.organization.pywik_token_auth_key, idSite=request.organization.pywik_siteId, group_by=request.GET.get('group_by', 0), period='day', date=calc_date, headers=widget.headers.split(','), data_columns=widget.data_columns.split(",")) else: my_widget['html'] = widget.getAqDataTable( request=request, chart_style=style, date=calc_date, group_by=user_widget.custom_group, widget_id=widget.id, user_widget_id=user_widget.id) my_widget['header'] = widget.widget_name user_widget.custom_style = style if request.GET.get('preview', None) == None: user_widget.save() else: if user_widget.widget.widget_type == 2: my_widget['html'] = openFlashChart.flashHTML( '100%', '300', '/api/' + str(user_widget.widget.id) + '/' + str(style) + '/?data=idSite=' + str(request.organization.pywik_siteId) + '|date=' + str(calc_date) + '|period=day', '/ofc/') else: if user_widget.custom_columns != None: custom_columns = "|custom_columns=" + str( user_widget.custom_columns) else: custom_columns = "" my_widget['html'] = openFlashChart.flashHTML( '100%', '300', '/api/' + str(user_widget.widget.id) + '/' + str(style) + '/?data=date=' + str(calc_date) + '|group_by=' + str(user_widget.custom_group) + str(custom_columns), '/ofc/') my_widget['header'] = user_widget.widget.widget_name user_widget.custom_style = style if request.GET.get('preview', None) == None: user_widget.save() my_widget['widget_id'] = user_widget.id return HttpResponse(str(cjson.encode(my_widget)))
def __init__(self,**args): from datetime import datetime from pywik import prep_date from atrinsic.base.models import PublisherGroup,Organization,Website,PublisherVertical start = None end = None if args.has_key('date_range'): if args['date_range'] != '': if args['date_range'].find(",") > 0: start,end=args['date_range'].split(",") else: try: start = datetime.strptime(args['date_range'],"%m/%d/%Y") end = start except: pass if (start != None and end != None) & (not isinstance(start,datetime) and not isinstance(end,datetime)): try: self.date_start = datetime.strptime(start,"%m/%d/%Y") self.date_end = datetime.strptime(end,"%m/%d/%Y") except: self.date_start = datetime.strptime(start,"%Y-%m-%d") self.date_end = datetime.strptime(end,"%Y-%m-%d") else: var_now = datetime.now() self.date_start = var_now self.date_end = var_now else: var_now = datetime.now() self.date_start = var_now self.date_end = var_now else: #need handling for text date formats like yesterday for example, not sure where this comes from yet might just be able to remove yesterday and put a date range there. calc_date = prep_date(args.get('date',',')) if (calc_date == 'None,None') | (calc_date == '') | (calc_date == None) | (calc_date == ','): var_now = datetime.now() calc_date = var_now if isinstance(calc_date, str): if calc_date.find(",") > 0: start,end = calc_date.split(",") try: self.date_start = datetime.strptime(start,"%m/%d/%Y") self.date_end = datetime.strptime(end,"%m/%d/%Y") except: self.date_start = datetime.strptime(start,"%Y-%m-%d") self.date_end = datetime.strptime(end,"%Y-%m-%d") else: try: self.date_start = datetime.strptime(calc_date,"%m/%d/%Y") self.date_end = datetime.strptime(calc_date,"%m/%d/%Y") except: self.date_start = datetime.strptime(calc_date,"%Y-%m-%d") self.date_end = datetime.strptime(calc_date,"%Y-%m-%d") else: self.date_start = calc_date self.date_end = calc_date request = args.get("request",None) self.group_by = request.GET.get('group_by',0) self.widget_id=args.get("widget_id",None) self.user_widget_id=args.get("user_widget_id",None) self.data_columns = args.get("custom_columns",None) self.publisher_set = [] self.advertiser_set = [] if request.GET.getlist('run_reporting_by_publisher') != []: self.publisher_set = request.GET.getlist('run_reporting_by_publisher') elif request.GET.get('run_reporting_by_group', None) != None: for publisher in PublisherGroup.objects.get(pk=request.GET.get('run_reporting_by_group')[2:]).publishers.all(): self.publisher_set.append(publisher.id) elif request.GET.getlist('advertiser_category') != []: org_set = Organization.objects.filter(vertical__in = request.GET.getlist('advertiser_category')) for org in org_set: self.advertiser_set.append(int(org.id)) elif request.GET.getlist('run_reporting_by_vertical') != []: int_ids = [] for string_id in request.GET.getlist('run_reporting_by_vertical'): int_ids.append(int(string_id)) for x in Website.objects.filter(vertical__in = PublisherVertical.objects.filter(order__in = int_ids)): self.publisher_set.append(int(x.publisher_id)) elif request.GET.get('specific_advertiser',None) and int(request.GET.get('run_reporting_by',0)) == 1 : self.advertiser_set = request.GET['specific_advertiser']