Beispiel #1
0
    def test_build_report(self):
        """
        testing the report finds the correct amount of transactions
        """

        r = Report(trans_obj='acquisition')
        r.buildReport()
        self.assertEqual(r.trans.count(), 3)
Beispiel #2
0
    def importc(self):
        datere = re.compile(r"([0-9\-]+) ([0-9:]+)")

        reports = Report.all()
        for report in reports:
            report.delete()

        imp = csv.reader(open("doc/import.csv", "rb"))
        boat = None
        for row in imp:
            boatid = string.upper(row[1])

            if boat == None:
                boat = Boat.get_by_key_name(boatid, parent=self.dbuser)

            # logging.error(row[0])
            report = Report(parent=boat)
            parsedate = datere.match(row[0])
            date = parsedate.group(1) + " " + parsedate.group(2)
            tm = time.strptime(date, "%Y-%m-%d %H:%M:%S")
            report.created = datetime.datetime.utcfromtimestamp(time.mktime(tm))

            report.lat = float(row[2])
            report.lon = float(row[3])
            payload = {"comment": row[4].replace("</b>", "")}
            # logging.error(payload)
            report.setPayload(payload)
            report.put()
Beispiel #3
0
    def test_build_report_transactions(self):
        """
        I test that a report can be generated soley on company, division or region
        """
        
        t1 = self.fstore(Transaction())
        t1.company_id = self.comp1.id
        t1.division_id = self.div1.id
        t1.trans_type = u'New Lease'

        t2 = self.fstore(Transaction())
        t2.company_id = self.comp1.id
        t2.division_id = 23
        t2.trans_type = u'New Lease'

    
        t3 = self.fstore(Transaction())
        t3.company_id = self.comp1.id
        t3.division_id = self.div1.id
        t3.region_id = self.reg1.id
        t3.trans_type = u'New Lease'

        self.store.commit()

        r = Report(companies=[self.comp1.id], divisions=[self.div1.id])
        r.buildReport()
        self.assertEqual(r.trans.count(), 2)

        r = Report(companies=[self.comp1.id])
        r.buildReport()
        self.assertEqual(r.trans.count(), 3)

        r = Report(companies=[self.comp1.id], divisions=[self.div1.id], regions=[self.reg1.id])
        r.buildReport()
        self.assertEqual(r.trans.count(), 1)
Beispiel #4
0
 def generate_report(self):
     report = Report()
     projects = self.projects_finder.find_all()
     if len(projects) == 0:
         report.message = NO_PROJECTS_FOUND_MESSAGE
     else:
         for project in projects:
             project_report = self._generate_report_for_project(project)
             if self._any_outdated_requirement(project_report):
                 report.add_project_report(project_report)
     return report
Beispiel #5
0
    def test_avg_value_add(self):
        """
        Testing the average value added of all transactions in the report
        """
        self.nl1.value_add = 25
        self.nl2.value_add = 50
        self.store.commit()

        r = Report(trans_obj='acquisition')
        r.buildReport()

        self.assertEqual(r.avg_value_add, Dec('37.5'))
Beispiel #6
0
    def test_avg_base_rent(self):
        """
        Determines the avg base rent across transactions
        """
        
        self.nl1.average_base_rent = 1523.34
        self.nl2.average_base_rent = 32152.56

        self.store.commit()

        r = Report(trans_obj='acquisition')
        r.buildReport()

        self.assertEqual(r.avg_base_rent, Dec('16837.95'))
Beispiel #7
0
    def test_num_of_surveys(self):
        """
        Total count of surveys from transactions
        """

        self.t1.survey_id = '1'
        self.t2.survey_id = '2'

        self.store.commit()

        r = Report(trans_obj='acquisition')
        r.buildReport()

        self.assertEqual(r.num_survey_responses, 2)
Beispiel #8
0
    def POST(self):
        
        i = web.input(comp_cbox=[], div_cbox=[], reg_cbox=[], area_cbox=[])
        
        reports = []

        report = Report(client_id=i.client_id, trans_obj=i.trans_obj)
        report.buildReport()
        reports.append(report)

        if i.trans_obj == 'acquisition':
            return jrender('/dashboard/acq_report.html', {'reports':reports})
        else:
            return jrender('/dashboard/disp_report.html', {'reports':reports})
