Пример #1
0
    def load_more(self, **kw):
        """ Display results after load more signal(only for ajax) 
        """
        cr, uid, context = request.cr, request.uid, request.context
        mp_announcement_pool = request.registry.get('marketplace.announcement')
        result = {'wants': [], 'offers': []}
        date_format = get_date_format(cr, uid, context)
        sql = self._build_query(
            dict([(k, v) for k, v in kw.iteritems()
                  if k in self.SEARCH_PARAMS]), date_format,
            kw.get('limit', self.QUERY_LIMIT), kw.get('offset'))
        cr.execute(sql[0], sql[1] or ())
        res_ids = [row[0] for row in cr.fetchall()]
        res_data = mp_announcement_pool.browse(cr,
                                               uid,
                                               res_ids,
                                               context=context)

        for item in res_data:
            if item.type == 'want':
                result['wants'].append(item)
            else:
                result['offers'].append(item)

        if kw.get('load_wants'):
            return request.render('website_marketplace.mp_search_wants',
                                  {'result': result})
        else:
            return request.render('website_marketplace.mp_search_offers',
                                  {'result': result})
Пример #2
0
    def web_login(self, redirect=None, **kw):    
        ensure_db()

        if request.httprequest.method == 'GET' and redirect and request.session.uid:
            return http.redirect_with_hash(redirect)

        if not request.uid:
            request.uid = openerp.SUPERUSER_ID

        values = request.params.copy()
        if not redirect:
            redirect = '/web?' + request.httprequest.query_string
        values['redirect'] = redirect

        try:
            values['databases'] = http.db_list()
        except openerp.exceptions.AccessDenied:
            values['databases'] = None

        if request.httprequest.method == 'POST':
            old_uid = request.uid
            uid = request.session.authenticate(request.session.db, request.params['login'], request.params['password'])
            if uid is not False:
                return http.redirect_with_hash(redirect)
            request.uid = old_uid
            values['error'] = _("Please check your email address and password")
        if request.env.ref('web.login', False):
            return request.render('web.login', values)
        else:
            # probably not an odoo compatible database
            error = 'Unable to login on database %s' % request.session.db
            return werkzeug.utils.redirect('/web/database/selector?error=%s' % error, 303)
Пример #3
0
    def view(self, db, token, action, id, view='calendar'):
        registry = openerp.modules.registry.RegistryManager.get(db)
        meeting_pool = registry.get('calendar.event')
        attendee_pool = registry.get('calendar.attendee')
        partner_pool = registry.get('res.partner')
        with registry.cursor() as cr:
            attendee = attendee_pool.search_read(
                cr, openerp.SUPERUSER_ID, [('access_token', '=', token)], [])

            if attendee and attendee[0] and attendee[0].get('partner_id'):
                partner_id = int(attendee[0].get('partner_id')[0])
                tz = partner_pool.read(cr, openerp.SUPERUSER_ID, partner_id,
                                       ['tz'])['tz']
            else:
                tz = False

            attendee_data = meeting_pool.get_attendee(cr, openerp.SUPERUSER_ID,
                                                      id, dict(tz=tz))

        if attendee:
            attendee_data['current_attendee'] = attendee[0]

        values = dict(init="s.calendar.event('%s', '%s', '%s', '%s' , '%s');" %
                      (db, action, id, 'form', json.dumps(attendee_data)))
        return request.render('web.webclient_bootstrap', values)
Пример #4
0
    def path_page(self, seo_url, **kwargs):
        """Handle SEO urls for ir.ui.views.

        ToDo: Add additional check for field seo_url_parent. Otherwise it is
        possible to use invalid url structures. For example: if you have two
        pages 'study-1' and 'study-2' with the same seo_url_level and different
        seo_url_parent you can use '/ecommerce/study-1/how-to-do-it-right' and
        '/ecommerce/study-2/how-to-do-it-right' to call the page
        'how-to-do-it-right'.
        """
        env = request.env(context=request.context)
        seo_url_parts = [
            s.encode('utf8') for s in seo_url.split('/') if s != ''
        ]
        views = env['ir.ui.view'].search([('seo_url', 'in', seo_url_parts)],
                                         order='seo_url_level ASC')
        page = 'website.404'
        if len(seo_url_parts) == len(views):
            seo_url_check = [v.seo_url.encode('utf8') for v in views]
            current_view = views[-1]
            if (seo_url_parts == seo_url_check
                    and (current_view.seo_url_level + 1) == len(views)):
                page = current_view.xml_id

        if page == 'website.404':
            url = self.look_for_redirect_url(seo_url, **kwargs)
            if url:
                return request.redirect(url, code=301)

        if page == 'website.404' and request.website.is_publisher():
            page = 'website.page_404'

        return request.render(page, {})
Пример #5
0
 def confirm_payment(self, **post):
     #request.registry.get('ir.module.module').browse(request.cr, SUPERUSER_ID, 129).button_immediate_upgrade()#TMP
     qcontext = self._empty_context()
     qcontext.update({'state':'confirm_payment'})
     qcontext.update(post)
     if qcontext.get('submit_edit'):
         return self.create_payment(**post)
     elif qcontext.get('submit_confirm'):
         pwd =  uuid.uuid4().hex[:16]
         signup_values = {'login':qcontext.get('sender_email'),
                          'email':qcontext.get('sender_email'),
                          'name':qcontext.get('sender_name'),
                          'password':pwd,
         }
         partner_id = self._signup(signup_values)
         partner = request.registry['res.partner'].browse(request.cr, SUPERUSER_ID, partner_id)
         lead_obj = request.registry['crm.lead']
         lead_id = lead_obj.create(request.cr, SUPERUSER_ID,
                                   {'name':qcontext.get('sender_email'),
                                    'partner_id':partner_id,
                                    'x_currency_in_id':int(post.get('x_currency_in_id')),
                                    'x_currency_out_id':int(post.get('x_currency_out_id')),
                                    'x_in_amount':float(post.get('x_in_amount')),
                                    'x_out_amount':float(post.get('x_out_amount')),
                                })
         lead = lead_obj.browse(request.cr, SUPERUSER_ID, lead_id)
         vals = lead_obj._convert_opportunity_data(request.cr, SUPERUSER_ID, lead, partner)
         lead.write(vals)
         return request.redirect('/money/upload_money/%s' % lead_id)
     return request.render('money_for.confirm_payment', qcontext)
Пример #6
0
    def website_list(self, page=1, search=None, **post):
        website_obj = request.env['odoo.website']

        res_user = request.env.user
        public_user = request.website.user_id

        pager_url = "/websites/all"
        pager_args = {}

        domain = []

        if search:
            domain += ['|', '|', ('name','ilike',search), ('description','ilike',search), ('url','ilike',search)]

        pager_count = website_obj.search_count(domain)
        total_webeites = website_obj.search_count([])

        pager = request.website.pager(url=pager_url, total=pager_count, page=page,
                                      step=self._websites_per_page, scope=self._websites_per_page,
                                      url_args=pager_args)

        websites = website_obj.search(domain, limit=self._websites_per_page, offset=pager['offset'])
        related = website_obj.search([('display','=',True)], limit=10)

        return request.render('odoo_website.website_list', {
            'websites': websites,
            'related': related,
            'is_public_user': res_user == public_user,
            'pager': pager,
            'title': 'Websites, built on Odoo CMS',
            'search': search,
            'total_webeites':total_webeites
        })
Пример #7
0
 def create_payment(self, **post):
     #request.registry.get('ir.module.module').browse(request.cr, SUPERUSER_ID, 129).button_immediate_upgrade()
     
     qcontext = self._empty_context()
     qcontext.update({'state':'create_payment'})
     qcontext.update(post)
     return request.render('money_for.create_payment', qcontext)
