Пример #1
0
    def infrastructure_odoo(self, instance, key, **post):
        (instance_name, instance_id) = unslug(instance)
        odoo_instance = request.env['odoo.instance'].sudo().search(
            [('id', '=', instance_id), ('key', '=', key)], limit=1)

        if not odoo_instance:
            return request.not_found('Instance data not found')
        method = request.httprequest.method
        if method == 'GET':
            res = odoo_instance.get_instance_data()
        elif method == 'POST':
            # Get post vars
            docker_image = post.get('docker_image', None)
            docker_image_tag = post.get('docker_image_tag', None)
            build_status = post.get('build_status', None)
            if not all((docker_image, docker_image_tag, build_status)):
                return request.not_found('Parameters missing')
            docker_image_tag_obj = request.env['docker.image.tag'].sudo()
            docker_image_tag_obj.set_docker_image_state(
                docker_image, docker_image_tag, build_status)
            res = {'result': 'OK'}
        else:
            return request.not_found('Method not found')

        return request.make_response(
            json.dumps(res, sort_keys=True, indent=4, separators=(', ', ': ')),
            headers=[('Content-Type', 'application/json')],
        )
Пример #2
0
 def partners_detail(self, partner_id, partner_name="", **post):
     _, partner_id = unslug(partner_id)
     current_grade, current_country = None, None
     grade_id = post.get("grade_id")
     country_id = post.get("country_id")
     if grade_id:
         grade_ids = request.registry["res.partner.grade"].exists(
             request.cr, request.uid, int(grade_id), context=request.context
         )
         if grade_ids:
             current_grade = request.registry["res.partner.grade"].browse(
                 request.cr, request.uid, grade_ids[0], context=request.context
             )
     if country_id:
         country_ids = request.registry["res.country"].exists(
             request.cr, request.uid, int(country_id), context=request.context
         )
         if country_ids:
             current_country = request.registry["res.country"].browse(
                 request.cr, request.uid, country_ids[0], context=request.context
             )
     if partner_id:
         partner = request.registry["res.partner"].browse(
             request.cr, SUPERUSER_ID, partner_id, context=request.context
         )
         if partner.exists() and partner.website_published:
             values = {
                 "main_object": partner,
                 "partner": partner,
                 "current_grade": current_grade,
                 "current_country": current_country,
             }
             return request.website.render("website_crm_partner_assign.partner", values)
     return self.partners(**post)
Пример #3
0
 def partners_detail(self, partner_id, **post):
     _, partner_id = unslug(partner_id)
     current_grade, current_country = None, None
     grade_id = post.get('grade_id')
     country_id = post.get('country_id')
     if grade_id:
         grade_ids = request.registry['res.partner.grade'].exists(request.cr, request.uid, int(grade_id), context=request.context)
         if grade_ids:
             current_grade = request.registry['res.partner.grade'].browse(request.cr, request.uid, grade_ids[0], context=request.context)
     if country_id:
         country_ids = request.registry['res.country'].exists(request.cr, request.uid, int(country_id), context=request.context)
         if country_ids:
             current_country = request.registry['res.country'].browse(request.cr, request.uid, country_ids[0], context=request.context)
     if partner_id:
         partner = request.registry['res.partner'].browse(request.cr, SUPERUSER_ID, partner_id, context=request.context)
         is_website_publisher = request.registry['res.users'].has_group(request.cr, request.uid, 'base.group_website_publisher')
         if partner.exists() and (partner.website_published or is_website_publisher):
             values = {
                 'main_object': partner,
                 'partner': partner,
                 'current_grade': current_grade,
                 'current_country': current_country
             }
             return request.website.render("website_crm_partner_assign.partner", values)
     return self.partners(**post)