Beispiel #9
0
    def test_rfp_on_time(self):
        """
        checks the percentage of rfps on time
        """
        
        self.nl1.rfp_on_time = True
        self.nl2.rfp_on_time = True
        self.nl3.rfp_on_time = False

        self.store.commit()

        r = Report(trans_obj='acquisition')
        r.buildReport()

        self.assertEqual(r.rfp_ontime, Dec('66.67'))
Beispiel #10
0
def report():
    if g.no_anonymous_reporting and g.user.is_anonymous:
        return Response(
            json.dumps(
                [{"msg": "Not logged in or unsufficient privileges."}],
                indent=4 if c3bottles.debug else None
            ),
            mimetype="application/json",
            status=401
        )
    number = request.values.get("number")
    try:
        Report(
            dp=DropPoint.get(number),
            state=request.values.get("state")
        )
    except ValueError as e:
        return Response(
            json.dumps(e.args, indent=4 if c3bottles.debug else None),
            mimetype="application/json",
            status=400
        )
    else:
        db.session.commit()
        return Response(
            DropPoint.get_dp_json(number),
            mimetype="application/json"
        )
Beispiel #11
0
def report(number=None):
    if number:
        dp = DropPoint.get(number)
    else:
        dp = DropPoint.get(request.values.get("number"))

    if not dp or dp.removed:
        return render_template(
            "error.html",
            heading="Error!",
            text="Drop point not found.",
        )

    state = request.values.get("state")

    if state:
        if g.no_anonymous_reporting and g.user.is_anonymous:
            abort(401)
        from model.report import Report
        try:
            Report(dp=dp, state=state)
        except ValueError as e:
            return render_template(
                "error.html",
                text="Errors occurred while processing your report:",
                errors=[v for d in e.args for v in d.values()])
        else:
            db.session.commit()
            return render_template(
                "success.html",
                heading="Thank you!",
                text="Your report has been received successfully.")
    else:
        return render_template("report.html", dp=dp)
Beispiel #12
0
 def download(self):
     lines = []
     id = string.upper(self.request.get("id"))
     boat = Boat.get_by_key_name(id, parent=self.dbuser)
     lines.append('<?xml version="1.0" encoding="utf-8" ?>')
     lines.append(
         '<gpx version="1.1" creator="sailtrack" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.topografix.com/GPX/1/1" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">'
     )
     if boat != None:
         reports = Report.all()
         reports.ancestor(boat)
         reports.order("created")
         for report in reports:
             comment = ""
             if report.payload != None and report.payload != "":
                 comment = report.getPayload()["comment"]
             lines.append('  <wpt lat="%f" lon="%f">' % (report.lat, report.lon))
             lines.append("    <time>%s</time>" % (report.created.strftime("%Y-%m-%dT%H:%M:%SZ")))
             lines.append("    <name>%s</name>" % (escape(comment)))
             lines.append("    <sym>circle</sym>")
             lines.append("    <type>WPT</type>")
             lines.append("  </wpt>")
     self.setContentType("text/plain")
     lines.append("</gpx>")
     return "\n".join(lines)
Beispiel #13
0
    def test_survey_ratio(self):
        """
        ratio of transactions with surveys
        """

        self.t1.survey_sent = '2011-05-01'
        self.t1.survey_id = 1

        self.t2.survey_sent = '2011-05-01'

        self.store.commit()
       
        r = Report(trans_obj='acquisition')
        r.buildReport()

        self.assertEqual(r.survey_resp_ratio, Dec('50.0'))
Beispiel #14
0
    def test_avg_time_on_market(self):
        """
        This smells like a duplicate to me
        """

        self.t1.engage_date = '2011-05-01'
        self.nl1.lease_execution_date = '2011-05-02'

        self.t2.engage_date = '2011-05-01'
        self.nl2.lease_execution_date = '2011-05-03'

        self.store.commit()

        r = Report(trans_obj='acquisition')
        r.buildReport()

        self.assertEqual(r.avg_time_on_market, Dec('1.5'))
Beispiel #15
0
    def test_total_recovery(self):
        """
        Tracks the total dollars recovered from dispositions
        """

        self.build_disp()

        self.sl1.actual_recovery = 1000.67
        self.sl2.actual_recovery = 4000.14

        self.s1.sale_price = 20000.00
        self.store.commit()

        r = Report(trans_obj='disposition')
        r.buildReport()

        self.assertEqual(r.total_recovery, Dec('25000.81'))