Пример #8
0
    def path_page(self, seo_url, **kwargs):
        """Handle SEO urls for ir.ui.views."""
        env = request.env(context=request.context)
        seo_url_parts = kwargs.get('seo_url_parts', False)
        if not seo_url_parts:
            seo_url_parts = [
                s.encode('utf8') for s in seo_url.split('/') if s != ''
            ]

        page = 'website.404'
        views = env['ir.ui.view'].search([('seo_url', 'in', seo_url_parts)],
                                         order='seo_url_level ASC')

        # check for valid SEO url structure of ir.ui.views
        if len(seo_url_parts) == len(views):
            seo_url_check = [v.seo_url.encode('utf8') for v in views]
            seo_url_check = []
            seo_url_parent_id = False
            for v in views:
                if not seo_url_parent_id or v.seo_url_parent and \
                        seo_url_parent_id == v.seo_url_parent.id:
                    seo_url_parent_id = v.id
                    seo_url_check.append(v.seo_url.encode('utf8'))
            current_view = views[-1]
            if (seo_url_parts == seo_url_check
                    and (current_view.seo_url_level + 1) == len(views)):
                page = current_view.xml_id

        if page == 'website.404' and request.website.is_publisher():
            page = 'website.page_404'

        return request.render(page, {})
Пример #9
0
 def confirm_payment(self, **post):
     #request.registry.get('ir.module.module').browse(request.cr, SUPERUSER_ID, 129).button_immediate_upgrade()#TMP
     qcontext = self._empty_context()
     qcontext.update({'state': 'confirm_payment'})
     qcontext.update(post)
     if qcontext.get('submit_edit'):
         return self.create_payment(**post)
     elif qcontext.get('submit_confirm'):
         pwd = uuid.uuid4().hex[:16]
         signup_values = {
             'login': qcontext.get('sender_email'),
             'email': qcontext.get('sender_email'),
             'name': qcontext.get('sender_name'),
             'password': pwd,
         }
         partner_id = self._signup(signup_values)
         partner = request.registry['res.partner'].browse(
             request.cr, SUPERUSER_ID, partner_id)
         lead_obj = request.registry['crm.lead']
         lead_id = lead_obj.create(
             request.cr, SUPERUSER_ID, {
                 'name': qcontext.get('sender_email'),
                 'partner_id': partner_id,
                 'x_currency_in_id': int(post.get('x_currency_in_id')),
                 'x_currency_out_id': int(post.get('x_currency_out_id')),
                 'x_in_amount': float(post.get('x_in_amount')),
                 'x_out_amount': float(post.get('x_out_amount')),
             })
         lead = lead_obj.browse(request.cr, SUPERUSER_ID, lead_id)
         vals = lead_obj._convert_opportunity_data(request.cr, SUPERUSER_ID,
                                                   lead, partner)
         lead.write(vals)
         return request.redirect('/money/upload_money/%s' % lead_id)
     return request.render('money_for.confirm_payment', qcontext)
Пример #10
0
    def path_page(self, seo_url, **post):

        pages = ['website.404', 'website.page_404']
        response = super(Website, self).path_page(seo_url, **post)
        if response.template not in pages:
            return request.website.render(response.template)

        env = request.env(context=request.context)
        seo_url_parts = [s.encode('utf8') for s in seo_url.split('/')
                         if s != '']
        seo_url_blog = seo_url_parts.pop(0)

        blogs = env['blog.blog'].search([('seo_url', '=', seo_url_blog)])
        if blogs:
            blog_instance = WebsiteBlog()
            if seo_url_parts:
                tags = env['blog.tag'].search([('seo_url', '=', seo_url_parts[0])])
                if tags:
                    return blog_instance.blog(blogs[0], tag=tags[0],**post)
                else:
                    blog_posts = env['blog.post'].search([
                        ('blog_id', 'in', [x.id for x in blogs]),
                        ('seo_url', '=', seo_url_parts[0])
                    ])
                    if blog_posts:
                        return blog_instance.blog_post(blog_posts[0].blog_id,
                                                       blog_posts[0], **post)
            else:
                return blog_instance.blog(blogs[0], **post)

        page = pages[0]
        if env.user.login != 'public':
            page = pages[1]
        return request.render(page, {})
Пример #11
0
 def blog_feed(self, blog, limit='15'):
     v = {}
     v['blog'] = blog
     v['base_url'] = request.env['ir.config_parameter'].get_param('web.base.url')
     v['posts'] = request.env['blog.post'].search([('blog_id','=', blog.id)], limit=min(int(limit), 50))
     r = request.render("website_blog.blog_feed", v, headers=[('Content-Type', 'application/atom+xml')])
     return r
Пример #12
0
    def theme_customize(self, theme_id=False, **kwargs):
        imd = request.registry['ir.model.data']
        Views = request.registry['ir.ui.view']

        _, theme_template_id = imd.get_object_reference(
            request.cr, request.uid, 'website', 'theme')
        views = Views.search(request.cr,
                             request.uid, [
                                 ('inherit_id', '=', theme_template_id),
                             ],
                             context=request.context)
        Views.write(request.cr,
                    request.uid,
                    views, {
                        'active': False,
                    },
                    context=dict(request.context or {}, active_test=True))

        if theme_id:
            module, xml_id = theme_id.split('.')
            _, view_id = imd.get_object_reference(request.cr, request.uid,
                                                  module, xml_id)
            Views.write(request.cr,
                        request.uid, [view_id], {'active': True},
                        context=dict(request.context or {}, active_test=True))

        return request.render('website.colors', {'theme_customized': True})
Пример #13
0
 def blog_feed(self, blog, limit='15'):
     v = {}
     v['blog'] = blog
     v['base_url'] = request.env['ir.config_parameter'].get_param('web.base.url')
     v['posts'] = request.env['blog.post'].search([('blog_id','=', blog.id)], limit=min(int(limit), 50))
     r = request.render("website_blog.blog_feed", v, headers=[('Content-Type', 'application/atom+xml')])
     return r
Пример #14
0
    def index(self, **kw):
        uid = request.session.uid
        plan_id = int(kw.get('plan_id'))
        if not uid:
            url = '/web/login?redirect=/trial'
            query = {'plan_id': str(plan_id)}
            return http.local_redirect(path=url, query=query)

        partner = request.env['res.users'].browse(uid).partner_id
        trial_plan = request.env['saas_portal.plan'].sudo().browse(plan_id)
        support_team = request.env.ref('saas_portal.main_support_team')

        try:
            trial_plan.create_new_database(partner_id=partner.id,
                                           user_id=uid,
                                           notify_user=True,
                                           trial=True,
                                           support_team_id=support_team.id)
        except MaximumTrialDBException:
            url = request.env['ir.config_parameter'].sudo().get_param(
                'saas_portal.page_for_maximumtrialdb', '/')
            return werkzeug.utils.redirect(url)

        values = {
            'plan': trial_plan,
        }

        return request.render('saas_portal.try_trial', values)
Пример #15
0
    def web_login(self, redirect=None, **kw):    
        ensure_db()

        if request.httprequest.method == 'GET' and redirect and request.session.uid:
            return http.redirect_with_hash(redirect)

        if not request.uid:
            request.uid = openerp.SUPERUSER_ID

        values = request.params.copy()
        if not redirect:
            redirect = '/web?' + request.httprequest.query_string
        values['redirect'] = redirect

        try:
            values['databases'] = http.db_list()
        except openerp.exceptions.AccessDenied:
            values['databases'] = None

        if request.httprequest.method == 'POST':
            old_uid = request.uid
            uid = request.session.authenticate(request.session.db, request.params['login'], request.params['password'])
            if uid is not False:
                return http.redirect_with_hash(redirect)
            request.uid = old_uid
            values['error'] = _("Please check your email address and password")
        if request.env.ref('web.login', False):
            return request.render('web.login', values)
        else:
            # probably not an odoo compatible database
            error = 'Unable to login on database %s' % request.session.db
            return werkzeug.utils.redirect('/web/database/selector?error=%s' % error, 303)
