Ejemplo n.º 1
0
 def download_file(self, file_id, **kwargs):
     file = file_manager.get_file(file_id)
     if file is None:
         return request.not_found()
     return request.make_response(
         file.data,
         [('Content-Type', 'application/octet-stream'),
          ('Content-Disposition', content_disposition(file.filename))])
Ejemplo n.º 2
0
 def download_outlook_add_in(self, debug=None):
     dir_path = os.path.dirname(os.path.realpath(__file__))
     with open(os.path.join(dir_path, '..', 'bin', 'OutlookAddInInstaller.exe'), 'rb') as installer:
         db = request.db
         base_url = request.env['ir.config_parameter'].get_param('web.base.url')
         return request.make_response(installer.read(),
                         [('Content-Type', 'application/octet-stream'),
                          ('Content-Disposition', content_disposition('OutlookAddInInstaller.exe'))])
Ejemplo n.º 3
0
 def download_document(self, model, filename=None, **kw):
     obj = request.env[model]
     filecontent = obj.get_content()
     response = request.make_response(
         filecontent,
         [('Content-Type', 'application/octet-stream;charset=utf-8;'),
          ('Content-Disposition', content_disposition(filename))])
     return response
Ejemplo n.º 4
0
    def unlisted_wh_items_by_brand_report(self, **post):
        wizard_id = request.env[
            'sale.unlisted.wh.items.by.brand.wizard'].browse(
                [int(post.get('id'))])

        fp = StringIO()
        writer = csv.writer(fp, quoting=csv.QUOTE_ALL)
        columns = ['Part Number', 'Partslink', 'Mfg Label', 'Quantity', 'Cost']
        writer.writerow([name.encode('utf-8') for name in columns])

        sql = ("""
            SELECT TEMPLATE.name, TEMPLATE.partslink, TEMPLATE.mfg_label, RES2.qty, RES1.cost
            FROM (
                SELECT QUANT.product_id, SUM(QUANT.qty) as qty
                FROM stock_quant QUANT
                LEFT JOIN stock_location LOC on QUANT.location_id = LOC.id
                WHERE LOC.usage = 'internal' AND QUANT.qty > 0
                GROUP BY QUANT.product_id
            ) as RES2
            LEFT JOIN
                (SELECT QUANT.product_id, SUM(QUANT.qty) as qty, SUM(QUANT.qty * QUANT.cost) / SUM(QUANT.qty) as cost
                FROM stock_quant QUANT
                LEFT JOIN stock_location LOC on QUANT.location_id = LOC.id
                WHERE LOC.usage = 'internal' AND QUANT.cost > 0 AND QUANT.qty > 0
                GROUP BY QUANT.product_id
            ) as RES1 on RES1.product_id = RES2.product_id
            LEFT JOIN product_product PRODUCT on PRODUCT.id = RES2.product_id
            LEFT JOIN product_template TEMPLATE on TEMPLATE.id = PRODUCT.product_tmpl_id
            WHERE TEMPLATE.type = 'product' AND TEMPLATE.part_number IS NOT NULL
            AND NOT EXISTS (
                SELECT product_tmpl_id 
                FROM product_listing PL
                WHERE PL.product_tmpl_id = TEMPLATE.id AND PL.brand = %s
            )
            ORDER BY RES2.qty DESC
        """)
        cr = request.env.cr
        params = [wizard_id.brand]
        cr.execute(sql, params)
        results = cr.dictfetchall()
        for res in results:
            row = [
                res['name'], res['partslink'] if res['partslink'] else '',
                res['mfg_label'] if res['mfg_label'] else '', res['qty'],
                "{0:.2f}".format(float(res['cost'])) if res['cost'] else '0.00'
            ]
            writer.writerow(row)

        fp.seek(0)
        data = fp.read()
        fp.close()

        today = datetime.today().strftime('%Y-%m-%d')
        valid_fname = '%s_unlisted_wh_items_%s.csv' % (wizard_id.brand.replace(
            ' ', ''), today)
        return request.make_response(
            data, [('Content-Type', 'text/csv'),
                   ('Content-Disposition', content_disposition(valid_fname))])