Beispiel #16
0
    def persist(self,reportd,mail_message):
            boats = Boat.all()
            boats.filter("passcode = ", reportd['passcode'])
            boats.filter("active =", True)

            emaillog=EmailLog()
            emaillog.rawemail=db.Text(mail_message.original.as_string())

            #TODO: I don't like this way of figuring out if we got any rows
            count=0
            for boat in boats:
                if (boat.key().name()==string.upper(reportd['boat'])):
                    count=count+1
                    break # Return the first one
                else:
                    boat=None

            if (count <1 or boats == None or boat == None):
                logging.error("Unable to persist report could not find boat "+string.upper(reportd['boat'])+":"+reportd['passcode'])
            else:
                report=Report(parent=boat)
                report.lat=reportd['lat']
                report.lon=reportd['lon']
                payload={
                         'comment' : reportd['comment']
                        }
                report.setPayload(payload)
                report.put()
                emaillog.report_ref=report
                reportd['time']=strftime("%Y/%m/%d %H:%M", gmtime())
                self.outbound(boat,reportd)

            emaillog.put()
Beispiel #17
0
def get_meeting_report():

    cc = CalendarConnection()
    meetings = cc.meetings
    #  _print_calendar_results_as_json(meetings)

    rep = Report(meetings)

    data = rep.printable_data
    rep.write_report_html(data)
    #  ihm_slack.post_report_to_slack(*data)
    #
    meetings_list = rep.meetings_list
    ihm_db._add_row_to_db(meetings_list)
    ihm_db.write_db_to_csv()
    ihm_db.write_csv_to_json()

    generate_charts(data)
    open_charts_in_browser()
Beispiel #18
0
    def test_meet_bov_recovery(self):
        """
        Test percentage of bov recovery that meet or exceeded expectations
        """

        self.build_disp()

        self.sl1.actual_recovery = 1000
        self.sl2.actual_recovery = 500

        self.sl1.expected_recovery = 700
        self.sl2.expected_recovery = 600
        
        self.store.commit()

        r = Report(trans_obj='disposition')
        r.buildReport()

        self.assertEqual(r.meet_bov_recovery, Dec('50.0'))
Beispiel #19
0
    def test_market_survey_ontime(self):
        """
        Test that the market survey on time percentage is correct
        """
        self.t1.engage_date = '2011-05-01'
        self.t2.engage_date = '2011-05-01'

        self.nl1.market_survey = True
        self.nl1.market_survey_date = '2011-05-03'

        self.nl2.market_survey = True
        self.nl2.market_survey_date = '2011-06-15'

        self.store.commit()

        r = Report(trans_obj='acquisition')
        r.buildReport()

        self.assertEqual(r.market_survey_ontime, Dec('50.0'))
Beispiel #20
0
    def test_bov_on_time(self):
        """
        Number of BOVs compared to BOVs ontime
        """

        self.build_disp()

        self.sl1.bov_ontime = True
        self.sl2.bov_ontime = False
        self.sl3.bov_ontime = True

        self.sl1.bov_date = '2011-05-11'
        self.sl2.bov_date = '2011-05-11'
        self.sl3.bov_date = '2011-05-11'

        self.store.commit()

        r = Report(trans_obj='disposition')
        r.buildReport()

        self.assertEqual(r.bov_on_time, Dec('66.67'))
Beispiel #21
0
    def test_avg_deal_close(self):
        """
        Tracks the days bewteen engagement date and deal closing
        """

        self.t1.engage_date = '2011-05-01'
        self.nl1.lease_execution_date = '2011-05-02'

        self.t2.engage_date = '2011-05-01'
        self.nl2.lease_execution_date = '2011-05-03'

        self.store.commit()
        
        r = Report(trans_obj='acquisition')
        r.buildReport()

        self.assertEqual(r.avg_days_deal_close, Dec('1.5'))

       
        #missing data from one transaction, result should not be affectd.

        self.t3.engage_date = '2011-05-01'
        self.store.commit()

        r = Report(trans_obj='acquisition')
        r.buildReport()
        
        self.assertEqual(r.avg_days_deal_close, Dec('1.5'))
