def Page8(request): if CheckAccess(request,'8') != 'OK': return render_to_response("auto/notaccess/page8.html") if request.method == 'POST': form = ReportForm(request.POST) if form.is_valid(): start_date = form.cleaned_data['start_date'] end_date = form.cleaned_data['end_date'] report = form.cleaned_data['report'] response = HttpResponse(mimetype="application/ms-excel") response['Content-Disposition'] = 'attachment; filename=report.xls' if report == '0': return Report_0(response,start_date,end_date) form = ReportForm(None) c = RequestContext(request,{'form':form}) c.update(csrf(request)) return render_to_response("auto/page8.html",c)
def submit_report(request): if request.method == "GET": submit_report_form = ReportForm() # print submit_report_form return render(request,'submit_report.html', {'submit_report_form':submit_report_form}) if request.method == 'POST': submit_report_form = ReportForm(request.POST,request.FILES) print submit_report_form if submit_report_form.is_valid(): report = submit_report_form.save(commit=False) report.profile=UserProfile.objects.get(user=request.user) report.save() return show_report(request, report_id=report.id) return render(request,'submit_report.html', {'submit_report_form':submit_report_form})
def upload_report(request): if request.method == 'POST': print "POST from upload_report" if request.FILES: rform = ReportForm(request.POST, request.FILES) else: rform = ReportForm(request.POST) if rform.is_valid(): report = rform.save() report_parser.load_into_db(report) return HttpResponseRedirect(reverse('manage_report')) else: print "rform (ReportForm) is Invalid" print str(rform) else: project_pk = request.session.get('viewing_project', None) if project_pk is None: return HttpResponseRedirect(reverse('no_project')) project = Project.objects.get(pk=project_pk) rform = ReportForm(instance=Report(), initial={}) rform.fields['study'].queryset = project.study_set.all() context = {'report_form': rform} context.update(csrf(request)) return render_to_response('viewer/report/upload_report.html', context, context_instance=RequestContext(request))
def report_paste(request,hash_key): """ Sends a e-mail to the site administrator, reporting a Paste """ entry = get_object_or_404(Paste, hash_key=hash_key) report_message = "" if request.method == "POST": form = ReportForm(request.POST) if form.is_valid(): reason = form.cleaned_data['reason'] comment = form.cleaned_data['comment'] email = form.cleaned_data['email'] # prepare the e-mail with data submitted by the user report_body = ''' Paste located at http://incollo.com/%s has been reported with reason '%s'.\n Additional comment: %s .\n User e-mail: %s ''' % (hash_key, reason, comment, email) # send the e-mail report = EmailMessage('Report abuse from bd-incollo!', report_body, to=settings.MANAGERS[0], ) report.send() report_message = "Thank you for your report!" else: report_message = "Some fields are either missing or invalid, please complete the form" report_form = ReportForm() # create a form for reporting the Paste (if needed) return render_to_response('report_paste.html', { 'report_message': report_message, 'entry': entry, 'report_form': report_form, },context_instance=RequestContext(request))
def edit_report(request, report_id): if request.method == 'POST': r = Report.objects.get(pk=report_id) if request.FILES: updated_form = ReportForm(request.POST, request.FILES, instance=r) r.variant_set.all().delete() else: updated_form = ReportForm(request.POST, instance=r) if updated_form.is_valid(): updated_form.save() report_parser.load_into_db(r) return HttpResponseRedirect(reverse('manage_report')) else: project_pk = request.session.get('viewing_project', None) if project_pk is None: return HttpResponseRedirect(reverse('no_project')) project = Project.objects.get(pk=project_pk) report_obj = Report.objects.get(pk=report_id) rform = ReportForm(instance=report_obj) rform.fields['study'].queryset = project.study_set.all() context = {'report_form': rform, 'report': report_obj.report_file, 'pk': report_id,} context.update(csrf(request)) return render_to_response('viewer/report/edit_report.html', context, context_instance=RequestContext(request))
def create_report(request): if request.method == 'GET': form = ReportForm() return render_to_response('add_edit_report.html', {'form': form}, context_instance=RequestContext(request)) if request.method == 'POST': form = ReportForm(request.POST) if form.is_valid(): new_report = form.save() return redirect(reverse('edit_report', args=(new_report.id,))) return render_to_response('add_edit_report.html', {'form': form}, context_instance=RequestContext(request))
def new_report(request): if request.method == 'POST': form = ReportForm(request.POST) if form.is_valid(): f = form.save(commit=False) f.created_by = request.user.username f.save() messages.success(request, "Created new report: %s." % f.name) return HttpResponseRedirect(reverse('reports.views.view_report', kwargs={'report':f.slug})) else: form = ReportForm() return render(request, 'reports/new_report.html', {'form': form })
def post(self, request): """ Aquí entra si la petición es POST (como debe ser) """ success_message = '' report = Report() form = ReportForm(request.POST, instance=report) if form.is_valid(): new_report = form.save() form = ReportForm success_message = u'Tu denuncia ha sido guardada con éxito!' context = {'form': form, 'success_message': success_message} return render(request, 'report/new_report.html', context)
def upload_report(request): if request.method == 'POST': rform = ReportForm(request.POST, request.FILES) if rform.is_valid(): rform.save() return HttpResponseRedirect('/viewer/upload_report/') else: rform = ReportForm(instance=Report()) context = {'report_form': rform} reports = Report.objects.all() context['reports'] = reports context.update(csrf(request)) return render_to_response('viewer/upload_report.html', context, context_instance=RequestContext(request))
def addreport(request): if request.method == 'POST': form = ReportForm(request.POST) if form.is_valid(): report = Report() report.headline = form.cleaned_data.get("headline") report.content = form.cleaned_data.get("content") report.reporter = request.user.username report.date = datetime.now() report.save() return HttpResponseRedirect(reverse('news:index')) else: form = ReportForm() return render_to_response('news/addreport.html', {'form':form}, context_instance=RequestContext(request))
def ItReport(request): if CheckAccess(request,'17') != 'OK': return render_to_response("ithelpdesk/notaccess/report.html") ### --- Сохранение закладки ---- request.session['bookmark'] = 'itreport' if request.method == 'POST': form = ReportForm(request.POST) if form.is_valid(): start_date = form.cleaned_data['start_date'] end_date = form.cleaned_data['end_date'] request.session['start_date'] = start_date request.session['end_date'] = end_date try: start_date = request.session['start_date'] end_date = request.session['end_date'] except: start_date = datetime.date.today() end_date = datetime.date.today() form = ReportForm(None) form.fields['start_date'].initial = start_date form.fields['end_date'].initial = end_date data = GetDataReport(start_date,end_date) ### --- вывод в excel файл --- try: report_excel = request.GET['report-excel'] response = HttpResponse(mimetype="application/ms-excel") response['Content-Disposition'] = 'attachment; filename=report.xls' return ItReportFile(start_date,end_date,response,data) except: pass c = RequestContext(request,{'form':form,'data':data}) c.update(csrf(request)) return render_to_response("ithelpdesk/report.html",c)
def upload_report(request): if request.method == 'POST': print "POST from upload_report" if request.FILES: rform = ReportForm(request.POST, request.FILES) else: rform = ReportForm(request.POST) if rform.is_valid(): rform.save() return HttpResponseRedirect('/viewer/report/') else: print "rform (ReportForm) is Invalid" print str(rform) else: rform = ReportForm(instance=Report(), initial={}) context = {'report_form': rform} context.update(csrf(request)) return render_to_response('viewer/report/upload_report.html', context, context_instance=RequestContext(request))
def edit_report(request, report_id): if request.method == 'POST': r = Report.objects.get(pk=report_id) if request.FILES: updated_form = ReportForm(request.POST, request.FILES, instance=r) else: updated_form = ReportForm(request.POST, instance=r) if updated_form.is_valid(): updated_form.save() return HttpResponseRedirect('/viewer/report') else: report_obj = Report.objects.get(pk=report_id) rform = ReportForm(instance=report_obj) context = {'report_form': rform, 'report': report_obj.report_file, 'pk': report_id,} context.update(csrf(request)) return render_to_response('viewer/report/edit_report.html', context, context_instance=RequestContext(request))
def reporting(request): from forms import ReportForm from analytics import get_html, get_html_table, get_flash_chart from models import Users report = "" errors = [] if request.POST: report_form = ReportForm(request.POST) if report_form.is_valid(): if request.session.has_key("analytics"): aa_obj = request.session['analytics'] else: user = Users.objects.get(organization=request.organization) aa_obj = AqAnalytics(user_name=user.email, password=user.password) aa_obj.authenticate() if report_form.cleaned_data['chart_type'] == 'table': report, row_count, is_valid = aa_obj.DataFeedQuery( parse_as='flat', **report_form.cleaned_data) if is_valid == True: report = get_html_table(report[0], report[1], row_count) elif report_form.cleaned_data['chart_type'][:5] == 'chart': report = get_flash_chart(**report_form.cleaned_data) else: report = '' errors = is_valid else: report_form = ReportForm( initial={"table_id": request.analytics.selected_site}) if request.is_ajax(): return report else: return render_to_response("reports.html", { "report": report, "form": report_form, 'error_list': errors }, context_instance=RequestContext(request))
def issue(request, issue_id, context=None): if context is None: context = {} current_issue = get_object_or_404(Issue, pk=issue_id) comment_form = CommentForm() description_form = DescriptionForm(instance=current_issue) report_form = ReportForm(instance=current_issue) control_form = ControlForm(instance=current_issue) if request.method == 'POST': if 'comment_form' in request.POST: comment_form = CommentForm(request.POST) if comment_form.is_valid(): curr_comment = comment_form.save(commit=False) curr_comment.author = request.user curr_comment.issue = current_issue curr_comment.save() comment_form = CommentForm() if 'description_form' in request.POST: description_form = DescriptionForm(request.POST, instance=current_issue) if description_form.is_valid(): description_form.save() description_form = DescriptionForm(instance=current_issue) if 'report_form' in request.POST: report_form = ReportForm(request.POST, instance=current_issue) if report_form.is_valid(): report_form.save() report_form = ReportForm(instance=current_issue) if 'control_form' in request.POST: control_form = ControlForm(request.POST, instance=current_issue) if control_form.is_valid(): control_form.save() control_form = ControlForm(instance=current_issue) context['issue'] = current_issue context['comment_form'] = comment_form context['description_form'] = description_form context['report_form'] = report_form context['control_form'] = control_form context['status_list'] = Status.objects.all() return render(request, 'helpdesk/issue.html', context)
def edit_report(request, report_id): report = Report.objects.get(id=report_id) if request.method == 'GET': form = ReportForm(instance=report) return render_to_response('add_edit_report.html', {'form':form, 'editing':True, 'report':report}, context_instance=RequestContext(request) ) if request.method == 'POST': form = ReportForm(request.POST, instance=report) if form.is_valid(): report = form.save() return redirect(reverse('report_home')) return render_to_response('add_edit_report.html', {'form':form, 'editing':True, 'report':report}, context_instance=RequestContext(request) )
def reporting(request): from forms import ReportForm from analytics import get_html, get_html_table, get_flash_chart from models import Users report = "" errors = [] if request.POST: report_form = ReportForm(request.POST) if report_form.is_valid(): if request.session.has_key("analytics"): aa_obj = request.session["analytics"] else: user = Users.objects.get(organization=request.organization) aa_obj = AqAnalytics(user_name=user.email, password=user.password) aa_obj.authenticate() if report_form.cleaned_data["chart_type"] == "table": report, row_count, is_valid = aa_obj.DataFeedQuery(parse_as="flat", **report_form.cleaned_data) if is_valid == True: report = get_html_table(report[0], report[1], row_count) elif report_form.cleaned_data["chart_type"][:5] == "chart": report = get_flash_chart(**report_form.cleaned_data) else: report = "" errors = is_valid else: report_form = ReportForm(initial={"table_id": request.analytics.selected_site}) if request.is_ajax(): return report else: return render_to_response( "reports.html", {"report": report, "form": report_form, "error_list": errors}, context_instance=RequestContext(request), )
def edit_global_report(request, month=0, day=0, year=0): projects = Project.objects.all() if request.method == 'POST': form = ReportForm(request.POST) if form.is_valid(): try: q = DailyReport.objects.filter(date=form.cleaned_data['date']) report = q[0] if q else DailyReport(date=form.cleaned_data['date']) report.description = form.cleaned_data['personalReport'] report.save() return redirect('daily_reports.views.edit_global_report') except Exception as e: print(e) return render_to_response('daily_reports/daily_report_form.html', {'form': form, 'global': True, "projects": projects}, context_instance=RequestContext(request)) else: return render_to_response('daily_reports/daily_report_form.html', {'form': form, 'global': True, "projects": projects}, context_instance=RequestContext(request)) else: d = date.today() if (year != 0): try: d = date(int(year), int(month), int(day)) except: return redirect('daily_reports.views.edit_global_report') if (d.year < 2013 or d.year > date.today().year + 1): return redirect('daily_reports.views.edit_global_report') q = None try: q = DailyReport.objects.filter(date=d) except Exception as e: print("Exception: " + str(e)) raise e if q: form = ReportForm(initial={"date": d, "personalReport": q[0].description}) else: form = ReportForm(initial={"date": d}) return render_to_response("daily_reports/daily_report_form.html", {'form': form, 'global': True, "projects": projects}, 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))
def report(request, *args): """View that renders a report page to fetch all items sold under three constraints which are: Category, Begin Date/Time and End Date/Time.""" if request.GET: form = ReportForm(request.GET) if form.is_valid(): date_start = form.cleaned_data['date_start'] date_end = form.cleaned_data['date_end'] sel_server = form.cleaned_data['sel_server'] qs = Bill.objects.filter(deleted_by='') if date_start: qs = qs.filter(date__gte=date_start) if date_end: qs = qs.filter(date__lte=date_end) if sel_server: qs = qs.filter(server__in=[s for s in sel_server]) if not qs.exists(): return render(request, 'webpos/report.html', {'form': form, # 'report': None, 'qs_empty': True}) report_dict = {} for category in Category.objects.all(): report_dict[category] = {'itemss': {}, 'items_sold': 0, 'total_price': Decimal(0.00) } for item in category.item_set.all(): clear = {'quantity': 0, 'price': Decimal(0.00)} report_dict[category]['itemss'][item] = clear total_earn = Decimal(0) total_cash = Decimal(0) for bill in qs: total_cash += bill.total for billitem in bill.billitem_set.all(): quantity = billitem.quantity price = billitem.item_price * billitem.quantity entry_category = report_dict[billitem.category] entry_category['items_sold'] += quantity entry_category['total_price'] += abs(price) entry_item = entry_category['itemss'][billitem.item] entry_item['quantity'] += quantity entry_item['price'] += abs(price) if price > 0: total_earn += price for extra in billitem.billitemextra_set.all(): entry_category['items_sold'] += extra.quantity * billitem.quantity entry_category['total_price'] += extra.total_cost entry_item = entry_category['itemss'][extra.item] entry_item['quantity'] += extra.quantity * billitem.quantity entry_item['price'] += extra.total_cost total_earn += extra.total_cost return render(request, 'webpos/report.html', {'form': form, 'report': report_dict, 'total_earn': total_earn, 'total_cash': total_cash, # 'qs_empty': False }) else: return render(request, 'webpos/report.html', {'form': 'Form Error!', # 'qs_empty': qs_empty }) else: form = ReportForm() return render(request, 'webpos/report.html', {'form': form, # 'qs_empty': qs_empty })
def report_home(request): data = {} systems = None initial = { 'system_type': ['SYSTEM'], 'site': ['-1'], 'system_status': ['-1'], } if request.method == 'POST': form = ReportForm(request.POST) if form.is_valid(): search_q = Q() allocation = request.POST.get('allocation', '') server_models = request.POST.get('server_models', '') operating_system = request.POST.get('operating_system', '') system_status = request.POST.getlist('system_status') site = request.POST.get('site') systems = System.objects.all() if 'SYSTEM' in request.POST.getlist('system_type'): if site: if '-1' not in request.POST.getlist('site'): for site in request.POST.getlist('site'): search_q |= Q(system_rack__site__id=site) total_count = System.with_related.filter( search_q).count() systems = systems.filter(search_q) if allocation != '': systems = systems.filter(Q(allocation=allocation)) if server_models != '': systems = systems.filter( Q(server_model__model__icontains=server_models) | Q(server_model__vendor__icontains=server_models)) if operating_system != '': systems = systems.filter( Q(operating_system__name__icontains=operating_system) | Q(operating_system__version__icontains=operating_system )) if '-1' not in system_status: the_query = Q() for ss in system_status: the_query |= Q(system_status__id=ss) systems = systems.filter(the_query) total_count = systems.count() if 'UNMANAGED' in request.POST.getlist('system_type'): pass data['content'] = str(total_count) if 'CSV' == request.POST['output']: response = HttpResponse(mimetype='text/csv') response[ 'Content-Disposition'] = 'attachment; filename=inventory_report.csv' writer = csv.writer(response) columns = [ 'Hostname', 'Asset Tag', 'Purchase Date', 'Server Model', 'Serial', 'Status', 'Purchase Price', 'Operating System', 'Site', ] writer.writerow(columns) for system in systems: writer.writerow([ system.hostname, system.asset_tag, system.purchase_date, system.server_model, system.serial, system.system_status, system.purchase_price, system.operating_system if system.operating_system else '', system.system_rack.site if system.system_rack else '', ]) return response if 'SCREEN' == request.POST['output']: template = 'reports/index.html' else: form = ReportForm(request.POST) data['form'] = form template = 'reports/index.html' else: form = ReportForm(initial=initial) data['form'] = form template = 'reports/index.html' return jinja_render_to_response(template, { 'systems': systems, 'form': form })
def report_home(request): data = {} systems = None initial = { 'system_type': ['SYSTEM'], 'site': ['-1'], 'system_status': ['-1'], } if request.method == 'POST': form = ReportForm(request.POST) if form.is_valid(): search_q = Q() allocation = request.POST.get('allocation', '') server_models = request.POST.get('server_models', '') operating_system = request.POST.get('operating_system', '') system_status = request.POST.getlist('system_status') site = request.POST.get('site') systems = System.objects.all() if 'SYSTEM' in request.POST.getlist('system_type'): if site: if '-1' not in request.POST.getlist('site'): for site in request.POST.getlist('site'): search_q |= Q(system_rack__site__id=site) total_count = System.with_related.filter(search_q).count() systems = systems.filter(search_q) if allocation != '': systems = systems.filter(Q(allocation=allocation)) if server_models != '': systems = systems.filter(Q(server_model__model__icontains=server_models)|Q(server_model__vendor__icontains=server_models)) if operating_system != '': systems = systems.filter(Q(operating_system__name__icontains=operating_system)|Q(operating_system__version__icontains=operating_system)) if '-1' not in system_status: the_query = Q() for ss in system_status: the_query |= Q(system_status__id=ss) systems = systems.filter(the_query) total_count = systems.count() if 'UNMANAGED' in request.POST.getlist('system_type'): pass data['content'] = str(total_count) if 'CSV' == request.POST['output']: response = HttpResponse(mimetype='text/csv') response['Content-Disposition'] = 'attachment; filename=inventory_report.csv' writer = csv.writer(response) columns = [ 'Hostname', 'Asset Tag', 'Purchase Date', 'Server Model', 'Serial', 'Status', 'Purchase Price', 'Operating System', 'Site', ] writer.writerow(columns) for system in systems: writer.writerow([ system.hostname, system.asset_tag, system.purchase_date, system.server_model, system.serial, system.system_status, system.purchase_price, system.operating_system if system.operating_system else '', system.system_rack.site if system.system_rack else '', ]) return response if 'SCREEN' == request.POST['output']: template = 'reports/index.html' else: form = ReportForm(request.POST) data['form'] = form template = 'reports/index.html' else: form = ReportForm(initial=initial) data['form'] = form template = 'reports/index.html' return jinja_render_to_response(template, { 'systems': systems, 'form': form })
def report(request, *args): """View that renders a report page to fetch all items sold under three constraints which are: Category, Begin Date/Time and End Date/Time.""" if request.GET: form = ReportForm(request.GET) if form.is_valid(): date_start = form.cleaned_data['date_start'] date_end = form.cleaned_data['date_end'] sel_server = form.cleaned_data['sel_server'] qs = Bill.objects.filter(deleted_by='') if date_start: qs = qs.filter(date__gte=date_start) if date_end: qs = qs.filter(date__lte=date_end) if sel_server: qs = qs.filter(server__in=[s for s in sel_server]) if not qs.exists(): return render( request, 'webpos/report.html', { 'form': form, # 'report': None, 'qs_empty': True }) report_dict = {} for category in Category.objects.all(): report_dict[category] = { 'itemss': {}, 'items_sold': 0, 'total_price': Decimal(0.00) } for item in category.item_set.all(): clear = {'quantity': 0, 'price': Decimal(0.00)} report_dict[category]['itemss'][item] = clear total_earn = Decimal(0) total_cash = Decimal(0) for bill in qs: total_cash += bill.total for billitem in bill.billitem_set.all(): quantity = billitem.quantity price = billitem.item_price * billitem.quantity entry_category = report_dict[billitem.category] entry_category['items_sold'] += quantity entry_category['total_price'] += abs(price) entry_item = entry_category['itemss'][billitem.item] entry_item['quantity'] += quantity entry_item['price'] += abs(price) if price > 0: total_earn += price for extra in billitem.billitemextra_set.all(): entry_category[ 'items_sold'] += extra.quantity * billitem.quantity entry_category['total_price'] += extra.total_cost entry_item = entry_category['itemss'][extra.item] entry_item[ 'quantity'] += extra.quantity * billitem.quantity entry_item['price'] += extra.total_cost total_earn += extra.total_cost return render( request, 'webpos/report.html', { 'form': form, 'report': report_dict, 'total_earn': total_earn, 'total_cash': total_cash, # 'qs_empty': False }) else: return render( request, 'webpos/report.html', { 'form': 'Form Error!', # 'qs_empty': qs_empty }) else: form = ReportForm() return render( request, 'webpos/report.html', { 'form': form, # 'qs_empty': qs_empty })
def report_home(request): data = {} systems = None initial = {"system_type": ["SYSTEM"], "location": ["-1"], "system_status": ["-1"]} if request.method == "POST": form = ReportForm(request.POST) if form.is_valid(): search_q = Q() allocation = request.POST.get("allocation", "") server_models = request.POST.get("server_models", "") operating_system = request.POST.get("operating_system", "") system_status = request.POST.getlist("system_status") location = request.POST.get("location") systems = System.objects.all() if "SYSTEM" in request.POST.getlist("system_type"): if location: if "-1" not in request.POST.getlist("location"): for location in request.POST.getlist("location"): search_q |= Q(system_rack__location__id=location) total_count = System.with_related.filter(search_q).count() systems = systems.filter(search_q) if allocation != "": systems = systems.filter(Q(allocation=allocation)) if server_models != "": systems = systems.filter( Q(server_model__model__icontains=server_models) | Q(server_model__vendor__icontains=server_models) ) if operating_system != "": systems = systems.filter( Q(operating_system__name__icontains=operating_system) | Q(operating_system__version__icontains=operating_system) ) if "-1" not in system_status: the_query = Q() for ss in system_status: the_query |= Q(system_status__id=ss) systems = systems.filter(the_query) total_count = systems.count() if "UNMANAGED" in request.POST.getlist("system_type"): pass data["content"] = str(total_count) if "CSV" == request.POST["output"]: response = HttpResponse(mimetype="text/csv") response["Content-Disposition"] = "attachment; filename=inventory_report.csv" writer = csv.writer(response) columns = [ "Hostname", "Asset Tag", "Purchase Date", "Server Model", "Serial", "Status", "Purchase Price", "Operating System", "Location", ] writer.writerow(columns) for system in systems: writer.writerow( [ system.hostname, system.asset_tag, system.purchase_date, system.server_model, system.serial, system.system_status, system.purchase_price, system.operating_system if system.operating_system else "", system.system_rack.location if system.system_rack else "", ] ) return response if "SCREEN" == request.POST["output"]: template = "reports/index.html" else: form = ReportForm(request.POST) data["form"] = form template = "reports/index.html" else: form = ReportForm(initial=initial) data["form"] = form template = "reports/index.html" return jinja_render_to_response(template, {"systems": systems, "form": form})