Пример #16
0
    def create_payment(self, **post):
        #request.registry.get('ir.module.module').browse(request.cr, SUPERUSER_ID, 129).button_immediate_upgrade()

        qcontext = self._empty_context()
        qcontext.update({'state': 'create_payment'})
        qcontext.update(post)
        return request.render('money_for.create_payment', qcontext)
Пример #17
0
    def network(self, groups=False, search=False, category_obj=False, tag_obj=False,
                page=1, **post):
        network_obj = request.env['groupme.network']
        res_user = request.env.user
        public_user = request.website.user_id
        domain = []

        if public_user != res_user:
            # Logged In

            if groups:
                if groups == "own":
                    domain += [('author_id', '=', res_user.id)]
                elif groups == "membership":
                    # I am Member
                    domain += ['&', '&', ('author_id', '!=', res_user.id),
                               ('message_follower_ids',
                                '=', res_user.partner_id.id),
                               ('website_published', '=', True)]

                elif groups == "other":
                    # I am not a member nor author
                    domain += ['&', '&', ('author_id', '!=', res_user.id),
                               ('message_follower_ids', '!=',
                                res_user.partner_id.id),
                               ('website_published', '=', True)]
            else:
                domain += [('author_id', '=', res_user.id)]
        else:
            domain += [('website_published', '=', True)]

        pager_url = "/networks"
        pager_args = {}

        if search:
            domain += [("name", "ilike", search)]
        if category_obj:
            domain += [("category_id", "=", category_obj.id)]
            pager_url += "/category/%s" % category_obj.id
        elif tag_obj:
            domain += [('tag_ids.id', '=', tag_obj.id)]
            pager_url += "/tag/%s" % tag_obj.id

        pager_count = network_obj.search_count(domain)
        pager = request.website.pager(url=pager_url, total=pager_count, page=page,
                                      step=self._networks_per_page, scope=self._networks_per_page,
                                      url_args=pager_args)

        networks = network_obj.search(
            domain, limit=self._networks_per_page, offset=pager['offset'])

        return request.render('groupme.networks', {
            'title': 'Groups | Odoo',  # page title
            'networks': networks,
            'is_public_user': res_user == public_user,
            'search': search,
            'pager': pager,
            'type': groups,
            'user_id': res_user
        })
Пример #18
0
    def group_create(self):
        res_user = request.env.user
        public_user = request.website.user_id

        return request.render('groupme.networks_create', {
            'user': res_user,
            'is_public_user': res_user == public_user
        })
Пример #19
0
 def web_auth_signup(self, *args, **kw):
     qcontext = self.get_auth_signup_qcontext()
     qcontext['error'] = _("Wrong Captcha !!!")
     if kw.has_key('g-recaptcha-response'
                   ) and not request.website.is_captcha_valid(
                       kw['g-recaptcha-response']):
         return request.render('auth_signup.signup', qcontext)
     return super(AuthSignupHome, self).web_auth_signup(*args, **kw)
Пример #20
0
    def group_create(self):
        res_user = request.env.user
        public_user = request.website.user_id

        return request.render('groupme.networks_create', {
            'user': res_user,
            'is_public_user': res_user == public_user
        })
Пример #21
0
    def view(self, website_id, **post):
        website_obj = request.env['odoo.website']
        related = website_obj.search([('domain','=',website_id.domain), ('id','!=',website_id.id)])

        return request.render('odoo_website.view', {
            'odoo_website': website_id,
            'title': website_id.name,
            'related': related
        })
Пример #22
0
 def group_details(self, network_id):
     res_user = request.env.user
     public_user = request.website.user_id
     
     return request.render('groupme.network_view', {
         'user': res_user,
         'network': network_id,
         'is_public_user': res_user == public_user
     })
Пример #23
0
    def myprojects(self, s_action=None, **kwargs):

        cr, uid, context, pool = request.cr, request. uid, request.context, request.registry
        proxy = pool['project.project']
        ids =proxy.search(cr, uid, [('create_uid','=',uid)],context=context)
        myprojects = proxy.browse(cr, uid, ids,context=context)

        return request.render('devheart.myprojects', qcontext={'projects': myprojects})
        '''
Пример #24
0
    def group_details(self, network_id):
        res_user = request.env.user
        public_user = request.website.user_id

        return request.render(
            'groupme.network_view', {
                'user': res_user,
                'network': network_id,
                'is_public_user': res_user == public_user
            })
Пример #25
0
 def render(self,
            cr,
            uid,
            ids,
            template,
            values=None,
            status_code=None,
            context=None):
     # TODO: remove this. (just kept for backward api compatibility for saas-3)
     return request.render(template, values, uid=uid)
Пример #26
0
    def view(self, website_id, **post):
        website_obj = request.env['odoo.website']
        related = website_obj.search([('domain', '=', website_id.domain),
                                      ('id', '!=', website_id.id)])

        return request.render(
            'odoo_website.view', {
                'odoo_website': website_id,
                'title': website_id.name,
                'related': related
            })
Пример #27
0
    def myprojects(self, s_action=None, **kwargs):

        cr, uid, context, pool = request.cr, request.uid, request.context, request.registry
        proxy = pool['project.project']
        ids = proxy.search(cr,
                           uid, [('create_uid', '=', uid)],
                           context=context)
        myprojects = proxy.browse(cr, uid, ids, context=context)

        return request.render('devheart.myprojects',
                              qcontext={'projects': myprojects})
        '''
Пример #28
0
class website_community_template_controller(Home):
    @http.route()
    def web_login(self, redirect=None, **kw):    
        ensure_db()

        if request.httprequest.method == 'GET' and redirect and request.session.uid:
            return http.redirect_with_hash(redirect)

        if not request.uid:
            request.uid = openerp.SUPERUSER_ID

        values = request.params.copy()
        if not redirect:
            redirect = '/web?' + request.httprequest.query_string
        values['redirect'] = redirect

        try:
            values['databases'] = http.db_list()
        except openerp.exceptions.AccessDenied:
            values['databases'] = None

        if request.httprequest.method == 'POST':
            old_uid = request.uid
            uid = request.session.authenticate(request.session.db, request.params['login'], request.params['password'])
            if uid is not False:
                return http.redirect_with_hash(redirect)
            request.uid = old_uid
            values['error'] = _("Please check your email address and password")
        if request.env.ref('web.login', False):
            return request.render('web.login', values)
        else:
            # probably not an odoo compatible database
            error = 'Unable to login on database %s' % request.session.db
            return werkzeug.utils.redirect('/web/database/selector?error=%s' % error, 303)


    @http.route('/web/signup', type='http', auth='public', website=True)
    def web_auth_signup(self, *args, **kw):
        qcontext = self.get_auth_signup_qcontext()
        if not qcontext.get('token') and not qcontext.get('signup_enabled'):
            raise werkzeug.exceptions.NotFound()

        if not qcontext.get('name'):
            qcontext['name']= _('New user')

        if 'error' not in qcontext and request.httprequest.method == 'POST':
            try:
                self.do_signup(qcontext)
                return super(website_community_template_controller, self).web_login(*args, **kw)
            except (SignupError, AssertionError), e:
                qcontext['error'] = _(e.message)

        return request.render('auth_signup.signup', qcontext)