Beispiel #22
0
    def test_meet_bov_timing(self):
        """
        Test percentage of bov timing that meet or exceeded expectations
        """
        
        self.build_disp()

        self.sl1.bov_expected_timing = 10
        self.sl1.bov_actual_timing = 9

        self.sl2.bov_expected_timing = 10
        self.sl2.bov_actual_timing = 10
        
        self.sl3.bov_expected_timing = 10
        self.sl3.bov_actual_timing = 11

        self.store.commit()

        r = Report(trans_obj='disposition')
        r.buildReport()

        self.assertEqual(r.meet_bov_timing, Dec('66.67'))

        self.sl3.bov_actual_timing = 10
        self.store.commit()
        
        r = Report(trans_obj='disposition')
        r.buildReport()
        
        self.assertEqual(r.meet_bov_timing, Dec('100.0'))
Beispiel #23
0
    def get(self, report_id=None):
        report = None
        if report_id:
            report = Report.report_get(report_id)

        if not report:
            report = {
                'title' : '',
                'summary' : '',
                'url': '',
                'img' : 0,
            }
        self.render(report=report)
Beispiel #24
0
    def test_construction_exceptions(self):

        states = Report.states

        dp = DropPoint(1, lat=0, lng=0, level=1)

        with self.assertRaisesRegexp(ValueError, "drop point"):
            Report(None)

        with self.assertRaisesRegexp(ValueError, "state"):
            Report(dp)

        time_in_future = datetime.today() + timedelta(hours=1)

        with self.assertRaisesRegexp(ValueError, "future"):
            Report(dp, time=time_in_future, state=states[0])

        with self.assertRaisesRegexp(ValueError, "not a datetime"):
            Report(dp, time="foo", state=states[0])

        with self.assertRaisesRegexp(ValueError, "state"):
            Report(dp, state="whatever")
Beispiel #25
0
    def test_sqft_reduction(self):
        """
        testing the net difference btween old sqft and new sqft
        """

        self.nl1.old_sqft = 100
        self.nl1.new_sqft = 75
        
        self.nl2.old_sqft = 400
        self.nl2.new_sqft = 200
        
        self.store.commit()

        r = Report(trans_obj='acquisition')
        r.buildReport()

        self.assertEqual(r.sqft_reduction, 225)

        #missing data from one transaction, result should not be affected.

        self.nl3.old_sqft = 400
        self.store.commit()

        self.assertEqual(r.sqft_reduction, 225)
Beispiel #26
0
    def map(self):
        track=[]
        marker=None
        boatid=string.upper(self.request.get('boat'))
        showmarkers=string.upper(self.request.get('markers'))
        showinfo=string.upper(self.request.get('popup'))
        zoom=self.request.get('zoom')
        #TODO: Validate input
        if (zoom==''):
            zoom=6
        if (showmarkers==''):
            showmarkers='true'
        if (showinfo==''):
            showinfo='false'
        boats=Boat.all()
        # TODO: Is there a better way to filter this? We can't use key_name because we don't know ancestor
        for boat in boats:
            logging.error(boat.key().name() + " vs " + boatid)
            if (boat.key().name()!=boatid):
                boat=None;
            else:
                break
        if (boats != None and boat!=None):
            reports=Report.all()
            reports.ancestor(boat)
            reports.order("created")
            for report in reports:
                #logging.error(report.payload)
                entry={}
                entry['date']=report.created.strftime("%Y-%m-%d %H:%M:%S")
                entry['lat']='%.2f' % (report.lat)
                entry['lon']='%.2f' % (report.lon)
                entry['boat']=boat.key().name()
                comment=''
                if (report.payload!=None and report.payload!=''):
                    comment=report.getPayload()['comment']
                entry['comment']=comment
                track.append(entry)
                marker=entry # This is the last one

        values={}
        values['marker']=marker
        values['track']=track
        values['zoom']=zoom
        values['showmarkers']=string.lower(showmarkers)
        values['showinfo']=string.lower(showinfo)
        return self.render('map',values)
Beispiel #27
0
 def get_report(self):
     cnds = self.navb.conditions()
     report = {}
     try:
         rcd = Report.get_report(self.navb.kw.get('tbl'),
                                 self.navb.kw.get('id'))
         #print "DB REDORD: ", rcd
         if rcd:
             try:
                 report = parse_report_cols(rcd)
                 #print "REPORT: ", report
             except Exception, e:
                 #print e
                 pass
     except Exception, e:
         #print "ERROR READING REPORT: ", e
         pass
