예제 #1
0
 def get(self, path, *args):
     model, pk = path.split("/")
     pk, format = pk.split(".")
     
     limit = self.get_argument("limit", None)
     custom_report = self.get_argument("report", None)
     criteria = self.get_argument("criteria", None)
     
     if criteria:
         logging.info("raw criteria:{}".format(criteria))
         #criteria supplied as a list like url.dot?criteria="key1=val1|key2=val2"
         criteria = dict([c.split('=') for c in criteria.strip('"').split('|')])
     
     if limit:
         try:
             limit  = int(self.get_argument("limit", 100))
         except:
             limit = 100
     else:
         limit = -1
     
     logging.debug("model=%s, pk=%s, format=%s, limit=%s, criteria=%s, custom_report=%s" % (model, pk, format, limit, criteria, custom_report))
         
     if format == 'json':
         if pk != 'index':
             #model, pk, collections=[],surrogates=[]
             result = self.application.control.genoa_item(model,pk)
         else:
             #model, criteria=None, offset=None, limit=None, summary=None, order_by=None
             result = self.application.control.genoa_list(model, limit=limit, criteria=criteria)
         
         self.write(json_safe.dumps({"result": result}))  
             
     else:
         fields = []
         items = []
         
         if custom_report == 'entity':
             # Accessed through url http://ims/report/Entity/index.html?report=entity
             fields, items = self.entity_report(model, limit)
         elif custom_report == 'directorships':
             # Accessed through url http://ims/report/E2C/index.html?report=directorships
             fields, items = self.kew_directors_report(model, limit)
         elif pk != 'index':
             result = self.application.control.genoa_item(model,pk)
             fields = ["field","value"]
             items = result.items()
         else:
             result = self.application.control.genoa_list(model, limit=limit, criteria=criteria)
             if result['items']:
                 fields = [c for c in result['items'][0].keys() if c[0] != '_']
                 for item in result['items']:
                     items.append([filter_surrogates(item[key]) for key in fields])
             
         self.render('report_table.html', 
                     fields=fields,
                     items=items,
                     title=model)
예제 #2
0
 def get(self, path, *args):
     model = 'Deal'
     
     pk, output_format = path.split(".")
     
     logging.debug("model=%s, pk=%s, output_format=%s".format(model, pk, output_format))
     
     #Return the whiteclif investor report information for the deal in json format    
     if output_format == 'json':
         collections = ['milestones', 'ic_proposals', 'progress_reports']
         item = self.application.control.genoa_item(model,pk, collections=collections)
         result = item
         result.update({"historical_cashflows": self.application.control.historical_cashflows(item)})
         result.update({"future_cashflows": self.application.control.future_cashflows(item)})
         result.update({"financials_query": self.application.control.query_financials(item)})
         result.update({"deal_irr": self.application.control.deal_irr(item)})
         result.update({"return_projections": self.application.control.query_return_projections(item)})
         result.update({"deal_files": self.application.control.deal_files(item)})
         
         #Get the sum of the cashflows for the specified period
         end_date = self.get_argument("end_date", "20171231")
         end_date = datetime.datetime.strptime(end_date, "%Y%m%d").date()
         start_date = self.get_argument("start_date", "20080101")
         start_date = datetime.datetime.strptime(start_date, "%Y%m%d").date()
         all_cashflows = self.application.control.all_cashflows(item, criteria={'currency':'USD', 'exclude_from_irr':False})
         net_cashflow = sum([row['amount'] for row in all_cashflows['items'] if start_date < row['settlement_date'] < end_date])
         result.update({"period_net_cashflow": net_cashflow})
         
         self.write(json_safe.dumps({"result": result}))
     
     #Return the .xlsx sheet containing the historical and projected cashflows for the deal
     elif output_format == 'xlsx':
         item = self.application.control.genoa_item(model, pk)
         cashflows = self.application.control.all_cashflows(item, criteria={'currency':'USD', 'exclude_from_irr':False})
         if cashflows['items']:
             self.add_header('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
             self.add_header('Content-Disposition','attachment; filename=%s.xlsx' % item['name'])
             workbook = render_irr_xlsx(cashflows['items'])
             self.write(workbook)
     
     self.finish()