[FIX] events

bzr revid: fp@tinyerp.com-20140130163321-f86eq7obsua6x6z9
This commit is contained in:
Fabien Pinckaers 2014-01-30 17:33:21 +01:00
parent 78fefd54f0
commit 3b48a82af5
9 changed files with 59 additions and 51 deletions

View File

@ -23,5 +23,3 @@ import event
import wizard
import report
import res_partner
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -7,8 +7,6 @@
'version': '1.0',
'description': """
Online Events
=============
""",
'author': 'OpenERP SA',
'depends': ['website', 'website_partner', 'website_mail', 'event'],

View File

@ -145,6 +145,8 @@ class website_event(http.Controller):
events_ids = event_obj.browse(request.cr, request.uid, obj_ids,
context=request.context)
for d in dates:
print '***', d
values = {
'current_date': current_date,
'current_country': current_country,
@ -184,7 +186,6 @@ class website_event(http.Controller):
'event': event,
'main_object': event,
'range': range,
'main_object': event,
}
return request.website.render("website_event.event_description_full", values)
@ -202,25 +203,15 @@ class website_event(http.Controller):
@http.route('/event/add_event/', type='http', auth="user", multilang=True, methods=['POST'], website=True)
def add_event(self, event_name="New Event", **kwargs):
Event = request.registry.get('event.event')
date_begin = datetime.today() + timedelta(days=(15)) # FIXME: better defaults
return self._add_event(event_name, request.context, **kwargs)
def _add_event(self, event_name="New Event", context={}, **kwargs):
Event = request.registry.get('event.event')
date_begin = datetime.today() + timedelta(days=(14))
vals = {
'name': event_name,
'date_begin': date_begin.strftime('%Y-%m-%d'),
'date_end': (date_begin + timedelta(days=(1))).strftime('%Y-%m-%d'),
}
try:
dummy, res_id = request.registry.get('ir.model.data').get_object_reference(request.cr, request.uid, 'event_sale', 'product_product_event')
vals['event_ticket_ids'] = [[0,0,{
'name': _('Subscription'),
'product_id': res_id,
'deadline' : vals.get('date_begin'),
'price': 0,
}]]
except ValueError:
pass
event_id = Event.create(request.cr, request.uid, vals, context=request.context)
event_id = Event.create(request.cr, request.uid, vals, context=context)
return request.redirect("/event/%s/?enable_editor=1" % event_id)

View File

