Esempio n. 1
0
def edit_waterproofing(id):
    report = Report.query.get(id)
    form = ReportForm(obj=report)
    if request.method == 'POST':
        if request.form['action'] == 'Upload':
            form.populate_obj(report)
            bim_file = form.bimimg.data
            if bim_file and allowed_file(bim_file.filename):
                bim_filename = secure_filename(str(uuid.uuid4()) + bim_file.filename)
                bim_file.save(os.path.join(app.config['UPLOAD_FOLDER'], bim_filename))
                report.bimimg_filename = bim_filename
            site_file = form.siteimg.data
            if site_file and allowed_file(site_file.filename):
                site_filename = secure_filename(str(uuid.uuid4()) + site_file.filename)
                site_file.save(os.path.join(app.config['UPLOAD_FOLDER'], site_filename))
                report.siteimg_filename = site_filename
            report.site_caption = form.site_caption.data
            report.date = form.date.data
            report.note = form.note.data
            report.summary = form.summary.data
            db.session.commit()
            return redirect(url_for('report_waterproofing'))
        elif request.form['action'] == 'Edit Previous':
            id_object = form.edit_date.data
            r = Report.query.get(id_object.id)
            id = r.id
            return redirect(url_for('edit_waterproofing', id=id))
    elif request.method == 'GET':
        return render_template('create_waterproofing.html', form=form, data_type=report.date, action="Edit")
Esempio n. 2
0
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)
Esempio n. 3
0
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})
Esempio n. 4
0
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))
Esempio n. 5
0
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))
Esempio n. 6
0
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))
Esempio n. 7
0
def report():
    form = ReportForm()
    current_user = flask_login.current_user
    if current_user.is_anonymous():
        is_admin = False
    else:
        is_admin = current_user.role == 1
    if form.validate_on_submit():
        if form.user.data == "000000":
            all_tasks = Task.query.all()
        if form.user.data != "000000":
            all_tasks = Task.query.filter_by(user_id=form.user.data)
        tasks_returned = []
        for task in all_tasks:
            if datetime.datetime(form.year_to.data, form.month_to.data, form.day_to.data) >= datetime.datetime(task.start_year, task.start_month, task.start_day) >= datetime.datetime(form.year_from.data, form.month_from.data, form.day_from.data):
                tasks_returned.append(task)
        task_list = []
        for task in tasks_returned:
            task_attributes=[task.id, task.user_id, task.type_label,task.start_weekday, task.start_day, task.start_month, task.start_year, task.end_day, task.end_month, task.end_year, task.start_hour, task.start_minute, task.time_taken]
            task_list.append(task_attributes)
        with open('app/report.csv', 'wb') as test_file:
            file_writer = csv.writer(test_file)
            file_writer.writerow(header_list)
            for task in task_list:
                file_writer.writerow(task)

        return render_template("generated_report.html", task_list=task_list, anonymous=current_user.is_anonymous(), user=form.user.data,tasks_returned=tasks_returned, current_user=current_user,
        is_admin = is_admin)
    return render_template("report.html", form=form, anonymous=current_user.is_anonymous(), current_user=current_user,
        is_admin = is_admin)
