Guest User

Untitled

a guest
Nov 15th, 2017
286
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.14 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2.  
  3. import requests
  4. import webbrowser
  5. from datetime import datetime
  6. import hashlib
  7. import os
  8.  
  9.  
  10. # 23-10-2016 Módulo de Jasper Reports.
  11.  
  12. class jasperreports(object):
  13. '''Clase de configuración de informes para Jasper Reports'''
  14.  
  15. def __init__(self, maquina, puerto, recurso):
  16. self.__maquina = maquina
  17. self.__puerto = puerto
  18. self.__recurso = recurso
  19. self.__session = requests.Session()
  20. self.__token = self.__generador_token()
  21.  
  22. def __generador_token(self):
  23. '''Generador de token'''
  24. return hashlib.sha1(os.urandom(128)).hexdigest()
  25.  
  26. def login(self, usuario, passwd):
  27. '''Clase login para acceso a JasperServer'''
  28.  
  29. url = "http://%s:%s/jasperserver/rest_v2/login" % (self.__maquina,
  30. self.__puerto)
  31.  
  32. data = "j_username=%s&j_password=%s" % (usuario, passwd)
  33. header = {"content-type" : "application/x-www-form-urlencoded"}
  34.  
  35. ret = self.__session.post(url, data, headers = header)
  36. self.__cookie = ret.cookies['JSESSIONID']
  37.  
  38. print ret
  39.  
  40. def report(self, path_report, report, format_ = None, params = None):
  41. url = 'http://%s:%s/%s/rest_v2/reports/%s/%s' % (self.__maquina,
  42. str(self.__puerto),
  43. self.__recurso,
  44. path_report,
  45. report)
  46. headers = {"Authorization": "Basic " + self.__token,
  47. "Accept": "application/json",
  48. "Content-Type": "application/xml"}
  49.  
  50. auth = ('jasperadmin', 'jasperadmin')
  51. cookies = dict(cookies=self.__cookie)
  52. ret = self.__session.get(url, headers = headers, auth =
  53. ('jasperadmin', 'jasperadmin'), cookies = cookies)
  54.  
  55. try:
  56. webbrowser.open(ret)
  57. except:
  58. nomfich = 'temp_error_%s.html' % str(datetime.now())
  59. f = open('temp/%s' % nomfich,'w')
  60. f.write(ret.text)
  61. f.close()
  62. webbrowser.open('temp/%s' % nomfich)
  63.  
  64.  
  65. def info(self):
  66. url = 'http://%s:%s/%s/rest_v2/serverInfo' % (self.__maquina,
  67. str(self.__puerto),
  68. self.__recurso)
  69.  
  70. # Se realiza petición de información al servidor JasperServer...
  71. ret = requests.get(url,headers={"accept":"application/json"}).json()
  72.  
  73. # Se recupera información del servidor si todo ha ido bien...
  74. data = { 'dateFormatPattern' : ret['dateFormatPattern'],
  75. 'datetimeFormatPattern' : ret['datetimeFormatPattern'],
  76. 'version' : ret['version'],
  77. 'edition' : ret['edition'],
  78. 'build' : ret['edition']
  79. }
  80.  
  81. # Se devuelven datos.
  82. return data
  83.  
  84. jr = jasperreports("localhost", 8080, "jasperserver")
  85. jr.login('jasperadmin', 'jasperadmin')
  86. jr.report('wshifts/Corporativo', 'usuario', 'jprint')
Add Comment
Please, Sign In to add comment