Ejemplo n.º 5
0
 def document(self, filename, filecontent):
     if not filecontent:
         return request.not_found()
     headers = [
         ("Content-Type", "application/xml"),
         ("Content-Disposition", content_disposition(filename)),
         ("charset", "utf-8"),
     ]
     return request.make_response(filecontent, headers=headers, cookies=None)
Ejemplo n.º 6
0
    def unsold_wh_items_report(self, **post):
        wizard_id = request.env['sale.unsold.wh.items.wizard'].browse(
            [int(post.get('id'))])
        from_date = (
            datetime.now() -
            timedelta(days=wizard_id.days)).strftime('%Y-%m-%d %H:%M:%S')
        store_ids = tuple(wizard_id.store_ids.ids)

        fp = StringIO()
        writer = csv.writer(fp, quoting=csv.QUOTE_ALL)
        columns = ['Part Number', 'Mfg Label', 'Quantity']
        writer.writerow([name.encode('utf-8') for name in columns])

        sql = ("""
            SELECT TEMPLATE.name, TEMPLATE.mfg_label, RES1.qty
            FROM (
                SELECT QUANT.product_id, SUM(QUANT.qty) as qty
                FROM stock_quant QUANT
                LEFT JOIN stock_location LOC on QUANT.location_id = LOC.id
                WHERE LOC.usage = 'internal' AND QUANT.qty > 0 AND QUANT.reservation_id IS NULL
                GROUP BY QUANT.product_id
            ) as RES1
            LEFT JOIN product_product PRODUCT on PRODUCT.id = RES1.product_id
            LEFT JOIN product_template TEMPLATE on TEMPLATE.id = PRODUCT.product_tmpl_id
            WHERE (
            --TEMPLATE.oversized IS NULL OR TEMPLATE.oversized = False) 
            TEMPLATE.part_number IS NOT NULL
            AND PRODUCT.id not in (
                 SELECT SOL.product_id
                 FROM sale_order_line SOL
                 LEFT JOIN sale_order SO on SO.id = SOL.order_id
                 WHERE SO.store_id IN %s
                 AND SO.create_date >= %s)
            ORDER BY RES1.qty DESC
        """)

        cr = request.env.cr
        params = [store_ids, from_date]
        cr.execute(sql, params)
        results = cr.dictfetchall()
        for res in results:
            row = [
                res['name'], res['mfg_label'] if res['mfg_label'] else '',
                res['qty']
            ]
            writer.writerow(row)

        fp.seek(0)
        data = fp.read()
        fp.close()

        today = datetime.today().strftime('%Y-%m-%d')
        valid_fname = 'unsold_wh_items_%s_%s.csv' % (today, wizard_id.id)
        return request.make_response(
            data, [('Content-Type', 'text/csv'),
                   ('Content-Disposition', content_disposition(valid_fname))])
Ejemplo n.º 7
0
 def document(self, filename, filecontent):
     if not filecontent:
         return request.not_found()
     headers = [
         ('Content-Type', 'application/xml'),
         ('Content-Disposition', content_disposition(filename)),
         ('charset', 'utf-8'),
     ]
     return request.make_response(
             filecontent, headers=headers, cookies=None)
Ejemplo n.º 8
0
    def download_shk(self, id, filename=None, **kwargs):
        shk = request.env['intern.hokhau'].browse(int(id))

        return request.make_response(
            shk.generate_shk(),
            headers=
            [('Content-Disposition', content_disposition('hokhau.docx')),
             ('Content-Type',
              'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
              )])
