示例#1
0
文件: views.py 项目: yoser174/ciremai
def order_results_print(request,pk):
    order = Orders.objects.get(pk=pk)
    
    input_file_header = settings.RESULT_REPORT_FILE_HEADER
    input_file_main = settings.RESULT_REPORT_FILE_MAIN
    input_file = settings.RESULT_REPORT_FILE
    
    ts = datetime.today().strftime('%Y%m%d%H%M%S')
    parameters ={'ORDER_ID': pk}
    output = settings.MEDIA_ROOT+'\\report\\'+str(order.number)+'_'+ts
    con = settings.JASPER_CONN
    
    jasper = JasperPy()

    jasper.compile(input_file_header)
    jasper.compile(input_file_main)
    
    jasper.process(
                input_file,
                output_file=output,
                format_list=["pdf"],
                parameters=parameters,
                db_connection=con,
                locale='en_US',  
                resource= settings.RESULT_REPORT_DIR
            )

    base_url =  request.build_absolute_uri('/')[:-1].strip("/")
    url_pdf = base_url+'/media/report/'+str(order.number)+'_'+ts+'.pdf'
    
    # save report URL
    oe, _created = models.OrderExtended.objects.get_or_create(order_id=pk)

    oe.result_pdf_url = url_pdf
    oe.save()
    
    # set validation printed
    if request.user.is_authenticated():
        order_res = models.OrderResults.objects.filter(order_id=pk,validation_status=3).update(validation_status=4,print_user=str(request.user),print_date=datetime.now())
    
    

    template = 'middleware/result_pdf_preview.html'
    context = {'order':order,'url_pdf' : url_pdf}
    return render(request,template,context)
示例#2
0
def do_print_pdf(request):
    post_id = request.matchdict['id']
    input_file = c_report_paths['jasper'] + '/hello-world.jrxml'

    jasper = JasperPy()
    jasper.compile(input_file)
    jasper.process(input_file, c_report_paths['pdf'], format_list=['pdf'])

    response = FileResponse(c_report_paths['pdf'] + '/hello-world.pdf',
                            request=request)
    response.headers['Content-Disposition'] = 'inline; filename={}'.format(
        c_report_paths['pdf'] + '/hello-world.pdf')
    response.headers['Content-Type'] = 'application/pdf'

    # delete generated pdf file
    if os.path.exists(c_report_paths['pdf'] + '/hello-world.pdf'):
        os.remove(c_report_paths['pdf'] + '/hello-world.pdf')

    return response
示例#3
0
 def get_inoive_pdf(self, InvoiceNumber):
     input_file = os.path.dirname(os.path.abspath(
         __file__)) + '/Reports/RptFiles/RptInvoicePrint.jrxml'
     output = os.path.dirname(os.path.abspath(
         __file__)) + '/Reports/OutPutFiles/' + InvoiceNumber
     con = {
         'driver': 'mysql',
         'username': '******',
         'password': '******',
         'host': 'localhost',
         'database': 'imsapp',
         'port': '3306'
     }
     jasper = JasperPy()
     jasper.process(input_file,
                    output_file=output,
                    format_list=["pdf"],
                    db_connection=con,
                    locale='en_US',
                    parameters={'InvoiceNO': str(InvoiceNumber)})
     return output
def json_to_reports():
    users = {'results': [{"name": "User {}".format(i)} for i in range(1, 11)]}
    input_file = os.path.join(CURRENT_DIR, 'users-list.jrxml')

    with open(JSON_FILENAME, 'w') as f:
        json.dump(users, f)

    json_query = 'results.name'

    jasper = JasperPy()
    jasper.process(
        input_file,
        output_file=OUTPUT_FILENAME,
        format_list=['pdf', 'docx', 'html'],
        parameters={},
        db_connection={
            'data_file': JSON_FILENAME,
            'driver': 'json',
            'json_query': json_query,
        },
        locale='pt_BR'
    )
    print('Files available in /tmp/ directory.')
