diff options
| author | rpa (Open ERP) <rpa@tinyerp.com> | 2010-04-30 17:26:59 +0530 |
|---|---|---|
| committer | rpa (Open ERP) <rpa@tinyerp.com> | 2010-04-30 17:26:59 +0530 |
| commit | f8b980e83a4df040ae7e5552e9ea50befc543bac (patch) | |
| tree | 7ad7c33b0f901b8e1969df7f6ade8a8f7ac3e887 | |
| parent | 6886efda6f6c25b5b9d5baacbe1bbd9e8e59dbe3 (diff) | |
| parent | b49cc61fb780bc16994eb4f2490e547b63674d10 (diff) | |
[IMP]: base_calendar: Added new function for sending .ics files in email invitation
bzr revid: rpa@tinyerp.com-20100430115659-ygz1k792ipk80u30
| -rw-r--r-- | addons/base_calendar/base_calendar.py | 76 | ||||
| -rw-r--r-- | addons/thunderbird/installer.py | 17 | ||||
| -rw-r--r-- | addons/thunderbird/installer.py.moved | 53 | ||||
| -rw-r--r-- | addons/thunderbird/partner/partner.py | 3 | ||||
| -rw-r--r-- | addons/thunderbird/plugin/tiny_plugin-2.0.xpi | bin | 67358 -> 0 bytes | |||
| -rw-r--r-- | addons/thunderbird/thunderbird_installer.xml | 6 | ||||
| -rw-r--r-- | addons/thunderbird/thunderbird_installer.xml.moved | 103 |
7 files changed, 252 insertions, 6 deletions
diff --git a/addons/base_calendar/base_calendar.py b/addons/base_calendar/base_calendar.py index f4de02f7025..c216efa9f0e 100644 --- a/addons/base_calendar/base_calendar.py +++ b/addons/base_calendar/base_calendar.py @@ -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 ) diff --git a/addons/thunderbird/installer.py b/addons/thunderbird/installer.py index 69576aa2a46..4e0f4435d31 100644 --- a/addons/thunderbird/installer.py +++ b/addons/thunderbird/installer.py @@ -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() diff --git a/addons/thunderbird/installer.py.moved b/addons/thunderbird/installer.py.moved new file mode 100644 index 00000000000..69576aa2a46 --- /dev/null +++ b/addons/thunderbird/installer.py.moved @@ -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() diff --git a/addons/thunderbird/partner/partner.py b/addons/thunderbird/partner/partner.py index 3aa190090a4..de5b5b9174c 100644 --- a/addons/thunderbird/partner/partner.py +++ b/addons/thunderbird/partner/partner.py @@ -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)
diff --git a/addons/thunderbird/plugin/tiny_plugin-2.0.xpi b/addons/thunderbird/plugin/tiny_plugin-2.0.xpi Binary files differdeleted file mode 100644 index ad92876d570..00000000000 --- a/addons/thunderbird/plugin/tiny_plugin-2.0.xpi +++ /dev/null diff --git a/addons/thunderbird/thunderbird_installer.xml b/addons/thunderbird/thunderbird_installer.xml index bd19a780456..59e0cc4f604 100644 --- a/addons/thunderbird/thunderbird_installer.xml +++ b/addons/thunderbird/thunderbird_installer.xml @@ -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> diff --git a/addons/thunderbird/thunderbird_installer.xml.moved b/addons/thunderbird/thunderbird_installer.xml.moved new file mode 100644 index 00000000000..bd19a780456 --- /dev/null +++ b/addons/thunderbird/thunderbird_installer.xml.moved @@ -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> |