Ejemplo n.º 9
0
    def get_courrier(self, **kwargs):
        """
        URL permettant de renvoyer une action de téléchargement
        :param kwargs: Dictionnaire contenant les valeurs présentes dans la route
        :return: Action de téléchargement du pdf générer
        """
        if not isinstance(kwargs, dict):
            return
        template_id = int(kwargs['courrierid'])
        if not template_id:
            return False
        model_ids = [int(id_str) for id_str in kwargs['modelids'].split(',')]
        models = request.env[kwargs['model']].browse(model_ids)
        template = request.env['of.mail.template'].browse(template_id)
        all_files = []
        for model in models:
            if template.file:
                generated_file = self.print_acrobat(template, model)
            else:
                generated_file = self.print_report(template, model)
            all_files.append(generated_file)
        if len(all_files) > 1:
            """ """
            temp_file = all_files.pop()
            fd, order_pdf = tempfile.mkstemp()
            os.write(fd, temp_file)
            os.close(fd)
            file_paths = [order_pdf]

            for mail_data in all_files:
                fd, mail_pdf = tempfile.mkstemp()
                os.write(fd, mail_data)
                os.close(fd)
                file_paths.append(mail_pdf)

            result_file_path = request.env['report']._merge_pdf(file_paths)
            try:
                result_file = file(result_file_path, "rb")
                generated_file = result_file.read()
                result_file.close()
                for file_path in file_paths:
                    os.remove(file_path)
                os.remove(result_file_path)
            except Exception:
                pass

        pdfhttpheaders = [('Content-Type', 'application/pdf'),
                          ('Content-Length', len(generated_file))]
        response = request.make_response(generated_file,
                                         headers=pdfhttpheaders)
        filename = "%s.%s" % (template.name, "pdf")
        response.headers.add('Content-Disposition',
                             content_disposition(filename))

        return response
Ejemplo n.º 10
0
    def report_download(self, data, token, context=None):
        requestcontent = json.loads(data)
        url, type = requestcontent[0], requestcontent[1]
        try:
            if type == 'qweb-docx_to_x':
                converter = 'docx_to_x'
                default_output_file = 'docx'

                pattern = '/report/docx_to_x/'
                reportname = url.split(pattern)[1].split('?')[0]

                docids = None
                if '/' in reportname:
                    reportname, docids = reportname.split('/')

                if docids:
                    # Generic report:
                    response = self.report_routes(reportname,
                                                  docids=docids,
                                                  converter=converter,
                                                  context=context)
                else:
                    # Particular report:
                    data = url_decode(
                        url.split('?')
                        [1]).items()  # decoding the args represented in JSON
                    response = self.report_routes(reportname,
                                                  converter=converter,
                                                  context=context,
                                                  **dict(data))

                report = request.env[
                    'ir.actions.report']._get_report_from_name(reportname)
                extension = report.output_file or default_output_file
                filename = "%s.%s" % (report.name, extension)

                if docids:
                    ids = [int(x) for x in docids.split(",")]
                    obj = request.env[report.model].browse(ids)
                    if report.print_report_name and not len(obj) > 1:
                        report_name = safe_eval(report.print_report_name, {
                            'object': obj,
                            'time': time
                        })
                        filename = "%s.%s" % (report_name, extension)
                response.headers.add('Content-Disposition',
                                     content_disposition(filename))
                response.set_cookie('fileToken', token)
                return response
        except Exception as e:
            se = _serialize_exception(e)
            error = {'code': 200, 'message': "Odoo Server Error", 'data': se}
            return request.make_response(html_escape(json.dumps(error)))
        return super(ReportControllerExtend,
                     self).report_download(data, token, context)
Ejemplo n.º 11
0
    def get_avatar(self, **kwargs):
        intern_id = kwargs.get('intern', False)
        intern = request.env['intern.intern'].sudo().browse(int(intern_id))
        streamAvatar = BytesIO()
        if intern.avatar is not None:
            streamAvatar = BytesIO(intern.avatar.decode("base64"))

        return request.make_response(
            streamAvatar,
            [('Content-Type', 'image/jpeg'),
             ('Content-Disposition', content_disposition('avatar.jpeg'))])
