[IMP]: base_calendar: Added new function for sending .ics files in email invitation
bzr revid: rpa@tinyerp.com-20100430115659-ygz1k792ipk80u30
This commit is contained in:
@@ -19,7 +19,7 @@
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from datetime import datetime, timedelta
|
||||
from datetime import datetime, timedelta, date
|
||||
from dateutil import parser
|
||||
from dateutil import rrule
|
||||
from osv import fields, osv
|
||||
@@ -36,7 +36,7 @@ months = {
|
||||
10: "October", 11: "November", 12: "December"
|
||||
}
|
||||
|
||||
def get_recurrent_dates(rrulestring, exdate, startdate=None):
|
||||
def get_recurrent_dates(rrulestring, exdate, startdate=None, exrule=None):
|
||||
"""
|
||||
Get recurrent dates based on Rule string considering exdate and start date
|
||||
@param rrulestring: Rulestring
|
||||
@@ -56,6 +56,8 @@ def get_recurrent_dates(rrulestring, exdate, startdate=None):
|
||||
for date in exdate:
|
||||
datetime_obj = todate(date)
|
||||
rset1._exdate.append(datetime_obj)
|
||||
if exrule:
|
||||
rset1.exrule(rrule.rrulestr(str(exrule), dtstart=startdate))
|
||||
re_dates = map(lambda x:x.strftime('%Y-%m-%d %H:%M:%S'), rset1._iter())
|
||||
return re_dates
|
||||
|
||||
@@ -426,6 +428,72 @@ property or property parameter."),
|
||||
self.write(cr, uid, ids, {'state': status})
|
||||
return True
|
||||
|
||||
def get_ics_file(self, cr, uid, event_obj, context=None):
|
||||
"""
|
||||
Returns iCalendar file for the event invitation
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param event_obj: Event object (browse record)
|
||||
@param context: A standard dictionary for contextual values
|
||||
@return: .ics file content
|
||||
"""
|
||||
res = None
|
||||
def ics_datetime(idate, short=False):
|
||||
if short:
|
||||
return date.fromtimestamp(time.mktime(time.strptime(idate, '%Y-%m-%d')))
|
||||
else:
|
||||
return datetime.strptime(idate, '%Y-%m-%d %H:%M:%S')
|
||||
try:
|
||||
import vobject
|
||||
except ImportError:
|
||||
return res
|
||||
cal = vobject.iCalendar()
|
||||
event = cal.add('vevent')
|
||||
event.add('created').value = ics_datetime(time.strftime('%Y-%m-%d %H:%M:%S'))
|
||||
event.add('dtstart').value = ics_datetime(event_obj.date)
|
||||
event.add('dtend').value = ics_datetime(event_obj.date_deadline)
|
||||
event.add('summary').value = event_obj.name
|
||||
if event_obj.description:
|
||||
event.add('description').value = event_obj.description
|
||||
if event_obj.location:
|
||||
event.add('location').value = event_obj.location
|
||||
if event_obj.rrule:
|
||||
event.add('rrule').value = event_obj.rrule
|
||||
|
||||
if event_obj.alarm_id:
|
||||
# computes alarm data
|
||||
valarm = event.add('valarm')
|
||||
alarm_object = self.pool.get('res.alarm')
|
||||
alarm_data = alarm_object.read(cr, uid, event_obj.alarm_id.id, context=context)
|
||||
# Compute trigger data
|
||||
interval = alarm_data['trigger_interval']
|
||||
occurs = alarm_data['trigger_occurs']
|
||||
duration = (occurs == 'after' and alarm_data['trigger_duration']) \
|
||||
or -(alarm_data['trigger_duration'])
|
||||
related = alarm_data['trigger_related']
|
||||
trigger = valarm.add('TRIGGER')
|
||||
trigger.params['related'] = [related.upper()]
|
||||
if interval == 'days':
|
||||
delta = timedelta(days=duration)
|
||||
if interval == 'hours':
|
||||
delta = timedelta(hours=duration)
|
||||
if interval == 'minutes':
|
||||
delta = timedelta(minutes=duration)
|
||||
trigger.value = delta
|
||||
|
||||
# Compute other details
|
||||
valarm.add('DESCRIPTION').value = alarm_data['name'] or 'OpenERP'
|
||||
|
||||
for attendee in event_obj.attendee_ids:
|
||||
attendee_add = event.add('attendee')
|
||||
attendee_add.params['CUTYPE'] = [str(attendee.cutype)]
|
||||
attendee_add.params['ROLE'] = [str(attendee.role)]
|
||||
attendee_add.params['RSVP'] = [str(attendee.rsvp)]
|
||||
attendee_add.value = 'MAILTO:' + attendee.email
|
||||
res = cal.serialize()
|
||||
return res
|
||||
|
||||
def _send_mail(self, cr, uid, ids, mail_to, email_from=tools.config.get('email_from', False), context={}):
|
||||
"""
|
||||
Send mail for calendar attendee.
|
||||
@@ -443,7 +511,7 @@ property or property parameter."),
|
||||
res_obj = att.ref
|
||||
sub = '[%s Invitation][%d] %s' % (company, att.id, res_obj.name)
|
||||
att_infos = []
|
||||
other_invitaion_ids = self.search(cr, uid, [('ref', '=', att.ref._name + ',' + str(att.ref.id))])
|
||||
other_invitaion_ids = self.search(cr, uid, [('ref', '=', res_obj._name + ',' + str(res_obj.id))])
|
||||
for att2 in self.browse(cr, uid, other_invitaion_ids):
|
||||
att_infos.append(((att2.user_id and att2.user_id.name) or \
|
||||
(att2.partner_id and att2.partner_id.name) or \
|
||||
@@ -459,12 +527,14 @@ property or property parameter."),
|
||||
'company': company
|
||||
}
|
||||
body = html_invitation % body_vals
|
||||
attach = self.get_ics_file(cr, uid, res_obj, context=context)
|
||||
if mail_to and email_from:
|
||||
tools.email_send(
|
||||
email_from,
|
||||
mail_to,
|
||||
sub,
|
||||
body,
|
||||
attach=attach and [('invitation.ics', attach)] or None,
|
||||
subtype='html',
|
||||
reply_to=email_from
|
||||
)
|
||||
|
||||
@@ -39,15 +39,28 @@ class thunderbird_installer(osv.osv_memory):
|
||||
self.write(cr, uid, ids, data)
|
||||
return False
|
||||
|
||||
def process_pdf_file(self, cr, uid, ids, context):
|
||||
"""
|
||||
Default Attach Thunderbird Plug-in Installation File.
|
||||
"""
|
||||
data = {}
|
||||
pdf_file = open(config['addons_path'] + "/thunderbird/doc/Installation Guide to OpenERP Thunderbid Plug-in.pdf", 'r')
|
||||
data['pdf_file'] = base64.encodestring(pdf_file.read())
|
||||
self.write(cr, uid, ids, data)
|
||||
return False
|
||||
|
||||
_columns = {
|
||||
'name':fields.char('File name', size=34, required=True, help='Save Thunderbird plugin file.'),
|
||||
'name':fields.char('File name', size=34),
|
||||
'pdf_name':fields.char('File name', size=64),
|
||||
'thunderbird':fields.boolean('Thunderbird Module ', help="Allows you to select an object that you’d like to add to your email and its attachments."),
|
||||
'plugin_file':fields.binary('Thunderbird Plug-in', readonly=True, help="Thunderbird plug-in file. Save as this file and install this plug-in in thunderbir."),
|
||||
|
||||
'pdf_file':fields.binary('Thunderbird Plug-in Installation File', help="The documentation file :- how to install Thunderbird Plug-in.", readonly=True),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'thunderbird' : True,
|
||||
'name' : 'tiny_plugin-2.0.xpi',
|
||||
'pdf_name' : 'Installation Guide to OpenERP Thunderbid Plug-in.pdf',
|
||||
}
|
||||
|
||||
thunderbird_installer()
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2009 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 osv import fields
|
||||
from osv import osv
|
||||
from tools import config
|
||||
|
||||
import base64
|
||||
|
||||
class thunderbird_installer(osv.osv_memory):
|
||||
_name = 'thunderbird.installer'
|
||||
_inherit = 'res.config.installer'
|
||||
|
||||
def process_plugin(self, cr, uid, ids, context):
|
||||
"""
|
||||
Default Attach Thunderbird Plug-in File.
|
||||
"""
|
||||
data = {}
|
||||
file = open(config['addons_path'] + "/thunderbird/plugin/tiny_plugin-2.0.xpi", 'r')
|
||||
data['plugin_file'] = base64.encodestring(file.read())
|
||||
self.write(cr, uid, ids, data)
|
||||
return False
|
||||
|
||||
_columns = {
|
||||
'name':fields.char('File name', size=34, required=True, help='Save Thunderbird plugin file.'),
|
||||
'thunderbird':fields.boolean('Thunderbird Module ', help="Allows you to select an object that you’d like to add to your email and its attachments."),
|
||||
'plugin_file':fields.binary('Thunderbird Plug-in', readonly=True, help="Thunderbird plug-in file. Save as this file and install this plug-in in thunderbir."),
|
||||
|
||||
}
|
||||
_defaults = {
|
||||
'thunderbird' : True,
|
||||
'name' : 'tiny_plugin-2.0.xpi',
|
||||
}
|
||||
|
||||
thunderbird_installer()
|
||||
@@ -92,9 +92,12 @@ class tinythunderbird_partner(osv.osv):
|
||||
partner=add_obj.read(cr,user,partner_ids,['partner_id'])
|
||||
if partner:
|
||||
dictcreate.update({'partner_id':partner[0]['partner_id'][0]})
|
||||
<<<<<<< TREE
|
||||
# search_id = self.pool.get('res.request.link').search(cr,user,[('object','=',dictcreate['ref'].split(',')[0])])
|
||||
# if not search_id:
|
||||
# create_link_id = self.pool.get('res.request.link').create(cr,user,{'name':dictcreate['ref'].split(',')[0],'object':dictcreate['ref'].split(',')[0]})
|
||||
=======
|
||||
>>>>>>> MERGE-SOURCE
|
||||
create_id = self.pool.get(dictcreate.get('object','crm.case')).create(cr, user, dictcreate)
|
||||
cases=case_pool.browse(cr,user,[create_id])
|
||||
case_pool._history(cr, user, cases, _('Archive'), history=True, email=False)
|
||||
|
||||
Binary file not shown.
@@ -21,11 +21,15 @@
|
||||
<separator string="Thunderbird" colspan="4"/>
|
||||
<field name="thunderbird"/>
|
||||
<field name="name" invisible="1"/>
|
||||
<field name="pdf_name" invisible="1"/>
|
||||
<newline/>
|
||||
|
||||
<field name="plugin_file"/>
|
||||
<field name="plugin_file" filename="name"/>
|
||||
<button name="process_plugin" icon="gtk-execute" string="Get Plugin File" type="object"/>
|
||||
<newline/>
|
||||
<field name="pdf_file" filename="pdf_name"/>
|
||||
<button name="process_pdf_file" icon="gtk-execute" string="Get Plugin Installation File" type="object"/>
|
||||
<newline/>
|
||||
<separator string="Thunderbird plugin installation note." colspan="4"/>
|
||||
<label colspan="8" string="Save The thunderbird plugin Follow the following step to install thunderbird plugin ? 1. From Menu Bar, Open Tools > Add ons. 2. Now click on install button and a browser window will appear. 3. Just select the (.xpi) file from thunderbird/plugin directory and click ok, a new software installation window will appear and within a short time Install Now button will be enabled. 4. Click on Install Now and restart Thunderbird. 5. Now Thunderbird plugin is installed."/>
|
||||
</group>
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="view_thunderbird_installer" model="ir.ui.view">
|
||||
<field name="name">thunderbird.installer.view</field>
|
||||
<field name="model">thunderbird.installer</field>
|
||||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="base.res_config_installer"/>
|
||||
<field name="arch" type="xml">
|
||||
<data>
|
||||
<form position="attributes">
|
||||
<attribute name="string">Thunderbird Module Installation</attribute>
|
||||
</form>
|
||||
<separator string="title" position="attributes">
|
||||
<attribute name="string">Configure Thunderbird Module</attribute>
|
||||
</separator>
|
||||
<xpath expr="//label[@string='description']" position="attributes">
|
||||
<attribute name="string">This module is required for the thuderbird plug-in to work properly.This allows you to select an object that you had like to add to your email and its attachments. You can select a partner, a task, a project, an analytical account, or any other object and attach selected mail as .eml file in attachment of selected record.</attribute>
|
||||
</xpath>
|
||||
<group colspan="8">
|
||||
<separator string="Thunderbird" colspan="4"/>
|
||||
<field name="thunderbird"/>
|
||||
<field name="name" invisible="1"/>
|
||||
<newline/>
|
||||
|
||||
<field name="plugin_file"/>
|
||||
<button name="process_plugin" icon="gtk-execute" string="Get Plugin File" type="object"/>
|
||||
<newline/>
|
||||
<separator string="Thunderbird plugin installation note." colspan="4"/>
|
||||
<label colspan="8" string="Save The thunderbird plugin Follow the following step to install thunderbird plugin ? 1. From Menu Bar, Open Tools > Add ons. 2. Now click on install button and a browser window will appear. 3. Just select the (.xpi) file from thunderbird/plugin directory and click ok, a new software installation window will appear and within a short time Install Now button will be enabled. 4. Click on Install Now and restart Thunderbird. 5. Now Thunderbird plugin is installed."/>
|
||||
</group>
|
||||
</data>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_thunderbird_installer" model="ir.actions.act_window">
|
||||
<field name="name">Thunderbird Module Installation</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">thunderbird.installer</field>
|
||||
<field name="view_id" ref="view_thunderbird_installer"/>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
|
||||
<record id="thunderbird_installer_todo" model="ir.actions.todo">
|
||||
<field name="action_id" ref="action_thunderbird_installer"/>
|
||||
<field name="sequence">3</field>
|
||||
</record>
|
||||
|
||||
<!-- Configuration wizard. -->
|
||||
|
||||
<record id="view_thunderbird_wizard" model="ir.ui.view">
|
||||
<field name="name">thunderbird.wizard</field>
|
||||
<field name="model">thunderbird.installer</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string= "Thunderbird Installation">
|
||||
<group colspan="4">
|
||||
<separator string="Configure Thunderbird Module" colspan="4"/>
|
||||
<group colspan="4" col="10">
|
||||
<group colspan="2">
|
||||
<image name="gtk-dialog-info"/>
|
||||
<newline/>
|
||||
<label align="0.0" string="This module is required for the thuderbird plug-in to work properly.This allows you to select an object that you had like to add to your email and its attachments. You can select a partner, a task, a project, an analytical account, or any other object and attach selected mail as .eml file in attachment of selected record." width="200"/>
|
||||
</group>
|
||||
<group colspan="8">
|
||||
<separator string="Thunderbird" colspan="4"/>
|
||||
<field name="thunderbird"/>
|
||||
<field name="name" invisible="1"/>
|
||||
<newline/>
|
||||
<field name="plugin_file"/>
|
||||
<button name="process_plugin" icon="gtk-execute" string="Get Plugin File" type="object"/>
|
||||
<newline/>
|
||||
<separator string="Thunderbird plugin installation note." colspan="4"/>
|
||||
<label colspan="8" string="Save The thunderbird plugin Follow the following step to install thunderbird plugin ? 1. From Menu Bar, Open Tools > Add ons. 2. Now click on install button and a browser window will appear. 3. Just select the (.xpi) file from thunderbird/plugin directory and click ok, a new software installation window will appear and within a short time Install Now button will be enabled. 4. Click on Install Now and restart Thunderbird. 5. Now Thunderbird plugin is installed."/>
|
||||
</group>
|
||||
</group>
|
||||
</group>
|
||||
<separator string="" colspan="4"/>
|
||||
<group colspan="4">
|
||||
<label align="0.0" string="" colspan="3"/>
|
||||
<button colspan="1" icon="gtk-cancel" special="cancel" string="Cancel"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_thunderbird_wizard" model="ir.actions.act_window">
|
||||
<field name="name">Thunderbird Module Installation</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">thunderbird.installer</field>
|
||||
<field name="view_id" ref="view_thunderbird_wizard"/>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
|
||||
<menuitem id="menu_base_config_plugins" name="Plugins" parent="base.menu_base_config" sequence="10" />
|
||||
<menuitem id="menu_base_config_plugins_thunderbird" action="action_thunderbird_wizard" name="Thunderbird" parent="menu_base_config_plugins" sequence="10" />
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
Reference in New Issue
Block a user