示例#5
0
def getReportDatabase():
    try:
        now = datetime.datetime.now()
        datetimeStr = now.strftime('%Y%m%d_%H%M%S%f')

        isSuccess = True
        reasonCode = 200
        reasonText = ""

        dataInput = request.json
        paramList = ['report_name', "param"]
        paramCheckStringList = ['report_name']

        msgError = checkParamDataInput(dataInput, paramList,
                                       paramCheckStringList)
        if msgError != None:
            return jsonify(msgError)

        reportName = dataInput['report_name']
        param = dataInput['param']

        input_file = '{}/report/{}.jrxml'.format(
            os.path.dirname(os.path.abspath(__file__)), reportName)
        compile_file = '{}/report/{}.jasper'.format(
            os.path.dirname(os.path.abspath(__file__)), reportName)
        output_file = '{}/output/{}'.format(
            os.path.dirname(os.path.abspath(__file__)), datetimeStr)
        resource_file = '{}/font/THSarabunPSK.jar'.format(
            os.path.dirname(os.path.abspath(__file__)))

        con = {
            'driver':
            'generic',
            'jdbc_driver':
            'com.microsoft.sqlserver.jdbc.SQLServerDriver',
            'jdbc_url':
            'jdbc:sqlserver://{};databaseName={}'.format(
                mssql_server, mssql_database),
            'username':
            mssql_user,
            'password':
            mssql_password
        }

        jasper = JasperPy()
        jasper.process(compile_file,
                       output_file=output_file,
                       format_list=["pdf"],
                       parameters=param,
                       db_connection=con,
                       locale='en_US',
                       resource=resource_file)

        with open(output_file + '.pdf', "rb") as pdf_file:
            encoded_string = base64.b64encode(pdf_file.read())

        os.remove(output_file + '.pdf')
        errColumns = ['isSuccess', 'reasonCode', 'reasonText', 'pdf_base64']
        errData = [(isSuccess, reasonCode, reasonText, encoded_string)]

        return jsonify(toJsonOne(errData, errColumns))
    except Exception as e:
        isSuccess = False
        reasonCode = 500

        errColumns = ['isSuccess', 'reasonCode', 'reasonText']
        errData = [(isSuccess, reasonCode, str(e))]

        return jsonify(toJsonOne(errData, errColumns))
示例#6
0
def getReportByJSONBase64():
    try:
        now = datetime.datetime.now()
        datetimeStr = now.strftime('%Y%m%d_%H%M%S%f')

        isSuccess = True
        reasonCode = 200
        reasonText = ""

        dataInput = request.json
        paramList = ['report_name', 'data_json']
        paramCheckStringList = ['report_name', 'data_json']

        msgError = checkParamDataInput(dataInput, paramList,
                                       paramCheckStringList)
        if msgError != None:
            return jsonify(msgError)

        dataJson = dataInput['data_json']
        reportName = dataInput['report_name']

        input_file = '{}/report/{}.jrxml'.format(
            os.path.dirname(os.path.abspath(__file__)), reportName)
        compile_file = '{}/report/{}.jasper'.format(
            os.path.dirname(os.path.abspath(__file__)), reportName)
        output_file = '{}/output/{}'.format(
            os.path.dirname(os.path.abspath(__file__)), datetimeStr)
        data_file = '{}/data/data_tmp{}.json'.format(
            os.path.dirname(os.path.abspath(__file__)), datetimeStr)
        resource_file = '{}/font/THSarabunPSK.jar'.format(
            os.path.dirname(os.path.abspath(__file__)))

        file = codecs.open(data_file, "w", "utf-8")
        file.write(json.dumps(dataJson[0]))
        # file.write(str(dataJson))
        file.close()
        con = {
            'data_file': data_file,
            'driver': 'json',
            'json_query': 'data',
        }

        jasper = JasperPy()
        # jasper.compile(input_file)
        jasper.process(compile_file,
                       output_file=output_file,
                       format_list=['pdf'],
                       parameters={},
                       db_connection=con,
                       locale='en_US',
                       resource=resource_file)

        with open(output_file + '.pdf', "rb") as pdf_file:
            encoded_string = base64.b64encode(pdf_file.read())

        os.remove(output_file + '.pdf')
        os.remove(data_file)
        errColumns = ['isSuccess', 'reasonCode', 'reasonText', 'pdf_base64']
        errData = [(isSuccess, reasonCode, reasonText, encoded_string)]

        return jsonify(toJsonOne(errData, errColumns))
    except Exception as e:
        isSuccess = False
        reasonCode = 500

        errColumns = ['isSuccess', 'reasonCode', 'reasonText']
        errData = [(isSuccess, reasonCode, str(e))]

        return jsonify(toJsonOne(errData, errColumns))