Ejemplo n.º 12
0
 def download_document(self, model, field, id, filename=None, **kw):
     env = Environment(request.cr, SUPERUSER_ID, {})
     res = env[str(model)].search([('id', '=', int(id))]).sudo().read()[0]
     filecontent = base64.b64decode(res.get(field) or '')
     if not filename:
         filename = '%s_%s' % (model.replace('.', '_'), id)
     if not filecontent:
         return request.not_found()
     return request.make_response(
         filecontent,
         [('Content-Type', 'application/octet-stream'),
          ('Content-Disposition', content_disposition(filename))])
Ejemplo n.º 13
0
    def transfert_compta_csv_download(self, csv, filename):

        #filename = 'testcompta.csv'
        response = http.HttpRequest.make_response(
            csv, [('Content-Type', 'text/csv'),
                  ('Content-Disposition', content_disposition(filename))])

        #response = http.HttpRequest.make_response(csv,
        #                                [('Content-Type', 'text/csv'),
        #                                 ('Content-Disposition','attachment; filename="%s"'%(filename))])

        return response
Ejemplo n.º 14
0
    def download_cv_new(self, model, id, filename=None,gender=None, **kwargs):
        invoice = request.env[model].browse(int(id))

        document = request.env['intern.document'].search([('name', '=', 'CV')], limit=1)
        finalDoc = invoice.createHeaderDocNew(gender)

        reponds = BytesIO()
        archive = zipfile.ZipFile(reponds, 'w', zipfile.ZIP_DEFLATED)
        # merge_doc = None
        if finalDoc is not None:
            archive.write(finalDoc.name, u"名簿リスト.docx")

            os.unlink(finalDoc.name)
        else:
            return

        listtmp = invoice.interns_exam_doc

        if gender == None:
            for i, intern in enumerate(sorted(listtmp,key=lambda x: x.sequence_exam)):
                childDoc = invoice.createCVDoc(document[0], intern, i)
                archive.write(childDoc.name, 'cv_%d_%s.docx' % ((i + 1), intern_utils.name_with_underscore(intern.name)))

                os.unlink(childDoc.name)
        else:
            counter=0
            for i, intern in enumerate(sorted(listtmp, key=lambda x: x.sequence_exam)):
                if intern.gender==gender:
                    childDoc = invoice.createCVDoc(document[0], intern, counter)
                    archive.write(childDoc.name,
                                  'cv_%d_%s.docx' % ((counter + 1), intern_utils.name_with_underscore(intern.name)))

                    os.unlink(childDoc.name)
                    counter+=1

        archive.close()
        reponds.flush()
        ret_zip = reponds.getvalue()
        reponds.close()

        return request.make_response(ret_zip,
                                     [('Content-Type', 'application/zip'),
                                      ('Content-Disposition', content_disposition(filename))])

    # @http.route('/web/binary/download_list_intern_exam_new', type='http', auth="public")
    # def download_list_intern_exam(self, model, id, filename=None, **kwargs):
    #     invoice = request.env[model].browse(int(id))
    #
    #     return request.make_response(invoice.create_list_exam_excel_data(),
    #                                  headers=[('Content-Disposition',
    #                                            content_disposition('test.xlsx')),
    #                                           ('Content-Type', 'application/vnd.ms-excel')])