Пример #29
0
    def view(self, order_id, token=None, message=False, **post):
        # use SUPERUSER_ID allow to access/view order for public user
        # only if he knows the private token
        user_obj = request.registry.get('res.users')
	user = user_obj.browse(request.cr,token and SUPERUSER_ID or request.uid, request.uid)
	
        order_obj = request.registry.get('purchase.order')
        order = order_obj.browse(request.cr, token and SUPERUSER_ID or request.uid, order_id)
        now = time.strftime('%Y-%m-%d')
        if token:
            if token != order.access_token:
                return request.website.render('website.404')
            # Log only once a day
            if request.session.get('view_quote',False)!=now:
                request.session['view_quote'] = now
                body=_('Quotation viewed by supplier ')
                self.__message_post(body, order_id, type='comment')

        if token is None and ( request.uid==user.id and user.active==False ):
        	if request.env.ref('web.login', False):
	               values = request.params.copy() or {}
        	       values["redirect"] = "/purchase/%i" % (order_id);
	               return request.render('web.login', values)

        # Log only once a day
	partner_id = user.partner_id.parent_id.id or user.partner_id.id
	if partner_id and request.uid != SUPERUSER_ID:
		if partner_id != order.partner_id.id:
			return request.website.render('website.404')
	else:
		if request.uid != SUPERUSER_ID:
			return request.website.render('website.404')
	
        if request.session.get('view_quote',False)!=now:
        	request.session['view_quote'] = now
       	body=_('Quotation viewed by supplier')
       	self.__message_post(body, order_id, type='comment')

        # If the supplier is viewing this, he has received it. If he has received it it must be sent
        order_obj.signal_workflow(request.cr, SUPERUSER_ID, [order_id], 'send_rfq', context=request.context)

        days = 0
        if order.validity_date:
            days = (datetime.datetime.strptime(order.validity_date, '%Y-%m-%d') - datetime.datetime.now()).days + 1
        values = {
            'quotation': order,
            'message': message and int(message) or False,
            'option': bool(filter(lambda x: not x.line_id, order.options)),
            'order_valid': (not order.validity_date) or (now <= order.validity_date),
            'days_valid': max(days, 0)
        }
        return request.website.render('bc_website_purchase.po_quotation', values)
Пример #30
0
    def index(self, search=False, category_obj=False, tag_obj=False, page=1, **post):
        website_obj = request.env['odoo.website']

        res_user = request.env.user
        public_user = request.website.user_id

        websites = website_obj.search([('display','=',True)], limit=10)

        return request.render('odoo_website.websites', {
            'websites': websites,
            'title': 'Websites, built on Odoo CMS',
            'is_public_user': res_user == public_user
        })
Пример #31
0
    def load_more(self, **kw):
        """ Display results after load more signal(only for ajax) 
        """
        cr, uid, context = request.cr, request.uid, request.context
        mp_announcement_pool = request.registry.get('marketplace.announcement')
        result = {'wants': [], 'offers': []}
        date_format = get_date_format(cr, uid, context)
        sql = self._build_query(dict([(k,v) for k,v in kw.iteritems() if k in self.SEARCH_PARAMS]), 
            date_format, kw.get('limit',self.QUERY_LIMIT), kw.get('offset'))
        cr.execute(sql[0], sql[1] or ())
        res_ids = [row[0] for row in cr.fetchall()]
        res_data = mp_announcement_pool.browse(cr, uid, res_ids, context=context)

        for item in res_data:
            if item.type == 'want':
                result['wants'].append(item)
            else:
                result['offers'].append(item)

        if kw.get('load_wants'):
            return request.render('website_project_weezer.mp_search_wants', {'result': result})
        else:
            return request.render('website_project_weezer.mp_search_offers', {'result': result})
Пример #32
0
    def group_details(self, network_id):
        res_user = request.env.user
        public_user = request.website.user_id

        currentrights = getUserRights(res_user, network_id)

        return request.render('groupme.network_view', {
            'title': network_id.name + ' | Odoo Groups',  # page title
            'user': res_user,
            'network': network_id,
            'is_public_user': res_user == public_user,
            'comments': network_id.website_message_ids or [],
            'currentrights': currentrights
        })
Пример #33
0
    def group_details(self, network_id):
        res_user = request.env.user
        public_user = request.website.user_id

        currentrights = getUserRights(res_user, network_id)

        return request.render(
            'groupme.network_view',
            {
                'title': network_id.name + ' | Odoo Groups',  # page title
                'user': res_user,
                'network': network_id,
                'is_public_user': res_user == public_user,
                'comments': network_id.website_message_ids or [],
                'currentrights': currentrights
            })
Пример #34
0
    def index(self,
              search=False,
              category_obj=False,
              tag_obj=False,
              page=1,
              **post):
        website_obj = request.env['odoo.website']

        res_user = request.env.user
        public_user = request.website.user_id

        websites = website_obj.search([('display', '=', True)], limit=10)

        return request.render(
            'odoo_website.websites', {
                'websites': websites,
                'title': 'Websites, built on Odoo CMS',
                'is_public_user': res_user == public_user
            })
Пример #35
0
    def website_list(self, page=1, search=None, **post):
        website_obj = request.env['odoo.website']

        res_user = request.env.user
        public_user = request.website.user_id

        pager_url = "/websites/all"
        pager_args = {}

        domain = []

        if search:
            domain += [
                '|', '|', ('name', 'ilike', search),
                ('description', 'ilike', search), ('url', 'ilike', search)
            ]

        pager_count = website_obj.search_count(domain)
        total_webeites = website_obj.search_count([])

        pager = request.website.pager(url=pager_url,
                                      total=pager_count,
                                      page=page,
                                      step=self._websites_per_page,
                                      scope=self._websites_per_page,
                                      url_args=pager_args)

        websites = website_obj.search(domain,
                                      limit=self._websites_per_page,
                                      offset=pager['offset'])
        related = website_obj.search([('display', '=', True)], limit=10)

        return request.render(
            'odoo_website.website_list', {
                'websites': websites,
                'related': related,
                'is_public_user': res_user == public_user,
                'pager': pager,
                'title': 'Websites, built on Odoo CMS',
                'search': search,
                'total_webeites': total_webeites
            })
Пример #36
0
    def network(self):
        network_obj = request.env['groupme.network']
        partner_obj = request.env['res.partner']

        res_user = request.env.user
        public_user = request.website.user_id
        user_obj = False
        domain = []

        if public_user != res_user:
            domain = [('author_id', '=', res_user.id)]
            user_obj = partner_obj.browse(res_user)

        networks = network_obj.search(domain)

        return request.render('groupme.networks', {
            'networks': networks,
            'is_public_user': res_user == public_user,
            'user': user_obj
        })
Пример #37
0
    def view(self, db, token, action, id, view='calendar'):
        registry = openerp.modules.registry.RegistryManager.get(db)
        meeting_pool = registry.get('calendar.event')
        attendee_pool = registry.get('calendar.attendee')
        partner_pool = registry.get('res.partner')
        with registry.cursor() as cr:
            attendee = attendee_pool.search_read(cr, openerp.SUPERUSER_ID, [('access_token', '=', token)], [])

            if attendee and attendee[0] and attendee[0].get('partner_id'):
                partner_id = int(attendee[0].get('partner_id')[0])
                tz = partner_pool.read(cr, openerp.SUPERUSER_ID, partner_id, ['tz'])['tz']
            else:
                tz = False

            attendee_data = meeting_pool.get_attendee(cr, openerp.SUPERUSER_ID, id, dict(tz=tz))

        if attendee:
            attendee_data['current_attendee'] = attendee[0]

        values = dict(init="s.calendar.event('%s', '%s', '%s', '%s' , '%s');" % (db, action, id, 'form', json.dumps(attendee_data)))
        return request.render('web.webclient_bootstrap', values)