Beispiel #28
0
    def test_build_report_acq_expressions(self):
        """
        I test that we can build some basic expressions on the acq obj
        """
        t1 = self.fstore(Transaction())  
        nl1 = self.fstore(NewLease())
        self.store.commit()
        t1.company_id = self.comp1.id
        t1.trans_type = 'New Lease'
        t1.trans_manager = 3
        nl1.old_sqft = 100
        nl1.trans_id = t1.id
        
        t2 = self.fstore(Transaction())
        nl2 = self.fstore(NewLease())
        self.store.commit()
        t2.company_id = self.comp1.id
        t2.trans_type = 'New Lease'
        t2.trans_manager = 1
        nl2.old_sqft = 200
        nl2.trans_id = t2.id

        t3 = self.fstore(Transaction())
        le1 = self.fstore(LeaseExtension())
        self.store.commit()
        t3.company_id = self.comp1.id
        t3.trans_type = 'Lease Extension'
        t3.trans_manager = 1

        le1.market_survey_date = '05-15-2011'
        le1.old_sqft = 100
        le1.trans_id = t3.id
        

        self.store.commit()
        
        # ONE FILTER == CONSTRAINT
        filters = {
            'objects':['New Lease'],
            'fields':['nl2'], 
            'constraints':['=='], 
            'args':['100'],
            'operators':['none']}


        r = Report(companies=[self.comp1.id], filters=filters, trans_obj='acquisition')
        r.buildReport()
        self.assertEqual(r.trans.count(), 1)

        # TWO FILTERS
        filters = {
            'objects':['New Lease', 'New Lease'],
            'fields':['nl2', 'nl2'], 
            'constraints':['>', '>'], 
            'args':['500', '101'],
            'operators':['none','or']}


        r = Report(companies=[self.comp1.id], filters=filters, trans_obj='acquisition')
        r.buildReport()

        self.assertEqual(r.trans.count(), 1)
        
        
        # FOUR FILTERS TWO OBJECTS
        filters = {
            'objects':['Transaction', 'Transaction', 'New Lease', 'New Lease'],
            'fields':['ttpe', 'tman', 'nl6', 'nl2'], 
            'constraints':['==', '==', '==', '<'], 
            'args':['New Lease', '1', '05-15-2011', '300'],
            'operators':['none','and', 'and', 'and']}

        nl2.market_survey_date = '05-15-2011'
        self.store.commit()

        r = Report(companies=[self.comp1.id], filters=filters, trans_obj='acquisition')
        r.buildReport()

        self.assertEqual(r.trans.count(), 1)
        
        # FOUR FILTERS TWO OBJECTS
        filters = {
            'objects':[
                'Transaction', 'Transaction', 'Transaction', 
                'New Lease', 'Lease Extension', 'New Lease',
                'Lease Extension'],
            'fields':['ttpe', 'ttpe', 'tman', 'nl6', 'le6', 'nl2', 'le2'], 
            'constraints':['==', '==', '==', '==', '==', '<', '<'], 
            'args':['New Lease', 'Lease Extension', '1', '05-15-2011', '05-15-2011', '300', '300'],
            'operators':['none','or', 'and', 'and', 'or', 'and', 'or']}

        r = Report(companies=[self.comp1.id], filters=filters, trans_obj='acquisition')
        r.buildReport()

        self.assertEqual(r.trans.count(), 2)
Beispiel #29
0
    def test_reporting(self):

        states = Report.states

        dp = DropPoint(1, lat=0, lng=0, level=1)

        first_time = datetime.today()
        first_state = states[0]
        first_report = Report(dp, state=first_state, time=first_time)

        db.session.commit()

        self.assertEqual(first_report.time, first_time,
                         "Report creation time not as expected.")

        self.assertEqual(first_report.state, first_state,
                         "Report state not as expected.")

        self.assertEqual(
            dp.reports[0], first_report,
            "First report not first report of associated drop point.")

        self.assertEqual(dp.get_last_report(), first_report,
                         "get_last_report() did not return first report.")

        self.assertEqual(dp.get_last_state(), first_state,
                         "get_last_state() did not return state.")

        self.assertEqual(dp.get_total_report_count(), 1,
                         "get_total_report_count() not as expected.")

        self.assertEqual(dp.get_new_report_count(), 1,
                         "get_new_report_count() not as expected.")

        self.assertEqual(
            dp.get_new_reports()[0], first_report,
            "First element returned by get_new_reports() not the report wanted."
        )

        second_time = datetime.today()
        second_state = states[-1]
        second_report = Report(dp, state=second_state, time=second_time)

        db.session.commit()

        self.assertEqual(second_report.state, second_state,
                         "Report state not as expected.")

        self.assertEqual(
            dp.reports[-1], second_report,
            "Second report not last report of associated drop point.")

        self.assertEqual(dp.get_last_report(), second_report,
                         "get_last_report() did not return second report.")

        self.assertEqual(dp.get_last_state(), second_state,
                         "get_last_state() did not return second state.")

        self.assertEqual(dp.get_total_report_count(), 2,
                         "get_total_report_count() not as expected.")

        self.assertEqual(dp.get_new_report_count(), 2,
                         "get_new_report_count() not as expected.")

        self.assertEqual(
            dp.get_new_reports()[0], second_report,
            "First element returned by get_new_reports() not the report wanted."
        )