Ejemplo n.º 15
0
Archivo: main.py Proyecto: befks/odoo
    def report_download(self, data, token):
        """This function is used by 'qwebactionmanager.js' in order to trigger the download of
        a pdf/controller report.

        :param data: a javascript array JSON.stringified containg report internal url ([0]) and
        type [1]
        :returns: Response with a filetoken cookie and an attachment header
        """
        requestcontent = json.loads(data)
        url, type = requestcontent[0], requestcontent[1]
        try:
            if type == 'qweb-pdf':
                reportname = url.split('/report/pdf/')[1].split('?')[0]

                docids = None
                if '/' in reportname:
                    reportname, docids = reportname.split('/')

                if docids:
                    # Generic report:
                    response = self.report_routes(reportname, docids=docids, converter='pdf')
                else:
                    # Particular report:
                    data = url_decode(url.split('?')[1]).items()  # decoding the args represented in JSON
                    response = self.report_routes(reportname, converter='pdf', **dict(data))

                report = request.env['report']._get_report_from_name(reportname)
                filename = "%s.%s" % (report.name, "pdf")
                if docids:
                    ids = [int(x) for x in docids.split(",")]
                    obj = request.env[report.model].browse(ids)
                    if report.print_report_name and not len(obj) > 1:
                        report_name = safe_eval(report.print_report_name, {'object': obj, 'time': time})
                        filename = "%s.%s" % (report_name, "pdf")
                response.headers.add('Content-Disposition', content_disposition(filename))
                response.set_cookie('fileToken', token)
                return response
            elif type == 'controller':
                reqheaders = Headers(request.httprequest.headers)
                response = Client(request.httprequest.app, BaseResponse).get(url, headers=reqheaders, follow_redirects=True)
                response.set_cookie('fileToken', token)
                return response
            else:
                return
        except Exception as e:
            se = _serialize_exception(e)
            error = {
                'code': 200,
                'message': "Odoo Server Error",
                'data': se
            }
            return request.make_response(html_escape(json.dumps(error)))
Ejemplo n.º 16
0
    def report_download(self, data, token):
        """This function is used by 'qwebactionmanager.js' in order to trigger the download of
        a pdf/controller report.

        :param data: a javascript array JSON.stringified containg report internal url ([0]) and
        type [1]
        :returns: Response with a filetoken cookie and an attachment header
        """
        requestcontent = json.loads(data)
        url, type = requestcontent[0], requestcontent[1]
        try:
            if type == 'qweb-pdf':
                reportname = url.split('/report/pdf/')[1].split('?')[0]

                docids = None
                if '/' in reportname:
                    reportname, docids = reportname.split('/')

                if docids:
                    # Generic report:
                    response = self.report_routes(reportname, docids=docids, converter='pdf')
                else:
                    # Particular report:
                    data = url_decode(url.split('?')[1]).items()  # decoding the args represented in JSON
                    response = self.report_routes(reportname, converter='pdf', **dict(data))

                report = request.env['report']._get_report_from_name(reportname)
                filename = "%s.%s" % (report.name, "pdf")
                if docids:
                    ids = [int(x) for x in docids.split(",")]
                    obj = request.env[report.model].browse(ids)
                    if report.print_report_name and not len(obj) > 1:
                        report_name = safe_eval(report.print_report_name, {'object': obj, 'time': time})
                        filename = "%s.%s" % (report_name, "pdf")
                response.headers.add('Content-Disposition', content_disposition(filename))
                response.set_cookie('fileToken', token)
                return response
            elif type == 'controller':
                reqheaders = Headers(request.httprequest.headers)
                response = Client(request.httprequest.app, BaseResponse).get(url, headers=reqheaders, follow_redirects=True)
                response.set_cookie('fileToken', token)
                return response
            else:
                return
        except Exception, e:
            se = _serialize_exception(e)
            error = {
                'code': 200,
                'message': "Odoo Server Error",
                'data': se
            }
            return request.make_response(html_escape(json.dumps(error)))
Ejemplo n.º 17
0
 def download_bo_report_simple_stock_card(self,
                                          model,
                                          record_id,
                                          filename=None,
                                          **kw):
     obj = request.env[model]
     record_id = obj.browse([int(record_id)])
     filecontent = record_id.get_bo_report_simple_stock_card()
     response = request.make_response(
         filecontent,
         [('Content-Type', 'application/octet-stream;charset=utf-8;'),
          ('Content-Disposition', content_disposition(filename))])
     return response
Ejemplo n.º 18
0
 def download_document(self, model, field, id, filename=None, **kw):
     Model = request.env[model]
     res = Model.browse([int(id)])
     filecontent = base64.b64decode(res.datas)
     if not filecontent:
         res.unlink()
         return request.not_found()
     else:
         res.unlink()
         return request.make_response(
             filecontent,
             [('Content-Type', 'application/octet-stream'),
              ('Content-Disposition', content_disposition(filename))])