示例#7
0
class TestJasperPy(TestCase):

    def setUp(self):
        self.input_file = 'examples/hello_world.jrxml'
        self.jasper = JasperPy()

    def test_compile(self):
        self.assertRaises(NameError, self.jasper.compile, False)
        self.assertEqual(self.jasper.compile(self.input_file), 0)

    def test_process(self):
        self.assertRaises(NameError, self.jasper.process, False)

        # test invalid format input. Must be list ['pdf']
        kwargs = {
            'input_file': self.input_file,
            'format_list': 'pdf'
        }
        self.assertRaises(NameError, self.jasper.process, **kwargs)

        # test invalid input format
        kwargs = {
            'input_file': self.input_file,
            'format_list': 5
        }
        self.assertRaises(NameError, self.jasper.process, **kwargs)

        # test invalid report format
        kwargs = {
            'input_file': self.input_file,
            'format_list': ['mp3']
        }
        self.assertRaises(NameError, self.jasper.process, **kwargs)

        # test
        self.assertEqual(
            self.jasper.process(self.input_file,
                                format_list=['pdf']), 0)

    def test_list_parameters(self):
        self.input_file = 'examples/hello_world_params.jrxml'
        self.assertRaises(NameError, self.jasper.list_parameters, False)
        self.assertEqual(self.jasper.list_parameters(self.input_file),
                         {
                             'myString': ['java.lang.String', ''],
                             'myInt': ['java.lang.Integer', ''],
                             'myDate': ['java.util.Date', ''],
                             'myImage': ['java.awt.Image',
                                         'This is the description'
                                         ' of parameter myImage']
                         })

    def test_execute(self):
        self.assertEqual(self.jasper.execute(), 0)

        self.jasper.path_executable = ''
        self.assertRaises(NameError, self.jasper.execute, False)


    def test_subreports(self):
        input_file_header = 'examples/subreports/header.jrxml'

        input_file_details = 'examples/subreports/details.jrxml'

        input_file_main = 'examples/subreports/main.jrxml'

        self.input_file = 'examples/subreports/main.jasper'

        data_file = 'examples/subreports/contacts.xml'


        self.jasper.compile(input_file_header)
        self.jasper.compile(input_file_details)
        self.jasper.compile(input_file_main)

        self.assertEqual(
            self.jasper.process(
                self.input_file,
                format_list=["pdf"],
                parameters={},
                db_connection={
                    'data_file': data_file,
                    'driver': 'xml',
                    'xml_xpath': '"/"',
                },
                locale='pt_BR',  # LOCALE Ex.:(en_US, de_GE)
                resource='examples/subreports/'
            ), 0)

    def test_jsonql(self):
        self.input_file = 'examples/jsonql.jrxml'

        data_file = 'examples/contacts.json'

        self.assertEqual(
            self.jasper.process(
                self.input_file,
                format_list=["pdf"],
                parameters={},
                db_connection={
                    'data_file': data_file,
                    'driver': 'jsonql',
                    'jsonql_query': 'contacts.person',
                },
                locale='pt_BR',  # LOCALE Ex.:(en_US, de_GE)
            ), 0)

    def test_csv(self):
        self.input_file = 'examples/csvMeta.jrxml'

        data_file = 'examples/csvExampleHeaders.csv'

        self.assertEqual(
            self.jasper.process(
                self.input_file,
                format_list=["pdf"],
                parameters={},
                db_connection={
                    'data_file': data_file,
                    'driver': 'csv',
                    'csv_charset': 'utf8',
                    'csv_field_del': '|',
                    'csv_record_del': '\r\n',
                    #'csv_first_row': True,
                    'csv_columns': 'Name,Street,City,Phone'
                },
                locale='en_US',  # LOCALE Ex.:(en_US, de_GE)
            ), 0)
