summaryrefslogtreecommitdiff
path: root/addons/website_event
diff options
context:
space:
mode:
authorFabien Pinckaers <fp@tinyerp.com>2013-11-24 22:02:21 +0100
committerFabien Pinckaers <fp@tinyerp.com>2013-11-24 22:02:21 +0100
commit105fc16c117e783fe4e1fb28e52b7aadea8b9a2a (patch)
tree58361baef1dc745553b48f23ea2551ad4029e461 /addons/website_event
parentfb0abe39bc4742f8080feefcadecc6e5b2e315c5 (diff)
[IMP] events improvements
bzr revid: fp@tinyerp.com-20131124210221-hwalp7983olmrhew
Diffstat (limited to 'addons/website_event')
-rw-r--r--addons/website_event/controllers/main.py11
-rw-r--r--addons/website_event/data/event_demo.xml1
-rw-r--r--addons/website_event/models/event.py44
-rw-r--r--addons/website_event/views/website_event.xml21
4 files changed, 73 insertions, 4 deletions
diff --git a/addons/website_event/controllers/main.py b/addons/website_event/controllers/main.py
index 9ea85b68479..2d37a34cb30 100644
--- a/addons/website_event/controllers/main.py
+++ b/addons/website_event/controllers/main.py
@@ -165,14 +165,23 @@ class website_event(http.Controller):
@website.route(['/event/<model("event.event"):event>'], type='http', auth="public", multilang=True)
def event(self, event=None, **post):
+ print 'ICI'
+ if event.menu_id and event.menu_id.child_id:
+ print 'MENU', website.menu_id.child_id[0].url
+ return request.redirect(website.menu_id.child_id[0].url)
+ return request.redirect('/event/register/'+event.id)
+
+ @website.route(['/event/register/<model("event.event"):event>'], type='http', auth="public", multilang=True)
+ def event(self, event=None, **post):
values = {
'event': event,
'range': range,
}
return request.website.render("website_event.event_description_full", values)
- @website.route(['/event/<int:event_id>/add_cart'], type='http', auth="public", multilang=True)
+ @website.route(['/event/add_cart'], type='http', auth="public", multilang=True)
def add_cart(self, event_id=None, **post):
+ assert event_id, 'An event is required'
user_obj = request.registry['res.users']
order_line_obj = request.registry.get('sale.order.line')
ticket_obj = request.registry.get('event.event.ticket')
diff --git a/addons/website_event/data/event_demo.xml b/addons/website_event/data/event_demo.xml
index 4da5b931d32..a08ca75e952 100644
--- a/addons/website_event/data/event_demo.xml
+++ b/addons/website_event/data/event_demo.xml
@@ -5,6 +5,7 @@
<record id="base.res_partner_6" model="res.partner">
<field name="website_published">True</field>
</record>
+
<record id="event.event_0" model="event.event">
<field name="website_published">True</field>
<field name="twitter_hashtag">openerp</field>
diff --git a/addons/website_event/models/event.py b/addons/website_event/models/event.py
index 4b16f0fa49e..50ea7696575 100644
--- a/addons/website_event/models/event.py
+++ b/addons/website_event/models/event.py
@@ -35,6 +35,48 @@ class event(osv.osv):
_name = 'event.event'
_inherit = ['event.event','website.seo.metadata']
+ def _get_new_menu_pages(serf, cr, uid, event, context=None):
+ context = context or {}
+ todo = [
+ (_('Introduction'), 'website_event.template_intro'),
+ (_('Location'), 'website_event.template_location')
+ ]
+ web = request.registry['website']
+ result = []
+ for name,path in todo:
+ newpath = web.new_page(request.cr, request.uid, path, request.context)
+ url = "/event/event.id/page/" + newpath
+ result.append((name, newpath))
+ return result
+
+ def _set_show_menu(self, cr, uid, ids, name, value, arg, context=None):
+ menuobj = self.pool.get('website.menu')
+ for event in self.browse(cr, uid, ids, context=context):
+ if event.menu_id and not value:
+ menuobj.unlink(cr, uid, [event.menu_id.id], context=context)
+ elif value and not event.menu_id:
+ root = menuobj.create(cr, uid, {
+ 'name': event.name
+ }, context=context)
+ tocreate = self._get_new_menu_pages(cr, uid, event, context)
+ tocreate.append((_('Register'), '/event/register/'+str(event.id)))
+ sequence = 0
+ for name,url in tocreate:
+ menuobj.create(cr, uid, {
+ 'name': name,
+ 'url': url,
+ 'parent_id': root,
+ 'sequence': sequence
+ }, context=context)
+ sequence += 1
+ return True
+
+ def _get_show_menu(self, cr, uid, ids, field_name, arg, context=None):
+ res = dict.fromkeys(ids, '')
+ for event in self.browse(cr, uid, ids, context=context):
+ res[event.id] = bool(event.menu_id)
+ return res
+
def _website_url(self, cr, uid, ids, field_name, arg, context=None):
res = dict.fromkeys(ids, '')
base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url')
@@ -55,7 +97,7 @@ class event(osv.osv):
help="Website communication history",
),
'website_url': fields.function(_website_url, string="Website url"),
- 'show_menu': fields.boolean('Dedicated Menu'),
+ 'show_menu': fields.function(_get_show_menu, fnct_inv=_set_show_menu, type='boolean', string='Dedicated Menu'),
'menu_id': fields.many2one('website.menu', 'Event Menu'),
}
_defaults = {
diff --git a/addons/website_event/views/website_event.xml b/addons/website_event/views/website_event.xml
index 783158b18d5..d3f2c89e256 100644
--- a/addons/website_event/views/website_event.xml
+++ b/addons/website_event/views/website_event.xml
@@ -203,6 +203,24 @@
</t>
</template>
+ <template id="template_location">
+ <t t-call="website_event.layout">
+ <section class="container" data-snippet-id="title">
+ <h1 class="text-center">Event Location</h1>
+ </section>
+ <div class="oe_structure oe_empty"/>
+ </t>
+ </template>
+
+ <template id="template_intro">
+ <t t-call="website_event.layout">
+ <section class="container" data-snippet-id="title">
+ <h1 class="text-center">Event Introduction</h1>
+ </section>
+ <div class="oe_structure oe_empty"/>
+ </t>
+ </template>
+
<template id="event_description_full">
<t t-call="website_event.layout">
<div class="container">
@@ -216,10 +234,9 @@
<span t-field="event.city"/>,
<span t-field="event.country_id"/>
</h4>
-
<div class="row mt32 mb32">
<div class="col-md-8">
- <form t-action="/event/#{ event.id }/add_cart" method="post" t-if="event.event_ticket_ids">
+ <form t-action="/event/add_cart?event_id=#{ event.id }" method="post" t-if="event.event_ticket_ids">
<table class="table table-striped">
<thead>
<tr>