Exemplo n.º 1
0
    def get_model_rec(self, model, rec_id, **params):
        try:
            records = request.env[model].search([])
        except KeyError as e:
            msg = "The model `%s` does not exist." % model
            res = error_response(e, msg)
            return http.Response(json.dumps(res),
                                 status=200,
                                 mimetype='application/json')

        if "query" in params:
            query = params["query"]
        else:
            query = "{*}"

        # TODO: Handle the error raised by `ensure_one`
        record = records.browse(rec_id).ensure_one()

        try:
            serializer = Serializer(record, query)
            data = serializer.data
        except (SyntaxError, QueryFormatError) as e:
            res = error_response(e, e.msg)
            return http.Response(json.dumps(res),
                                 status=200,
                                 mimetype='application/json')

        return http.Response(json.dumps(data),
                             status=200,
                             mimetype='application/json')
Exemplo n.º 2
0
    def delete_model_records(self, model, **post):
        filters = json.loads(post["filter"])

        try:
            model_to_del_rec = request.env[model]
        except KeyError as e:
            msg = "The model `%s` does not exist." % model
            res = error_response(e, msg)
            return http.Response(json.dumps(res),
                                 status=200,
                                 mimetype='application/json')

        # TODO: Handle error raised by `filters`
        recs = model_to_del_rec.search(filters)

        try:
            is_deleted = recs.unlink()
            res = {"result": is_deleted}
            return http.Response(json.dumps(res),
                                 status=200,
                                 mimetype='application/json')
        except Exception as e:
            res = error_response(e, str(e))
            return http.Response(json.dumps(res),
                                 status=200,
                                 mimetype='application/json')
Exemplo n.º 3
0
    def get_binary_record(self, model, rec_id, field, **post):
        try:
            request.env[model]
        except KeyError as e:
            msg = "The model `%s` does not exist." % model
            res = error_response(e, msg)
            return http.Response(json.dumps(res),
                                 status=200,
                                 mimetype='application/json')

        rec = request.env[model].browse(rec_id).ensure_one()
        if rec.exists():
            src = getattr(rec, field).decode("utf-8")
        else:
            src = False
        return http.Response(src)
Exemplo n.º 4
0
 def get_category_slider_data(self):
     """
     It's return the updated category slider data through ajax
     :return: category slider template html
     """
     response = http.Response(
         template="emipro_theme_base.category_slider_container")
     return response.render()
Exemplo n.º 5
0
 def get_brand_slider_data(self):
     """
     It's return the updated brand data through ajax
     :return: brand slider template html
     """
     response = http.Response(
         template="emipro_theme_base.brand_slider_container")
     return response.render()
Exemplo n.º 6
0
    def get_template_html(self, style_id, values):

        template_id = request.env['slider.styles'].browse(
            int(style_id)).get_external_id().get(int(style_id)) + "_template"
        template = request.env['ir.ui.view'].sudo().search([('key', '=',
                                                             template_id)])
        if template:
            response = http.Response(template=template_id, qcontext=values)
            return response.render()
Exemplo n.º 7
0
 def slider_preview(self, rec_id, **kwargs):
     """
     Return The Slider Preview template
     :param rec_id:
     :param kwargs:
     :return:
     """
     return http.Response(template="emipro_theme_base.slider_preview",
                          qcontext={
                              'rec_id': rec_id
                          }).render()
Exemplo n.º 8
0
 def slider_data(self, **kwargs):
     """
     Return the data for slider for product slider and category Slider
     If filter ID is not specified then return first filter slider object else it return specified slider filter
     :param kwargs:
     :return:
     """
     slider_id = kwargs.get('slider_id', False)
     filter_id = kwargs.get('filter_id', False)
     slider_obj = request.env['slider'].sudo().search([('id', '=',
                                                        int(slider_id))])
     vals = {}
     if slider_obj:
         filter = slider_obj.slider_filter_ids[
             0] if not filter_id else request.env['slider.filter'].sudo(
             ).search([('id', '=', int(filter_id))])
         if filter.filter_id.domain:
             domain = safe_eval(filter.filter_id.domain)
             domain += [
                 '|', ('website_id', '=', None),
                 ('website_id', '=', request.website.id),
                 ('website_published', '=', True)
             ]
             product = request.env['product.template'].sudo().search(
                 domain, limit=slider_obj.slider_limit)
             vals = {
                 'slider_obj':
                 slider_obj,
                 'filter_data':
                 product,
                 # 'active_filter_data': filter_id if filter_id else slider_obj.slider_filter_ids[0].filter_id.id,
                 'active_filter_data':
                 filter_id
                 if filter_id else slider_obj.slider_filter_ids[0].id,
                 'is_default':
                 False if filter_id else True,
                 'show_view_all':
                 True
             }
         tmplt_external_id = slider_obj.slider_style_id.get_external_id(
         ).get(slider_obj.slider_style_id.id) + "_template"
         tmplt = request.env['ir.ui.view'].sudo().search([
             ('key', '=', tmplt_external_id)
         ])
         if tmplt:
             response = http.Response(template=tmplt_external_id,
                                      qcontext=vals)
             return response.render()
         else:
             return False