Beispiel #30
0
    def test_construction(self):

        actions = Visit.actions

        dp = DropPoint(1, lat=0, lng=0, level=1)

        first_time = datetime.today()
        first_action = actions[1]
        first_visit = Visit(dp, action=first_action, time=first_time)

        db.session.commit()

        self.assertEqual(
            first_visit.time, first_time,
            "Visit creation time not as expected."
        )

        self.assertEqual(
            first_visit.action, first_action,
            "Visit action not as expected."
        )

        self.assertEqual(
            dp.visits[0], first_visit,
            "First visit not first visit of associated drop point."
        )

        self.assertEqual(
            dp.get_last_visit(), first_visit,
            "get_last_visit() did not return first visit."
        )

        report_time = datetime.today()
        report_state = Report.states[0]
        report = Report(dp, state=report_state, time=report_time)

        second_time = datetime.today()
        second_action = actions[0]
        second_visit = Visit(dp, action=second_action, time=second_time)

        db.session.commit()

        self.assertEqual(
            second_visit.action, second_action,
            "Visit action not as expected."
        )

        self.assertEqual(
            dp.visits[-1], second_visit,
            "Second visit not last visit of associated drop point."
        )

        self.assertEqual(
            dp.get_last_visit(), second_visit,
            "get_last_visit() did not return second visit."
        )

        self.assertNotEqual(
            dp.get_last_state(), report_state,
            "get_last_state() returns unchanged state after visit."
        )

        self.assertEqual(
            dp.get_new_report_count(), 0,
            "get_new_report_count() nonzero after visit."
        )

        self.assertFalse(
            dp.get_new_reports(),
            "get_new_reports() returned something not False after visit."
        )

        self.assertEqual(
            dp.get_last_report(), report,
            "get_last_report() did not return report after visit."
        )

        self.assertEqual(
            dp.get_total_report_count(), 1,
            "get_total_report_count() not as expected after visit."
        )
Beispiel #31
0
 def report(self, state=None, time=None):
     Report(self, time=time, state=state)
Beispiel #32
0
    def POST(self):
        i = web.input(comp_cbox=[], div_cbox=[], reg_cbox=[], area_cbox=[])
        
        reports = []
        
        # COMBINED REPORT
        if i.display == 'Combined':
            report = Report(client_id=i.client_id, companies=i.comp_cbox, divisions=i.div_cbox, regions=i.reg_cbox, areas=i.area_cbox, trans_obj=i.trans_obj, fiscal=i.fiscal)
            report.buildReport()
            reports.append(report)

        # SEPERATE REPORT
        else:
            for cid in i.comp_cbox:
                report = Report(client_id=i.client_id, companies=[cid], trans_obj=i.trans_obj, fiscal=i.fiscal)
                report.buildReport()
                reports.append(report)

            for did in i.div_cbox:
                report = Report(client_id=i.client_id, divisions=[did], trans_obj=i.trans_obj, fiscal=i.fiscal)
                report.buildReport()
                reports.append(report)
            
            for rid in i.reg_cbox:
                report = Report(client_id=i.client_id, regions=[rid], trans_obj=i.trans_obj, fiscal=i.fiscal)
                report.buildReport()
                reports.append(report)

            for aid in i.area_cbox:
                report = Report(client_id=i.client_id, areas=[aid], trans_obj=i.trans_obj, fiscal=i.fiscal)
                report.buildReport()
                reports.append(report)



        if i.trans_obj == 'acquisition':
            if i.export == 'PDF':
                html = jrender('/dashboard/acq_report_pdf.html', {'reports':reports})
                tmp = tempfile.TemporaryFile('w+b', prefix='tmp', suffix='.pdf')
                pdf = pisa.CreatePDF(str(html), tmp, '/var/www/webapps/static/')
                
                tmp.seek(0, 2)
                filesize = tmp.tell()
                tmp.seek(0)

                if pdf.err:
                    print 'PDF ERROR'
                if pdf.warn:
                    print 'WARNING'

                web.header('Content-Length', filesize)
                web.header('Content-Type', 'application/pdf')
                web.header('Content-Disposition', 'attachment; filename=%s' % 'Report.pdf')
                return tmp.read()

            if i.export == 'XLS':
                sheets = []
                for r in reports:
                    sheets.append(r.buildExcelData())

                xls = make_excel(sheets)

                xls.seek(0, 2)
                filesize = xls.tell()
                xls.seek(0)
                
                web.header('Content-Length', filesize)
                web.header('Content-Type', 'application/excel')
                web.header('Content-Disposition', 'attachment; filename=%s' % 'Report.xls')

                return xls.read()


                    


            return jrender('/dashboard/acq_report.html', {'reports':reports})
        else:
            return jrender('/dashboard/disp_report.html', {'reports':reports})