@ -25,6 +25,8 @@ from openerp import SUPERUSER_ID
from openerp.tools.translate import _
import re
from openerp.addons.website.models.website import slug
class event(osv.osv):
_name = 'event.event'
@ -41,7 +43,7 @@ class event(osv.osv):
for name,path in todo:
name2 = name+' '+event.name
newpath = web.new_page(cr, uid, name2, path, ispage=False, context=context)
url = "/event/"+str(event.id)+"/page/" + newpath
url = "/event/"+slug(event)+"/page/" + newpath
result.append((name, url))
return result
@ -56,7 +58,7 @@ class event(osv.osv):
'name': event.name
}, context=context)
tocreate = self._get_new_menu_pages(cr, uid, event, context)
tocreate.append((_('Register'), '/event/%s/register' % str(event.id)))
tocreate.append((_('Register'), '/event/%s/register' % slug(event)))
sequence = 0
for name,url in tocreate:
menuobj.create(cr, uid, {
@ -77,14 +79,13 @@ class event(osv.osv):
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 event in self.browse(cr, uid, ids, context=context):
res[event.id] = "%s/event/%s/" % (base_url, event.id)
res[event.id] = "/event/" + slug(event)
return res
def _default_hashtag(self, cr, uid, context={}):
name = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.name
return re.sub("[- \\.\\(\\)]+", "", name).lower()
return re.sub("[- \\.\\(\\)\\@\\#\\&]+", "", name).lower()
_columns = {
'twitter_hashtag': fields.char('Twitter Hashtag'),
@ -108,12 +109,14 @@ class event(osv.osv):
}
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:
event = self.browse(cr, uid, ids[0], context=context)
if event.address_id:
return self.browse(cr, SUPERUSER_ID, ids[0], context=context).address_id.google_map_img()
return None
def google_map_link(self, cr, uid, ids, zoom=8, context=None):
partner = self.browse(cr, uid, ids[0], context=context)
if partner.address_id:
event = self.browse(cr, uid, ids[0], context=context)
if event.address_id:
return self.browse(cr, SUPERUSER_ID, ids[0], context=context).address_id.google_map_link()
return None

View File

@ -127,7 +127,7 @@
</xpath>
</template>
<template id="event_left_column" inherit_option_id="website_event.index" name="Filters">
<template id="event_left_column" inherit_option_id="website_event.index" inherit_id="website_event.index" name="Filters">
<xpath expr="//div[@id='middle_column']" position="attributes">
<attribute name="class">col-md-6</attribute>
</xpath>
@ -136,7 +136,7 @@
<ul class="nav nav-pills nav-stacked">
<t t-foreach="dates" t-as="date">
<li t-att-class="searches.get('date') == date[0] and 'active' or ''" t-if="date[3] or (date[0] in ('old','all'))">
<a t-attf-href="/event/?{{ keep_query('country', 'type', date=date[0] }}"><t t-esc="date[1]"/>
<a t-attf-href="/event/?{{ keep_query('country', 'type', date=date[0]) }}"><t t-esc="date[1]"/>
<span t-if="date[3]" class="badge pull-right"><t t-esc="date[3]"/></span>
</a>
</li>
@ -151,7 +151,7 @@
<ul class="nav nav-pills nav-stacked mt32">
<t t-foreach="types">
<li t-if="type" t-att-class="searches.get('type') == str(type and type[0]) and 'active' or ''">
<a t-attf-href="/event/?{{ keep_query('country', 'date', type=type[0] }}"><t t-esc="type[1]"/>
<a t-attf-href="/event/?{{ keep_query('country', 'date', type=type[0]) }}"><t t-esc="type[1]"/>
<span class="badge pull-right"><t t-esc="type_count"/></span>
</a>
</li>
@ -159,12 +159,13 @@
</ul>
</xpath>
</template>
<template id="event_location" inherit_option_id="website_event.event_left_column" name="Filter by Country">
<xpath expr="//div[@id='left_column']" position="inside">
<ul class="nav nav-pills nav-stacked mt32">
<t t-foreach="countries">
<li t-if="country_id" t-att-class="searches.get('country') == str(country_id and country_id[0]) and 'active' or ''">
<a t-attf-href="/event/?{{ keep_query('type', 'data', country=country_id[0] }}"><t t-esc="country_id[1]"/>
<a t-attf-href="/event/?{{ keep_query('type', 'data', country=country_id[0]) }}"><t t-esc="country_id[1]"/>
<span class="badge pull-right"><t t-esc="country_id_count"/></span>
</a>
</li>

View File

@ -79,3 +79,19 @@ class website_event(website_event):
if not _values:
return request.redirect("/event/%s/" % event_id)
return request.redirect("/shop/checkout")
def _add_event(self, event_name="New Event", context={}, **kwargs):
try:
dummy, res_id = request.registry.get('ir.model.data').get_object_reference(request.cr, request.uid, 'event_sale', 'product_product_event')
context['default_event_ticket_ids'] = [[0,0,{
'name': _('Subscription'),
'product_id': res_id,
'deadline' : vals.get('date_begin'),
'price': 0,
}]]
except ValueError:
pass
return super(website_event, self)._add_event(event_name, context, **kwargs)

View File

@ -6,9 +6,16 @@
'summary': 'Sponsors, Tracks, Agenda, Event News',
'version': '1.0',
'description': """
Online Events
=============
Online Advanced Events
======================
Adds support for:
- sponsors
- dedicated menu per event
- news per event
- tracks
- agenda
- call for proposals
""",
'author': 'OpenERP SA',
'depends': ['website_event', 'website_blog'],

View File

@ -31,10 +31,10 @@ controllers = controllers()
class website_event(http.Controller):
@http.route(['/event/<model("event.event"):event>/track/<model("event.track"):track>'], type='http', auth="public", website=True, multilang=True)
def event_track_view(self, event, track, **post):
# TODO: not implemented
values = { 'track': track, 'event': track.event_id, 'main_object': track }
return request.website.render("website_event_track.track_view", values)
# TODO: not implemented
@http.route(['/event/<model("event.event"):event>/agenda/'], type='http', auth="public", website=True, multilang=True)
def event_agenda(self, event, tag=None, **post):
values = {
@ -49,7 +49,6 @@ class website_event(http.Controller):
], type='http', auth="public", website=True, multilang=True)
def event_tracks(self, event, tag=None, **post):
searches = {}
if tag:
searches.update(tag=tag.id)
track_obj = request.registry.get('event.track')
@ -72,8 +71,6 @@ class website_event(http.Controller):
}
return request.website.render("website_event_track.tracks", values)
@http.route(['/event/<model("event.event"):event>/track_proposal/'], type='http', auth="public", website=True, multilang=True)
def event_track_proposal(self, event, **post):
values = { 'event': event }