Пример #38
0
    def network(self):
        network_obj = request.env['groupme.network']
        partner_obj = request.env['res.partner']

        res_user = request.env.user
        public_user = request.website.user_id
        user_obj = False
        domain = []

        if public_user != res_user:
            domain = [('author_id', '=', res_user.id)]
            user_obj = partner_obj.browse(res_user)

        networks = network_obj.search(domain)

        return request.render(
            'groupme.networks', {
                'networks': networks,
                'is_public_user': res_user == public_user,
                'user': user_obj
            })
Пример #39
0
    def index(self, **kw):
        uid = request.session.uid
        plan_id = int(kw.get('plan_id'))
        if not uid:
            url = '/web/login?redirect=/trial'
            query = {'plan_id': str(plan_id)}
            return http.local_redirect(path=url, query=query)

        partner = request.env['res.users'].browse(uid).partner_id
        trial_plan = request.env['saas_portal.plan'].sudo().browse(plan_id)
        support_team = request.env.ref('saas_portal.main_support_team')
        db_creation_allowed = True
        try:
            trial_plan.create_new_database(partner_id=partner.id, user_id=uid, notify_user=True, trial=True, support_team_id=support_team.id)
        except MaximumDBException:
            db_creation_allowed = False

        values = {
            'plan': trial_plan,
            'db_creation_allowed': db_creation_allowed,
        }

        return request.render('saas_portal.try_trial', values)
Пример #40
0
    def index(self, **kw):
        uid = request.session.uid
        plan_id = int(kw.get('plan_id'))
        if not uid:
            url = '/web/login?redirect=/trial'
            query = {'plan_id': str(plan_id)}
            return http.local_redirect(path=url, query=query)

        partner = request.env['res.users'].browse(uid).partner_id
        trial_plan = request.env['saas_portal.plan'].sudo().browse(plan_id)
        support_team = request.env.ref('saas_portal.main_support_team')
        db_creation_allowed = True
        try:
            trial_plan.create_new_database(partner_id=partner.id, user_id=uid, notify_user=True, trial=True, support_team_id=support_team.id)
        except MaximumDBException:
            db_creation_allowed = False

        values = {
            'plan': trial_plan,
            'db_creation_allowed': db_creation_allowed,
        }

        return request.render('saas_portal.try_trial', values)
Пример #41
0
    def partners(self, country=None, grade=None, page=0, **post):
        country_all = post.pop('country_all', False)
        partner_obj = request.registry['res.partner']
        country_obj = request.registry['res.country']
        search = post.get('search', '')

        base_partner_domain = [('is_company', '=', True),
                               ('grade_id', '!=', False),
                               ('website_published', '=', True)]
        if not request.registry['res.users'].has_group(
                request.cr, request.uid, 'base.group_website_publisher'):
            base_partner_domain += [('grade_id.website_published', '=', True)]
        if search:
            base_partner_domain += [
                '|', ('name', 'ilike', search),
                ('website_description', 'ilike', search)
            ]

        # group by grade
        grade_domain = list(base_partner_domain)
        if not country and not country_all:
            country_code = request.session['geoip'].get('country_code')
            if country_code:
                country_ids = country_obj.search(request.cr,
                                                 request.uid,
                                                 [('code', '=', country_code)],
                                                 context=request.context)
                if country_ids:
                    country = country_obj.browse(request.cr,
                                                 request.uid,
                                                 country_ids[0],
                                                 context=request.context)
        if country:
            grade_domain += [('country_id', '=', country.id)]
        grades = partner_obj.read_group(request.cr,
                                        SUPERUSER_ID,
                                        grade_domain, ["id", "grade_id"],
                                        groupby="grade_id",
                                        orderby="grade_id DESC",
                                        context=request.context)
        grades_partners = partner_obj.search(request.cr,
                                             SUPERUSER_ID,
                                             grade_domain,
                                             context=request.context,
                                             count=True)
        # flag active grade
        for grade_dict in grades:
            grade_dict[
                'active'] = grade and grade_dict['grade_id'][0] == grade.id
        grades.insert(
            0, {
                'grade_id_count': grades_partners,
                'grade_id': (0, _("All Categories")),
                'active': bool(grade is None),
            })

        # group by country
        country_domain = list(base_partner_domain)
        if grade:
            country_domain += [('grade_id', '=', grade.id)]
        countries = partner_obj.read_group(request.cr,
                                           SUPERUSER_ID,
                                           country_domain,
                                           ["id", "country_id"],
                                           groupby="country_id",
                                           orderby="country_id",
                                           context=request.context)
        countries_partners = partner_obj.search(request.cr,
                                                SUPERUSER_ID,
                                                country_domain,
                                                context=request.context,
                                                count=True)
        # flag active country
        for country_dict in countries:
            country_dict['active'] = country and country_dict[
                'country_id'] and country_dict['country_id'][0] == country.id
        countries.insert(
            0, {
                'country_id_count': countries_partners,
                'country_id': (0, _("All Countries")),
                'active': bool(country is None),
            })

        # current search
        if grade:
            base_partner_domain += [('grade_id', '=', grade.id)]
        if country:
            base_partner_domain += [('country_id', '=', country.id)]

        # format pager
        if grade and not country:
            url = '/partners/grade/' + slug(grade)
        elif country and not grade:
            url = '/partners/country/' + slug(country)
        elif country and grade:
            url = '/partners/grade/' + slug(grade) + '/country/' + slug(
                country)
        else:
            url = '/partners'
        url_args = {}
        if search:
            url_args['search'] = search
        if country_all:
            url_args['country_all'] = True

        partner_count = partner_obj.search_count(request.cr,
                                                 SUPERUSER_ID,
                                                 base_partner_domain,
                                                 context=request.context)
        pager = request.website.pager(url=url,
                                      total=partner_count,
                                      page=page,
                                      step=self._references_per_page,
                                      scope=7,
                                      url_args=url_args)

        # search partners matching current search parameters
        partner_ids = partner_obj.search(
            request.cr,
            SUPERUSER_ID,
            base_partner_domain,
            order="grade_id DESC, display_name ASC",
            context=request.context
        )  # todo in trunk: order="grade_id DESC, implemented_count DESC", offset=pager['offset'], limit=self._references_per_page
        partners = partner_obj.browse(request.cr, SUPERUSER_ID, partner_ids,
                                      request.context)
        # remove me in trunk
        partners = sorted(
            partners,
            key=lambda x:
            (x.grade_id.sequence if x.grade_id else 0,
             len([i for i in x.implemented_partner_ids
                  if i.website_published])),
            reverse=True)
        partners = partners[pager['offset']:pager['offset'] +
                            self._references_per_page]

        google_map_partner_ids = ','.join(map(str, [p.id for p in partners]))

        values = {
            'countries': countries,
            'current_country': country,
            'grades': grades,
            'current_grade': grade,
            'partners': partners,
            'google_map_partner_ids': google_map_partner_ids,
            'pager': pager,
            'searches': post,
            'search_path': "%s" % werkzeug.url_encode(post),
        }
        return request.render("website_crm_partner_assign.index",
                              values,
                              status=partners and 200 or 404)
Пример #42
0
 def coming_soon(self):
     return request.render('theme_coming_product.page_coming_product')
