parent
78fefd54f0
commit
3b48a82af5
|
@ -23,5 +23,3 @@ import event
|
|||
import wizard
|
||||
import report
|
||||
import res_partner
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
|
|
@ -7,8 +7,6 @@
|
|||
'version': '1.0',
|
||||
'description': """
|
||||
Online Events
|
||||
=============
|
||||
|
||||
""",
|
||||
'author': 'OpenERP SA',
|
||||
'depends': ['website', 'website_partner', 'website_mail', 'event'],
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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'],
|
||||
|
|
|
@ -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 }
|
||||
|
|
|
@ -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
|
||||
|
||||
#
|
||||
|
|
Loading…
Reference in New Issue