Esempio n. 8
0
def addOrUpdateReport():

    userId=session['userId']
    user=User.getById(userId)


    if user is None  :
        return  json.dumps(rs.NO_DATA.__dict__,ensure_ascii=False)
    #权限查看
    if  UserRole.checkRole(db_session,userId,constant.RoleId.Admin) == False:
        return  json.dumps(rs.PERMISSION_DENY.__dict__,ensure_ascii=False)

    form =  ReportForm(request.form)
    formResult=form.validate()
    if formResult.status==rs.SUCCESS.status:
        diagnose=Diagnose.getDiagnoseById(form.diagnoseId)
        if diagnose is None:
            return  json.dumps(rs.NO_DATA.__dict__,ensure_ascii=False)
        #session['remember_me'] = form.remember_me.data
        # login and validate the user...
        report = None
        if form.reportId:
            report=Report.getReportById(form.reportId)
            if report.type==constant.ReportType.Doctor:
                return  json.dumps(rs.PERMISSION_DENY.__dict__,ensure_ascii=False)
            Report.update(form.reportId,None,form.status,None,form.techDesc,form.imageDesc,form.diagnoseDesc)
        else:
            report=Report(form.techDesc,form.imageDesc,form.diagnoseDesc,form.fileUrl,ReportType.Admin,form.status)
            Report.save(report)

            diagnose.reportId=report.id
            Diagnose.save(diagnose)
        #flash('成功添加诊断评论')
        if form.status and form.status == constant.ReportStatus.Commited:
            diagnose=Diagnose.getDiagnoseById(form.diagnoseId)
            if diagnose:
                Diagnose.changeDiagnoseStatus(diagnose.id,constant.DiagnoseStatus.NeedDiagnose)
            if form.reportId is None and report:
                form.reportId = report.id
            Report.update(form.reportId,constant.ReportType.Doctor,status=constant.ReportStatus.Draft)
            if diagnose and hasattr(diagnose,'doctor'):
                doctor=diagnose.doctor
                if doctor and doctor.userId:
                    content=dataChangeService.getDoctorNeedDiagnoseMessageContent(diagnose,doctor)

                    #诊断通知
                    message=Message(constant.DefaultSystemAdminUserId,doctor.userId,'诊断通知',content,constant.MessageType.Diagnose)
                    Message.save(message)

                    #诊断日志
                    diagoseLog=DiagnoseLog(userId,form.diagnoseId,constant.DiagnoseLogAction.FetchDiagnoseEndAction)
                    DiagnoseLog.save(db_session,diagoseLog)

            return json.dumps(formResult.__dict__,ensure_ascii=False)
    return json.dumps(formResult.__dict__,ensure_ascii=False)
Esempio n. 9
0
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))
Esempio n. 10
0
def report(authority):
    db_auth = Authority.query.filter_by(short=authority).first()
    if db_auth == None:
        flash('Authority %s not found.' % authority)
        return redirect(url_for('index'))
    types = Type.query.filter_by(authority_id = db_auth.id).all()
    form = ReportForm()
    form.type_id.choices = [(t.id, t.name) for t in types]
    if form.validate_on_submit():
        return after_report(request)
    print form.errors
    return render_template('report.html',
                           form=form)
Esempio n. 11
0
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 })
Esempio n. 12
0
File: views.py Progetto: lite/djsite
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))
Esempio n. 13
0
def reports():
    form = ReportForm()
    if form.validate_on_submit():
        if form.department.data != 100:
            department = Department.query.filter(Department.id ==
                                                 form.department.data).first()
            csv = create_csv(department)
        else:
            csv = '\n'.join(sorted([create_csv(department)
                            for department in Department.query.all()]))
        response = make_response(csv)
        response.headers[
            'Content-Disposition'] = "attachment; filename=report.csv"
        return response

    return render_template('reports.html', form=form)
Esempio n. 14
0
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)
Esempio n. 15
0
def report():
    form = ReportForm()
    if current_user.is_admin:
        form.user.choices = [(g.uid, g.login) for g in User.query.order_by('name')]
    else:
        form.user.choices = [(g.uid, g.login) for g in current_user.subusers]
        form.user.choices.append((current_user.uid, current_user.login))
    form.user.choices.insert(0,(-1, u"Все пользователи"))
    if request.method == "POST":
        if form.validate():
            title = CONST.INVOICE_NAME[form.inv_type.data]
            rpt_filter = [Invoice.inv_type==form.inv_type.data]
            filter_text = u''
            if form.org_uid.data != u'':
                filter_text = filter_text + u'Организация: ' + form.org.data + ' '
                rpt_filter.append(Invoice.org_uid==form.org_uid.data)
            if form.agent_uid.data !=u'':
                filter_text = filter_text + u'Контрагент: ' + form.agent.data + ' '
                rpt_filter.append(Invoice.agent_uid==form.agent_uid.data)
            if form.user.data !=-1:
                filter_text = filter_text + u"Пользователь: " + User.query.get(form.user.data).login + ' '
                rpt_filter.append(Invoice.user_uid==form.user.data)
            if form.dbegin.data is not None:
                filter_text = filter_text + u'с ' + datetime.strftime(form.dbegin.data, '%d.%m.%Y') + ' '
                rpt_filter.append(Invoice.dinvoice>=datetime.combine(form.dbegin.data, datetime.min.time()))
            if form.dend.data is not None:
                filter_text = filter_text + u'по ' + datetime.strftime(form.dend.data, '%d.%m.%Y') + ' '
                rpt_filter.append(Invoice.dinvoice<=datetime.combine(form.dend.data, datetime.max.time()))
            invoices = current_user.available_invoices(inv_type=form.inv_type.data, rpt_filter=rpt_filter)
            if form.agent_inn.data != u'':
                filer_text = filer_text + u'ИНН Контрагента: ' + form.agent_inn.data + ' '
                invoices.join(Agent).filter(Agent.inn.contains(form.agent_inn.data))
            sums = invoices.with_entities(func.sum(Invoice.sum_snds),
                                  func.sum(Invoice.sum_no_nds18),
                                  func.sum(Invoice.sum_nds18),
                                  func.sum(Invoice.sum_no_nds10),
                                  func.sum(Invoice.sum_nds10),
                                  func.sum(Invoice.commission)).first()
            if request.form['submit']==u'excel':
                return export_xls(title, filter_text, invoices)
            else:
                return render_template("report.html", invoices=invoices.all(),
                                        dbegin=Settings.dbegin(),
                                        dend=Settings.dend(),
                                        sums=sums, title=title, filter_text=filter_text)
    return render_template("frmReport.html", form=form)
