[IMP] event tracks, done track submission, a few data, some fixes

bzr revid: fp@tinyerp.com-20131222144057-8vxt7mouxako39wp
This commit is contained in:
Fabien Pinckaers 2013-12-22 15:40:57 +01:00
parent 049f0c26e1
commit 9cc6b3c30f
5 changed files with 133 additions and 20 deletions

View File

@ -23,7 +23,9 @@ from openerp.addons.web import http
from openerp.addons.web.http import request from openerp.addons.web.http import request
from openerp.addons.website.models import website from openerp.addons.website.models import website
from openerp.addons.website.controllers.main import Website as controllers from openerp.addons.website.controllers.main import Website as controllers
import re import re
import werkzeug.utils
controllers = controllers() controllers = controllers()
@ -79,8 +81,49 @@ class website_event(http.Controller):
values = { 'event': event } values = { 'event': event }
return request.website.render("website_event_track.event_track_proposal", values) return request.website.render("website_event_track.event_track_proposal", values)
@website.route(['/event/<model("event.event"):event>/track_proposal/success/'], type='http', auth="public", multilang=True) @website.route(['/event/<model("event.event"):event>/track_proposal/post'], type='http', auth="public", multilang=True)
def event_track_proposal_success(self, event, **post): def event_track_proposal_post(self, event, **post):
website.preload_records(event, on_error="website_event.404") cr, uid, context = request.cr, request.uid, request.context
values = { 'event': event }
tobj = request.registry['event.track']
tags = []
for tag in event.allowed_track_tag_ids:
if post.get('tag_'+str(tag.id)):
tags.append(tag.id)
e = werkzeug.utils.escape
track_description = '''<section data-snippet-id="text-block">
<div class="container">
<div class="row">
<div class="col-md-12 text-center">
<h2>%s</h2>
</div>
<div class="col-md-12">
<p>%s</p>
</div>
<div class="col-md-12">
<h3>About The Author</h3>
<p>%s</p>
</div>
</div>
</div>
</section>''' % (e(post['track_name']),
e(post['description']), e(post['biography']))
track_id = tobj.create(cr, uid, {
'name': post['track_name'],
'event_id': event.id,
'tag_ids': [(6, 0, tags)],
'user_id': False,
'description': track_description
}, context=context)
tobj.message_post(cr, uid, [track_id], body="""Proposed By: %s<br/>
Mail: <a href="mailto:%s">%s</a><br/>
Phone: %s""" % (e(post['partner_name']), e(post['email_from']),
e(post['email_from']), e(post['phone'])), context=context)
track = tobj.browse(cr, uid, track_id, context=context)
values = {'track': track}
return request.website.render("website_event_track.event_track_proposal_success", values) return request.website.render("website_event_track.event_track_proposal_success", values)

View File

@ -79,5 +79,54 @@
<field name="partner_id" ref="base.res_partner_14"/> <field name="partner_id" ref="base.res_partner_14"/>
</record> </record>
<!-- Tracks -->
<record id="track_1" model="event.track">
<field name="name">A Better Future With OpenERP eCommerce</field>
<field name="event_id" ref="event.event_0"/>
<field name="website_published" eval="True"/>
<field name="duration" eval="1"/>
<field name="date">2014-12-01 10:00:00</field>
<field name="speaker_ids" eval="[(6, 0, [ref('base.res_partner_address_12')])]"/>
<field name="location_id" ref="website_event_track.event_track_location2"/>
<field name="stage_id" ref="website_event_track.event_track_stage3"/>
<field name="tag_ids" eval="[(6, 0, [ref('website_event_track.event_track_tag2'), ref('website_event_track.event_track_tag3')])]"/>
<field name="description" type="xml">
<section data-snippet-id="text-block">
<div class="container">
<div class="row">
<div class="col-md-12 text-center">
<h2>A Better Future With OpenERP Commerce</h2>
<h3 class="text-muted mt0">by Georges Lucas, OpenCorp Director</h3>
</div>
<div class="col-md-12">
<p>
Apart from being an enterprise management software, OpenERP is
used nowadays for a great variety of enterprise frontends.
</p><p>
The talk illustrates the impact of OpenERP in areas such as the
company website, online events management, eCommerce, online
recruitments, social media marketing, etc.
</p>
</div>
<div class="col-md-12">
<h3>About The Author</h3>
<p>
Georges Lucas is <b>Director at OpenElec</b>. He develops software
since he has 13 years old.
He sold his first company at 30 years old and manage to
grow OpenCorp from 1 to 55 employees mostly by reselling
services on OpenERP.
</p><p>
Georges is the <b>author of several books</b>, including Amazon best seller
"How OpenERP will change the business world!".
</p>
</div>
</div>
</div>
</section>
</field>
</record>
</data> </data>
</openerp> </openerp>