Пример #4
0
 def partners_detail(self, partner_id, **post):
     _, partner_id = unslug(partner_id)
     current_grade, current_country = None, None
     grade_id = post.get('grade_id')
     country_id = post.get('country_id')
     if grade_id:
         grade_ids = request.registry['res.partner.grade'].exists(request.cr, request.uid, int(grade_id), context=request.context)
         if grade_ids:
             current_grade = request.registry['res.partner.grade'].browse(request.cr, request.uid, grade_ids[0], context=request.context)
     if country_id:
         country_ids = request.registry['res.country'].exists(request.cr, request.uid, int(country_id), context=request.context)
         if country_ids:
             current_country = request.registry['res.country'].browse(request.cr, request.uid, country_ids[0], context=request.context)
     if partner_id:
         partner = request.registry['res.partner'].browse(request.cr, SUPERUSER_ID, partner_id, context=request.context)
         is_website_publisher = request.registry['res.users'].has_group(request.cr, request.uid, 'base.group_website_publisher')
         if partner.exists() and (partner.website_published or is_website_publisher):
             values = {
                 'main_object': partner,
                 'partner': partner,
                 'current_grade': current_grade,
                 'current_country': current_country
             }
             return request.website.render("website_crm_partner_assign.partner", values)
     return self.partners(**post)
Пример #5
0
 def partners_detail(self, partner_id, **post):
     _, partner_id = unslug(partner_id)
     if partner_id:
         partner = request.env['res.partner'].sudo().browse(partner_id)
         if partner.exists() and partner.website_published:
             values = {}
             values['main_object'] = values['partner'] = partner
             return request.render("website_customer.details", values)
     return self.customers(**post)
Пример #6
0
 def partners_detail(self, partner_id, **post):
     _, partner_id = unslug(partner_id)
     if partner_id:
         partner = request.env['res.partner'].sudo().browse(partner_id)
         if partner.exists() and partner.website_published:
             values = {}
             values['main_object'] = values['partner'] = partner
             return request.render("website_customer.details", values)
     return self.customers(**post)
Пример #7
0
 def partners_detail(self, partner_id, **post):
     _, partner_id = unslug(partner_id)
     if partner_id:
         partner = request.registry['res.partner'].browse(request.cr, SUPERUSER_ID, partner_id, context=request.context)
         if partner.exists() and partner.website_published:
             values = {}
             values['main_object'] = values['partner'] = partner
             return request.website.render("website_customer.details", values)
     return self.customers(**post)
Пример #8
0
 def program_details(self, program_id, redirect=None, **post):
     _, program_id = unslug(program_id)
     program = request.registry['school.program'].browse(
         request.cr, request.uid, program_id, context=request.context)
     values = {
         'program': program,
         'slug_id': program_id,
     }
     return request.render("website_school_management.program_details",
                           values)
Пример #9
0
 def referer_to_page(self):
     """Translate HTTP REFERER to cms page if possible."""
     ref = request.httprequest.referrer
     if not ref:
         return None
     parsed = urlparse.urlparse(ref)
     if '/cms/' in parsed.path:
         last_bit = parsed.path.split('/')[-1]
         page_id = unslug(last_bit)[-1]
         return request.env['cms.page'].browse(page_id)
     return None
Пример #10
0
Файл: main.py Проект: 2cadz/odoo
 def partners_detail(self, partner_id, **post):
     _, partner_id = unslug(partner_id)
     if partner_id:
         partner = request.registry['res.partner'].browse(request.cr, SUPERUSER_ID, partner_id, context=request.context)
         is_website_publisher = request.registry['res.users'].has_group(request.cr, request.uid, 'base.group_website_publisher')
         if partner.exists() and (partner.website_published or is_website_publisher):
             values = {
                 'main_object': partner,
                 'partner': partner,
                 'edit_page': False
             }
             return request.website.render("website_partner.partner_page", values)
     return request.not_found()
Пример #11
0
 def program_details(self, program_id, redirect=None, **post):
     _, program_id = unslug(program_id)
     program = request.env['school.program'].sudo().search([('id', '=',
                                                             program_id)])
     if program:
         values = {
             'program': program,
             'slug_id': program_id,
         }
         return request.render("website_school_management.program_details",
                               values)
     else:
         raise werkzeug.exceptions.HTTPException(
             description='Unkown program.')
Пример #12
0
 def course_group(self, course_group_id, redirect=None, **post):
     _, course_group_id = unslug(course_group_id)
     course_group_id = request.env['school.course_group'].sudo().browse(
         [course_group_id])
     if course_group_id:
         values = {
             'docs': course_group_id,
         }
         return request.render(
             "school_course_description.report_course_group_documentation_content",
             values)
     else:
         return request.render(
             "school_course_description.report_course_group_documentation_no_content",
             [])