Esempio n. 16
0
def create_report():
    return_url = request.referrer or '/'
    form = ReportForm()
    if form.validate_on_submit():
        report = Report(category=form.category.data,
                        description=form.description.data,
                        address=form.address.data)
        if current_user.team_id:
            report.team_id = current_user.team_id
        db.session.add(report)
        db.session.commit()
        if not current_user.is_admin:
            create_new_notification(1, report)
        flash('!הדיווח נוצר בהצלחה', 'success')
        return redirect(url_for('reports'))
    return render_template('/create_report.html',
                           form=form,
                           legend="יצירת דיווח",
                           return_url=return_url)
Esempio n. 17
0
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))
Esempio n. 18
0
def board_catalog(board_name, boards):
    posts = get_boards_posts(board_name)
    report = ReportForm()
    return render_template(
        'catalog.html',
        board_name=board_name,
        boards=boards,
        posts=posts,
        report_form=report,
    )
Esempio n. 19
0
def report():
    form = ReportForm()
    ip = request.environ.get('HTTP_X_REAL_IP', request.remote_addr)
    #print(request.environ.get('HTTP_X_REAL_IP', request.remote_addr))
    if form.validate_on_submit(): #form.method == 'POST'
         #request.get_json()["ip"]
        id = Note.getNote(session["randomNote"]["lookupId"]).lookupId
        comments = ""
        if request.form:
            comments = request.form["comments"]
        session.clear()
        msg = Message("Someone reported a post!", sender="*****@*****.**", recipients=["*****@*****.**"])
        msg.body = "Note UUID: " + id + "\n" + "Comments: " + comments + "\n" + "IP Address: " + ip
        mail.send(msg)
        return render_template("success.html")
    try:
        return render_template("report.html", form=form, note=Note.getNote(session["randomNote"]["lookupId"]), ip=ip)
    except:
        return render_template("error/403.html"), 403
Esempio n. 20
0
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))
Esempio n. 21
0
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))
Esempio n. 22
0
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)
		)
Esempio n. 23
0
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),
        )
Esempio n. 24
0
def report(ownerEmail):
    form = ReportForm()
    if request.method == 'GET':
        return render_template('report.html', form=form)
    elif request.method == 'POST':
        description = form.description.data
        date = form.dateOfOffense.data
        todaysDate = datetime.date(datetime.now())
        db = get_db()
        cur = db.cursor()
        cur.execute(
            "INSERT INTO REPORT (User_email, Reported_user_email, Admin_ID, Offense_description, Date_of_offense, Date_of_report) VALUES (?,?,?,?,?,?)",
            (g.user['Email'], ownerEmail, None, description, date, todaysDate))
        db.commit()
        return redirect(url_for('renterTransactions'))
Esempio n. 25
0
def board_post(board_name, post_id, boards):
    post = get_post(post_id)
    if not post:
        abort(404)

    replies = get_post_replies(post_id)
    report = ReportForm()
    return render_template(
        'post.html',
        board_name=board_name,
        boards=boards,
        post=post,
        replies=replies,
        report_form=report,
    )
Esempio n. 26
0
def report(request):
    if request.method == 'POST':
        name = request.user.username
        profile = get_object_or_404(Peep, username=name)
        form = ReportForm(request.POST, instance=profile)
        form.save()
        return redirect('home')
    else:
        form = ReportForm()
    return render(request, 'report.html', {'form': form})