Beispiel #33
0
def read():
    data = DataAccess.fetch_all('select * from report', [])
    return jsonify([Report(*a) for a in data])
Beispiel #34
0
    def test_build_report_transactions_expressions(self):
        """
        I test that we can build some basic expressions on the transaction obj
        """
        
        t1 = self.fstore(Transaction())
        t1.company_id = self.comp1.id
        t1.trans_type = 'New Lease'
        t1.trans_manager = 3

        t2 = self.fstore(Transaction())
        t2.company_id = self.comp1.id
        t2.trans_type = 'New Lease'
        t2.trans_manager = 1

    
        t3 = self.fstore(Transaction())
        t3.company_id = self.comp1.id

        self.store.commit()
        
        # ONE FILTER == CONSTRAINT
        filters = {
            'objects':['Transaction'],
            'fields':['ttpe'], 
            'constraints':['=='], 
            'args':['New Lease'],
            'operators':['none']}


        r = Report(companies=[self.comp1.id], filters=filters)
        r.buildReport()
        
        self.assertEqual(r.trans.count(), 2)
        # TWO FILTERS
        filters = {
            'objects':['Transaction', 'Transaction'],
            'fields':['ttpe', 'tman'], 
            'constraints':['==', '=='], 
            'args':['New Lease', '1'],
            'operators':['none','and']}

        r = Report(companies=[self.comp1.id], filters=filters)
        r.buildReport()

        self.assertEqual(r.trans.count(), 1)
        
        # THREE FILTERS NO RESULTS
        filters = {
            'objects':['Transaction', 'Transaction', 'Transaction'],
            'fields':['ttpe', 'tman', 'eda'], 
            'constraints':['==', '==', '=='], 
            'args':['New Lease', '1', '05-15-2011'],
            'operators':['none','and', 'and']}

        r = Report(companies=[self.comp1.id], filters=filters)
        r.buildReport()

        self.assertEqual(r.trans.count(), 0)
        
        
        # THREE FILTERS
        filters = {
            'objects':['Transaction', 'Transaction', 'Transaction'],
            'fields':['ttpe', 'tman', 'eda'], 
            'constraints':['==', '==', '=='], 
            'args':['New Lease', '1', '05-15-2011'],
            'operators':['none','and', 'and']}
        
        t2.engage_date = '05-15-2011'
        self.store.commit()

        r = Report(companies=[self.comp1.id], filters=filters)
        r.buildReport()
        self.assertEqual(r.trans.count(), 1)

        
        # SINGLE FILTER < CONSTRAINT
        filters = {
            'objects':['Transaction'],
            'fields':['eda'], 
            'constraints':['<'], 
            'args':['05-20-2011'],
            'operators':['none']}
        
        r = Report(companies=[self.comp1.id], filters=filters)
        r.buildReport()
        
        self.assertEqual(r.trans.count(), 1)
        self.assertEqual(r.trans.one().trans_manager, 1)
Beispiel #35
0
    def get(self):
        report_list = Report.reports()

        self.render(report_list=report_list)
Beispiel #36
0
    def get(self):
        li = Report.reports()

        self.render(li=li)
Beispiel #37
0
    def post(self):
        o = self.json
        o.__dict__.update(is_del=DEL_FLAG.TRUE)
        Report.report_upsert(o)

        self.finish()
Beispiel #38
0
    def post(self):
        o = self.json
        Report.report_upsert(o)

        self.finish(o.__dict__)