Пример #13
0
 def program_domain(self, domain_id, redirect=None, **post):
     _, domain_id = unslug(domain_id)
     programs = request.env['school.program'].sudo().search(
         [('state', '=', 'published'), ('domain_id', '=', domain_id)],
         order="domain_id, cycle_id, name ASC")
     program_list = []
     for program in programs:
         program_list.append({
             'program': program,
             'slug_id': slug(program),
         })
     values = {
         'program_list': program_list,
     }
     return request.render("website_school_management.program", values)
Пример #14
0
 def course(self, course_id, redirect=None, **post):
     _, course_id = unslug(course_id)
     course_docs = request.env['school.course_documentation'].sudo().search(
         [('state', '=', 'published'), ('course_ids', '=', course_id)],
         order="author_id")
     if course_docs:
         values = {
             'docs': course_docs[0],
         }
         return request.render(
             "school_course_description.report_course_documentation_content",
             values)
     else:
         return request.render(
             "school_course_description.report_course_documentation_no_content",
             [])
Пример #15
0
 def partners_detail(self, partner_id, **post):
     _, partner_id = unslug(partner_id)
     if partner_id:
         partner = request.registry['res.partner'].browse(
             request.cr, SUPERUSER_ID, partner_id, context=request.context)
         is_website_publisher = request.registry['res.users'].has_group(
             request.cr, request.uid, 'base.group_website_publisher')
         if partner.exists() and (partner.website_published
                                  or is_website_publisher):
             values = {
                 'main_object': partner,
                 'partner': partner,
                 'edit_page': False
             }
             return request.website.render("website_partner.partner_page",
                                           values)
     return request.not_found()
Пример #16
0
    def test_unslug(self):
        tests = {
            "": (None, None),
            "foo": (None, None),
            "foo-": (None, None),
            "-": (None, None),
            "foo-1": ("foo", 1),
            "foo-bar-1": ("foo-bar", 1),
            "foo--1": ("foo", -1),
            "1": (None, 1),
            "1-1": ("1", 1),
            "--1": (None, None),
            "foo---1": (None, None),
            "foo1": (None, None),
        }

        for slug, expected in tests.iteritems():
            self.assertEqual(unslug(slug), expected)
Пример #17
0
    def test_unslug(self):
        tests = {
            '': (None, None),
            'foo': (None, None),
            'foo-': (None, None),
            '-': (None, None),
            'foo-1': ('foo', 1),
            'foo-bar-1': ('foo-bar', 1),
            'foo--1': ('foo', -1),
            '1': (None, 1),
            '1-1': ('1', 1),
            '--1': (None, None),
            'foo---1': (None, None),
            'foo1': (None, None),
        }

        for slug, expected in tests.iteritems():
            self.assertEqual(unslug(slug), expected)
Пример #18
0
    def test_unslug(self):
        tests = {
            '': (None, None),
            'foo': (None, None),
            'foo-': (None, None),
            '-': (None, None),
            'foo-1': ('foo', 1),
            'foo-bar-1': ('foo-bar', 1),
            'foo--1': ('foo', -1),
            '1': (None, 1),
            '1-1': ('1', 1),
            '--1': (None, None),
            'foo---1': (None, None),
            'foo1': (None, None),
        }

        for slug, expected in tests.iteritems():
            self.assertEqual(unslug(slug), expected)
Пример #19
0
    def get_root(self, item=None, upper_level=0):
        """Walk trough page path to find root ancestor.

        URL is made of items' slug so we can jump
        at any level by looking at path parts.

        Use `upper_level` to stop walking at a precise
        hierarchy level.
        """
        item = item or self
        # 1st bit is `/cms`
        bits = item.website_url.split('/')[2:]
        try:
            _slug = bits[upper_level]
        except IndexError:
            # safely default to real root
            _slug = bits[0]
        _, page_id = unslug(_slug)
        return self.browse(page_id)