Ejemplo n.º 19
0
 def invoice_download(self, **data):
     record_id = http.request.env['arc.invoice'].search([('id', '=',
                                                          data.get('id'))])
     if record_id:
         filecontent = base64.b64decode(record_id.report_pdf)
         filename = record_id.file_name
         if filecontent and filename:
             return request.make_response(
                 filecontent,
                 headers=[('Content-Type', 'application/pdf'),
                          ('Content-Disposition',
                           content_disposition(filename))])
     return request.not_found()
Ejemplo n.º 20
0
 def download_(self, rec_id, unlink=False, **kwargs):
     rec = request.env["rg.backup"].search([('id', '=', rec_id)])
     if rec:
         data = base64.b64decode(rec._get_encoded())
         file_name = rec.file_name
         if unlink:
             rec.unlink()
         return http.request.make_response(
             data,
             headers=[('Content-Length', len(data)),
                      ('Content-Type', mimetypes.guess_type(file_name)[0]
                       or 'application/octet-stream'),
                      ('Content-Disposition',
                       content_disposition(file_name))])
Ejemplo n.º 21
0
 def download_document(self, model, field, id, filename=None, **kw):
     """Download link for excel files stored as binary fields."""
     record = request.env[model].browse([int(id)])
     res = record.read([field])[0]
     filecontent = base64.b64decode(res.get(field) or '')
     if not filecontent:
         return request.not_found()
     else:
         if not filename:
             filename = '%s_%s' % (model.replace('.', '_'), id)
         return request.make_response(
             filecontent,
             [('Content-Type', 'application/octet-stream'),
              ('Content-Disposition', content_disposition(filename))])
Ejemplo n.º 22
0
    def generate_correspondence_pdf(self, object_id=None, **parameters):
        if object_id is None:
            raise BadRequest()

        correspondence = request.env['correspondence'].browse(int(object_id))
        binary = correspondence and correspondence.get_image()

        if not binary:
            raise NotFound()

        return request.make_response(
            binary, [('Content-Type', 'application/pdf'),
                     ('Content-Disposition',
                      content_disposition(correspondence.file_name))])
Ejemplo n.º 23
0
 def download_document(self, doc_id=None, **kw):
     """ Download link for files stored as binary fields.
     :param str id: field holding the ID of vb_document table
     :returns: :class:`werkzeug.wrappers.Response`
     """
     #Getting the document directory path
     document_directory_path = request.env[
         'npa.document'].get_document_directory_path()
     if doc_id:
         #Getting Document Record
         document_rec = request.env['npa.document'].search([('id', '=',
                                                             int(doc_id))])
         #Checking if the file exists, and then fetching the document.
         if os.path.exists(document_rec.file_loc):
             with open(document_rec.file_loc, 'rb') as doc_file:
                 filecontent = doc_file.read()
             if not filecontent:
                 return request.not_found()
             else:
                 if document_rec.file_name[-3:] == 'pdf':
                     #Return the file and filename to the browser.
                     return request.make_response(
                         filecontent,
                         [('Content-Type', 'application/pdf'),
                          ('Content-Disposition',
                           content_disposition(document_rec.file_name))])
                 else:
                     return request.make_response(
                         filecontent,
                         [('Content-Type', 'attachment'),
                          ('Content-Disposition',
                           content_disposition(document_rec.file_name))])
         else:
             msg = 'File document {0} not found in NFS server. Please check the file or upload again.'.format(
                 document_rec.file_loc)
             return request.not_found(msg)
Ejemplo n.º 24
0
 def download_document(self, model, field, id, filename=None, **kw):
     """ Download link for files stored as binary fields.
     :param str model: name of the model to fetch the binary from
     :param str field: binary field
     :param str id: id of the record from which to fetch the binary
     :param str filename: field holding the file's name, if any
     :returns: :class:`werkzeug.wrappers.Response`
     """
     Model = request.registry[model]
     env = api.Environment(request.cr, request.uid, request.context)
     res = env['ir.attachment'].search([('id', '=', id)])
     filecontent = base64.b64decode(res.datas or '')
     if not filecontent:
         return request.not_found()
     else:
         if not filename:
             filename = '%s_%s' % (model.replace('.', '_'), id)
             return request.make_response(filecontent,
                                          [('Content-Type', 'application/octet-stream'),
                                           ('Content-Disposition', content_disposition(filename))])
         else:
             return request.make_response(filecontent,
                                          [('Content-Type', 'application/vnd.ms-excel'),
                                           ('Content-Disposition', content_disposition(filename))])