View File

@ -21,6 +21,7 @@
from openerp.osv import fields, osv
from openerp.tools.translate import _
from openerp.addons.website.models.website import slug
class event_track_tag(osv.osv):
_name = "event.track.tag"
@ -63,22 +64,20 @@ class event_track(osv.osv):
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)
res[track.id] = "/event/%s/track/%s" % (slug(track.event_id), slug(track))
return res
_columns = {
'name': fields.char('Track Title', required=True),
'name': fields.char('Track Title', required=True, translate=True),
'user_id': fields.many2one('res.users', 'Responsible'),
'speaker_ids': fields.many2many('res.partner', string='Speakers'),
'tag_ids': fields.many2many('event.track.tag', string='Tags'),
'stage_id': fields.many2one('event.track.stage'),
'description': fields.html('Track Description'),
'stage_id': fields.many2one('event.track.stage', 'Stage'),
'description': fields.html('Track Description', translate=True),
'date': fields.datetime('Track Date'),
'duration': fields.integer('Duration'),
'location_id': fields.many2one('event.track.location', 'Location'),
'show_attachments': fields.boolean('Show Documents'),
'event_id': fields.many2one('event.event', 'Event', required=True),
'color': fields.integer('Color Index'),
'priority': fields.selection([('3','Low'),('2','Medium (*)'),('1','High (**)'),('0','Highest (***)')], 'Priority', required=True),
@ -97,7 +96,6 @@ class event_track(osv.osv):
_defaults = {
'user_id': lambda self, cr, uid, ctx: uid,
'website_published': lambda self, cr, uid, ctx: False,
'show_attachments': lambda self, cr, uid, ctx: True,
'duration': lambda *args: 60,
'stage_id': _default_stage_id,
'priority': '2'
@ -116,7 +114,6 @@ class event_track(osv.osv):
#
class event_event(osv.osv):
_inherit = "event.event"
def _get_tracks_tag_ids(self, cr, uid, ids, field_names, arg=None, context=None):
res = dict.fromkeys(ids, [])
for event in self.browse(cr, uid, ids, context=context):
@ -144,12 +141,12 @@ class event_event(osv.osv):
context = context or {}
result = super(event_event, self)._get_new_menu_pages(cr, uid, event, context=context)
if event.show_tracks:
result.append( (_('Talks'), '/event/%s/track/' % event.id))
result.append( (_('Agenda'), '/event/%s/agenda/' % event.id))
result.append( (_('Talks'), '/event/%s/track/' % slug(event)))
result.append( (_('Agenda'), '/event/%s/agenda/' % slug(event)))
if event.blog_id:
result.append( (_('News'), '/blogpost/'+str(event.blog_ig.id)))
result.append( (_('News'), '/blogpost/'+slug(event.blog_ig)))
if event.show_track_proposal:
result.append( (_('Talk Proposals'), '/event/%s/track_proposal/' % event.id))
result.append( (_('Talk Proposals'), '/event/%s/track_proposal/' % slug(event)))
return result
#