Пример #20
0
Файл: main.py Проект: mmuhd/odoo
    def customers(self, country_id=0, page=0, country_name='', tag_id=0, **post):
        cr, uid, context = request.cr, request.uid, request.context
        country_obj = request.registry['res.country']
        tag_obj = request.registry['res.partner.tag']
        partner_obj = request.registry['res.partner']
        partner_name = post.get('search', '')

        domain = [('website_published', '=', True), ('assigned_partner_id', '!=', False)]
        if partner_name:
            domain += [
                '|',
                ('name', 'ilike', post.get("search")),
                ('website_description', 'ilike', post.get("search"))
            ]

        if tag_id:
            tag_id = unslug(tag_id)[1] or 0
            domain += [('tag_ids', 'in', tag_id)]

        # group by country, based on customers found with the search(domain)
        countries = partner_obj.read_group(
            cr, openerp.SUPERUSER_ID, domain, ["id", "country_id"],
            groupby="country_id", orderby="country_id", context=request.context)
        country_count = partner_obj.search(
            cr, openerp.SUPERUSER_ID, domain, count=True, context=request.context)

        if country_id:
            domain += [('country_id', '=', country_id)]
            if not any(x['country_id'][0] == country_id for x in countries):
                country = country_obj.read(cr, uid, country_id, ['name'], context)
                if country:
                    countries.append({
                        'country_id_count': 0,
                        'country_id': (country_id, country['name'])
                    })
                countries.sort(key=lambda d: d['country_id'][1])
            curr_country = country_obj.browse(cr, uid, country_id, context)

        countries.insert(0, {
            'country_id_count': country_count,
            'country_id': (0, _("All Countries"))
        })

        # search customers to display
        partner_count = partner_obj.search_count(cr, openerp.SUPERUSER_ID, domain, context=request.context)

        # pager
        url = '/customers'
        if country_id:
            url += '/country/%s' % country_id
        pager = request.website.pager(
            url=url, total=partner_count, page=page, step=self._references_per_page,
            scope=7, url_args=post
        )

        partner_ids = partner_obj.search(request.cr, openerp.SUPERUSER_ID, domain,
                                         offset=pager['offset'], limit=self._references_per_page,
                                         context=request.context)
        google_map_partner_ids = ','.join(map(str, partner_ids))
        partners = partner_obj.browse(request.cr, openerp.SUPERUSER_ID, partner_ids, request.context)

        tag_obj = request.registry['res.partner.tag']
        tag_ids = tag_obj.search(cr, uid, [('website_published', '=', True), ('partner_ids', 'in', partner_ids)],
                                 order='name ASC', context=context)
        tags = tag_obj.browse(cr, uid, tag_ids, context=context)
        tag = tag_id and tag_obj.browse(cr, uid, tag_id, context=context) or False

        values = {
            'countries': countries,
            'current_country_id': country_id or 0,
            'current_country': country_id and curr_country or False,
            'partners': partners,
            'google_map_partner_ids': google_map_partner_ids,
            'pager': pager,
            'post': post,
            'search_path': "?%s" % werkzeug.url_encode(post),
            'tag': tag,
            'tags': tags,
        }
        return request.website.render("website_customer.index", values)
