main.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. # -*- coding: utf-8 -*-
  2. from openerp import http
  3. from openerp.http import request
  4. from werkzeug.wrappers import Response
  5. from werkzeug.datastructures import Headers
  6. from gzip import GzipFile
  7. from StringIO import StringIO as IO
  8. import json
  9. import logging
  10. LOGGER = logging.getLogger(__name__)
  11. GZIP_COMPRESSION_LEVEL = 9
  12. class PrintEngineController(http.Controller):
  13. '''
  14. '''
  15. def make_info_log(self, log):
  16. LOGGER.info('[INFO] {}'.format(log))
  17. '''
  18. Make GZIP to JSON response
  19. '''
  20. def make_gzip_response(self, data=None, status=200):
  21. gzip_buffer = IO()
  22. with GzipFile(mode='wb', compresslevel=GZIP_COMPRESSION_LEVEL, fileobj=gzip_buffer) as gzip_file:
  23. gzip_file.write(json.dumps(data))
  24. contents = gzip_buffer.getvalue()
  25. gzip_buffer.close()
  26. headers = Headers()
  27. headers.add('Content-Encoding', 'gzip')
  28. headers.add('Vary', 'Accept-Encoding')
  29. headers.add('Content-Length', len(contents))
  30. return Response(contents, status=status, headers=headers, content_type='application/json')
  31. '''
  32. '''
  33. @http.route('/print_engine/update', auth='user', methods=['POST'], cors='*')
  34. def printers_update(self, **kw):
  35. printer_obj = request.env['print.engine.printer']
  36. printer_ids = printer_obj.search([])
  37. assert len(printer_ids) == 0
  38. print(kw)
  39. '''
  40. '''
  41. def get_sockets(self):
  42. socket_obj = request.env['print.engine.socket']
  43. return [{
  44. 'protocol': socket.protocol,
  45. 'host': socket.host,
  46. 'port': socket.port,
  47. 'path': socket.path
  48. } for socket in socket_obj.search([('active', '=', True)])]
  49. '''
  50. '''
  51. @http.route('/print_engine/sockets', auth='user', methods=['GET'], cors='*')
  52. def printers_get_sockets(self, **kw):
  53. return self.make_gzip_response({
  54. 'sockets': self.get_sockets()
  55. })