View File

@ -60,6 +60,14 @@ class event_track(osv.osv):
_name = "event.track" _name = "event.track"
_order = 'date' _order = 'date'
_inherit = ['mail.thread', 'ir.needaction_mixin', 'website.seo.metadata'] _inherit = ['mail.thread', 'ir.needaction_mixin', 'website.seo.metadata']
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')
for track in self.browse(cr, uid, ids, context=context):
res[track.id] = "%s/event/%d/track/%d" % (base_url, track.event_id.id, track.id)
return res
_columns = { _columns = {
'name': fields.char('Track Title', required=True), 'name': fields.char('Track Title', required=True),
'user_id': fields.many2one('res.users', 'Responsible'), 'user_id': fields.many2one('res.users', 'Responsible'),
@ -75,6 +83,7 @@ class event_track(osv.osv):
'color': fields.integer('Color Index'), 'color': fields.integer('Color Index'),
'priority': fields.selection([('3','Low'),('2','Medium (*)'),('1','High (**)'),('0','Highest (***)')], 'Priority', required=True), 'priority': fields.selection([('3','Low'),('2','Medium (*)'),('1','High (**)'),('0','Highest (***)')], 'Priority', required=True),
'website_published': fields.boolean('Available in the website'), 'website_published': fields.boolean('Available in the website'),
'website_url': fields.function(_website_url, string="Website url", type="char"),
} }
def set_priority(self, cr, uid, ids, priority, context={}): def set_priority(self, cr, uid, ids, priority, context={}):
return self.write(cr, uid, ids, {'priority' : priority}) return self.write(cr, uid, ids, {'priority' : priority})
@ -86,6 +95,7 @@ class event_track(osv.osv):
_defaults = { _defaults = {
'user_id': lambda self, cr, uid, ctx: uid, 'user_id': lambda self, cr, uid, ctx: uid,
'website_published': lambda self, cr, uid, ctx: False,
'show_attachments': lambda self, cr, uid, ctx: True, 'show_attachments': lambda self, cr, uid, ctx: True,
'duration': lambda *args: 0, 'duration': lambda *args: 0,
'stage_id': _default_stage_id, 'stage_id': _default_stage_id,
@ -122,7 +132,7 @@ class event_event(osv.osv):
'show_tracks': fields.boolean('Multiple Tracks'), 'show_tracks': fields.boolean('Multiple Tracks'),
'show_blog': fields.boolean('News'), 'show_blog': fields.boolean('News'),
'tracks_tag_ids': fields.function(_get_tracks_tag_ids, type='one2many', relation='event.track.tag', string='Tags of Tracks'), 'tracks_tag_ids': fields.function(_get_tracks_tag_ids, type='one2many', relation='event.track.tag', string='Tags of Tracks'),
'allowed_track_tag_ids': fields.many2many('event.track.tag', string='Accepted Tracks'), 'allowed_track_tag_ids': fields.many2many('event.track.tag', string='Accepted Tags', help="List of available tags for track proposals."),
} }
_defaults = { _defaults = {
'show_track_proposal': False, 'show_track_proposal': False,

View File

@ -173,6 +173,12 @@
</xpath> </xpath>
<xpath expr="//notebook" position="inside"> <xpath expr="//notebook" position="inside">
<page string="Tracks"> <page string="Tracks">
<div class="oe_right oe_button_box">
<button name="%(website_event_track.act_event_list_tracks)d" type="action" string="Tracks"/>
</div>
<group col="2" class="oe_title">
<field name="allowed_track_tag_ids" widget="many2many_tags"/>
</group>
<field name="track_ids" context="{'default_event_id': active_id}"/> <field name="track_ids" context="{'default_event_id': active_id}"/>
</page> </page>
<page string="Sponsorships"> <page string="Sponsorships">
@ -189,10 +195,6 @@
</page> </page>
</xpath> </xpath>
<xpath expr="//div[@class='oe_right oe_button_box']" position="inside"> <xpath expr="//div[@class='oe_right oe_button_box']" position="inside">
<button name="%(website_event_track.act_event_list_tracks)d" type="action" string="Tracks"/>
</xpath>
<xpath expr="//field[@name='organizer_id']" position="after">
<field name="allowed_track_tag_ids" widget="many2many_tags"/>
</xpath> </xpath>
</field> </field>
</record> </record>
@ -288,8 +290,12 @@
<field name="stage_id" widget="statusbar"/> <field name="stage_id" widget="statusbar"/>
</header> </header>
<sheet string="Track"> <sheet string="Track">
<div class="oe_right oe_button_box">
<field name="website_url" invisible="1"/>
<field name="website_published" class="pull-right" widget="website_button"/>
</div>
<div class="oe_title"> <div class="oe_title">
<label for="name" class="oe_edit_only"/> <label for="name" class="oe_edit_only"/>
<h1> <h1>
<field name="name"/> <field name="name"/>
</h1> </h1>
@ -309,7 +315,6 @@
<field name="duration" widget="float_time"/> <field name="duration" widget="float_time"/>
<field name="tag_ids" widget="many2many_tags"/> <field name="tag_ids" widget="many2many_tags"/>
</group> </group>
<field name="description" colspan="4"/>
</group> </group>
</sheet> </sheet>
<div class="oe_chatter"> <div class="oe_chatter">

View File

@ -152,7 +152,7 @@
</p> </p>
</section> </section>
<section class="row"> <section class="row">
<div class="col-md-7"> <div class="col-md-8">
<div class="oe_structure"> <div class="oe_structure">
<section data-snippet-id="text"> <section data-snippet-id="text">
<h3 class="page-header mt16"> <h3 class="page-header mt16">
@ -177,9 +177,9 @@
</section> </section>
</div> </div>
<section id="forms" t-if="event.show_track_proposal"> <section id="forms" t-if="event.show_track_proposal">
<form class="form-horizontal mt32" action="/event/#{event.id}/track_proposal/success" method="post" enctype="multipart/form-data"> <form class="form-horizontal mt32" t-attf-action="/event/#{event.id}/track_proposal/post" method="post" enctype="multipart/form-data">
<div class="form-group"> <div class="form-group">
<label class="col-md-3 col-sm-4 control-label" for="partner_name">Speaker Name</label> <label class="col-md-3 col-sm-4 control-label" for="partner_name">Your Name</label>
<div class="col-md-7 col-sm-8"> <div class="col-md-7 col-sm-8">
<input type="text" class="form-control" name="partner_name" required="True" /> <input type="text" class="form-control" name="partner_name" required="True" />
</div> </div>
@ -196,17 +196,23 @@
<input type="text" class="form-control" name="phone" required="True" /> <input type="text" class="form-control" name="phone" required="True" />
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group" t-if="len(event.allowed_track_tag_ids)">
<label class="col-md-3 col-sm-4 control-label" for="phone">Tags</label> <label class="col-md-3 col-sm-4 control-label" for="phone">Tags</label>
<div class="col-md-7 col-sm-8"> <div class="col-md-9 col-sm-8">
<div class="row"> <div class="row">
<div class="col-sm-4" t-foreach="event.allowed_track_tag_ids" t-as="tag"> <label class="col-sm-4" t-foreach="event.allowed_track_tag_ids" t-as="tag">
<input type="checkbox" t-att-value="tag.id" name="tags"/> <input type="checkbox" value="1" t-attf-name="tag_#{str(tag.id)}"/>
<t t-esc="tag.name"/> <t t-esc="tag.name"/>
</div> </label>
</div> </div>
</div> </div>
</div> </div>
<div class="form-group">
<label class="col-md-3 col-sm-4 control-label" for="track_name">Talk Title</label>
<div class="col-md-7 col-sm-8">
<input type="text" class="form-control" name="track_name" required="True"/>
</div>
</div>
<div class="form-group"> <div class="form-group">
<label class="col-md-3 col-sm-4 control-label" for="phone">Speaker Biography</label> <label class="col-md-3 col-sm-4 control-label" for="phone">Speaker Biography</label>
<div class="col-md-7 col-sm-8"> <div class="col-md-7 col-sm-8">
@ -227,7 +233,7 @@
</form> </form>
</section> </section>
<div class="oe_structure"/> <div class="oe_structure"/>
</div><div class="col-md-4 col-md-offset-1"> </div><div class="col-md-3 col-md-offset-1">
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading"> <div class="panel-heading">
<h4>Talks Types</h4> <h4>Talks Types</h4>