Пример #21
0
    def blog(self, blog=None, tag=None, page=1, **opt):
        """ Prepare all values to display the blog.

        :return dict values: values for the templates, containing

         - 'blog': current blog
         - 'blogs': all blogs for navigation
         - 'pager': pager of posts
         - 'active_tag_ids' :  list of active tag ids,
         - 'tags_list' : function to built the comma-separated tag list ids (for the url),
         - 'tags': all tags, for navigation
         - 'nav_list': a dict [year][month] for archives navigation
         - 'date': date_begin optional parameter, used in archives navigation
         - 'blog_url': help object to create URLs
        """
        date_begin, date_end = opt.get('date_begin'), opt.get('date_end')

        cr, uid, context = request.cr, request.uid, request.context
        blog_post_obj = request.registry['blog.post']

        blog_obj = request.registry['blog.blog']
        blog_ids = blog_obj.search(cr, uid, [], order="create_date asc", context=context)
        blogs = blog_obj.browse(cr, uid, blog_ids, context=context)

        # build the domain for blog post to display
        domain = []
        # retrocompatibility to accept tag as slug
        active_tag_ids = tag and map(int, [unslug(t)[1] for t in tag.split(',')]) or []
        if active_tag_ids:
            domain += [('tag_ids', 'in', active_tag_ids)]
        if blog:
            domain += [('blog_id', '=', blog.id)]
        if date_begin and date_end:
            domain += [("create_date", ">=", date_begin), ("create_date", "<=", date_end)]

        blog_url = QueryURL('', ['blog', 'tag'], blog=blog, tag=tag, date_begin=date_begin, date_end=date_end)

        blog_post_ids = blog_post_obj.search(cr, uid, domain, order="create_date desc", context=context)
        blog_posts = blog_post_obj.browse(cr, uid, blog_post_ids, context=context)

        pager = request.website.pager(
            url=blog_url(),
            total=len(blog_posts),
            page=page,
            step=self._blog_post_per_page,
        )
        pager_begin = (page - 1) * self._blog_post_per_page
        pager_end = page * self._blog_post_per_page
        blog_posts = blog_posts[pager_begin:pager_end]

        all_tags = blog.all_tags()[blog.id]

        # function to create the string list of tag ids, and toggle a given one.
        # used in the 'Tags Cloud' template.
        def tags_list(tag_ids, current_tag):
            tag_ids = list(tag_ids) # required to avoid using the same list
            if current_tag in tag_ids:
                tag_ids.remove(current_tag)
            else:
                tag_ids.append(current_tag)
            tag_ids = request.registry['blog.tag'].browse(cr, uid, tag_ids, context=context).exists()
            return ','.join(map(slug, tag_ids))

        values = {
            'blog': blog,
            'blogs': blogs,
            'main_object': blog,
            'tags': all_tags,
            'active_tag_ids': active_tag_ids,
            'tags_list' : tags_list,
            'blog_posts': blog_posts,
            'pager': pager,
            'nav_list': self.nav_list(blog),
            'blog_url': blog_url,
            'date': date_begin,
        }
        response = request.website.render("website_blog.blog_post_short", values)
        return response
Пример #22
0
    def blog(self, blog=None, tag=None, page=1, **opt):
        """ Prepare all values to display the blog.

        :return dict values: values for the templates, containing

         - 'blog': current blog
         - 'blogs': all blogs for navigation
         - 'pager': pager of posts
         - 'active_tag_ids' :  list of active tag ids,
         - 'tags_list' : function to built the comma-separated tag list ids
           (for the url),
         - 'tags': all tags, for navigation
         - 'nav_list': a dict [year][month] for archives navigation
         - 'date': date_begin optional parameter, used in archives navigation
         - 'blog_url': help object to create URLs
        """
        date_begin, date_end = opt.get('date_begin'), opt.get('date_end')

        blogs = request.env['blog.blog'].search([], order="create_date asc")
        # build the domain for blog post to display
        domain = []
        # retrocompatibility to accept tag as slug
        active_tag_ids = tag and map(
            int, [unslug(t)[1] for t in tag.split(',')]) or []
        if active_tag_ids:
            domain += [('tag_ids', 'in', active_tag_ids)]
        if blog:
            domain += [('blog_id', '=', blog.id)]
        if date_begin and date_end:
            domain += [
                ("website_publication_date", ">=", date_begin),
                ("website_publication_date", "<=", date_end),
            ]

        blog_url = QueryURL('', ['blog', 'tag'],
                            blog=blog,
                            tag=tag,
                            date_begin=date_begin,
                            date_end=date_end)
        blog_posts = request.env['blog.post'].search(domain)

        pager = request.website.pager(
            url=blog_url(),
            total=len(blog_posts),
            page=page,
            step=self._blog_post_per_page,
        )
        pager_begin = (page - 1) * self._blog_post_per_page
        pager_end = page * self._blog_post_per_page
        blog_posts = blog_posts[pager_begin:pager_end]

        all_tags = blog.all_tags()[blog.id]

        # Function to create the string list of tag ids, and toggle a
        # given one. Used in the 'Tags Cloud' template.
        def tags_list(tag_ids, current_tag):
            tag_ids = list(tag_ids)  # required to avoid using the same list
            if current_tag in tag_ids:
                tag_ids.remove(current_tag)
            else:
                tag_ids.append(current_tag)
            tag_ids = request.env['blog.tag'].browse(tag_ids).exists()
            return ','.join(map(slug, tag_ids))

        values = {
            'blog': blog,
            'blogs': blogs,
            'main_object': blog,
            'tags': all_tags,
            'active_tag_ids': active_tag_ids,
            'tags_list': tags_list,
            'blog_posts': blog_posts,
            'pager': pager,
            'nav_list': self.nav_list(blog),
            'blog_url': blog_url,
            'date': date_begin,
        }
        response = request.website.render("website_blog.blog_post_short",
                                          values)
        return response
