示例#1
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)
示例#2
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_membership.partner", values)
     return self.members(**post)
示例#3
0
文件: main.py 项目: ecoreos/hz
 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_membership.partner",
                                           values)
     return self.members(**post)
示例#4
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()
示例#5
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()
示例#6
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)
示例#7
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)
示例#8
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)
示例#9
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
示例#10
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
示例#11
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,
                                           ecore.SUPERUSER_ID,
                                           domain, ["id", "country_id"],
                                           groupby="country_id",
                                           orderby="country_id",
                                           context=request.context)
        country_count = partner_obj.search(cr,
                                           ecore.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 if x['country_id']):
                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'] and 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,
                                                 ecore.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,
                                         ecore.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, ecore.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)