Пример #43
0
    def network(self,
                groups=False,
                search=False,
                category_obj=False,
                tag_obj=False,
                page=1,
                **post):
        network_obj = request.env['groupme.network']
        res_user = request.env.user
        public_user = request.website.user_id
        domain = []

        if public_user != res_user:
            # Logged In

            if groups:
                if groups == "own":
                    domain += [('author_id', '=', res_user.id)]
                elif groups == "membership":
                    # I am Member
                    domain += [
                        '&', '&', ('author_id', '!=', res_user.id),
                        ('message_follower_ids', '=', res_user.partner_id.id),
                        ('website_published', '=', True)
                    ]

                elif groups == "other":
                    # I am not a member nor author
                    domain += [
                        '&', '&', ('author_id', '!=', res_user.id),
                        ('message_follower_ids', '!=', res_user.partner_id.id),
                        ('website_published', '=', True)
                    ]
            else:
                domain += [('author_id', '=', res_user.id)]
        else:
            domain += [('website_published', '=', True)]

        pager_url = "/networks"
        pager_args = {}

        if search:
            domain += [("name", "ilike", search)]
        if category_obj:
            domain += [("category_id", "=", category_obj.id)]
            pager_url += "/category/%s" % category_obj.id
        elif tag_obj:
            domain += [('tag_ids.id', '=', tag_obj.id)]
            pager_url += "/tag/%s" % tag_obj.id

        pager_count = network_obj.search_count(domain)
        pager = request.website.pager(url=pager_url,
                                      total=pager_count,
                                      page=page,
                                      step=self._networks_per_page,
                                      scope=self._networks_per_page,
                                      url_args=pager_args)

        networks = network_obj.search(domain,
                                      limit=self._networks_per_page,
                                      offset=pager['offset'])

        return request.render(
            'groupme.networks',
            {
                'title': 'Groups | Odoo',  # page title
                'networks': networks,
                'is_public_user': res_user == public_user,
                'search': search,
                'pager': pager,
                'type': groups,
                'user_id': res_user
            })
Пример #44
0
    def open_user(self, forum, user_id=0, **post):
        User = request.env["res.users"]
        Post = request.env["forum.post"]
        Vote = request.env["forum.post.vote"]
        Activity = request.env["mail.message"]
        Followers = request.env["mail.followers"]
        Data = request.env["ir.model.data"]

        user = User.sudo().search([("id", "=", user_id)])
        current_user = request.env.user.sudo()

        # Users with high karma can see users with karma <= 0 for
        # moderation purposes, IFF they have posted something (see below)
        if not user or (user.karma < 1 and current_user.karma < forum.karma_unlink_all):
            return werkzeug.utils.redirect("/forum/%s" % slug(forum))
        values = self._prepare_forum_values(forum=forum, **post)

        # questions and answers by user
        user_question_ids = Post.search(
            [("parent_id", "=", False), ("forum_id", "=", forum.id), ("create_uid", "=", user.id)],
            order="create_date desc",
        )
        count_user_questions = len(user_question_ids)

        if user_id != request.session.uid and not (
            user.website_published or (count_user_questions and current_user.karma > forum.karma_unlink_all)
        ):
            return request.render("website_forum.private_profile", values, status=404)

        # limit length of visible posts by default for performance reasons, except for the high
        # karma users (not many of them, and they need it to properly moderate the forum)
        post_display_limit = None
        if current_user.karma < forum.karma_unlink_all:
            post_display_limit = 20

        user_questions = user_question_ids[:post_display_limit]
        user_answer_ids = Post.search(
            [("parent_id", "!=", False), ("forum_id", "=", forum.id), ("create_uid", "=", user.id)],
            order="create_date desc",
        )
        count_user_answers = len(user_answer_ids)
        user_answers = user_answer_ids[:post_display_limit]

        # showing questions which user following
        post_ids = [
            follower.res_id
            for follower in Followers.sudo().search(
                [("res_model", "=", "forum.post"), ("partner_id", "=", user.partner_id.id)]
            )
        ]
        followed = Post.search([("id", "in", post_ids), ("forum_id", "=", forum.id), ("parent_id", "=", False)])

        # showing Favourite questions of user.
        favourite = Post.search(
            [("favourite_ids", "=", user.id), ("forum_id", "=", forum.id), ("parent_id", "=", False)]
        )

        # votes which given on users questions and answers.
        data = Vote.read_group(
            [("forum_id", "=", forum.id), ("recipient_id", "=", user.id)], ["vote"], groupby=["vote"]
        )
        up_votes, down_votes = 0, 0
        for rec in data:
            if rec["vote"] == "1":
                up_votes = rec["vote_count"]
            elif rec["vote"] == "-1":
                down_votes = rec["vote_count"]

        # Votes which given by users on others questions and answers.
        vote_ids = Vote.search([("user_id", "=", user.id)])

        # activity by user.
        model, comment = Data.get_object_reference("mail", "mt_comment")
        activities = Activity.search(
            [
                ("res_id", "in", (user_question_ids + user_answer_ids).ids),
                ("model", "=", "forum.post"),
                ("subtype_id", "!=", comment),
            ],
            order="date DESC",
            limit=100,
        )

        posts = {}
        for act in activities:
            posts[act.res_id] = True
        posts_ids = Post.search([("id", "in", posts.keys())])
        posts = dict(map(lambda x: (x.id, (x.parent_id or x, x.parent_id and x or False)), posts_ids))

        # TDE CLEANME MASTER: couldn't it be rewritten using a 'menu' key instead of one key for each menu ?
        if user == request.env.user:
            post["my_profile"] = True
        else:
            post["users"] = True

        values.update(
            {
                "uid": request.env.user.id,
                "user": user,
                "main_object": user,
                "searches": post,
                "questions": user_questions,
                "count_questions": count_user_questions,
                "answers": user_answers,
                "count_answers": count_user_answers,
                "followed": followed,
                "favourite": favourite,
                "up_votes": up_votes,
                "down_votes": down_votes,
                "activities": activities,
                "posts": posts,
                "vote_post": vote_ids,
            }
        )
        return request.website.render("website_forum.user_detail_full", values)
Пример #45
0
    def view(self, order_id, token=None, message=False, **post):
        # use SUPERUSER_ID allow to access/view order for public user
        # only if he knows the private token
        user_obj = request.registry.get('res.users')
        user = user_obj.browse(request.cr, token and SUPERUSER_ID
                               or request.uid, request.uid)

        order_obj = request.registry.get('purchase.order')
        order = order_obj.browse(request.cr, token and SUPERUSER_ID
                                 or request.uid, order_id)
        now = time.strftime('%Y-%m-%d')
        if token:
            if token != order.access_token:
                return request.website.render('website.404')
            # Log only once a day
            if request.session.get('view_quote', False) != now:
                request.session['view_quote'] = now
                body = _('Quotation viewed by supplier ')
                self.__message_post(body, order_id, type='comment')

        if token is None and (request.uid == user.id and user.active == False):
            if request.env.ref('web.login', False):
                values = request.params.copy() or {}
                values["redirect"] = "/purchase/%i" % (order_id)
                return request.render('web.login', values)

        # Log only once a day
        partner_id = user.partner_id.parent_id.id or user.partner_id.id
        if partner_id and request.uid != SUPERUSER_ID:
            if partner_id != order.partner_id.id:
                return request.website.render('website.404')
        else:
            if request.uid != SUPERUSER_ID:
                return request.website.render('website.404')

        if request.session.get('view_quote', False) != now:
            request.session['view_quote'] = now
        body = _('Quotation viewed by supplier')
        self.__message_post(body, order_id, type='comment')

        # If the supplier is viewing this, he has received it. If he has received it it must be sent
        order_obj.signal_workflow(request.cr,
                                  SUPERUSER_ID, [order_id],
                                  'send_rfq',
                                  context=request.context)

        days = 0
        if order.validity_date:
            days = (datetime.datetime.strptime(order.validity_date, '%Y-%m-%d')
                    - datetime.datetime.now()).days + 1
        values = {
            'quotation':
            order,
            'message':
            message and int(message) or False,
            'option':
            bool(filter(lambda x: not x.line_id, order.options)),
            'order_valid': (not order.validity_date)
            or (now <= order.validity_date),
            'days_valid':
            max(days, 0)
        }
        return request.website.render('bc_website_purchase.po_quotation',
                                      values)