Пример #23
0
    def blog(self, blog=None, tag=None, page=1, **opt):
        """ Prepare all values to display the blog.

        :return dict values: values for the templates, containing

         - 'blog': current blog
         - 'blogs': all blogs for navigation
         - 'pager': pager of posts
         - 'active_tag_ids' :  list of active tag ids,
         - 'tags_list' : function to built the comma-separated tag list ids (for the url),
         - 'tags': all tags, for navigation
         - 'state_info': state of published/unpublished filter
         - 'nav_list': a dict [year][month] for archives navigation
         - 'date': date_begin optional parameter, used in archives navigation
         - 'blog_url': help object to create URLs
        """
        date_begin, date_end, state = opt.get('date_begin'), opt.get(
            'date_end'), opt.get('state')
        published_count, unpublished_count = 0, 0

        cr, uid, context = request.cr, request.uid, request.context
        blog_post_obj = request.registry['blog.post']

        blog_obj = request.registry['blog.blog']
        blog_ids = blog_obj.search(cr,
                                   uid, [],
                                   order="create_date asc",
                                   context=context)
        blogs = blog_obj.browse(cr, uid, blog_ids, context=context)

        # build the domain for blog post to display
        domain = []
        # retrocompatibility to accept tag as slug
        active_tag_ids = tag and map(
            int, [unslug(t)[1] for t in tag.split(',')]) or []
        if active_tag_ids:
            domain += [('tag_ids', 'in', active_tag_ids)]
        if blog:
            domain += [('blog_id', '=', blog.id)]
        if date_begin and date_end:
            domain += [("create_date", ">=", date_begin),
                       ("create_date", "<=", date_end)]

        if request.env.user.has_group('base.group_website_designer'):
            for group in request.env['blog.post'].read_group(
                    domain, ['website_published'],
                    groupby=["website_published"]):
                if group['website_published']:
                    published_count = group['website_published_count']
                else:
                    unpublished_count = group['website_published_count']
            if state == "published":
                domain += [("website_published", "=", True)]
            elif state == "unpublished":
                domain += [("website_published", "=", False)]

        blog_url = QueryURL('', ['blog', 'tag'],
                            blog=blog,
                            tag=tag,
                            date_begin=date_begin,
                            date_end=date_end)

        blog_post_ids = blog_post_obj.search(
            cr,
            uid,
            domain,
            order="published_date desc, create_date desc",
            context=context)
        blog_posts = blog_post_obj.browse(cr,
                                          uid,
                                          blog_post_ids,
                                          context=context)
        pager = request.website.pager(
            url=blog_url(),
            total=len(blog_posts),
            page=page,
            step=self._blog_post_per_page,
        )
        pager_begin = (page - 1) * self._blog_post_per_page
        pager_end = page * self._blog_post_per_page
        blog_posts = blog_posts[pager_begin:pager_end]

        all_tags = blog.all_tags()[blog.id]

        # function to create the string list of tag ids, and toggle a given one.
        # used in the 'Tags Cloud' template.
        def tags_list(tag_ids, current_tag):
            tag_ids = list(tag_ids)  # required to avoid using the same list
            if current_tag in tag_ids:
                tag_ids.remove(current_tag)
            else:
                tag_ids.append(current_tag)
            tag_ids = request.registry['blog.tag'].browse(
                cr, uid, tag_ids, context=context).exists()
            return ','.join(map(slug, tag_ids))

        values = {
            'blog': blog,
            'blogs': blogs,
            'main_object': blog,
            'tags': all_tags,
            'state_info': {
                "state": state,
                "published": published_count,
                "unpublished": unpublished_count
            },
            'active_tag_ids': active_tag_ids,
            'tags_list': tags_list,
            'blog_posts': blog_posts,
            'pager': pager,
            'nav_list': self.nav_list(blog),
            'blog_url': blog_url,
            'date': date_begin,
        }
        response = request.website.render("website_blog.blog_post_short",
                                          values)
        return response