Ejemplo n.º 25
0
 def download_document(self, model, field, id, filename=None, **kw):
     Model = request.env[model]
     #invoice_number = Model.browse(int(id)).number
     invoice_number = id
     filecontent = base64.b64decode(Model.get_file_content(int(id)))
     if not filecontent:
         return request.not_found()
     else:
         if not filename:
             #filename = '%s.%s' % (invoice_number,'txt')
             filename = Model.get_file_name(int(id))
             return request.make_response(
                 filecontent,
                 [('Content-Type', 'text/plain'),
                  ('Content-Disposition', content_disposition(filename))])
Ejemplo n.º 26
0
 def ac_index_base(self, listType, file_name):
     ''''自定义直接下载'''
     # 表头
     columns_headers = listType.get_colums_headers(fields=[])
     self.column_count = len(columns_headers)
     # 表体
     export_data = listType.get_export_data([])
     self.row_count = len(export_data)
     response_data = self.from_data(columns_headers, export_data, listType)
     return request.make_response(
         response_data,
         headers=[('Content-Disposition',
                   content_disposition(self.filename(file_name))),
                  ('Content-Type', self.content_type)],
         cookies={'fileToken': ""})
Ejemplo n.º 27
0
    def download_list_intern(self, **kwargs):

        invoices = request.env['intern.invoice'].search([])

        workbook = xlwt.Workbook()
        worksheet = workbook.add_sheet('Sheet 1')
        base_style = xlwt.easyxf('align: wrap yes')
        date_style = xlwt.easyxf('align: wrap yes',
                                 num_format_str='YYYY-MM-DD')

        worksheet.write(0, 0, u'Tên', base_style)
        worksheet.write(0, 1, u'CMND/Thẻ CC', base_style)
        worksheet.write(0, 2, u'Đơn hàng', base_style)
        worksheet.write(0, 3, u'Ngày lập hồ sơ', base_style)
        worksheet.write(0, 4, u'Ngày sinh', base_style)
        worksheet.write(0, 5, u'Tuổi', base_style)

        counter = 1
        for invoice in invoices:
            for intern in invoice.interns_pass:
                if intern.cmnd_or_tcc != None and invoice.date_create_letter_promotion_short != None:
                    worksheet.write(counter, 0, u'%s' % intern.name,
                                    base_style)
                    worksheet.write(counter, 1, intern.cmnd_or_tcc, base_style)
                    worksheet.write(counter, 2, u'%s' % invoice.name,
                                    base_style)
                    worksheet.write(counter, 3,
                                    invoice.date_create_letter_promotion_short,
                                    date_style)
                    worksheet.write(counter, 4, intern.date_of_birth_short,
                                    date_style)
                    worksheet.write(
                        counter, 5, u'%s' % str(
                            intern_utils.get_age_jp(
                                invoice.date_create_letter_promotion_short,
                                intern.day, intern.month, intern.year)),
                        base_style)
                    counter = counter + 1

        fp = StringIO()
        workbook.save(fp)
        fp.seek(0)
        data = fp.read()
        fp.close()
        return request.make_response(
            data,
            headers=[('Content-Disposition', content_disposition('test.xls')),
                     ('Content-Type', 'application/vnd.ms-excel')])
