@website.route(['/event/<int:event_id>'], type='http', auth="public")
def event(self, event_id=None, **post):
- event = request.registry['event.event'].browse(request.cr, request.uid, event_id, {'show_address': 1})
values = {
- 'event_id': event,
+ '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)
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)
'description_website': fields.html('Description for the website'),
}
-class event_event(osv.osv):
- _inherit = "event.event"
-
def google_map_img(self, cr, uid, ids, zoom=8, width=298, height=298, context=None):
partner = self.browse(cr, uid, ids[0], context=context)
if partner.address_id:
<t t-set="title">Events</t>
<div class="container">
<t t-call="website.publish"><t t-set="object" t-value="event_id"/></t>
- <h1 class="text-center" t-field="event_id.name"></h1>
- <span t-if="not event_id.event_ticket_ids" class="label label-default pull-left">No tickets needed.</span>
- <t t-if="event_id.event_ticket_ids">
- <span t-if="event_id.register_avail == 9999" class="label label-default pull-left">Tickets availables.</span>
- <span t-if="not event_id.register_avail" class="label label-default pull-left">No ticket available.</span>
- <span t-if="event_id.register_avail and event_id.register_avail != 9999" t-attf-class="label label-default pull-left label-#{ event_id.register_avail <= 10 and 'warning' or 'info' }">
- <t t-if="event_id.register_avail <= 10">Only</t>
- <t t-esc="event_id.register_avail"/>
- <t t-if="event_id.register_avail > 1">tickets </t>
- <t t-if="event_id.register_avail == 1">ticket </t>
- available.
- </span>
- </t>
- <h4 class="text-center">
- <i class="icon-time"></i> <span t-field="event_id.date_begin"/> to
- <span t-field="event_id.date_end"/>
- </h4>
- <h5 class="text-center" t-field="event_id.address_id"/>
<div class="row">
+ <div class="col-md-4">
+ <form action="./subscribe" method="POST" class="form-inline" t-if="not subscribe">
+ <div class="col-lg-7">
+ <input placeholder="Email Address" type="email" name="email" class="form-control" t-if="is_public_user"/>
+ </div>
+ <button type="submit" class="btn btn-primary" name="subscribe">Subscribe</button>
+ </form>
+ <form action="./unsubscribe" method="POST" class="form-inline" t-if="subscribe">
+ <input type="hidden" name="email" t-att-value="subscribe"/>
+ <button type="submit" class="btn btn-default" name="unsubscribe">Unsubscribe</button>
+ </form>
+ </div>
+ <div class="col-md-8">
+ <h1 class="text-center" t-field="event_id.name"></h1>
+ <h4 class="text-center">
+ <i class="icon-time"></i> <span t-field="event_id.date_begin"/> to
+ <span t-field="event_id.date_end"/>
+ </h4>
+ <h5 class="text-center" t-field="event_id.address_id"/>
+ </div>
+
<div class="col-md-4 css_noprint">
<h4>When & Where</h4>
<a t-att-href="event_id.google_map_link()" target="_BLANK">
</address>
</div>
<div class="col-md-8">
- <div class="media-body">
- <t t-if="event_id.event_ticket_ids">
- <hr/>
- <form t-attf-action="/event/#{ event_id.id }/add_cart" method="post">
- <table class="table">
- <thead>
- <tr>
- <th>Ticket</th>
- <th>Sales End</th>
- <th>Price</th>
- <th>Seats</th>
- <th>Quantity</th>
- </tr>
- </thead>
- <tbody>
- <tr t-foreach="event_id.event_ticket_ids" t-as="ticket">
- <td t-field="ticket.name"/>
- <td t-field="ticket.deadline"/>
- <td t-field="ticket.price"/>
- <td><span t-if="ticket.register_max"><t t-esc="ticket.register_current"/>/<t t-field="ticket.register_max"/></span></td>
- <td>
- <select t-if="ticket.register_avail" t-attf-name="ticket- #{ ticket.id }" class="form-control">
- <t t-foreach="range(0, ticket.register_avail > 9 and 10 or ticket.register_avail+1 )" t-as="nb"><option t-esc="nb"/></t>
- </select>
- <span t-if="not ticket.register_avail">Not ticket available</span>
- </td>
- </tr>
- </tbody>
- </table>
- <button type="submit" class="btn btn-primary" t-if="event_id.register_avail">Order Now</button>
- </form>
- </t>
- <hr/>
- <div t-field="event_id.description_website"></div>
- </div>
+ <t t-if="event_id.event_ticket_ids">
+ <hr/>
+ <form t-attf-action="/event/#{ event_id.id }/add_cart" method="post">
+ <table class="table">
+ <thead>
+ <tr>
+ <th>Ticket</th>
+ <th>Sales End</th>
+ <th>Price</th>
+ <th>Seats</th>
+ <th>Quantity</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr t-foreach="event_id.event_ticket_ids" t-as="ticket">
+ <td t-field="ticket.name"/>
+ <td t-field="ticket.deadline"/>
+ <td t-field="ticket.price"/>
+ <td><span t-if="ticket.register_max"><t t-esc="ticket.register_current"/>/<t t-field="ticket.register_max"/></span></td>
+ <td>
+ <select t-if="ticket.register_avail" t-attf-name="ticket- #{ ticket.id }" class="form-control">
+ <t t-foreach="range(0, ticket.register_avail > 9 and 10 or ticket.register_avail+1 )" t-as="nb"><option t-esc="nb"/></t>
+ </select>
+ <span t-if="not ticket.register_avail">Not ticket available</span>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <button type="submit" class="btn btn-primary" t-if="event_id.register_avail">Order Now</button>
+ </form>
+ </t>
+ <hr/>
+ <div t-field="event_id.description_website"></div>
+ <hr/>
+ <ul class="media-list" id="comment">
+ <li t-foreach="message_ids" t-as="comment" class="media">
+ <div class="media-body">
+ <t t-call="website.publish"><t t-set="object" t-value="comment"/></t>
+ <t t-raw="comment.body"/>
+ <small class="pull-right muted text-right">
+ <div t-field="comment.author_id"/>
+ <div t-field="comment.date"/>
+ </small>
+ </div>
+ </li>
+ </ul>
</div>
</div>
</div>
@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')
_columns = {
'website_published': fields.boolean('Publish', help="Publish on the website as a blog"),
}
- _defaults = {
- 'website_published': lambda *args: True
- }
class mail_group(osv.Model):
<div class="row">
<div class="col-md-4" id="left_column">
<a t-if="mail_group_id and editable" t-attf-href="/blog/#{ mail_group_id }/new" class="btn btn-default">Add a new Blog</a>
- <div id="blog_subscribe">
+ <div>
<form action="./subscribe" method="POST" class="form-inline" t-if="not subscribe">
- <input placeholder="Email Address" type="email" name="email" class="input-medium" t-if="is_public_user"/>
+ <div class="col-lg-7">
+ <input placeholder="Email Address" type="email" name="email" class="form-control" t-if="is_public_user"/>
+ </div>
<button type="submit" class="btn btn-primary" name="subscribe">Subscribe</button>
</form>
<form action="./unsubscribe" method="POST" class="form-inline" t-if="subscribe">
</small>
</div>
</li>
- <form id="post" t-attf-action="/blog/#{ blog_id.res_id }/#{ blog_id.id }/post#post" method="POST" class="form-horizontal text-center" groups="group_website_mail_reply">
- <textarea rows="4" placeholder="Your comment" class="col-md-7 form-control"></textarea>
- <button type="submit" class="btn btn-default">Post your comment</button>
- </form>
</ul>
+ <form id="post" t-attf-action="/blog/#{ blog_id.res_id }/#{ blog_id.id }/post#post" method="POST" class="form-horizontal text-center" groups="group_website_mail_reply">
+ <textarea rows="4" placeholder="Your comment" class="col-md-7 form-control"></textarea>
+ <button type="submit" class="btn btn-default">Post your comment</button>
+ </form>
</div>
</div>