示例#8
0
class TestJasperPy(TestCase):
    def setUp(self):
        self.input_file = 'examples/hello_world.jrxml'
        self.jasper = JasperPy()

    def test_compile(self):
        self.assertRaises(NameError, self.jasper.compile, False)
        self.assertEqual(self.jasper.compile(self.input_file), 0)

    def test_process(self):
        self.assertRaises(NameError, self.jasper.process, False)

        # test invalid format input. Must be list ['pdf']
        kwargs = {'input_file': self.input_file, 'format_list': 'pdf'}
        self.assertRaises(NameError, self.jasper.process, **kwargs)

        # test invalid input format
        kwargs = {'input_file': self.input_file, 'format_list': 5}
        self.assertRaises(NameError, self.jasper.process, **kwargs)

        # test invalid report format
        kwargs = {'input_file': self.input_file, 'format_list': ['mp3']}
        self.assertRaises(NameError, self.jasper.process, **kwargs)

        # test
        self.assertEqual(
            self.jasper.process(self.input_file,
                                format_list=['pdf', 'odt', 'xls']), 0)

    def test_list_parameters(self):
        self.input_file = 'examples/hello_world_params.jrxml'
        self.assertRaises(NameError, self.jasper.list_parameters, False)
        self.assertEqual(
            self.jasper.list_parameters(self.input_file), {
                'myString': ['java.lang.String', ''],
                'myInt': ['java.lang.Integer', ''],
                'myDate': ['java.util.Date', ''],
                'myImage': [
                    'java.awt.Image', 'This is the description'
                    ' of parameter myImage'
                ]
            })

    def test_execute(self):
        self.assertEqual(self.jasper.execute(), 0)

        self.jasper.path_executable = ''
        self.assertRaises(NameError, self.jasper.execute, False)

    def test_subreports(self):
        input_file_header = 'examples/subreports/header.jrxml'

        input_file_details = 'examples/subreports/details.jrxml'

        input_file_main = 'examples/subreports/main.jrxml'

        self.input_file = 'examples/subreports/main.jasper'

        data_file = 'examples/subreports/contacts.xml'

        self.jasper.compile(input_file_header)
        self.jasper.compile(input_file_details)
        self.jasper.compile(input_file_main)

        self.assertEqual(
            self.jasper.process(
                self.input_file,
                format_list=["pdf"],
                parameters={},
                db_connection={
                    'data_file': data_file,
                    'driver': 'xml',
                    'xml_xpath': '"/"',
                },
                locale='pt_BR',  # LOCALE Ex.:(en_US, de_GE)
                resource='examples/subreports/'),
            0)