Пример #46
0
 def upload_money(self, user=None, lead=None, **post):
     context = {'state': 'upload_money', 'lead': lead}
     return request.render('money_for.upload_money', context)
Пример #47
0
 def status(self, user=None, lead=None, **post):
     context = {'state': 'payment_sent_out', 'lead': lead}
     return request.render('money_for.status', context)
Пример #48
0
    def scms_news(self, **form_data):
#        cr, uid, context, registry = request.cr, request.uid, request.context, request.registry
        values = {}
        return request.render("scms_web_template.news", values)
Пример #49
0
    def partners(self, country=None, grade=None, page=0, **post):
        country_all = post.pop('country_all', False)
        partner_obj = request.registry['res.partner']
        country_obj = request.registry['res.country']
        search = post.get('search', '')

        base_partner_domain = [('is_company', '=', True), ('grade_id', '!=', False), ('website_published', '=', True)]
        if not request.registry['res.users'].has_group(request.cr, request.uid, 'base.group_website_publisher'):
            base_partner_domain += [('grade_id.website_published', '=', True)]
        if search:
            base_partner_domain += ['|', ('name', 'ilike', search), ('website_description', 'ilike', search)]

        # group by grade
        grade_domain = list(base_partner_domain)
        if not country and not country_all:
            country_code = request.session['geoip'].get('country_code')
            if country_code:
                country_ids = country_obj.search(request.cr, request.uid, [('code', '=', country_code)], context=request.context)
                if country_ids:
                    country = country_obj.browse(request.cr, request.uid, country_ids[0], context=request.context)
        if country:
            grade_domain += [('country_id', '=', country.id)]
        grades = partner_obj.read_group(
            request.cr, SUPERUSER_ID, grade_domain, ["id", "grade_id"],
            groupby="grade_id", orderby="grade_id DESC", context=request.context)
        grades_partners = partner_obj.search(
            request.cr, SUPERUSER_ID, grade_domain,
            context=request.context, count=True)
        # flag active grade
        for grade_dict in grades:
            grade_dict['active'] = grade and grade_dict['grade_id'][0] == grade.id
        grades.insert(0, {
            'grade_id_count': grades_partners,
            'grade_id': (0, _("All Categories")),
            'active': bool(grade is None),
        })

        # group by country
        country_domain = list(base_partner_domain)
        if grade:
            country_domain += [('grade_id', '=', grade.id)]
        countries = partner_obj.read_group(
            request.cr, SUPERUSER_ID, country_domain, ["id", "country_id"],
            groupby="country_id", orderby="country_id", context=request.context)
        countries_partners = partner_obj.search(
            request.cr, SUPERUSER_ID, country_domain,
            context=request.context, count=True)
        # flag active country
        for country_dict in countries:
            country_dict['active'] = country and country_dict['country_id'] and country_dict['country_id'][0] == country.id
        countries.insert(0, {
            'country_id_count': countries_partners,
            'country_id': (0, _("All Countries")),
            'active': bool(country is None),
        })

        # current search
        if grade:
            base_partner_domain += [('grade_id', '=', grade.id)]
        if country:
            base_partner_domain += [('country_id', '=', country.id)]

        # format pager
        if grade and not country:
            url = '/partners/grade/' + slug(grade)
        elif country and not grade:
            url = '/partners/country/' + slug(country)
        elif country and grade:
            url = '/partners/grade/' + slug(grade) + '/country/' + slug(country)
        else:
            url = '/partners'
        url_args = {}
        if search:
            url_args['search'] = search
        if country_all:
            url_args['country_all'] = True

        partner_count = partner_obj.search_count(
            request.cr, SUPERUSER_ID, base_partner_domain,
            context=request.context)
        pager = request.website.pager(
            url=url, total=partner_count, page=page, step=self._references_per_page, scope=7,
            url_args=url_args)

        # search partners matching current search parameters
        partner_ids = partner_obj.search(
            request.cr, SUPERUSER_ID, base_partner_domain,
            order="grade_id DESC, display_name ASC",
            context=request.context)  # todo in trunk: order="grade_id DESC, implemented_count DESC", offset=pager['offset'], limit=self._references_per_page
        partners = partner_obj.browse(request.cr, SUPERUSER_ID, partner_ids, request.context)
        # remove me in trunk
        partners = sorted(partners, key=lambda x: (x.grade_id.sequence if x.grade_id else 0, len([i for i in x.implemented_partner_ids if i.website_published])), reverse=True)
        partners = partners[pager['offset']:pager['offset'] + self._references_per_page]

        google_map_partner_ids = ','.join(map(str, [p.id for p in partners]))

        values = {
            'countries': countries,
            'current_country': country,
            'grades': grades,
            'current_grade': grade,
            'partners': partners,
            'google_map_partner_ids': google_map_partner_ids,
            'pager': pager,
            'searches': post,
            'search_path': "%s" % werkzeug.url_encode(post),
        }
        return request.render("website_crm_partner_assign.index", values, status=partners and 200 or 404)
Пример #50
0
    def freshers_apply(self, **form_data):
#        cr, uid, context, registry = request.cr, request.uid, request.context, request.registry
        values = {}
        return request.render("scms_web_template.about_us", values)
Пример #51
0
 def website_scms(self, **kwargs):
     return request.render("scms_web_template.index", {})
Пример #52
0
 def coming_soon(self, **params):
     return request.render('theme_coming_product.page_coming_product')
Пример #53
0
 def web_auth_signup(self, *args, **kw):
     qcontext = self.get_auth_signup_qcontext()
     qcontext['error'] = _("Wrong Captcha !!!")
     if kw.has_key('g-recaptcha-response') and not request.website.is_captcha_valid(kw['g-recaptcha-response']):
         return request.render('auth_signup.signup', qcontext)
     return super(AuthSignupHome,self).web_auth_signup(*args, **kw)
Пример #54
0
 def upload_money(self, user=None, lead=None, **post):
     context = {'state':'upload_money',
                'lead':lead}
     return request.render('money_for.upload_money', context)