Пример #24
0
    def customers(self,
                  country_id=0,
                  page=0,
                  country_name='',
                  tag_id=0,
                  **post):
        Country = request.env['res.country']
        Tag = request.env['res.partner.tag']
        Partner = request.env['res.partner']
        partner_name = post.get('search', '')

        domain = [('website_published', '=', True),
                  ('assigned_partner_id', '!=', False)]
        if partner_name:
            domain += [
                '|', ('name', 'ilike', post.get("search")),
                ('website_description', 'ilike', post.get("search"))
            ]

        if tag_id:
            tag_id = unslug(tag_id)[1] or 0
            domain += [('tag_ids', 'in', tag_id)]

        # group by country, based on customers found with the search(domain)
        countries = Partner.sudo().read_group(domain, ["id", "country_id"],
                                              groupby="country_id",
                                              orderby="country_id")
        country_count = Partner.sudo().search_count(domain)

        if country_id:
            domain += [('country_id', '=', country_id)]
            if not any(x['country_id'][0] == country_id
                       for x in countries if x['country_id']):
                country = Country.browse(country_id).read(['name'])
                if country:
                    countries.append({
                        'country_id_count':
                        0,
                        'country_id': (country_id, country['name'])
                    })
                countries.sort(
                    key=lambda d: d['country_id'] and d['country_id'][1])
            curr_country = Country.browse(country_id)

        countries.insert(
            0, {
                'country_id_count': country_count,
                'country_id': (0, _("All Countries"))
            })

        # search customers to display
        partner_count = Partner.sudo().search_count(domain)

        # pager
        url = '/customers'
        if country_id:
            url += '/country/%s' % country_id
        pager = request.website.pager(url=url,
                                      total=partner_count,
                                      page=page,
                                      step=self._references_per_page,
                                      scope=7,
                                      url_args=post)

        partners = Partner.sudo().search(domain,
                                         offset=pager['offset'],
                                         limit=self._references_per_page)
        google_map_partner_ids = ','.join(map(str, partners.ids))

        tags = Tag.search([('website_published', '=', True),
                           ('partner_ids', 'in', partners.ids)],
                          order='classname, name ASC')
        tag = tag_id and Tag.browse(tag_id) or False

        values = {
            'countries': countries,
            'current_country_id': country_id or 0,
            'current_country': curr_country if country_id else False,
            'partners': partners,
            'google_map_partner_ids': google_map_partner_ids,
            'pager': pager,
            'post': post,
            'search_path': "?%s" % werkzeug.url_encode(post),
            'tag': tag,
            'tags': tags,
        }
        return request.website.render("website_customer.index", values)
Пример #25
0
    def customers(self, country_id=0, page=0, country_name='', tag_id=0, **post):
        Country = request.env['res.country']
        Tag = request.env['res.partner.tag']
        Partner = request.env['res.partner']
        partner_name = post.get('search', '')

        domain = [('website_published', '=', True), ('assigned_partner_id', '!=', False)]
        if partner_name:
            domain += [
                '|',
                ('name', 'ilike', post.get("search")),
                ('website_description', 'ilike', post.get("search"))
            ]

        if tag_id:
            tag_id = unslug(tag_id)[1] or 0
            domain += [('tag_ids', 'in', tag_id)]

        # group by country, based on customers found with the search(domain)
        countries = Partner.sudo().read_group(domain, ["id", "country_id"], groupby="country_id", orderby="country_id")
        country_count = Partner.sudo().search_count(domain)

        if country_id:
            domain += [('country_id', '=', country_id)]
            if not any(x['country_id'][0] == country_id for x in countries if x['country_id']):
                country = Country.browse(country_id).read(['name'])
                if country:
                    countries.append({
                        'country_id_count': 0,
                        'country_id': (country_id, country['name'])
                    })
                countries.sort(key=lambda d: d['country_id'] and d['country_id'][1])
            curr_country = Country.browse(country_id)

        countries.insert(0, {
            'country_id_count': country_count,
            'country_id': (0, _("All Countries"))
        })

        # search customers to display
        partner_count = Partner.sudo().search_count(domain)

        # pager
        url = '/customers'
        if country_id:
            url += '/country/%s' % country_id
        pager = request.website.pager(
            url=url, total=partner_count, page=page, step=self._references_per_page,
            scope=7, url_args=post
        )

        partners = Partner.sudo().search(domain, offset=pager['offset'], limit=self._references_per_page)
        google_map_partner_ids = ','.join(map(str, partners.ids))

        tags = Tag.search([('website_published', '=', True), ('partner_ids', 'in', partners.ids)], order='classname, name ASC')
        tag = tag_id and Tag.browse(tag_id) or False

        values = {
            'countries': countries,
            'current_country_id': country_id or 0,
            'current_country': curr_country if country_id else False,
            'partners': partners,
            'google_map_partner_ids': google_map_partner_ids,
            'pager': pager,
            'post': post,
            'search_path': "?%s" % werkzeug.url_encode(post),
            'tag': tag,
            'tags': tags,
        }
        return request.render("website_customer.index", values)
