summaryrefslogtreecommitdiff
path: root/addons/website_event/controllers/main.py
diff options
context:
space:
mode:
Diffstat (limited to 'addons/website_event/controllers/main.py')
-rw-r--r--addons/website_event/controllers/main.py71
1 files changed, 56 insertions, 15 deletions
diff --git a/addons/website_event/controllers/main.py b/addons/website_event/controllers/main.py
index 8f681b6cbcd..984b4d125cd 100644
--- a/addons/website_event/controllers/main.py
+++ b/addons/website_event/controllers/main.py
@@ -4,6 +4,8 @@ from openerp import SUPERUSER_ID
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
@@ -14,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']
@@ -85,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,
@@ -93,26 +95,31 @@ 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({
- 'event_id': event,
- })
- return website.render("website_event.detail", values)
-
- @http.route(['/event/<int:event_id>/add_cart'], type='http', auth="public")
+ values = {
+ 'event_id': request.registry['event.event'].browse(request.cr, request.uid, event_id, {'show_address': 1}),
+ 'message_ids': request.registry['event.event'].browse(request.cr, request.uid, event_id).message_ids,
+ 'subscribe': post.get('subscribe'),
+ 'range': range
+ }
+ return request.webcontext.render("website_event.detail", values)
+
+ @website.route(['/event/<int:event_id>/add_cart'], type='http', auth="public")
def add_cart(self, event_id=None, **post):
+ user_obj = request.registry['res.users']
order_line_obj = request.registry.get('sale.order.line')
ticket_obj = request.registry.get('event.event.ticket')
- order = request.registry['website'].get_rendering_context()['order']
- partner_id = request.registry.get('res.users').browse(request.cr, SUPERUSER_ID, request.uid).partner_id.id
+ order = request.webcontext['order']
+ if not order:
+ order = website_sale.controllers.main.get_order()
+
+ partner_id = user_obj.browse(request.cr, SUPERUSER_ID, request.uid).partner_id.id
context = {}
@@ -148,3 +155,37 @@ class website_event(http.Controller):
if not _values:
return werkzeug.utils.redirect("/event/%s/" % event_id)
return werkzeug.utils.redirect("/shop/checkout")
+
+ @website.route(['/event/<int:event_id>/subscribe'], type='http', auth="public")
+ def subscribe(self, event_id=None, **post):
+ partner_obj = request.registry['res.partner']
+ event_obj = request.registry['event.event']
+ user_obj = request.registry['res.users']
+
+ if event_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')})]
+ else:
+ partner_ids = [user_obj.browse(request.cr, request.uid, request.uid).partner_id.id]
+ event_obj.check_access_rule(request.cr, request.uid, [event_id], 'read')
+ event_obj.message_subscribe(request.cr, SUPERUSER_ID, [event_id], partner_ids)
+
+ return self.event(event_id=event_id, subscribe=post.get('email'))
+
+ @website.route(['/event/<int:event_id>/unsubscribe'], type='http', auth="public")
+ def unsubscribe(self, event_id=None, **post):
+ partner_obj = request.registry['res.partner']
+ event_obj = request.registry['event.event']
+ user_obj = request.registry['res.users']
+
+ if event_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]
+ event_obj.check_access_rule(request.cr, request.uid, [event_id], 'read')
+ event_obj.message_unsubscribe(request.cr, SUPERUSER_ID, [event_id], partner_ids)
+
+ return self.event(event_id=event_id, subscribe=None)