[IMP] Refactoring using `webcontext`
bzr revid: fme@openerp.com-20130904153236-gc78bs8pxeprktkr
This commit is contained in:
parent
43ca2585c5
commit
6621c1275b
|
@ -1,5 +1,5 @@
|
|||
import controllers
|
||||
import res_config
|
||||
|
||||
from website import website
|
||||
import website
|
||||
import view
|
||||
|
|
|
@ -14,7 +14,7 @@ import werkzeug.wrappers
|
|||
from PIL import Image
|
||||
|
||||
import openerp
|
||||
from openerp.addons.website.website import route
|
||||
from openerp.addons.website import website
|
||||
from openerp.addons.web import http
|
||||
from openerp.addons.web.http import request
|
||||
|
||||
|
@ -35,7 +35,7 @@ PIL_MIME_MAPPING = {'PNG': 'image/png', 'JPEG': 'image/jpeg', 'GIF': 'image/gif'
|
|||
# Completely arbitrary limits
|
||||
MAX_IMAGE_WIDTH, MAX_IMAGE_HEIGHT = IMAGE_LIMITS = (1024, 768)
|
||||
class Website(openerp.addons.web.controllers.main.Home):
|
||||
@route('/', type='http', auth="admin")
|
||||
@website.route('/', type='http', auth="admin")
|
||||
def index(self, **kw):
|
||||
return self.page("website.homepage")
|
||||
|
||||
|
@ -44,7 +44,7 @@ class Website(openerp.addons.web.controllers.main.Home):
|
|||
return super(Website, self).index(*args, **kw)
|
||||
|
||||
# FIXME: auth, if /pagenew known anybody can create new empty page
|
||||
@route('/pagenew/<path:path>', type='http', auth="admin")
|
||||
@website.route('/pagenew/<path:path>', type='http', auth="admin")
|
||||
def pagenew(self, path, noredirect=NOPE):
|
||||
if '.' in path:
|
||||
module, idname = path.split('.', 1)
|
||||
|
@ -82,7 +82,7 @@ class Website(openerp.addons.web.controllers.main.Home):
|
|||
return werkzeug.wrappers.Response(url, mimetype='text/plain')
|
||||
return werkzeug.utils.redirect(url)
|
||||
|
||||
@route('/website/theme_change', type='http', auth="admin")
|
||||
@website.route('/website/theme_change', type='http', auth="admin")
|
||||
def theme_change(self, theme_id=False, **kwargs):
|
||||
imd = request.registry['ir.model.data']
|
||||
view = request.registry['ir.ui.view']
|
||||
|
@ -96,10 +96,9 @@ class Website(openerp.addons.web.controllers.main.Home):
|
|||
view_model, view_id = imd.get_object_reference(request.cr, request.uid, module, xml_id)
|
||||
view.write(request.cr, request.uid, [view_id], {'inherit_id':view_option_id})
|
||||
|
||||
request.webcontext['theme_changed'] = True
|
||||
return request.webcontext.render('website.themes')
|
||||
return request.webcontext.render('website.themes', {'theme_changed': True})
|
||||
|
||||
@route('/page/<path:path>', type='http', auth="admin")
|
||||
@website.route('/page/<path:path>', type='http', auth="admin")
|
||||
def page(self, path, **kwargs):
|
||||
request.webcontext['path'] = path
|
||||
try:
|
||||
|
@ -108,7 +107,7 @@ class Website(openerp.addons.web.controllers.main.Home):
|
|||
html = request.webcontext.render('website.404')
|
||||
return html
|
||||
|
||||
@route('/website/customize_template_toggle', type='json', auth='admin') # FIXME: auth
|
||||
@website.route('/website/customize_template_toggle', type='json', auth='admin') # FIXME: auth
|
||||
def customize_template_set(self, view_id):
|
||||
view_obj = request.registry.get("ir.ui.view")
|
||||
view = view_obj.browse(request.cr, request.uid, int(view_id), context=request.context)
|
||||
|
@ -121,7 +120,7 @@ class Website(openerp.addons.web.controllers.main.Home):
|
|||
}, context=request.context)
|
||||
return True
|
||||
|
||||
@route('/website/customize_template_get', type='json', auth='admin') # FIXME: auth
|
||||
@website.route('/website/customize_template_get', type='json', auth='admin') # FIXME: auth
|
||||
def customize_template_get(self, xml_id):
|
||||
imd = request.registry['ir.model.data']
|
||||
view_model, view_theme_id = imd.get_object_reference(request.cr, request.uid, 'website', 'theme')
|
||||
|
@ -148,7 +147,7 @@ class Website(openerp.addons.web.controllers.main.Home):
|
|||
return result
|
||||
|
||||
# # FIXME: auth, anybody can upload an attachment if URL known/found
|
||||
@route('/website/attach', type='http', auth='admin')
|
||||
@website.route('/website/attach', type='http', auth='admin')
|
||||
def attach(self, func, upload):
|
||||
req = request.httprequest
|
||||
if req.method != 'POST':
|
||||
|
@ -172,7 +171,7 @@ class Website(openerp.addons.web.controllers.main.Home):
|
|||
window.parent['%s'](%s, %s);
|
||||
</script>""" % (func, json.dumps(url), json.dumps(message))
|
||||
|
||||
@route('/website/attachment/<int:id>', type='http', auth="admin")
|
||||
@website.route('/website/attachment/<int:id>', type='http', auth="admin")
|
||||
def attachment(self, id):
|
||||
# TODO: provide actual thumbnails?
|
||||
# FIXME: can't use Binary.image because auth=user and website attachments need to be public
|
||||
|
@ -198,7 +197,7 @@ class Website(openerp.addons.web.controllers.main.Home):
|
|||
image.save(response.stream, image.format)
|
||||
return response
|
||||
|
||||
@route('/website/image', type='http', auth="public")
|
||||
@website.route('/website/image', type='http', auth="public")
|
||||
def image(self, model, id, field, **kw):
|
||||
last_update = '__last_update'
|
||||
Model = request.registry[model]
|
||||
|
@ -239,7 +238,7 @@ class Website(openerp.addons.web.controllers.main.Home):
|
|||
pass
|
||||
return request.make_response(image_data, headers)
|
||||
|
||||
@route(['/website/publish/'], type='http', auth="public")
|
||||
@website.route(['/website/publish/'], type='http', auth="public")
|
||||
def publish(self, **post):
|
||||
_id = int(post['id'])
|
||||
_object = request.registry[post['object']]
|
||||
|
@ -250,7 +249,7 @@ class Website(openerp.addons.web.controllers.main.Home):
|
|||
|
||||
return obj.website_published and "1" or "0"
|
||||
|
||||
@route(['/website/kanban/'], type='http', auth="public")
|
||||
@website.route(['/website/kanban/'], type='http', auth="public")
|
||||
def kanban(self, **post):
|
||||
return request.registry['website'].kanban_col(**post)
|
||||
|
||||
|
|
|
@ -53,7 +53,7 @@ class WebContext(dict):
|
|||
def __init__(self):
|
||||
self.website = request.registry.get("website")
|
||||
lang = request.httprequest.host.split('.')[0]
|
||||
context = self.website.get_rendering_context(lang=lang)
|
||||
context = self.website.get_webcontext(lang=lang)
|
||||
dict.__init__(self, context)
|
||||
def __getattr__(self, name):
|
||||
if hasattr(self.website, name):
|
||||
|
@ -63,7 +63,10 @@ class WebContext(dict):
|
|||
else:
|
||||
raise AttributeError
|
||||
def render(self, template, values=None):
|
||||
return self.website.render(template, self)
|
||||
context = self.copy()
|
||||
if values:
|
||||
context.update(values)
|
||||
return self.website.render(template, context)
|
||||
|
||||
class website(osv.osv):
|
||||
_name = "website" # Avoid website.website convention for conciseness (for new api). Got a special authorization from xmo and rco
|
||||
|
@ -106,7 +109,7 @@ class website(osv.osv):
|
|||
'lang_selected': (lg for lg in languages if lg['code'].lower() == lang.lower()).next(),
|
||||
}
|
||||
|
||||
def get_rendering_context(self, additional_values=None, lang=None):
|
||||
def get_webcontext(self, additional_values=None, lang=None):
|
||||
debug = 'debug' in request.params
|
||||
is_logged = True
|
||||
try:
|
||||
|
@ -280,12 +283,12 @@ class website(osv.osv):
|
|||
|
||||
objects.append(obj)
|
||||
|
||||
values = self.get_rendering_context({
|
||||
values = {
|
||||
'objects': objects,
|
||||
'range': range,
|
||||
'template': template,
|
||||
})
|
||||
return self.render("website.kanban_contain", values)
|
||||
}
|
||||
return request.webcontext.render("website.kanban_contain", values)
|
||||
|
||||
def kanban_col(self, model, domain, page, template, step, orderby):
|
||||
html = ""
|
||||
|
@ -296,7 +299,7 @@ class website(osv.osv):
|
|||
object_ids = model_obj.search(request.cr, request.uid, domain, limit=step, offset=offset, order=orderby)
|
||||
object_ids = model_obj.browse(request.cr, request.uid, object_ids)
|
||||
for object_id in object_ids:
|
||||
html += self.render(template, self.get_rendering_context({'object_id': object_id}))
|
||||
html += request.webcontext.render(template, {'object_id': object_id})
|
||||
return html
|
||||
|
||||
class res_lang(osv.osv):
|
||||
|
|
|
@ -4,11 +4,12 @@ import openerp
|
|||
from openerp.addons.web import http
|
||||
from openerp.tools.translate import _
|
||||
from openerp.addons.web.http import request
|
||||
from openerp.addons.website import website
|
||||
import urllib
|
||||
|
||||
class website_contract(http.Controller):
|
||||
|
||||
@http.route(['/references/', '/references/page/<int:page>/'], type='http', auth="public")
|
||||
@website.route(['/references/', '/references/page/<int:page>/'], type='http', auth="public")
|
||||
def references(self, page=0, **post):
|
||||
website = request.registry['website']
|
||||
partner_obj = request.registry['res.partner']
|
||||
|
@ -30,7 +31,7 @@ class website_contract(http.Controller):
|
|||
partner_ids = partner_obj.search(request.cr, openerp.SUPERUSER_ID, domain + [('website_published', '=', True)])
|
||||
google_map_partner_ids = ",".join([str(p) for p in partner_ids])
|
||||
|
||||
if request.uid != website.get_public_user().id:
|
||||
if not request.webcontext.is_public_user:
|
||||
# search without website_published
|
||||
partner_ids += partner_obj.search(request.cr, request.uid, domain)
|
||||
partner_ids = list(set(partner_ids))
|
||||
|
@ -49,27 +50,24 @@ class website_contract(http.Controller):
|
|||
pager = website.pager(url="/references/", total=len(partner_ids), page=page, step=step, scope=7, url_args=post)
|
||||
partner_ids = partner_obj.search(request.cr, openerp.SUPERUSER_ID, [('id', 'in', partner_ids)], limit=step, offset=pager['offset'])
|
||||
|
||||
|
||||
values = website.get_rendering_context({
|
||||
values = {
|
||||
'countries': countries,
|
||||
'partner_ids': partner_obj.browse(request.cr, openerp.SUPERUSER_ID, partner_ids),
|
||||
'google_map_partner_ids': google_map_partner_ids,
|
||||
'pager': pager,
|
||||
'searches': post,
|
||||
'search_path': "?%s" % urllib.urlencode(post),
|
||||
})
|
||||
return website.render("website_contract.index", values)
|
||||
}
|
||||
return request.webcontext.render("website_contract.index", values)
|
||||
|
||||
@http.route(['/references/<int:ref_id>/'], type='http', auth="public")
|
||||
@website.route(['/references/<int:ref_id>/'], type='http', auth="public")
|
||||
def references_ref(self, ref_id=0, **post):
|
||||
website = request.registry['website']
|
||||
partner_obj = request.registry['res.partner']
|
||||
partner_ids = partner_obj.search(request.cr, openerp.SUPERUSER_ID, [('website_published', '=', True), ('id', '=', ref_id)])
|
||||
if request.uid != website.get_public_user().id:
|
||||
if not request.webcontext.is_public_user:
|
||||
partner_ids += partner_obj.search(request.cr, request.uid, [('id', '=', ref_id)])
|
||||
|
||||
values = website.get_rendering_context({
|
||||
values = {
|
||||
'partner_id': partner_obj.browse(request.cr, openerp.SUPERUSER_ID, partner_ids[0], context={'show_address': True}),
|
||||
})
|
||||
return website.render("website_contract.details", values)
|
||||
|
||||
}
|
||||
return request.webcontext.render("website_contract.details", values)
|
||||
|
|
|
@ -1,25 +1,21 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
import openerp
|
||||
from openerp.addons.web import http
|
||||
from openerp.addons.web.http import request
|
||||
import simplejson
|
||||
import werkzeug.wrappers
|
||||
from openerp.addons.website import website
|
||||
|
||||
from urllib import quote_plus
|
||||
|
||||
class contactus(http.Controller):
|
||||
|
||||
@http.route(['/crm/contactus'], type='http', auth="admin")
|
||||
@website.route(['/crm/contactus'], type='http', auth="admin")
|
||||
def contactus(self, *arg, **post):
|
||||
website = request.registry['website']
|
||||
post['user_id'] = False
|
||||
request.registry['crm.lead'].create(request.cr, request.uid, post)
|
||||
values = website.get_rendering_context()
|
||||
company = values['res_company']
|
||||
values.update({
|
||||
company = request.webcontext['res_company']
|
||||
values = {
|
||||
'google_map_url': "http://maps.googleapis.com/maps/api/staticmap?center=%s&sensor=false&zoom=8&size=298x298" % quote_plus('%s, %s %s, %s' % (company.street, company.city, company.zip, company.country_id and company.country_id.name_get()[0][1] or ''))
|
||||
})
|
||||
return website.render("website_crm.thanks", values)
|
||||
}
|
||||
return request.webcontext.render("website_crm.thanks", values)
|
||||
|
||||
# vim:expandtab:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -4,11 +4,12 @@ import openerp
|
|||
from openerp.addons.web import http
|
||||
from openerp.tools.translate import _
|
||||
from openerp.addons.web.http import request
|
||||
from openerp.addons.website import website
|
||||
import urllib
|
||||
|
||||
class website_crm_partner_assign(http.Controller):
|
||||
|
||||
@http.route(['/partners/', '/partners/page/<int:page>/'], type='http', auth="public")
|
||||
@website.route(['/partners/', '/partners/page/<int:page>/'], type='http', auth="public")
|
||||
def partners(self, page=0, **post):
|
||||
website = request.registry['website']
|
||||
partner_obj = request.registry['res.partner']
|
||||
|
@ -54,8 +55,7 @@ class website_crm_partner_assign(http.Controller):
|
|||
partner_ids = partner_obj.search(request.cr, openerp.SUPERUSER_ID, [('id', 'in', partner_ids)],
|
||||
limit=step, offset=pager['offset'], order="grade_id ASC,partner_weight DESC")
|
||||
|
||||
|
||||
values = website.get_rendering_context({
|
||||
values = {
|
||||
'countries': countries,
|
||||
'grades': grades,
|
||||
'partner_ids': partner_obj.browse(request.cr, openerp.SUPERUSER_ID, partner_ids),
|
||||
|
@ -63,19 +63,17 @@ class website_crm_partner_assign(http.Controller):
|
|||
'pager': pager,
|
||||
'searches': post,
|
||||
'search_path': "?%s" % urllib.urlencode(post),
|
||||
})
|
||||
return website.render("website_crm_partner_assign.index", values)
|
||||
}
|
||||
return request.webcontext.render("website_crm_partner_assign.index", values)
|
||||
|
||||
@http.route(['/partners/<int:ref_id>/'], type='http', auth="public")
|
||||
@website.route(['/partners/<int:ref_id>/'], type='http', auth="public")
|
||||
def partners_ref(self, ref_id=0, **post):
|
||||
website = request.registry['website']
|
||||
partner_obj = request.registry['res.partner']
|
||||
partner_ids = partner_obj.search(request.cr, openerp.SUPERUSER_ID, [('website_published', '=', True), ('id', '=', ref_id)])
|
||||
if request.uid != website.get_public_user().id:
|
||||
if not request.webcontext.is_public_user:
|
||||
partner_ids += partner_obj.search(request.cr, request.uid, [('id', '=', ref_id)])
|
||||
|
||||
values = website.get_rendering_context({
|
||||
values = {
|
||||
'partner_id': partner_obj.browse(request.cr, openerp.SUPERUSER_ID, partner_ids[0], context={'show_address': True}),
|
||||
})
|
||||
return website.render("website_crm_partner_assign.details", values)
|
||||
|
||||
}
|
||||
return request.webcontext.render("website_crm_partner_assign.details", values)
|
||||
|
|
|
@ -5,6 +5,7 @@ from openerp.addons.web import http
|
|||
from openerp.addons.web.http import request
|
||||
from openerp.tools.translate import _
|
||||
from openerp.addons import website_sale
|
||||
from openerp.addons.website import website
|
||||
|
||||
from datetime import datetime
|
||||
from dateutil.relativedelta import relativedelta
|
||||
|
@ -15,7 +16,7 @@ import werkzeug
|
|||
|
||||
class website_event(http.Controller):
|
||||
|
||||
@http.route(['/event/', '/event/page/<int:page>/'], type='http', auth="public")
|
||||
@website.route(['/event/', '/event/page/<int:page>/'], type='http', auth="public")
|
||||
def events(self, page=1, **searches):
|
||||
website = request.registry['website']
|
||||
event_obj = request.registry['event.event']
|
||||
|
@ -86,7 +87,7 @@ class website_event(http.Controller):
|
|||
pager = website.pager(url="/event/", total=event_count, page=page, step=step, scope=5)
|
||||
obj_ids = event_obj.search(request.cr, request.uid, dom_without("none"), limit=step, offset=pager['offset'], order="date_begin DESC")
|
||||
|
||||
values = website.get_rendering_context({
|
||||
values = {
|
||||
'event_ids': event_obj.browse(request.cr, request.uid, obj_ids),
|
||||
'dates': dates,
|
||||
'types': types,
|
||||
|
@ -94,28 +95,26 @@ class website_event(http.Controller):
|
|||
'pager': pager,
|
||||
'searches': searches,
|
||||
'search_path': "?%s" % urllib.urlencode(searches),
|
||||
})
|
||||
}
|
||||
|
||||
return website.render("website_event.index", values)
|
||||
return request.webcontext.render("website_event.index", values)
|
||||
|
||||
@http.route(['/event/<int:event_id>'], type='http', auth="public")
|
||||
@website.route(['/event/<int:event_id>'], type='http', auth="public")
|
||||
def event(self, event_id=None, **post):
|
||||
website = request.registry['website']
|
||||
event = request.registry['event.event'].browse(request.cr, request.uid, event_id, {'show_address': 1})
|
||||
values = website.get_rendering_context({
|
||||
values = {
|
||||
'event_id': event,
|
||||
'range': range
|
||||
})
|
||||
return website.render("website_event.detail", values)
|
||||
}
|
||||
return request.webcontext.render("website_event.detail", values)
|
||||
|
||||
@http.route(['/event/<int:event_id>/add_cart'], type='http', auth="public")
|
||||
@website.route(['/event/<int:event_id>/add_cart'], type='http', auth="public")
|
||||
def add_cart(self, event_id=None, **post):
|
||||
website = request.registry['website']
|
||||
user_obj = request.registry['res.users']
|
||||
order_line_obj = request.registry.get('sale.order.line')
|
||||
ticket_obj = request.registry.get('event.event.ticket')
|
||||
|
||||
order = website.get_rendering_context()['order']
|
||||
order = request.webcontext['order']
|
||||
if not order:
|
||||
order = website_sale.controllers.main.get_order()
|
||||
|
||||
|
|
|
@ -3,43 +3,42 @@
|
|||
import openerp
|
||||
from openerp.addons.web import http
|
||||
from openerp.addons.web.http import request
|
||||
from openerp.addons.website import website
|
||||
from datetime import datetime
|
||||
|
||||
class google_map(http.Controller):
|
||||
|
||||
@http.route(['/google_map/'], type='http', auth="admin")
|
||||
@website.route(['/google_map/'], type='http', auth="admin")
|
||||
def google_map(self, *arg, **post):
|
||||
website = request.registry['website']
|
||||
values = website.get_rendering_context()
|
||||
values['partner_ids'] = post.get('partner_ids', "")
|
||||
values['width'] = post.get('width', 900)
|
||||
values['height'] = post.get('height', 460)
|
||||
values['partner_url'] = post.get('partner_url')
|
||||
return website.render("website_google_map.google_map", values)
|
||||
values = {
|
||||
'partner_ids': post.get('partner_ids', ""),
|
||||
'width': post.get('width', 900),
|
||||
'height': post.get('height', 460),
|
||||
'partner_url': post.get('partner_url'),
|
||||
}
|
||||
return request.webcontext.render("website_google_map.google_map", values)
|
||||
|
||||
@http.route(['/google_map/partners.json'], type='http', auth="admin")
|
||||
@website.route(['/google_map/partners.json'], type='http', auth="admin")
|
||||
def google_map_data(self, *arg, **post):
|
||||
website = request.registry['website']
|
||||
partner_obj = request.registry['res.partner']
|
||||
|
||||
domain = [("id", "in", [int(p) for p in post.get('partner_ids', "").split(",") if p])]
|
||||
partner_ids = partner_obj.search(request.cr, openerp.SUPERUSER_ID, domain + [('website_published', '=', True)])
|
||||
if request.uid != website.get_public_user().id:
|
||||
if not request.webcontext.is_public_user:
|
||||
partner_ids += partner_obj.search(request.cr, request.uid, domain)
|
||||
partner_ids = list(set(partner_ids))
|
||||
|
||||
return partner_obj.google_map_json(request.cr, openerp.SUPERUSER_ID, partner_ids)
|
||||
|
||||
@http.route(['/google_map/set_partner_position/'], type='http', auth="admin")
|
||||
@website.route(['/google_map/set_partner_position/'], type='http', auth="admin")
|
||||
def google_map_set_partner_position(self, *arg, **post):
|
||||
website = request.registry['website']
|
||||
partner_obj = request.registry['res.partner']
|
||||
|
||||
partner_id = post.get('partner_id') and int(post['partner_id'])
|
||||
latitude = post.get('latitude') and float(post['latitude'])
|
||||
longitude = post.get('longitude') and float(post['longitude'])
|
||||
|
||||
if request.uid != website.get_public_user().id and partner_id and (latitude or longitude):
|
||||
if not request.webcontext.is_public_user and partner_id and (latitude or longitude):
|
||||
values = {
|
||||
'partner_latitude': latitude,
|
||||
'partner_longitude': longitude,
|
||||
|
|
|
@ -2,15 +2,15 @@
|
|||
|
||||
from openerp.addons.web import http
|
||||
from openerp.addons.web.http import request
|
||||
from openerp.addons.website import website
|
||||
|
||||
class website_hr(http.Controller):
|
||||
|
||||
@http.route(['/page/website.aboutus'], type='http', auth="public")
|
||||
@website.route(['/page/website.aboutus'], type='http', auth="public")
|
||||
def blog(self, **post):
|
||||
website = request.registry['website']
|
||||
hr_obj = request.registry['hr.employee']
|
||||
employee_ids = hr_obj.search(request.cr, request.uid, [(1, "=", 1)])
|
||||
values = website.get_rendering_context({
|
||||
values = {
|
||||
'employee_ids': hr_obj.browse(request.cr, request.uid, employee_ids)
|
||||
})
|
||||
return website.render("website.aboutus", values)
|
||||
}
|
||||
return request.webcontext.render("website.aboutus", values)
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
from openerp import SUPERUSER_ID
|
||||
from openerp.addons.web import http
|
||||
from openerp.addons.web.http import request
|
||||
from openerp.addons.website import website
|
||||
import werkzeug
|
||||
from openerp.tools.translate import _
|
||||
from openerp.tools.safe_eval import safe_eval
|
||||
|
@ -13,7 +14,7 @@ _months = {1:_("January"), 2:_("February"), 3:_("March"), 4:_("April"), 5:_("May
|
|||
|
||||
class website_mail(http.Controller):
|
||||
|
||||
@http.route(['/blog/', '/blog/<int:mail_group_id>/', '/blog/<int:mail_group_id>/<int:blog_id>/',
|
||||
@website.route(['/blog/', '/blog/<int:mail_group_id>/', '/blog/<int:mail_group_id>/<int:blog_id>/',
|
||||
'/blog/page/<int:page>/', '/blog/<int:mail_group_id>/page/<int:page>/', '/blog/<int:mail_group_id>/<int:blog_id>/page/<int:page>/'], type='http', auth="public")
|
||||
def blog(self, mail_group_id=None, blog_id=None, page=0, **post):
|
||||
website = request.registry['website']
|
||||
|
@ -21,16 +22,16 @@ class website_mail(http.Controller):
|
|||
message_obj = request.registry['mail.message']
|
||||
user_obj = request.registry['res.users']
|
||||
|
||||
values = website.get_rendering_context({
|
||||
values = {
|
||||
'blog_ids': None,
|
||||
'blog_id': None,
|
||||
'nav_list': dict(),
|
||||
'mail_group_id': mail_group_id,
|
||||
'subscribe': post.get('subscribe'),
|
||||
'website': website,
|
||||
})
|
||||
}
|
||||
|
||||
if request.uid != website.get_public_user().id and mail_group_id:
|
||||
if not request.webcontext.is_public_user and mail_group_id:
|
||||
message_follower_ids = group_obj.read(request.cr, request.uid, [mail_group_id], ['message_follower_ids'])[0]['message_follower_ids']
|
||||
parent_id = user_obj.browse(request.cr, SUPERUSER_ID, request.uid).partner_id.id
|
||||
values['subscribe'] = parent_id in message_follower_ids
|
||||
|
@ -54,20 +55,20 @@ class website_mail(http.Controller):
|
|||
values['pager'] = pager
|
||||
values['blog_ids'] = message_obj.browse(request.cr, request.uid, message_ids)
|
||||
|
||||
return website.render("website_mail.index", values)
|
||||
return request.webcontext.render("website_mail.index", values)
|
||||
|
||||
@http.route(['/blog/nav'], type='http', auth="public")
|
||||
@website.route(['/blog/nav'], type='http', auth="public")
|
||||
def nav(self, **post):
|
||||
comment_ids = request.registry['mail.group'].get_public_message_ids(request.cr, request.uid, domain=safe_eval(post.get('domain')), order="create_date asc", limit=None)
|
||||
return simplejson.dumps(request.registry['mail.message'].read(request.cr, request.uid, comment_ids, ['website_published', 'subject', 'res_id']))
|
||||
|
||||
@http.route(['/blog/<int:mail_group_id>/<int:blog_id>/post'], type='http', auth="public")
|
||||
@website.route(['/blog/<int:mail_group_id>/<int:blog_id>/post'], type='http', auth="public")
|
||||
def blog_post(self, mail_group_id=None, blog_id=None, **post):
|
||||
website = request.registry['website']
|
||||
url = request.httprequest.host_url
|
||||
if post.get('body'):
|
||||
request.session.body = post.get('body')
|
||||
if request.uid == website.get_public_user().id:
|
||||
if request.webcontext.is_public_user:
|
||||
return '%s/admin#action=redirect&url=%s/blog/%s/%s/post' % (url, url, mail_group_id, blog_id)
|
||||
|
||||
if 'body' in request.session and request.session.body:
|
||||
|
@ -86,7 +87,7 @@ class website_mail(http.Controller):
|
|||
else:
|
||||
return werkzeug.utils.redirect("/blog/%s/%s/" % (mail_group_id, blog_id))
|
||||
|
||||
@http.route(['/blog/<int:mail_group_id>/new'], type='http', auth="public")
|
||||
@website.route(['/blog/<int:mail_group_id>/new'], type='http', auth="public")
|
||||
def new_blog_post(self, mail_group_id=None, **post):
|
||||
blog_id = request.registry['mail.group'].message_post(request.cr, request.uid, mail_group_id,
|
||||
body=_("Blog content.<br/>Please edit this content then you can publish this blog."),
|
||||
|
@ -98,15 +99,14 @@ class website_mail(http.Controller):
|
|||
)
|
||||
return werkzeug.utils.redirect("/blog/%s/%s/" % (mail_group_id, blog_id))
|
||||
|
||||
@http.route(['/blog/<int:mail_group_id>/subscribe', '/blog/<int:mail_group_id>/<int:blog_id>/subscribe'], type='http', auth="public")
|
||||
@website.route(['/blog/<int:mail_group_id>/subscribe', '/blog/<int:mail_group_id>/<int:blog_id>/subscribe'], type='http', auth="public")
|
||||
def subscribe(self, mail_group_id=None, blog_id=None, **post):
|
||||
website = request.registry['website']
|
||||
partner_obj = request.registry['res.partner']
|
||||
group_obj = request.registry['mail.group']
|
||||
user_obj = request.registry['res.users']
|
||||
|
||||
if mail_group_id and 'subscribe' in post and (post.get('email') or request.uid != website.get_public_user().id):
|
||||
if request.uid == website.get_public_user().id:
|
||||
if mail_group_id and 'subscribe' in post and (post.get('email') or not request.webcontext.is_public_user):
|
||||
if request.webcontext.is_public_user:
|
||||
partner_ids = partner_obj.search(request.cr, SUPERUSER_ID, [("email", "=", post.get('email'))])
|
||||
if not partner_ids:
|
||||
partner_ids = [partner_obj.create(request.cr, SUPERUSER_ID, {"email": post.get('email'), "name": "Subscribe: %s" % post.get('email')})]
|
||||
|
@ -117,15 +117,14 @@ class website_mail(http.Controller):
|
|||
|
||||
return self.blog(mail_group_id=mail_group_id, blog_id=blog_id, subscribe=post.get('email'))
|
||||
|
||||
@http.route(['/blog/<int:mail_group_id>/unsubscribe', '/blog/<int:mail_group_id>/<int:blog_id>/unsubscribe'], type='http', auth="public")
|
||||
@website.route(['/blog/<int:mail_group_id>/unsubscribe', '/blog/<int:mail_group_id>/<int:blog_id>/unsubscribe'], type='http', auth="public")
|
||||
def unsubscribe(self, mail_group_id=None, blog_id=None, **post):
|
||||
website = request.registry['website']
|
||||
partner_obj = request.registry['res.partner']
|
||||
group_obj = request.registry['mail.group']
|
||||
user_obj = request.registry['res.users']
|
||||
|
||||
if mail_group_id and 'unsubscribe' in post and (post.get('email') or request.uid != website.get_public_user().id):
|
||||
if request.uid == website.get_public_user().id:
|
||||
if mail_group_id and 'unsubscribe' in post and (post.get('email') or not request.webcontext.is_public_user):
|
||||
if request.webcontext.is_public_user:
|
||||
partner_ids = partner_obj.search(request.cr, SUPERUSER_ID, [("email", "=", post.get('email'))])
|
||||
else:
|
||||
partner_ids = [user_obj.browse(request.cr, request.uid, request.uid).partner_id.id]
|
||||
|
@ -133,4 +132,3 @@ class website_mail(http.Controller):
|
|||
group_obj.message_unsubscribe(request.cr, SUPERUSER_ID, [mail_group_id], partner_ids)
|
||||
|
||||
return self.blog(mail_group_id=mail_group_id, blog_id=blog_id, subscribe=None)
|
||||
|
||||
|
|
|
@ -4,11 +4,12 @@ import openerp
|
|||
from openerp.addons.web import http
|
||||
from openerp.tools.translate import _
|
||||
from openerp.addons.web.http import request
|
||||
from openerp.addons.website import website
|
||||
import urllib
|
||||
|
||||
class website_crm_partner_assign(http.Controller):
|
||||
|
||||
@http.route(['/members/', '/members/page/<int:page>/'], type='http', auth="public")
|
||||
@website.route(['/members/', '/members/page/<int:page>/'], type='http', auth="public")
|
||||
def members(self, page=0, **post):
|
||||
website = request.registry['website']
|
||||
membership_obj = request.registry['membership.membership_line']
|
||||
|
@ -48,26 +49,24 @@ class website_crm_partner_assign(http.Controller):
|
|||
limit=step, offset=pager['offset'], order="membership_id ASC,date DESC")
|
||||
|
||||
|
||||
values = website.get_rendering_context({
|
||||
values = {
|
||||
'memberships': memberships,
|
||||
'membership_line_ids': membership_obj.browse(request.cr, openerp.SUPERUSER_ID, membership_ids),
|
||||
'google_map_partner_ids': google_map_partner_ids,
|
||||
'pager': pager,
|
||||
'searches': post,
|
||||
'search_path': "?%s" % urllib.urlencode(post),
|
||||
})
|
||||
return website.render("website_membership.index", values)
|
||||
}
|
||||
return request.webcontext.render("website_membership.index", values)
|
||||
|
||||
@http.route(['/members/<int:ref_id>/'], type='http', auth="public")
|
||||
@website.route(['/members/<int:ref_id>/'], type='http', auth="public")
|
||||
def partners_ref(self, ref_id=0, **post):
|
||||
website = request.registry['website']
|
||||
partner_obj = request.registry['res.partner']
|
||||
partner_ids = partner_obj.search(request.cr, openerp.SUPERUSER_ID, [('website_published', '=', True), ('id', '=', ref_id)])
|
||||
if request.uid != website.get_public_user().id:
|
||||
if not request.webcontext.is_public_user:
|
||||
partner_ids += partner_obj.search(request.cr, request.uid, [('id', '=', ref_id)])
|
||||
|
||||
values = website.get_rendering_context({
|
||||
values = {
|
||||
'partner_id': partner_obj.browse(request.cr, openerp.SUPERUSER_ID, partner_ids[0], context={'show_address': True}),
|
||||
})
|
||||
return website.render("website_membership.details", values)
|
||||
|
||||
}
|
||||
return request.webcontext.render("website_membership.details", values)
|
||||
|
|
|
@ -3,31 +3,24 @@
|
|||
from openerp.osv import osv
|
||||
from openerp.addons.web import http
|
||||
from openerp.addons.web.http import request
|
||||
from openerp.addons.website import website
|
||||
|
||||
|
||||
class website(osv.osv):
|
||||
class Website(osv.osv):
|
||||
_inherit = "website"
|
||||
def get_rendering_context(self, additional_values=None, **kw):
|
||||
def get_webcontext(self, values={}, **kw):
|
||||
project_obj = request.registry['project.project']
|
||||
project_ids = project_obj.search(request.cr, request.uid, [('privacy_visibility', "=", "public")])
|
||||
values = {
|
||||
values.update({
|
||||
'project_ids': project_obj.browse(request.cr, request.uid, project_ids),
|
||||
}
|
||||
if additional_values:
|
||||
values.update(additional_values)
|
||||
return super(website, self).get_rendering_context(values, **kw)
|
||||
})
|
||||
return super(Website, self).get_webcontext(values, **kw)
|
||||
|
||||
|
||||
class website_project(http.Controller):
|
||||
|
||||
@http.route(['/project/<int:project_id>/'], type='http', auth="public")
|
||||
@website.route(['/project/<int:project_id>/'], type='http', auth="public")
|
||||
def blog(self, project_id=None, **post):
|
||||
website = request.registry['website']
|
||||
project_obj = request.registry['project.project']
|
||||
|
||||
project = project_obj.browse(request.cr, request.uid, project_id)
|
||||
|
||||
values = website.get_rendering_context({
|
||||
'project_id': project,
|
||||
})
|
||||
return website.render("website_project.index", values)
|
||||
return request.webcontext.render("website_project.index", {'project_id': project})
|
||||
|
|
|
@ -4,6 +4,7 @@ from openerp import SUPERUSER_ID
|
|||
from openerp.osv import osv
|
||||
from openerp.addons.web import http
|
||||
from openerp.addons.web.http import request
|
||||
from openerp.addons.website import website
|
||||
import random
|
||||
import werkzeug
|
||||
import simplejson
|
||||
|
@ -40,26 +41,24 @@ def get_current_order():
|
|||
else:
|
||||
return False
|
||||
|
||||
class website(osv.osv):
|
||||
class Website(osv.osv):
|
||||
_inherit = "website"
|
||||
def get_rendering_context(self, additional_values=None, **kw):
|
||||
values = {
|
||||
def get_webcontext(self, values={}, **kw):
|
||||
values.update({
|
||||
'order': get_current_order(),
|
||||
# 'website_sale_get_current_order': get_current_order, # TODO: replace 'order' key in templates
|
||||
}
|
||||
if additional_values:
|
||||
values.update(additional_values)
|
||||
return super(website, self).get_rendering_context(values, **kw)
|
||||
})
|
||||
return super(Website, self).get_webcontext(values, **kw)
|
||||
|
||||
class Ecommerce(http.Controller):
|
||||
|
||||
def get_categories(self):
|
||||
category_obj = request.registry.get('product.public.category')
|
||||
category_ids = category_obj.search(request.cr, SUPERUSER_ID, [('parent_id', '=', False)])
|
||||
categories = category_obj.browse(request.cr, SUPERUSER_ID, category_ids)
|
||||
category_ids = category_obj.search(request.cr, SUPERUSER_ID, [('parent_id', '=', False)], context=request.context)
|
||||
categories = category_obj.browse(request.cr, SUPERUSER_ID, category_ids, context=request.context)
|
||||
return categories
|
||||
|
||||
@http.route(['/shop/', '/shop/category/<cat_id>/', '/shop/category/<cat_id>/page/<int:page>/', '/shop/page/<int:page>/'], type='http', auth="public")
|
||||
@website.route(['/shop/', '/shop/category/<cat_id>/', '/shop/category/<cat_id>/page/<int:page>/', '/shop/page/<int:page>/'], type='http', auth="public")
|
||||
def category(self, cat_id=0, page=0, **post):
|
||||
|
||||
if 'promo' in post:
|
||||
|
@ -90,23 +89,21 @@ class Ecommerce(http.Controller):
|
|||
|
||||
context = {'pricelist': self.get_pricelist()}
|
||||
|
||||
values = website.get_rendering_context({
|
||||
values = {
|
||||
'categories': self.get_categories(),
|
||||
'category_id': cat_id,
|
||||
'products': product_obj.browse(request.cr, SUPERUSER_ID, product_ids, context=context),
|
||||
'search': post.get("search"),
|
||||
'pager': pager,
|
||||
})
|
||||
return website.render("website_sale.products", values)
|
||||
}
|
||||
return request.webcontext.render("website_sale.products", values)
|
||||
|
||||
@http.route(['/shop/product/<product_id>/'], type='http', auth="public")
|
||||
@website.route(['/shop/product/<product_id>/'], type='http', auth="public")
|
||||
def product(self, cat_id=0, product_id=0, **post):
|
||||
|
||||
if 'promo' in post:
|
||||
self.change_pricelist(post.get('promo'))
|
||||
|
||||
website = request.registry['website']
|
||||
|
||||
product_id = product_id and int(product_id) or 0
|
||||
product_obj = request.registry.get('product.template')
|
||||
category_obj = request.registry.get('product.public.category')
|
||||
|
@ -117,21 +114,21 @@ class Ecommerce(http.Controller):
|
|||
category_list = sorted(category_list, key=lambda category: category[1])
|
||||
|
||||
product = product_obj.browse(request.cr, request.uid, product_id, context=context)
|
||||
values = website.get_rendering_context({
|
||||
values = {
|
||||
'category_id': post.get('category_id') and int(post.get('category_id')) or None,
|
||||
'search': post.get("search"),
|
||||
'categories': self.get_categories(),
|
||||
'category_list': category_list,
|
||||
'product': product,
|
||||
})
|
||||
return website.render("website_sale.product", values)
|
||||
}
|
||||
return request.webcontext.render("website_sale.product", values)
|
||||
|
||||
@http.route(['/shop/add_product/'], type='http', auth="public")
|
||||
@website.route(['/shop/add_product/'], type='http', auth="public")
|
||||
def add_product(self, **post):
|
||||
product_id = request.registry.get('product.product').create(request.cr, request.uid, {'name': 'New Product'})
|
||||
return werkzeug.utils.redirect("/shop/product/%s/" % product_id)
|
||||
|
||||
@http.route(['/shop/change_category/<product_id>/'], type='http', auth="public")
|
||||
@website.route(['/shop/change_category/<product_id>/'], type='http', auth="public")
|
||||
def edit_product(self, product_id=0, **post):
|
||||
request.registry.get('product.template').write(request.cr, request.uid, [int(product_id)], {'public_categ_id': int(post.get('public_categ_id', 0))})
|
||||
return "1"
|
||||
|
@ -221,10 +218,9 @@ class Ecommerce(http.Controller):
|
|||
|
||||
return [quantity, order.get_total_quantity()]
|
||||
|
||||
@http.route(['/shop/mycart/'], type='http', auth="public")
|
||||
@website.route(['/shop/mycart/'], type='http', auth="public")
|
||||
def mycart(self, **post):
|
||||
order = get_current_order()
|
||||
website = request.registry['website']
|
||||
prod_obj = request.registry.get('product.product')
|
||||
|
||||
if 'promo' in post:
|
||||
|
@ -241,13 +237,13 @@ class Ecommerce(http.Controller):
|
|||
index = random.randrange(0, len(suggested_ids))
|
||||
suggested_products.append(suggested_ids.pop(index))
|
||||
|
||||
values = website.get_rendering_context({
|
||||
values = {
|
||||
'categories': self.get_categories(),
|
||||
'suggested_products': prod_obj.browse(request.cr, request.uid, suggested_products),
|
||||
})
|
||||
return website.render("website_sale.mycart", values)
|
||||
}
|
||||
return request.webcontext.render("website_sale.mycart", values)
|
||||
|
||||
@http.route(['/shop/<path:path>/add_cart/', '/shop/add_cart/'], type='http', auth="public")
|
||||
@website.route(['/shop/<path:path>/add_cart/', '/shop/add_cart/'], type='http', auth="public")
|
||||
def add_cart(self, path=None, product_id=None, order_line_id=None, remove=None, json=None):
|
||||
quantity = self.add_product_to_cart(product_id=product_id, order_line_id=order_line_id, number=(remove and -1 or 1))
|
||||
if json:
|
||||
|
@ -257,11 +253,11 @@ class Ecommerce(http.Controller):
|
|||
else:
|
||||
return werkzeug.utils.redirect("/shop/")
|
||||
|
||||
@http.route(['/shop/remove_cart/', '/shop/<path:path>/remove_cart/'], type='http', auth="public")
|
||||
@website.route(['/shop/remove_cart/', '/shop/<path:path>/remove_cart/'], type='http', auth="public")
|
||||
def remove_cart(self, path=None, product_id=None, order_line_id=None, json=None):
|
||||
return self.add_cart(product_id=product_id, order_line_id=order_line_id, path=path, remove=True, json=json)
|
||||
|
||||
@http.route(['/shop/set_cart/', '/shop/<path:path>/set_cart/'], type='http', auth="public")
|
||||
@website.route(['/shop/set_cart/', '/shop/<path:path>/set_cart/'], type='http', auth="public")
|
||||
def set_cart(self, path=None, product_id=None, order_line_id=None, set_number=0, json=None):
|
||||
quantity = self.add_product_to_cart(product_id=product_id, order_line_id=order_line_id, set_number=set_number)
|
||||
if json:
|
||||
|
@ -271,10 +267,8 @@ class Ecommerce(http.Controller):
|
|||
else:
|
||||
return werkzeug.utils.redirect("/shop/")
|
||||
|
||||
@http.route(['/shop/checkout/'], type='http', auth="public")
|
||||
@website.route(['/shop/checkout/'], type='http', auth="public")
|
||||
def checkout(self, **post):
|
||||
website = request.registry['website']
|
||||
|
||||
order = get_current_order()
|
||||
|
||||
if order.state != 'draft' or not order.order_line:
|
||||
|
@ -285,13 +279,13 @@ class Ecommerce(http.Controller):
|
|||
country_obj = request.registry.get('res.country')
|
||||
country_state_obj = request.registry.get('res.country.state')
|
||||
|
||||
values = website.get_rendering_context({
|
||||
values = {
|
||||
'shipping': post.get("shipping"),
|
||||
'error': post.get("error") and dict.fromkeys(post.get("error").split(","), 'error') or {}
|
||||
})
|
||||
}
|
||||
|
||||
checkout = {}
|
||||
if request.uid != website.get_public_user().id:
|
||||
if not request.webcontext.is_public_user:
|
||||
partner = user_obj.browse(request.cr, request.uid, request.uid).partner_id
|
||||
partner_id = partner.id
|
||||
fields = ["name", "phone", "fax", "company", "email", "street", "city", "state_id", "zip", "country_id"]
|
||||
|
@ -311,11 +305,10 @@ class Ecommerce(http.Controller):
|
|||
values['countries'] = country_obj.browse(request.cr, SUPERUSER_ID, country_obj.search(request.cr, SUPERUSER_ID, [(1, "=", 1)]))
|
||||
values['states'] = country_state_obj.browse(request.cr, SUPERUSER_ID, country_state_obj.search(request.cr, SUPERUSER_ID, [(1, "=", 1)]))
|
||||
|
||||
return website.render("website_sale.checkout", values)
|
||||
return request.webcontext.render("website_sale.checkout", values)
|
||||
|
||||
@http.route(['/shop/confirm_order/'], type='http', auth="public")
|
||||
@website.route(['/shop/confirm_order/'], type='http', auth="public")
|
||||
def confirm_order(self, **post):
|
||||
website = request.registry['website']
|
||||
order = get_current_order()
|
||||
|
||||
error = []
|
||||
|
@ -359,7 +352,7 @@ class Ecommerce(http.Controller):
|
|||
'country_id': post['country_id'],
|
||||
'state_id': post['state_id'],
|
||||
}
|
||||
if request.uid != website.get_public_user().id:
|
||||
if not request.webcontext.is_public_user:
|
||||
partner_id = user_obj.browse(request.cr, request.uid, request.uid).partner_id.id
|
||||
partner_obj.write(request.cr, request.uid, [partner_id], partner_value)
|
||||
else:
|
||||
|
@ -398,18 +391,17 @@ class Ecommerce(http.Controller):
|
|||
|
||||
return werkzeug.utils.redirect("/shop/payment/")
|
||||
|
||||
@http.route(['/shop/payment/'], type='http', auth="public")
|
||||
@website.route(['/shop/payment/'], type='http', auth="public")
|
||||
def payment(self, **post):
|
||||
website = request.registry['website']
|
||||
order = get_current_order()
|
||||
|
||||
if not order or not order.order_line:
|
||||
return self.mycart(**post)
|
||||
|
||||
values = website.get_rendering_context({
|
||||
values = {
|
||||
'partner': False,
|
||||
'order': order
|
||||
})
|
||||
}
|
||||
|
||||
payment_obj = request.registry.get('portal.payment.acquirer')
|
||||
payment_ids = payment_obj.search(request.cr, SUPERUSER_ID, [('visible', '=', True)])
|
||||
|
@ -418,9 +410,9 @@ class Ecommerce(http.Controller):
|
|||
content = payment_obj.render(request.cr, SUPERUSER_ID, payment.id, order, order.name, order.pricelist_id.currency_id, order.amount_total)
|
||||
payment._content = content
|
||||
|
||||
return website.render("website_sale.payment", values)
|
||||
return request.webcontext.render("website_sale.payment", values)
|
||||
|
||||
@http.route(['/shop/payment_validate/'], type='http', auth="public")
|
||||
@website.route(['/shop/payment_validate/'], type='http', auth="public")
|
||||
def payment_validate(self, **post):
|
||||
request.httprequest.session['ecommerce_order_id'] = False
|
||||
request.httprequest.session['ecommerce_pricelist'] = False
|
||||
|
|
Loading…
Reference in New Issue