Пример #26
0
    def customers(self, country_id=0, page=0, country_name="", tag_id=0, **post):
        cr, uid, context = request.cr, request.uid, request.context
        country_obj = request.registry["res.country"]
        tag_obj = request.registry["res.partner.tag"]
        partner_obj = request.registry["res.partner"]
        partner_name = post.get("search", "")

        domain = [("website_published", "=", True), ("assigned_partner_id", "!=", False)]
        if partner_name:
            domain += ["|", ("name", "ilike", post.get("search")), ("website_description", "ilike", post.get("search"))]

        if tag_id:
            tag_id = unslug(tag_id)[1] or 0
            domain += [("tag_ids", "in", tag_id)]

        # group by country, based on customers found with the search(domain)
        countries = partner_obj.read_group(
            cr,
            openerp.SUPERUSER_ID,
            domain,
            ["id", "country_id"],
            groupby="country_id",
            orderby="country_id",
            context=request.context,
        )
        country_count = partner_obj.search(cr, openerp.SUPERUSER_ID, domain, count=True, context=request.context)

        if country_id:
            domain += [("country_id", "=", country_id)]
            if not any(x["country_id"][0] == country_id for x in countries):
                country = country_obj.read(cr, uid, country_id, ["name"], context)
                if country:
                    countries.append({"country_id_count": 0, "country_id": (country_id, country["name"])})
                countries.sort(key=lambda d: d["country_id"][1])
            curr_country = country_obj.browse(cr, uid, country_id, context)

        countries.insert(0, {"country_id_count": country_count, "country_id": (0, _("All Countries"))})

        # search customers to display
        partner_count = partner_obj.search_count(cr, openerp.SUPERUSER_ID, domain, context=request.context)

        # pager
        url = "/customers"
        if country_id:
            url += "/country/%s" % country_id
        pager = request.website.pager(
            url=url, total=partner_count, page=page, step=self._references_per_page, scope=7, url_args=post
        )

        partner_ids = partner_obj.search(
            request.cr,
            openerp.SUPERUSER_ID,
            domain,
            offset=pager["offset"],
            limit=self._references_per_page,
            context=request.context,
        )
        google_map_partner_ids = ",".join(map(str, partner_ids))
        partners = partner_obj.browse(request.cr, openerp.SUPERUSER_ID, partner_ids, request.context)

        tag_obj = request.registry["res.partner.tag"]
        tag_ids = tag_obj.search(
            cr,
            uid,
            [("website_published", "=", True), ("partner_ids", "in", partner_ids)],
            order="classname, name ASC",
            context=context,
        )
        tags = tag_obj.browse(cr, uid, tag_ids, context=context)
        tag = tag_id and tag_obj.browse(cr, uid, tag_id, context=context) or False

        values = {
            "countries": countries,
            "current_country_id": country_id or 0,
            "current_country": country_id and curr_country or False,
            "partners": partners,
            "google_map_partner_ids": google_map_partner_ids,
            "pager": pager,
            "post": post,
            "search_path": "?%s" % werkzeug.url_encode(post),
            "tag": tag,
            "tags": tags,
        }
        return request.website.render("website_customer.index", values)