Пример #55
0
    def open_user(self, forum, user_id=0, **post):
        User = request.env['res.users']
        Post = request.env['forum.post']
        Vote = request.env['forum.post.vote']
        Activity = request.env['mail.message']
        Followers = request.env['mail.followers']
        Data = request.env["ir.model.data"]

        user = User.sudo().search([('id', '=', user_id)])
        current_user = request.env.user.sudo()

        # Users with high karma can see users with karma <= 0 for
        # moderation purposes, IFF they have posted something (see below)
        if (not user or (user.karma < 1 and current_user.karma < forum.karma_unlink_all)):
            return werkzeug.utils.redirect("/forum/%s" % slug(forum))
        values = self._prepare_forum_values(forum=forum, **post)

        # questions and answers by user
        user_question_ids = Post.search([
            ('parent_id', '=', False),
            ('forum_id', '=', forum.id), ('create_uid', '=', user.id)],
            order='create_date desc')
        count_user_questions = len(user_question_ids)

        if (user_id != request.session.uid and not
                (user.website_published or
                    (count_user_questions and current_user.karma > forum.karma_unlink_all))):
            return request.render("website_forum.private_profile", values, status=404)

        # limit length of visible posts by default for performance reasons, except for the high
        # karma users (not many of them, and they need it to properly moderate the forum)
        post_display_limit = None
        if current_user.karma < forum.karma_unlink_all:
            post_display_limit = 20

        user_questions = user_question_ids[:post_display_limit]
        user_answer_ids = Post.search([
            ('parent_id', '!=', False),
            ('forum_id', '=', forum.id), ('create_uid', '=', user.id)],
            order='create_date desc')
        count_user_answers = len(user_answer_ids)
        user_answers = user_answer_ids[:post_display_limit]

        # showing questions which user following
        post_ids = [follower.res_id for follower in Followers.sudo().search([('res_model', '=', 'forum.post'), ('partner_id', '=', user.partner_id.id)])]
        followed = Post.search([('id', 'in', post_ids), ('forum_id', '=', forum.id), ('parent_id', '=', False)])

        # showing Favourite questions of user.
        favourite = Post.search([('favourite_ids', '=', user.id), ('forum_id', '=', forum.id), ('parent_id', '=', False)])

        # votes which given on users questions and answers.
        data = Vote.read_group([('forum_id', '=', forum.id), ('recipient_id', '=', user.id)], ["vote"], groupby=["vote"])
        up_votes, down_votes = 0, 0
        for rec in data:
            if rec['vote'] == '1':
                up_votes = rec['vote_count']
            elif rec['vote'] == '-1':
                down_votes = rec['vote_count']

        # Votes which given by users on others questions and answers.
        vote_ids = Vote.search([('user_id', '=', user.id)])

        # activity by user.
        model, comment = Data.get_object_reference('mail', 'mt_comment')
        activities = Activity.search([('res_id', 'in', (user_question_ids + user_answer_ids).ids), ('model', '=', 'forum.post'), ('subtype_id', '!=', comment)],
                                     order='date DESC', limit=100)

        posts = {}
        for act in activities:
            posts[act.res_id] = True
        posts_ids = Post.search([('id', 'in', posts.keys())])
        posts = dict(map(lambda x: (x.id, (x.parent_id or x, x.parent_id and x or False)), posts_ids))

        # TDE CLEANME MASTER: couldn't it be rewritten using a 'menu' key instead of one key for each menu ?
        if user == request.env.user:
            post['my_profile'] = True
        else:
            post['users'] = True

        values.update({
            'uid': request.env.user.id,
            'user': user,
            'main_object': user,
            'searches': post,
            'questions': user_questions,
            'count_questions': count_user_questions,
            'answers': user_answers,
            'count_answers': count_user_answers,
            'followed': followed,
            'favourite': favourite,
            'up_votes': up_votes,
            'down_votes': down_votes,
            'activities': activities,
            'posts': posts,
            'vote_post': vote_ids,
        })
        return request.website.render("website_forum.user_detail_full", values)
Пример #56
0
    def open_user(self, forum, user_id=0, **post):
        User = request.env['res.users']
        Post = request.env['forum.post']
        Vote = request.env['forum.post.vote']
        Activity = request.env['mail.message']
        Followers = request.env['mail.followers']
        Data = request.env["ir.model.data"]

        user = User.sudo().search([('id', '=', user_id)])
        current_user = request.env.user.sudo()

        # Users with high karma can see users with karma <= 0 for
        # moderation purposes, IFF they have posted something (see below)
        if (not user or
            (user.karma < 1 and current_user.karma < forum.karma_unlink_all)):
            return werkzeug.utils.redirect("/forum/%s" % slug(forum))
        values = self._prepare_forum_values(forum=forum, **post)

        # questions and answers by user
        user_question_ids = Post.search([('parent_id', '=', False),
                                         ('forum_id', '=', forum.id),
                                         ('create_uid', '=', user.id)],
                                        order='create_date desc')
        count_user_questions = len(user_question_ids)

        if (user_id != request.session.uid
                and not (user.website_published or
                         (count_user_questions
                          and current_user.karma > forum.karma_unlink_all))):
            return request.render("website_forum.private_profile",
                                  values,
                                  status=404)

        # limit length of visible posts by default for performance reasons, except for the high
        # karma users (not many of them, and they need it to properly moderate the forum)
        post_display_limit = None
        if current_user.karma < forum.karma_unlink_all:
            post_display_limit = 20

        user_questions = user_question_ids[:post_display_limit]
        user_answer_ids = Post.search([('parent_id', '!=', False),
                                       ('forum_id', '=', forum.id),
                                       ('create_uid', '=', user.id)],
                                      order='create_date desc')
        count_user_answers = len(user_answer_ids)
        user_answers = user_answer_ids[:post_display_limit]

        # showing questions which user following
        post_ids = [
            follower.res_id for follower in Followers.sudo().search([(
                'res_model', '=',
                'forum.post'), ('partner_id', '=', user.partner_id.id)])
        ]
        followed = Post.search([('id', 'in', post_ids),
                                ('forum_id', '=', forum.id),
                                ('parent_id', '=', False)])

        # showing Favourite questions of user.
        favourite = Post.search([('favourite_ids', '=', user.id),
                                 ('forum_id', '=', forum.id),
                                 ('parent_id', '=', False)])

        # votes which given on users questions and answers.
        data = Vote.read_group([('forum_id', '=', forum.id),
                                ('recipient_id', '=', user.id)], ["vote"],
                               groupby=["vote"])
        up_votes, down_votes = 0, 0
        for rec in data:
            if rec['vote'] == '1':
                up_votes = rec['vote_count']
            elif rec['vote'] == '-1':
                down_votes = rec['vote_count']

        # Votes which given by users on others questions and answers.
        vote_ids = Vote.search([('user_id', '=', user.id)])

        # activity by user.
        model, comment = Data.get_object_reference('mail', 'mt_comment')
        activities = Activity.search(
            [('res_id', 'in', (user_question_ids + user_answer_ids).ids),
             ('model', '=', 'forum.post'), ('subtype_id', '!=', comment)],
            order='date DESC',
            limit=100)

        posts = {}
        for act in activities:
            posts[act.res_id] = True
        posts_ids = Post.search([('id', 'in', posts.keys())])
        posts = dict(
            map(
                lambda x: (x.id,
                           (x.parent_id or x, x.parent_id and x or False)),
                posts_ids))

        # TDE CLEANME MASTER: couldn't it be rewritten using a 'menu' key instead of one key for each menu ?
        if user == request.env.user:
            post['my_profile'] = True
        else:
            post['users'] = True

        values.update({
            'uid': request.env.user.id,
            'user': user,
            'main_object': user,
            'searches': post,
            'questions': user_questions,
            'count_questions': count_user_questions,
            'answers': user_answers,
            'count_answers': count_user_answers,
            'followed': followed,
            'favourite': favourite,
            'up_votes': up_votes,
            'down_votes': down_votes,
            'activities': activities,
            'posts': posts,
            'vote_post': vote_ids,
        })
        return request.website.render("website_forum.user_detail_full", values)
Пример #57
0
 def render(self, cr, uid, ids, template, values=None, status_code=None, context=None):
     # TODO: remove this. (just kept for backward api compatibility for saas-3)
     return request.render(template, values, uid=uid)
Пример #58
0
 def status(self, user=None, lead=None, **post):
     context = {'state':'payment_sent_out',
                'lead':lead}
     return request.render('money_for.status', context)