main.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. # -*- coding: utf-8 -*-
  2. from openerp import http
  3. from werkzeug.wrappers import Response
  4. from werkzeug.datastructures import Headers
  5. from gzip import GzipFile
  6. from StringIO import StringIO as IO
  7. import simplejson as json
  8. import helpers as hp
  9. import logging
  10. LOGGER = logging.getLogger(__name__)
  11. GZIP_COMPRESSION_LEVEL = 9
  12. def make_gzip_response(data=None, status=200):
  13. gzip_buffer = IO()
  14. with GzipFile(mode='wb', compresslevel=GZIP_COMPRESSION_LEVEL, fileobj=gzip_buffer) as gzip_file:
  15. gzip_file.write(json.dumps(data))
  16. value = gzip_buffer.getvalue()
  17. gzip_buffer.close()
  18. headers = Headers()
  19. headers.add('Content-Encoding', 'gzip')
  20. headers.add('Vary', 'Accept-Encoding')
  21. headers.add('Content-Length', len(value))
  22. return Response(value, status=status, headers=headers, content_type='application/json')
  23. class DashboardController2(http.Controller):
  24. @http.route('/dashboard-widgets2', auth='user', methods=['GET', 'POST'])
  25. def getWidgetList(self, **kw):
  26. return make_gzip_response({
  27. 'widgets': hp.get_widget_list(),
  28. })
  29. @http.route('/dashboard-SalesmanObjective', auth='user', methods=['GET', 'POST'])
  30. def getSalesmanObjective(self, **kw):
  31. return make_gzip_response({
  32. 'company': hp.get_company_info(),
  33. 'modules': hp.get_ir_module_widget(),
  34. 'objectives':hp.get_own_objective(),
  35. 'orders':hp.get_pos_order_widget_own(),
  36. 'invoices':hp.get_account_invoice_widget(),
  37. })
  38. @http.route('/dashboard-RankingSalesmanObjective', auth='user', methods=['GET', 'POST'])
  39. def getRankingSalesman(self, **kw):
  40. return make_gzip_response({
  41. 'company': hp.get_company_info(),
  42. 'users': hp.get_user_info(),
  43. 'orders':hp.get_pos_order_widget(),
  44. 'invoices':hp.get_account_invoice_salesman_ranking(),
  45. 'objective':hp.get_dashboard_objective_widget(),
  46. })