[CLEAN] event: lint / remove dead code

- event.event: removed is_subscribed
- event.registration: removed log_ids
- res.partner: removed speaker boolean field, used nowhere
- linted the event module
This commit is contained in:
Thibault Delavallée
2014-10-02 16:18:13 +02:00
parent 8e365ffc88
commit 7c7c2c72ee
7 changed files with 133 additions and 229 deletions
-1
View File
@@ -22,5 +22,4 @@
import event
import wizard
import report
import res_partner
import res_config
+2 -22
View File
@@ -1,27 +1,8 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
{
'name': 'Events Organisation',
'version': '0.1',
'website' : 'https://www.odoo.com/page/events',
'website': 'https://www.odoo.com/page/events',
'category': 'Tools',
'summary': 'Trainings, Conferences, Meetings, Exhibitions, Registrations',
'description': """
@@ -45,7 +26,6 @@ Key Features
'report/report_event_registration_view.xml',
'event_view.xml',
'event_data.xml',
'res_partner_view.xml',
'res_config_view.xml',
'email_template.xml',
'views/event.xml',
@@ -55,6 +35,6 @@ Key Features
],
'installable': True,
'auto_install': False,
'images': ['images/1_event_type_list.jpeg','images/2_events.jpeg','images/3_registrations.jpeg','images/events_kanban.jpeg'],
'images': ['images/1_event_type_list.jpeg', 'images/2_events.jpeg', 'images/3_registrations.jpeg', 'images/events_kanban.jpeg'],
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+94 -90
View File
@@ -12,15 +12,20 @@ class event_type(models.Model):
_description = 'Event Type'
name = fields.Char(string='Event Type', required=True)
default_reply_to = fields.Char(string='Default Reply-To',
default_reply_to = fields.Char(
string='Default Reply-To',
help="The email address of the organizer which is put in the 'Reply-To' of all emails sent automatically at event or registrations confirmation. You can also put your email address of your mail gateway if you use one.")
default_email_event = fields.Many2one('email.template', string='Event Confirmation Email',
default_email_event = fields.Many2one(
'email.template', string='Event Confirmation Email',
help="It will select this default confirmation event mail value when you choose this event")
default_email_registration = fields.Many2one('email.template', string='Registration Confirmation Email',
default_email_registration = fields.Many2one(
'email.template', string='Registration Confirmation Email',
help="It will select this default confirmation registration mail value when you choose this event")
default_registration_min = fields.Integer(string='Default Minimum Registration', default=0,
default_registration_min = fields.Integer(
string='Default Minimum Registration', default=0,
help="It will select this default minimum value when you choose this event")
default_registration_max = fields.Integer(string='Default Maximum Registration', default=0,
default_registration_max = fields.Integer(
string='Default Maximum Registration', default=0,
help="It will select this default maximum value when you choose this event")
@@ -31,31 +36,48 @@ class event_event(models.Model):
_inherit = ['mail.thread', 'ir.needaction_mixin']
_order = 'date_begin'
name = fields.Char(string='Event Name', translate=True, required=True,
name = fields.Char(
string='Name', translate=True, required=True,
readonly=False, states={'done': [('readonly', True)]})
user_id = fields.Many2one('res.users', string='Responsible User',
user_id = fields.Many2one(
'res.users', string='Responsible',
default=lambda self: self.env.user,
readonly=False, states={'done': [('readonly', True)]})
type = fields.Many2one('event.type', string='Type of Event',
company_id = fields.Many2one(
'res.company', string='Company', change_default=True,
default=lambda self: self.env['res.company']._company_default_get('event.event'),
required=False, readonly=False, states={'done': [('readonly', True)]})
organizer_id = fields.Many2one(
'res.partner', string='Organizer',
default=lambda self: self.env.user.company_id.partner_id)
type = fields.Many2one(
'event.type', string='Category',
readonly=False, states={'done': [('readonly', True)]})
color = fields.Integer('Kanban Color Index')
seats_max = fields.Integer(string='Maximum Available Seats', oldname='register_max',
# Seats and computation
seats_max = fields.Integer(
string='Maximum Available Seats', oldname='register_max',
readonly=True, states={'draft': [('readonly', False)]},
help="You can for each event define a maximum registration level. If you have too much registrations you are not able to confirm your event. (put 0 to ignore this rule )")
seats_availability = fields.Selection(
[('limited', 'Limited'), ('unlimited', 'Unlimited')],
'Available Seat', required=True, default='unlimited')
seats_min = fields.Integer(string='Minimum Reserved Seats', oldname='register_min',
seats_min = fields.Integer(
string='Minimum Reserved Seats', oldname='register_min',
readonly=True, states={'draft': [('readonly', False)]},
help="You can for each event define a minimum registration level. If you do not enough registrations you are not able to confirm your event. (put 0 to ignore this rule )")
seats_reserved = fields.Integer(oldname='register_current', string='Reserved Seats',
seats_reserved = fields.Integer(
oldname='register_current', string='Reserved Seats',
store=True, readonly=True, compute='_compute_seats')
seats_available = fields.Integer(oldname='register_avail', string='Available Seats',
seats_available = fields.Integer(
oldname='register_avail', string='Available Seats',
store=True, readonly=True, compute='_compute_seats')
seats_unconfirmed = fields.Integer(oldname='register_prospect', string='Unconfirmed Seat Reservations',
seats_unconfirmed = fields.Integer(
oldname='register_prospect', string='Unconfirmed Seat Reservations',
store=True, readonly=True, compute='_compute_seats')
seats_used = fields.Integer(oldname='register_attended', string='Number of Participations',
seats_used = fields.Integer(
oldname='register_attended', string='Number of Participations',
store=True, readonly=True, compute='_compute_seats')
@api.multi
@@ -64,7 +86,7 @@ class event_event(models.Model):
""" Determine reserved, available, reserved but unconfirmed and used seats. """
# initialize fields to 0
for event in self:
event.seats_unconfirmed = event.seats_reserved = event.seats_used = 0
event.seats_unconfirmed = event.seats_reserved = event.seats_used = event.seats_available = 0
# aggregate registrations by event and by state
if self.ids:
state_field = {
@@ -83,26 +105,35 @@ class event_event(models.Model):
event[state_field[state]] += num
# compute seats_available
for event in self:
event.seats_available = \
event.seats_max - (event.seats_reserved + event.seats_used) \
if event.seats_max > 0 else 0
if event.seats_max > 0:
event.seats_available = event.seats_max - (event.seats_reserved + event.seats_used)
registration_ids = fields.One2many('event.registration', 'event_id', string='Registrations',
# Registration fields
registration_ids = fields.One2many(
'event.registration', 'event_id', string='Registrations',
readonly=False, states={'done': [('readonly', True)]})
count_registrations = fields.Integer(string='Registrations',
compute='_count_registrations')
count_registrations = fields.Integer(string='Registrations', compute='_count_registrations')
date_begin = fields.Datetime(string='Start Date', required=True,
@api.one
@api.depends('registration_ids')
def _count_registrations(self):
self.count_registrations = len(self.registration_ids)
# Date fields
date_tz = fields.Selection('_tz_get', string='Timezone', default=lambda self: self.env.user.tz)
date_begin = fields.Datetime(
string='Start Date', required=True,
readonly=True, states={'draft': [('readonly', False)]})
date_end = fields.Datetime(string='End Date', required=True,
date_end = fields.Datetime(
string='End Date', required=True,
readonly=True, states={'draft': [('readonly', False)]})
date_begin_located = fields.Datetime(string='Start Date Located', compute='_compute_date_begin_tz')
date_end_located = fields.Datetime(string='End Date Located', compute='_compute_date_end_tz')
@api.model
def _tz_get(self):
return [(x, x) for x in pytz.all_timezones]
date_tz = fields.Selection('_tz_get', string='Timezone', default=lambda self: self.env.user.tz)
@api.one
@api.depends('date_tz', 'date_begin')
def _compute_date_begin_tz(self):
@@ -123,17 +154,18 @@ class event_event(models.Model):
else:
self.date_end_located = False
date_begin_located = fields.Datetime(string='Start Date Located', compute='_compute_date_begin_tz')
date_end_located = fields.Datetime(string='End Date Located', compute='_compute_date_end_tz')
state = fields.Selection([
('draft', 'Unconfirmed'),
('cancel', 'Cancelled'),
('confirm', 'Confirmed'),
('done', 'Done')
], string='Status', default='draft', readonly=True, required=True, copy=False,
('draft', 'Unconfirmed'), ('cancel', 'Cancelled'),
('confirm', 'Confirmed'), ('done', 'Done')],
string='Status', default='draft', readonly=True, required=True, copy=False,
help="If event is created, the status is 'Draft'. If event is confirmed for the particular dates the status is set to 'Confirmed'. If the event is over, the status is set to 'Done'. If event is cancelled the status is set to 'Cancelled'.")
auto_confirm = fields.Boolean(string='Auto Confirmation Activated', compute='_compute_auto_confirm')
@api.one
def _compute_auto_confirm(self):
self.auto_confirm = self.env['ir.values'].get_default('marketing.config.settings', 'auto_confirmation')
# Mailing
email_registration_id = fields.Many2one(
'email.template', string='Registration Confirmation Email',
domain=[('model', '=', 'event.registration')],
@@ -142,43 +174,18 @@ class event_event(models.Model):
'email.template', string='Event Confirmation Email',
domain=[('model', '=', 'event.registration')],
help="If you set an email template, each participant will receive this email announcing the confirmation of the event.")
reply_to = fields.Char(string='Reply-To Email',
readonly=False, states={'done': [('readonly', True)]},
reply_to = fields.Char(
string='Reply-To Email', readonly=False, states={'done': [('readonly', True)]},
help="The email address of the organizer is likely to be put here, with the effect to be in the 'Reply-To' of the mails sent automatically at event or registrations confirmation. You can also put the email address of your mail gateway if you use one.")
address_id = fields.Many2one('res.partner', string='Location',
default=lambda self: self.env.user.company_id.partner_id,
address_id = fields.Many2one(
'res.partner', string='Location', default=lambda self: self.env.user.company_id.partner_id,
readonly=False, states={'done': [('readonly', True)]})
country_id = fields.Many2one('res.country', string='Country', related='address_id.country_id',
country_id = fields.Many2one(
'res.country', string='Country', related='address_id.country_id',
store=True, readonly=False, states={'done': [('readonly', True)]})
description = fields.Html(string='Description', oldname='note', translate=True,
description = fields.Html(
string='Description', oldname='note', translate=True,
readonly=False, states={'done': [('readonly', True)]})
company_id = fields.Many2one('res.company', string='Company', change_default=True,
default=lambda self: self.env['res.company']._company_default_get('event.event'),
required=False, readonly=False, states={'done': [('readonly', True)]})
organizer_id = fields.Many2one('res.partner', string='Organizer',
default=lambda self: self.env.user.company_id.partner_id)
is_subscribed = fields.Boolean(string='Subscribed',
compute='_compute_subscribe')
@api.one
def _compute_auto_confirm(self):
self.auto_confirm = self.env['ir.values'].get_default('marketing.config.settings', 'auto_confirmation')
@api.one
@api.depends('registration_ids')
def _count_registrations(self):
self.count_registrations = len(self.registration_ids)
@api.one
@api.depends('registration_ids.user_id', 'registration_ids.state')
def _compute_subscribe(self):
""" Determine whether the current user is already subscribed to any event in `self` """
user = self.env.user
self.is_subscribed = any(
reg.user_id == user and reg.state in ('open', 'done')
for reg in self.registration_ids
)
@api.multi
@api.depends('name', 'date_begin', 'date_end')
@@ -293,33 +300,31 @@ class event_registration(models.Model):
_inherit = ['mail.thread', 'ir.needaction_mixin']
_order = 'name, create_date desc'
origin = fields.Char(string='Source Document', readonly=True,
help="Reference of the sales order which created the registration")
nb_register = fields.Integer(string='Number of Participants', required=True, default=1,
origin = fields.Char(
string='Source Document', readonly=True,
help="Reference of the sales order which created the registration") # funny we refer sale orders... event is not sale related
nb_register = fields.Integer(
string='Number of Participants', required=True, default=1,
readonly=True, states={'draft': [('readonly', False)]})
event_id = fields.Many2one('event.event', string='Event', required=True,
event_id = fields.Many2one(
'event.event', string='Event', required=True,
readonly=True, states={'draft': [('readonly', False)]})
partner_id = fields.Many2one('res.partner', string='Partner',
partner_id = fields.Many2one(
'res.partner', string='Partner',
states={'done': [('readonly', True)]})
date_open = fields.Datetime(string='Registration Date', readonly=True)
date_closed = fields.Datetime(string='Attended Date', readonly=True)
reply_to = fields.Char(string='Reply-to Email', related='event_id.reply_to',
readonly=True)
log_ids = fields.One2many('mail.message', 'res_id', string='Logs',
domain=[('model', '=', _name)])
event_begin_date = fields.Datetime(string="Event Start Date", related='event_id.date_begin',
readonly=True)
event_end_date = fields.Datetime(string="Event End Date", related='event_id.date_end',
readonly=True)
reply_to = fields.Char(string='Reply-to Email', related='event_id.reply_to', readonly=True)
event_begin_date = fields.Datetime(string="Event Start Date", related='event_id.date_begin', readonly=True)
event_end_date = fields.Datetime(string="Event End Date", related='event_id.date_end', readonly=True)
user_id = fields.Many2one('res.users', string='User', states={'done': [('readonly', True)]})
company_id = fields.Many2one('res.company', string='Company', related='event_id.company_id',
store=True, readonly=True, states={'draft':[('readonly', False)]})
company_id = fields.Many2one(
'res.company', string='Company', related='event_id.company_id',
store=True, readonly=True, states={'draft': [('readonly', False)]})
state = fields.Selection([
('draft', 'Unconfirmed'),
('cancel', 'Cancelled'),
('open', 'Confirmed'),
('done', 'Attended'),
], string='Status', default='draft', readonly=True, copy=False)
('draft', 'Unconfirmed'), ('cancel', 'Cancelled'),
('open', 'Confirmed'), ('done', 'Attended')],
string='Status', default='draft', readonly=True, copy=False, track_visibility='onchange')
email = fields.Char(string='Email')
phone = fields.Char(string='Phone')
name = fields.Char(string='Name', select=True)
@@ -353,7 +358,6 @@ class event_registration(models.Model):
self.event_id.message_post(
body=_('New registration confirmed: %s.') % (self.name or ''),
subtype="event.mt_event_registration")
self.message_post(body=_('Event Registration confirmed.'))
self.state = 'open'
@api.one
@@ -383,14 +387,14 @@ class event_registration(models.Model):
else:
template = self.event_id.email_registration_id
if template:
mail_message = template.send_mail(self.id)
template.send_mail(self.id)
@api.one
def mail_user_confirm(self):
"""Send email to user when the event is confirmed """
template = self.event_id.email_confirmation_id
if template:
mail_message = template.send_mail(self.id)
template.send_mail(self.id)
@api.onchange('partner_id')
def _onchange_partner(self):
+37 -58
View File
@@ -2,24 +2,17 @@
<openerp>
<data>
<record id="act_event_list_register_event" model="ir.actions.act_window">
<field name="res_model">event.registration</field>
<field name="view_type">form</field>
<field name="name">Registrations</field>
<field name="view_mode">tree,form,calendar,graph</field>
<field name="context">{'search_default_event_id': active_id, 'default_event_id': active_id}</field>
</record>
<menuitem name="Events" parent="base.marketing_menu" id="event_main_menu" sequence="2"/>
<!-- Main menu items -->
<menuitem name="Events" id="event_main_menu" parent="base.marketing_menu" sequence="2"/>
<menuitem name="Events" id="event_configuration" parent="base.menu_marketing_config_root" sequence="1"/>
<!-- EVENTS -->
<!-- EVENTS/CONFIGURATION/TYPE OF EVENTS -->
<!-- EVENT.TYPE VIEWS -->
<record model="ir.ui.view" id="view_event_type_form">
<field name="name">Event type</field>
<field name="name">event.type.form</field>
<field name="model">event.type</field>
<field name="arch" type="xml">
<form string="Event Type">
<group col="4">
<group>
<field name="name"/>
<field name="default_reply_to"/>
<field name="default_registration_min"/>
@@ -32,7 +25,7 @@
</record>
<record model="ir.ui.view" id="view_event_type_tree">
<field name="name">Event type</field>
<field name="name">event.type.tree</field>
<field name="model">event.type</field>
<field name="arch" type="xml">
<tree string="Event Type">
@@ -46,12 +39,21 @@
<field name="res_model">event.type</field>
<field name="view_type">form</field>
</record>
<menuitem name="Events" id="event_configuration" parent="base.menu_marketing_config_root" sequence="1"/>
<menuitem name="Events Types" id="menu_event_type" action="action_event_type" parent="event.event_configuration" groups="base.group_no_one"/>
<!-- Events Organisation/CONFIGURATION/EVENTS -->
<!-- EVENT.REGISTRATION ACTIONS -->
<record id="act_event_registration_from_event" model="ir.actions.act_window">
<field name="res_model">event.registration</field>
<field name="view_type">form</field>
<field name="name">Registrations</field>
<field name="view_mode">tree,form,calendar,graph</field>
<field name="context">{'search_default_event_id': active_id, 'default_event_id': active_id}</field>
</record>
<!-- EVENT.EVENT VIEWS -->
<record model="ir.ui.view" id="view_event_form">
<field name="name">Events</field>
<field name="name">event.event.form</field>
<field name="model">event.event</field>
<field name="arch" type="xml">
<form string="Events">
@@ -68,7 +70,7 @@
<h1><field name="name"/></h1>
</div>
<div class="oe_right oe_button_box" groups="base.group_user">
<button name="%(event.act_event_list_register_event)d"
<button name="%(event.act_event_registration_from_event)d"
type="action"
class="oe_stat_button oe_inline"
icon="fa-github"
@@ -118,14 +120,13 @@
</field>
</record>
<!-- Event tree view -->
<record model="ir.ui.view" id="view_event_tree">
<field name="name">event.event.tree</field>
<field name="model">event.event</field>
<field name="arch" type="xml">
<tree string="Events" fonts="bold:message_unread==True" colors="red:(seats_min and seats_min&gt;seats_reserved) or (seats_max and seats_max&lt;seats_reserved);grey:state=='cancel'">
<field name="name" string="Name"/>
<field name="type" string="Event Category"/>
<field name="name"/>
<field name="type"/>
<field name="date_begin"/>
<field name="date_end"/>
<field name="seats_reserved"/>
@@ -138,7 +139,6 @@
</field>
</record>
<!-- Event Kanban View -->
<record model="ir.ui.view" id="view_event_kanban">
<field name="name">event.event.kanban</field>
<field name="model">event.event</field>
@@ -188,7 +188,7 @@
</small>
</div>
<h4>
<a name="%(act_event_list_register_event)d" type="action">
<a name="%(act_event_registration_from_event)d" type="action">
<t t-esc="record.seats_reserved.raw_value" > Attendees</t>
<t t-if="(record.seats_reserved.raw_value + record.seats_unconfirmed.raw_value) > 0 ">&#47;
<t t-esc="record.seats_reserved.raw_value + record.seats_unconfirmed.raw_value"/> Expected
@@ -207,8 +207,7 @@
</field>
</record>
<!-- Events Calendar View -->
<record id="view_event_calendar" model="ir.ui.view">
<record model="ir.ui.view" id="view_event_calendar">
<field name="name">event.event.calendar</field>
<field name="model">event.event</field>
<field eval="2" name="priority"/>
@@ -220,9 +219,8 @@
</field>
</record>
<!-- Event Search View -->
<record model="ir.ui.view" id="view_event_search">
<field name="name">Events</field>
<field name="name">event.event.search</field>
<field name="model">event.event</field>
<field name="arch" type="xml">
<search string="Events">
@@ -247,8 +245,6 @@
</field>
</record>
<!-- Events Organisation/CONFIGURATION/EVENTS -->
<record model="ir.actions.act_window" id="action_event_view">
<field name="name">Events</field>
<field name="type">ir.actions.act_window</field>
@@ -257,15 +253,13 @@
<field name="view_mode">kanban,calendar,tree,form</field>
<field name="context">{"search_default_upcoming":1}</field>
<field name="search_view_id" ref="view_event_search"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to add a new event.
</p><p>
Odoo helps you schedule and efficiently organize your events:
track subscriptions and participations, automate the confirmation emails,
sell tickets, etc.
</p>
</field>
<field name="help" type="html"><p class="oe_view_nocontent_create">
Click to add a new event.
</p><p>
Odoo helps you schedule and efficiently organize your events:
track subscriptions and participations, automate the confirmation emails,
sell tickets, etc.
</p></field>
</record>
<act_window
@@ -280,8 +274,6 @@
<menuitem name="Events" id="menu_event_event" action="action_event_view" parent="event.event_main_menu" />
<!-- EVENTS/REGISTRATIONS/EVENTS -->
<record model="ir.ui.view" id="view_event_registration_tree">
<field name="name">event.registration.tree</field>
<field name="model">event.registration</field>
@@ -326,22 +318,14 @@
<field name="partner_id" attrs="{'readonly':[('state','!=', 'draft')]}"/>
<field name="name"/>
<field name="phone"/>
<label for="email"/>
<div>
<field name="email" class="oe_inline"/>
<button class="oe_inline oe_right" string="Send Email"
name="%(mail.action_email_compose_message_wizard)d"
icon="terp-mail-message-new" context= '{"default_email_to":email}' type="action"/>
</div>
<field name="email"/>
</group>
<group>
<field name="create_date" groups="base.group_no_one"/>
<field name="date_closed" groups="base.group_no_one"/>
<field name="nb_register"/>
<field name="user_id" attrs="{'readonly':[('state','!=', 'draft')]}" context="{'default_groups_ref': ['base.group_user', 'base.group_partner_manager', 'event.group_event_user']}"/>
</group>
<group groups="base.group_no_one">
<field name="create_date"/>
<field name="date_closed"/>
</group>
</group>
</sheet>
<div class="oe_chatter">
@@ -352,7 +336,6 @@
</field>
</record>
<!-- Calendar view of event registration -->
<record id="view_event_registration_calendar" model="ir.ui.view">
<field name="name">event.registration.calendar</field>
<field name="model">event.registration</field>
@@ -366,7 +349,7 @@
</record>
<record model="ir.ui.view" id="view_event_registration_graph">
<field name="name">Registration Graph</field>
<field name="name">event.registration.graph</field>
<field name="model">event.registration</field>
<field name="arch" type="xml">
<graph string="Registration" type="bar">
@@ -376,10 +359,8 @@
</field>
</record>
<!-- Search view of event registration -->
<record model="ir.ui.view" id="view_registration_search">
<field name="name">Registrations</field>
<field name="name">event.registration.search</field>
<field name="model">event.registration</field>
<field name="arch" type="xml">
<search string="Event Registration">
@@ -419,7 +400,5 @@
id="menu_action_registration" parent="event.event_main_menu"
action="action_registration" groups="event.group_event_manager,event.group_event_user"/>
<menuitem name="Reporting" id="base.menu_report_association" parent="event_main_menu" sequence="20"/>
</data>
</openerp>
-30
View File
@@ -1,30 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from openerp import models, fields
class res_partner(models.Model):
_inherit = 'res.partner'
speaker = fields.Boolean(help="Check this box if this contact is a speaker.", string='Event Track Speaker')
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-19
View File
@@ -1,19 +0,0 @@
<?xml version="1.0"?>
<openerp>
<data>
<!-- Partners inherited form -->
<record id="view_event_partner_info_form" model="ir.ui.view">
<field name="name">res.partner.event.info.inherit</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<field name="supplier" position="after">
<field name="speaker"/>
<label for="speaker"/>
</field>
</field>
</record>
</data>
</openerp>
@@ -133,10 +133,6 @@ class event_track(osv.osv):
class event_event(osv.osv):
_inherit = "event.event"
def _list_tz(self,cr,uid, context=None):
# put POSIX 'Etc/*' entries at the end to avoid confusing users - see bug 1086728
return [(tz,tz) for tz in sorted(pytz.all_timezones, key=lambda tz: tz if not tz.startswith('Etc/') else '_')]
def _count_tracks(self, cr, uid, ids, field_name, arg, context=None):
return {
event.id: len(event.track_ids)
@@ -212,8 +208,3 @@ class event_sponsors(osv.osv):
'sequence': fields.related('sponsor_type_id', 'sequence', string='Sequence', store=True),
'image_medium': fields.related('partner_id', 'image_medium', string='Logo', type='binary')
}
def has_access_to_partner(self, cr, uid, ids, context=None):
partner_ids = [sponsor.partner_id.id for sponsor in self.browse(cr, uid, ids, context=context)]
return len(partner_ids) == self.pool.get("res.partner").search(cr, uid, [("id", "in", partner_ids)], count=True, context=context)