Exemplo n.º 9
0
    def delete_model_record(self, model, rec_id, **post):
        try:
            model_to_del_rec = request.env[model]
        except KeyError as e:
            msg = "The model `%s` does not exist." % model
            res = error_response(e, msg)
            return http.Response(json.dumps(res),
                                 status=200,
                                 mimetype='application/json')

        # TODO: Handle error raised by `ensure_one`
        rec = model_to_del_rec.browse(rec_id).ensure_one()

        try:
            is_deleted = rec.unlink()
            res = {"result": is_deleted}
            return http.Response(json.dumps(res),
                                 status=200,
                                 mimetype='application/json')
        except Exception as e:
            res = error_response(e, str(e))
            return http.Response(json.dumps(res),
                                 status=200,
                                 mimetype='application/json')
Exemplo n.º 10
0
 def get_ajax_cart_sucess(self, product_id=None):
     """
     This controller return the template for Ajax Add to Cart with product details
     :param product_id: get product id
     :return: ajax cart template html
     """
     if product_id:
         product = request.env['product.template'].search(
             [['id', '=', product_id]])
         values = {
             'product': product,
         }
         response = http.Response(
             template="emipro_theme_base.ajax_cart_success_container",
             qcontext=values)
         return response.render()
Exemplo n.º 11
0
 def get_quick_view_item(self, product_id=None):
     """
     This controller return the template for QuickView with product details
     :param product_id: get product id
     :return: quick_view template html
     """
     if product_id:
         product = request.env['product.template'].search(
             [['id', '=', product_id]])
         values = {
             'product': product,
         }
         response = http.Response(
             template="emipro_theme_base.quick_view_container",
             qcontext=values)
         return response.render()
Exemplo n.º 12
0
 def mega_menu_content_dynamic(self, menu_id):
     response = http.Response(
         template="emipro_theme_base.website_dynamic_category")
     current_menu = request.env['website.menu'].sudo().search([('id', '=',
                                                                menu_id)])
     if current_menu.is_dynamic_menu and current_menu.mega_menu_content_dynamic != response.render(
     ).decode():
         current_menu.write({
             "mega_menu_content_dynamic":
             response.render().decode(),
             "is_dynamic_menu_json":
             False
         })
         return response.render().decode()
     else:
         return False
Exemplo n.º 13
0
    def get_model_data(self, model, **params):
        try:
            records = request.env[model].search([])
        except KeyError as e:
            msg = "The model `%s` does not exist." % model
            res = error_response(e, msg)
            return http.Response(json.dumps(res),
                                 status=200,
                                 mimetype='application/json')

        if "query" in params:
            query = params["query"]
        else:
            query = "{*}"

        if "order" in params:
            orders = json.loads(params["order"])
        else:
            orders = ""

        if "filter" in params:
            filters = json.loads(params["filter"])
            records = request.env[model].search(filters, order=orders)

        prev_page = None
        next_page = None
        total_page_number = 1
        current_page = 1

        if "page_size" in params:
            page_size = int(params["page_size"])
            count = len(records)
            total_page_number = math.ceil(count / page_size)

            if "page" in params:
                current_page = int(params["page"])
            else:
                current_page = 1  # Default page Number
            start = page_size * (current_page - 1)
            stop = current_page * page_size
            records = records[start:stop]
            next_page = current_page+1 \
                if 0 < current_page + 1 <= total_page_number \
                else None
            prev_page = current_page-1 \
                if 0 < current_page - 1 <= total_page_number \
                else None

        if "limit" in params:
            limit = int(params["limit"])
            records = records[0:limit]

        try:
            serializer = Serializer(records, query, many=True)
            data = serializer.data
        except (SyntaxError, QueryFormatError) as e:
            res = error_response(e, e.msg)
            return http.Response(json.dumps(res),
                                 status=200,
                                 mimetype='application/json')

        res = {
            "count": len(records),
            "prev": prev_page,
            "current": current_page,
            "next": next_page,
            "total_pages": total_page_number,
            "result": data
        }
        return http.Response(json.dumps(res),
                             status=200,
                             mimetype='application/json')
Exemplo n.º 14
0
 def get_homepage_test_data(self):
     response = http.Response(
         template="theme_clarico_vega.js_home_page_1_test")
     return response.render()