Esempio n. 27
0
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))
Esempio n. 28
0
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 })
Esempio n. 29
0
def home(ip):
    boards = get_boards()
    posts = get_recent_posts(n=6)
    feedback = FeedbackForm()
    report = ReportForm()

    if feedback.validate_on_submit():
        subject = feedback.subject.data
        message = feedback.message.data
        create_feedback(subject, message, ip)
        flash(FEEDBACK_MSG)
        return redirect(url_for('home'))

    return render_template(
        'home.html',
        boards=boards,
        posts=posts,
        feedback_form=feedback,
        report_form=report,
        rules=RULES,
    )
Esempio n. 30
0
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))
Esempio n. 31
0
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)
Esempio n. 32
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))
Esempio n. 33
0
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
    })
Esempio n. 35
0
def addOrUpdateReport():

    userId = session['userId']
    user = User.getById(userId)

    if user is None:
        return json.dumps(rs.NO_DATA.__dict__, ensure_ascii=False)
    #权限查看
    if UserRole.checkRole(db_session, userId, constant.RoleId.Admin) == False:
        return json.dumps(rs.PERMISSION_DENY.__dict__, ensure_ascii=False)

    form = ReportForm(request.form)
    formResult = form.validate()
    if formResult.status == rs.SUCCESS.status:
        diagnose = Diagnose.getDiagnoseById(form.diagnoseId)
        if diagnose is None:
            return json.dumps(rs.NO_DATA.__dict__, ensure_ascii=False)
        #session['remember_me'] = form.remember_me.data
        # login and validate the user...
        report = None
        if form.reportId:
            report = Report.getReportById(form.reportId)
            if report.type == constant.ReportType.Doctor:
                return json.dumps(rs.PERMISSION_DENY.__dict__,
                                  ensure_ascii=False)
            Report.update(form.reportId, None, form.status, None,
                          form.techDesc, form.imageDesc, form.diagnoseDesc)
        else:
            report = Report(form.techDesc, form.imageDesc, form.diagnoseDesc,
                            form.fileUrl, ReportType.Admin, form.status)
            Report.save(report)

            diagnose.reportId = report.id
            Diagnose.save(diagnose)

            #add report and diagnose to relation table
            reportDiagnoseRelation = ReportDiagnoseRelation(
                report.id, diagnose.id)
            ReportDiagnoseRelation.save(reportDiagnoseRelation)

        #flash('成功添加诊断评论')
        if form.status and form.status == constant.ReportStatus.Commited:
            diagnose = Diagnose.getDiagnoseById(form.diagnoseId)
            if diagnose:
                Diagnose.changeDiagnoseStatus(
                    diagnose.id, constant.DiagnoseStatus.NeedDiagnose)
            if form.reportId is None and report:
                form.reportId = report.id
            #copy a report and add to relation table
            newReport = Report(form.techDesc, form.imageDesc,
                               form.diagnoseDesc, form.fileUrl,
                               ReportType.Doctor, constant.ReportStatus.Draft)
            Report.save(newReport)

            reportDiagnoseRelation = ReportDiagnoseRelation(
                newReport.id, diagnose.id)
            ReportDiagnoseRelation.save(reportDiagnoseRelation)

            diagnose.reportId = newReport.id
            Diagnose.save(diagnose)
            #end copy

            if diagnose and hasattr(diagnose, 'doctor'):
                doctor = diagnose.doctor
                if doctor and doctor.userId:
                    content = dataChangeService.getDoctorNeedDiagnoseMessageContent(
                        diagnose, doctor)

                    #诊断通知
                    message = Message(constant.DefaultSystemAdminUserId,
                                      doctor.userId, '诊断通知', content,
                                      constant.MessageType.Diagnose)
                    Message.save(message)

                    #诊断日志
                    diagoseLog = DiagnoseLog(
                        userId, form.diagnoseId,
                        constant.DiagnoseLogAction.FetchDiagnoseEndAction)
                    DiagnoseLog.save(db_session, diagoseLog)

            return json.dumps(formResult.__dict__, ensure_ascii=False)
    return json.dumps(formResult.__dict__, ensure_ascii=False)
Esempio n. 36
0
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
           })
Esempio n. 37
0
def report_new(request):

    return render(request, 'ddos/templates/report/new.html',
                  {'form': ReportForm()})
Esempio n. 38
0
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
            })
Esempio n. 39
0
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})