Ejemplo n.º 28
0
    def download_bin(self, d, filename=None, **kw):
        sol = request.env['sale.order.line']
        # _logger.info('input d :%s' % d)
        res = sol.sudo().search_read(
            [('remark1', 'not in', [u'上線預扣']),
             ('state', 'in', ['sent', 'sale', 'done']), ('p_date', '=', d),
             ('note', '=', False)],
            self.search_fields,
            order='booking_start')
        # _logger.info('res:%s' % res)

        return request.make_response(self.from_data_xls(res),
                                     headers=[('Content-Disposition',
                                               content_disposition(filename)),
                                              ('Content-Type',
                                               'application/vnd.ms-excel')])
Ejemplo n.º 29
0
    def consultar_ple(self, mes, year, tipo_reporte, compania,**k):
        reporte_ple = request.env['report.biosis_cont_report.report_ple']
        filename, filename_v, filecontent = reporte_ple.generate_txt_report(mes, year, tipo_reporte, compania)

        f1 = StringIO.StringIO()
        f1.write(filecontent.encode('utf-8'))

        content = f1.getvalue()
        if not filecontent:
            return request.not_found()
        else:
            if not filename:
                filename = "Nuevo.txt"

        return request.make_response(content,
                                     [('Content-Type', 'application/octet-stream'),
                                      ('Content-Disposition', content_disposition(filename + u'.txt'))])
Ejemplo n.º 30
0
    	def report_download(self, data, token):
            """This function is used by 'qwebactionmanager.js' in order to trigger the download of
            a pdf/controller report.

            :param data: a javascript array JSON.stringified containg report internal url ([0]) and
            type [1]
            :returns: Response with a filetoken cookie and an attachment header
            """
	    response = super(DownloadedReportFilename, self).report_download(data, token)

	    requestcontent = json.loads(data)
            url, type = requestcontent[0], requestcontent[1]
            if type == 'qweb-pdf':
		   reportname = url.split('/report/pdf/')[1].split('?')[0]
		   docids = None
                   if '/' in reportname:
                       reportname, docids = reportname.split('/')

                   report = request.env['report']._get_report_from_name(reportname)
		   xreport =None
                   if docids and len(docids) == 1:
                      # Generic report:
                      xreport = request.env[report.model].browse([int(docids)])
		   filename = None
		   if xreport:
			if report.model == 'account.invoice' and xreport.number:
			   filename = ( (xreport.type in ['out_invoice'] and 'Invoice' or 'Bill') + 
				      '-' + xreport.number.replace(' ','_').replace('/', '_' ))
			elif report.model == 'purchase.order' and xreport.name:
			   filename = ( (xreport.state in ['draft', 'sent', 'to approve'] and 'RFQ' or 'Purchase_Order') + 
				       '-' + xreport.name.replace(' ', '_' ).replace('/', '_' ))
			elif report.model == 'sale.order' and xreport.name:
			   filename = ( (xreport.state in ['draft', 'sent'] and 'Quotation' or 'Sale_Order') + 
				       '-' + xreport.name.replace(' ', '_' ).replace('/', '_' ))
			elif report.model in ['stock.inventory','res.partner','mrp.production', 'stock.picking', 'stock.production.lot', 'stock.quant.package'] and xreport.name:
			   filename = ( report.name.replace(' ','_').replace('/', '_' ) + 
				       '-' +xreport.name.replace(' ', '_' ).replace('/', '_' ))
			else:
			    filename = ( report.name.replace(' ','_').replace('/', '_' ))
					
		   if filename:
		      filename = '{}.pdf'.format(filename)
		      response.headers.remove('Content-Disposition')
		      response.headers.add('Content-Disposition', content_disposition(filename))

	    return response
Ejemplo n.º 31
0
    def download_binary(self, model, id, field, fname, fnamefield, **kwargs):
        """
        Route http untuk download binary
        """
        fs = [field]
        if fnamefield:
            fs.append(fname)
        record = request.env[model].browse(int(id)).read(fs)[0]
        data = b64decode(record.get(field, False) or False)
        filename = record.get(fname, "unknown") if fnamefield else fname

        if not data:
            return request.not_found()

        return request.make_response(
            data, [('Content-Type', 'application/octet-stream'),
                   ('Content-Disposition', content_disposition(filename))])