示例#9
0
class TestJasperPy(TestCase):
    EXAMPLES_DIR = os.path.join(
        os.path.dirname(os.path.abspath(os.path.dirname(__file__))),
        'examples')

    @ignore_warnings
    def setUp(self):
        self.input_file = os.path.join(self.EXAMPLES_DIR, 'hello_world.jrxml')
        self.jasper = JasperPy()

    @ignore_warnings
    def test_compile(self):
        self.assertRaises(NameError, self.jasper.compile, False)
        self.assertEqual(self.jasper.compile(self.input_file), 0)

    @ignore_warnings
    def test_process(self):
        self.assertRaises(NameError, self.jasper.process, False)

        # test invalid format input. Must be list ['pdf']
        kwargs = {'input_file': self.input_file, 'format_list': 'pdf'}
        self.assertRaises(NameError, self.jasper.process, **kwargs)

        # test invalid input format
        kwargs = {'input_file': self.input_file, 'format_list': 5}
        self.assertRaises(NameError, self.jasper.process, **kwargs)

        # test invalid report format
        kwargs = {'input_file': self.input_file, 'format_list': ['mp3']}
        self.assertRaises(NameError, self.jasper.process, **kwargs)

        # test
        kwargs = {'input_file': self.input_file, 'format_list': ['pdf']}
        self.assertEqual(self.jasper.process(**kwargs), 0)

    @ignore_warnings
    def test_subreports(self):

        input_file_header = os.path.join(self.EXAMPLES_DIR, 'subreports',
                                         'header.jrxml')

        input_file_details = os.path.join(self.EXAMPLES_DIR, 'subreports',
                                          'details.jrxml')

        input_file_main = os.path.join(self.EXAMPLES_DIR, 'subreports',
                                       'main.jrxml')

        self.input_file = os.path.join(self.EXAMPLES_DIR, 'subreports',
                                       'main.jasper')

        data_file = os.path.join(self.EXAMPLES_DIR, 'subreports',
                                 'contacts.xml')

        resources = os.path.join(self.EXAMPLES_DIR, 'subreports') + os.sep

        self.jasper.compile(input_file_header)
        self.jasper.compile(input_file_details)
        self.jasper.compile(input_file_main)

        self.assertEqual(
            self.jasper.process(
                self.input_file,
                format_list=["pdf"],
                parameters={},
                db_connection={
                    'data_file': data_file,
                    'driver': 'xml',
                    'xml_xpath': '/',
                },
                locale='pt_BR',  # LOCALE Ex.:(en_US, de_GE)
                resource=resources),
            0)

    @ignore_warnings
    def test_jsonql(self):
        self.input_file = os.path.join(self.EXAMPLES_DIR, 'jsonql.jrxml')

        data_file = os.path.join(self.EXAMPLES_DIR, 'contacts.json')

        self.assertEqual(
            self.jasper.process(
                self.input_file,
                format_list=["pdf"],
                parameters={},
                db_connection={
                    'data_file': data_file,
                    'driver': 'jsonql',
                    'jsonql_query': 'contacts.person',
                    'json_locale': 'es_ES'
                },
                locale='pt_BR',  # LOCALE Ex.:(en_US, de_GE)
            ),
            0)

    @ignore_warnings
    def test_json_process(self):
        self.input_file = os.path.join(self.EXAMPLES_DIR, 'jsonql.jrxml')

        data_file = os.path.join(self.EXAMPLES_DIR, 'contacts.json')

        self.assertEqual(
            self.jasper.process_json(
                self.input_file,
                format_list=["pdf"],
                parameters={},
                connection={
                    'data_file': data_file,
                    'driver': 'jsonql',
                    'jsonql_query': 'contacts.person',
                    'json_locale': 'es_ES',
                    'json_date_pattern': 'yyyy-MM-dd',
                    'json_number_pattern': '#,##0.##"'
                },
                locale='pt_BR',  # LOCALE Ex.:(en_US, de_GE)
            ),
            0)

    @ignore_warnings
    def test_json_url(self):
        self.input_file = os.path.join(self.EXAMPLES_DIR, 'jsonql.jrxml')

        self.assertEqual(
            self.jasper.process_json(
                self.input_file,
                format_list=["pdf"],
                parameters={},
                connection={
                    'url_file':
                    'https://acesseonline-arquivos-publicos.s3.us-east-2.amazonaws.com/contacts.json',
                    'url_method': 'GET',  # POST, PUT
                    # 'url_params': {'param1': 'test'},
                    # 'url_data': {'data_field': 'abc123'},
                    # 'url_header': {'Authorization': 'Bearer xxxxxxxxxxxxxxxxxx'},
                    'driver': 'jsonql',
                    'jsonql_query': 'contacts.person',
                    'json_locale': 'es_ES',
                    'json_date_pattern': 'yyyy-MM-dd',
                    'json_number_pattern': '#,##0.##"'
                },
                locale='pt_BR',  # LOCALE Ex.:(en_US, de_GE)
            ),
            0)

    @ignore_warnings
    def test_csv(self):
        self.input_file = os.path.join(self.EXAMPLES_DIR, 'csvMeta.jrxml')

        data_file = os.path.join(self.EXAMPLES_DIR, 'csvExampleHeaders.csv')

        self.assertEqual(
            self.jasper.process(
                self.input_file,
                format_list=["pdf"],
                parameters={},
                db_connection={
                    'data_file': data_file,
                    'driver': 'csv',
                    'csv_charset': 'utf8',
                    'csv_field_del': '|',
                    'csv_record_del': '\r\n',
                    'csv_columns': 'Name,Street,City,Phone'
                },
                locale='en_US',  # LOCALE Ex.:(en_US, de_GE)
            ),
            0)