From 5edc07449d34b9d5b98700ea7a12c6381b046103 Mon Sep 17 00:00:00 2001 From: "Ujjvala Collins (OpenERP)" Date: Mon, 7 Mar 2011 19:12:15 +0530 Subject: [PATCH 01/65] [ADD] sync_google_calendar: Added a module to import events from google calendar. bzr revid: uco@tinyerp.com-20110307134215-f79hz1jgi3cre2cr --- .../wizard/google_login.py | 8 +- addons/sync_google_calendar/__init__.py | 25 +++ addons/sync_google_calendar/__openerp__.py | 38 +++++ .../sync_google_calendar/wizard/__init__.py | 24 +++ .../wizard/wizard_import_calendar_events.py | 155 ++++++++++++++++++ .../wizard_import_calendar_events_view.xml | 45 +++++ 6 files changed, 292 insertions(+), 3 deletions(-) create mode 100644 addons/sync_google_calendar/__init__.py create mode 100644 addons/sync_google_calendar/__openerp__.py create mode 100644 addons/sync_google_calendar/wizard/__init__.py create mode 100644 addons/sync_google_calendar/wizard/wizard_import_calendar_events.py create mode 100644 addons/sync_google_calendar/wizard/wizard_import_calendar_events_view.xml diff --git a/addons/google_base_account/wizard/google_login.py b/addons/google_base_account/wizard/google_login.py index d1ed3a1ed6d..21e5700e3d0 100644 --- a/addons/google_base_account/wizard/google_login.py +++ b/addons/google_base_account/wizard/google_login.py @@ -36,10 +36,12 @@ class google_login(osv.osv_memory): def google_login(self,cr,uid,user,password,type='',context=None): gd_client=False - if type=='group': - gd_client=gdata.contacts.client.ContactsClient(source='OpenERP') - if type=='contact' : + if type == 'group': + gd_client = gdata.contacts.client.ContactsClient(source='OpenERP') + if type == 'contact' : gd_client = gdata.contacts.service.ContactsService() + if type == 'calendar': + gd_client = gdata.calendar.service.CalendarService() try: gd_client.ClientLogin(user, password,gd_client.source) except Exception, e: diff --git a/addons/sync_google_calendar/__init__.py b/addons/sync_google_calendar/__init__.py new file mode 100644 index 00000000000..f8a7a810426 --- /dev/null +++ b/addons/sync_google_calendar/__init__.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2010 Tiny SPRL (). +# +# 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 . +# +############################################################################## + +import wizard + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: + diff --git a/addons/sync_google_calendar/__openerp__.py b/addons/sync_google_calendar/__openerp__.py new file mode 100644 index 00000000000..495695ee8b9 --- /dev/null +++ b/addons/sync_google_calendar/__openerp__.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2010 Tiny SPRL (). +# +# 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 . +# +############################################################################## + + +{ + 'name': 'Google Calendar', + 'version': '1.0', + 'category': 'Generic Modules/Others', + 'description': """The module adds google calendar events to meetings.""", + 'author': 'OpenERP SA', + 'website': 'http://www.openerp.com', + 'depends': ['base','google_base_account', 'crm'], + 'init_xml': [], + 'update_xml': ['wizard/wizard_import_calendar_events_view.xml'], + 'demo_xml': [], + 'installable': True, + 'active': False, + 'certificate': '', +} +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/sync_google_calendar/wizard/__init__.py b/addons/sync_google_calendar/wizard/__init__.py new file mode 100644 index 00000000000..a781e38c1af --- /dev/null +++ b/addons/sync_google_calendar/wizard/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2010 Tiny SPRL (). +# +# 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 . +# +############################################################################## + +import wizard_import_calendar_events + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/sync_google_calendar/wizard/wizard_import_calendar_events.py b/addons/sync_google_calendar/wizard/wizard_import_calendar_events.py new file mode 100644 index 00000000000..2866e84c890 --- /dev/null +++ b/addons/sync_google_calendar/wizard/wizard_import_calendar_events.py @@ -0,0 +1,155 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2010 Tiny SPRL (). +# +# 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 . +# +############################################################################## + +from osv import fields,osv +from tools.translate import _ +import tools + +import time +import datetime +import dateutil +from dateutil.tz import * +from dateutil.parser import * + +try: + import gdata + import gdata.calendar.service + import gdata.calendar +except ImportError: + raise osv.except_osv(_('Google Contacts Import Error!'), _('Please install gdata-python-client from http://code.google.com/p/gdata-python-client/downloads/list')) + +def _get_tinydates(self, stime, etime): + stime = dateutil.parser.parse(stime) + etime = dateutil.parser.parse(etime) + try: + au_dt = au_tz.normalize(stime.astimezone(au_tz)) + timestring = datetime.datetime(*au_dt.timetuple()[:6]).strftime('%Y-%m-%d %H:%M:%S') + au_dt = au_tz.normalize(etime.astimezone(au_tz)) + timestring_end = datetime.datetime(*au_dt.timetuple()[:6]).strftime('%Y-%m-%d %H:%M:%S') + except: + timestring = datetime.datetime(*stime.timetuple()[:6]).strftime('%Y-%m-%d %H:%M:%S') + timestring_end = datetime.datetime(*etime.timetuple()[:6]).strftime('%Y-%m-%d %H:%M:%S') + return (timestring, timestring_end) + +class google_login(osv.osv_memory): + _inherit = 'google.login' + _name = 'google.login' + + def _get_next_action(self, cr, uid, context=None): + data_obj = self.pool.get('ir.model.data') + data_id = data_obj._get_id(cr, uid, 'sync_google_calendar', 'view_synchronize_google_calendar_import_form') + view_id = False + if data_id: + view_id = data_obj.browse(cr, uid, data_id, context=context).res_id + value = { + 'name': _('Import Events'), + 'view_type': 'form', + 'view_mode': 'form,tree', + 'res_model': 'synchronize.google.calendar', + 'view_id': False, + 'context': context, + 'views': [(view_id, 'form')], + 'type': 'ir.actions.act_window', + 'target': 'new', + } + return value + +google_login() + +class synchronize_google_calendar_events(osv.osv_memory): + _name = 'synchronize.google.calendar' + + def _get_calendars(self, cr, uid, context=None): + user_obj = self.pool.get('res.users').browse(cr, uid, uid) + google = self.pool.get('google.login') + res = [] + gd_client = google.google_login(cr, uid, user_obj.gmail_user, user_obj.gmail_password, type='calendar') + calendars = gd_client.GetAllCalendarsFeed() + for cal in calendars.entry: + res.append((cal.id.text, cal.title.text)) + res.append(('all','All Calendars')) + return res + + _columns = { + 'calendar_name': fields.selection(_get_calendars, "Calendar Name", size=32), + } + + _defaults = { + 'calendar_name': 'all', + } + + def import_calendar_events(self, cr, uid, ids, context=None): + obj = self.browse(cr, uid, ids, context=context)[0] + if not ids: + return { 'type': 'ir.actions.act_window_close' } + + user_obj = self.pool.get('res.users').browse(cr, uid, uid) + meeting_obj = self.pool.get('crm.meeting') + model_obj = self.pool.get('ir.model.data') + gmail_user = user_obj.gmail_user + gamil_pwd = user_obj.gmail_password + + google = self.pool.get('google.login') + gd_client = google.google_login(cr, uid, gmail_user, gamil_pwd, type='calendar') + + if not gmail_user or not gamil_pwd: + raise osv.except_osv(_('Error'), _("Please specify the user and password !")) + + # TODO: Get events from selected calendar only. + event_feed = gd_client.GetCalendarEventFeed() + meeting_ids = [] + for feed in event_feed.entry: + google_id = feed.id.text + model_data = { + 'name': google_id, + 'model': 'crm.meeting', + 'module': 'sync_google_calendar', + } + vals = { + 'name': feed.title.text, + 'description': feed.summary + } + timestring, timestring_end = _get_tinydates(self, feed.when[0].start_time, feed.when[0].end_time) + vals.update({'date': timestring, 'date_deadline': timestring_end}) + data_ids = model_obj.search(cr, uid, [('model','=','crm.meeting'), ('name','=',google_id)]) + if data_ids: + meeting_ids.append(model_obj.browse(cr, uid, data_ids[0], context=context).res_id) + else: + res_id = meeting_obj.create(cr, uid, vals) + meeting_ids.append(res_id) + model_data.update({'res_id': res_id}) + model_obj.create(cr, uid, model_data, context=context) + + return { + 'name': _('Meetings'), + 'domain': "[('id','in', ["+','.join(map(str,meeting_ids))+"])]", + 'view_type': 'form', + 'view_mode': 'tree,form', + 'res_model': 'crm.meeting', + 'context': context, + 'views': [(False, 'tree'),(False, 'form')], + 'type': 'ir.actions.act_window', + } + +synchronize_google_calendar_events() + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: + diff --git a/addons/sync_google_calendar/wizard/wizard_import_calendar_events_view.xml b/addons/sync_google_calendar/wizard/wizard_import_calendar_events_view.xml new file mode 100644 index 00000000000..1b68b55fe90 --- /dev/null +++ b/addons/sync_google_calendar/wizard/wizard_import_calendar_events_view.xml @@ -0,0 +1,45 @@ + + + + + synchronize.google.calendar.form + synchronize.google.calendar + form + +
+ + + + + + + + + + +
+
+ +
+ +
+ + +
+
- - \ No newline at end of file +
+
+ + +
+

+ Choose dashboard layout +

+
    +
  • +
  • +
  • +
  • +
  • +
+
+
+ + + + + + + + From 6c57b9ddc165c97239bd37ce45338898e827e46e Mon Sep 17 00:00:00 2001 From: Launchpad Translations on behalf of openerp <> Date: Wed, 1 Jun 2011 04:38:09 +0000 Subject: [PATCH 62/65] Launchpad automatic translations update. bzr revid: launchpad_translations_on_behalf_of_openerp-20110601043809-ocpn3eaostvtf4mx --- addons/base_action_rule/i18n/tr.po | 535 +++++++++++++++++++++++++++++ 1 file changed, 535 insertions(+) create mode 100644 addons/base_action_rule/i18n/tr.po diff --git a/addons/base_action_rule/i18n/tr.po b/addons/base_action_rule/i18n/tr.po new file mode 100644 index 00000000000..c7120a9b549 --- /dev/null +++ b/addons/base_action_rule/i18n/tr.po @@ -0,0 +1,535 @@ +# Turkish translation for openobject-addons +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2011-01-11 11:14+0000\n" +"PO-Revision-Date: 2011-05-31 13:20+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Turkish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-06-01 04:38+0000\n" +"X-Generator: Launchpad (build 12959)\n" + +#. module: base_action_rule +#: help:base.action.rule,act_mail_to_user:0 +msgid "" +"Check this if you want the rule to send an email to the responsible person." +msgstr "" +"Sorumlu kişiye eposta gönderme kuralını kullanmak istiyorsanız bunu " +"işaretleyin." + +#. module: base_action_rule +#: field:base.action.rule,act_remind_partner:0 +msgid "Remind Partner" +msgstr "Paydaşa Anımsat" + +#. module: base_action_rule +#: field:base.action.rule,trg_partner_categ_id:0 +msgid "Partner Category" +msgstr "Paydaş Kategorisi" + +#. module: base_action_rule +#: field:base.action.rule,act_mail_to_watchers:0 +msgid "Mail to Watchers (CC)" +msgstr "İzleyicilere Postala (CC)" + +#. module: base_action_rule +#: field:base.action.rule,trg_state_to:0 +msgid "Button Pressed" +msgstr "Düğmeye Basıldı" + +#. module: base_action_rule +#: field:base.action.rule,model_id:0 +msgid "Object" +msgstr "Nesne" + +#. module: base_action_rule +#: field:base.action.rule,act_mail_to_email:0 +msgid "Mail to these Emails" +msgstr "Bu Epostalara yolla" + +#. module: base_action_rule +#: field:base.action.rule,act_state:0 +msgid "Set State to" +msgstr "Durumu şuna Ayarla" + +#. module: base_action_rule +#: field:base.action.rule,act_email_from:0 +msgid "Email From" +msgstr "Gelen Eposta" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Email Body" +msgstr "Eposta Gövdesi" + +#. module: base_action_rule +#: selection:base.action.rule,trg_date_range_type:0 +msgid "Days" +msgstr "Günler" + +#. module: base_action_rule +#: field:base.action.rule,last_run:0 +msgid "Last Run" +msgstr "Son Çalıştırma" + +#. module: base_action_rule +#: code:addons/base_action_rule/base_action_rule.py:313 +#, python-format +msgid "Error!" +msgstr "Hata!" + +#. module: base_action_rule +#: field:base.action.rule,act_reply_to:0 +msgid "Reply-To" +msgstr "Yanıtla" + +#. module: base_action_rule +#: help:base.action.rule,act_email_cc:0 +msgid "" +"These people will receive a copy of the future communication between partner " +"and users by email" +msgstr "" +"Bu kişiler paydaşla kullanıcılar arasındaki yapılacak iletişimin bir " +"kopyasını eposta yoluyla alacaklardır." + +#. module: base_action_rule +#: selection:base.action.rule,trg_date_range_type:0 +msgid "Minutes" +msgstr "Dakikalar" + +#. module: base_action_rule +#: field:base.action.rule,name:0 +msgid "Rule Name" +msgstr "Kural Adı" + +#. module: base_action_rule +#: help:base.action.rule,act_remind_partner:0 +msgid "" +"Check this if you want the rule to send a reminder by email to the partner." +msgstr "" +"Kuralın ortağa hatırlatma E-Postası göndermesini istiyorsanız bunu seçiniz." + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Conditions on Model Partner" +msgstr "Model Paydaş için Koşullar" + +#. module: base_action_rule +#: selection:base.action.rule,trg_date_type:0 +msgid "Deadline" +msgstr "Bitiş tarihi" + +#. module: base_action_rule +#: field:base.action.rule,trg_partner_id:0 +msgid "Partner" +msgstr "Paydaş" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "%(object_subject)s = Object subject" +msgstr "%(nesne_konu)lar = Nesne konu" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Email Reminders" +msgstr "Eposta Anımsatıcıları" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Special Keywords to Be Used in The Body" +msgstr "Gövdede Kullanılacak Özel Anahtar Kelimeler" + +#. module: base_action_rule +#: field:base.action.rule,trg_state_from:0 +msgid "State" +msgstr "Durum" + +#. module: base_action_rule +#: model:ir.actions.act_window,help:base_action_rule.base_action_rule_act +msgid "" +"Use automated actions to automatically trigger actions for various screens. " +"Example: a lead created by a specific user may be automatically set to a " +"specific sales team, or an opportunity which still has status pending after " +"14 days might trigger an automatic reminder email." +msgstr "" +"Değişik ekranlar için kullanılacak otomatik tetikleme eylemleri için " +"otomatize eylemleri kullan. Örnek: belirli bir kullanıcı tarafından " +"oluşturulan paydaş otomatik olarak bir satış takımına atanabilir ya da halen " +"14 günlük bekleme durumunda olan bir fırsat otomatik anımsatma epostası ile " +"tetiklenebilir." + +#. module: base_action_rule +#: help:base.action.rule,act_mail_to_email:0 +msgid "Email-id of the persons whom mail is to be sent" +msgstr "Eposta gönderilecek kişinin Eposta kimliği" + +#. module: base_action_rule +#: view:base.action.rule:0 +#: model:ir.module.module,shortdesc:base_action_rule.module_meta_information +msgid "Action Rule" +msgstr "Eylem Kuralı" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Fields to Change" +msgstr "Değiştirilecek Alanlar" + +#. module: base_action_rule +#: selection:base.action.rule,trg_date_type:0 +msgid "Creation Date" +msgstr "Oluşturulma Tarihi" + +#. module: base_action_rule +#: selection:base.action.rule,trg_date_type:0 +msgid "Last Action Date" +msgstr "Son Eylem Tarihi" + +#. module: base_action_rule +#: selection:base.action.rule,trg_date_range_type:0 +msgid "Hours" +msgstr "Saatler" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "%(object_id)s = Object ID" +msgstr "%(nesne_no)s = Nesne NO" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Delay After Trigger Date" +msgstr "Tetikleme Tarihi sonrası Gecikme" + +#. module: base_action_rule +#: field:base.action.rule,act_remind_attach:0 +msgid "Remind with Attachment" +msgstr "Ek ile Anımsat" + +#. module: base_action_rule +#: constraint:ir.cron:0 +msgid "Invalid arguments" +msgstr "Geçersiz parametreler" + +#. module: base_action_rule +#: field:base.action.rule,act_user_id:0 +msgid "Set Responsible to" +msgstr "Sorumluyu şuna Ayarla" + +#. module: base_action_rule +#: selection:base.action.rule,trg_date_type:0 +msgid "None" +msgstr "Hiçbiri" + +#. module: base_action_rule +#: help:base.action.rule,act_email_to:0 +msgid "" +"Use a python expression to specify the right field on which one than we will " +"use for the 'To' field of the header" +msgstr "" +"Başlıkta 'Kime' için kullanılacak doğru alanı belirlemek için bir python " +"ifadesi kullanın" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "%(object_user_phone)s = Responsible phone" +msgstr "%(nesne_kullanıcı_telefon)lar = Sorumlu telefonu" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "" +"The rule uses the AND operator. The model must match all non-empty fields so " +"that the rule executes the action described in the 'Actions' tab." +msgstr "" +"Bu kural VE operatörünü kullanır. Model tüm boş olmayan alanlara uymalıdır " +"ki; kural 'Eylemler' sekmesinde belirtilen eylemi uygulasın." + +#. module: base_action_rule +#: field:base.action.rule,trg_date_range_type:0 +msgid "Delay type" +msgstr "Gecikme türü" + +#. module: base_action_rule +#: help:base.action.rule,regex_name:0 +msgid "" +"Regular expression for matching name of the resource\n" +"e.g.: 'urgent.*' will search for records having name starting with the " +"string 'urgent'\n" +"Note: This is case sensitive search." +msgstr "" +"Kaynak adına uygun kural ifadesi\n" +"ör.: 'acil.*' 'acil' dizesi ile başlayan bütün kayıtları arıyacaktır\n" +"Not: Harf durumu duyarlı bir aramadır." + +#. module: base_action_rule +#: field:base.action.rule,act_method:0 +msgid "Call Object Method" +msgstr "Nesne Arama Yöntemi" + +#. module: base_action_rule +#: field:base.action.rule,act_email_to:0 +msgid "Email To" +msgstr "Şuna Eposta Gönder" + +#. module: base_action_rule +#: help:base.action.rule,act_mail_to_watchers:0 +msgid "" +"Check this if you want the rule to mark CC(mail to any other person defined " +"in actions)." +msgstr "" +"Kuralın CC yi işaretlemesini isterseniz bunu işaretleyin (eylemlerde " +"tanımlanan herhangi bir kişiye postalama)" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "%(partner)s = Partner name" +msgstr "%(paydaş)lar = Paydaş Adı" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Note" +msgstr "Not" + +#. module: base_action_rule +#: help:base.action.rule,act_email_from:0 +msgid "" +"Use a python expression to specify the right field on which one than we will " +"use for the 'From' field of the header" +msgstr "" +"Başlıkta 'Kime' için kullanılacak doğru alanı belirlemek için bir python " +"ifadesi kullanın" + +#. module: base_action_rule +#: field:base.action.rule,trg_date_range:0 +msgid "Delay after trigger date" +msgstr "Tetikleme Tarihi sonrası Gecikme" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Conditions" +msgstr "Koşullar" + +#. module: base_action_rule +#: help:base.action.rule,trg_date_range:0 +msgid "" +"Delay After Trigger Date,specifies you can put a negative number. If you " +"need a delay before the trigger date, like sending a reminder 15 minutes " +"before a meeting." +msgstr "" +"Tetikleme Sonrası Gecikme, burada negatif sayı kullanabilirsiniz. Eğer " +"tetikleme tarihinden önce, örneğin toplantıdan 15 dakika önce anımsatma " +"gönder gibi, bir gecikmeye gerek duyarsanız." + +#. module: base_action_rule +#: field:base.action.rule,active:0 +msgid "Active" +msgstr "Etkin" + +#. module: base_action_rule +#: code:addons/base_action_rule/base_action_rule.py:314 +#, python-format +msgid "No E-Mail ID Found for your Company address!" +msgstr "Firma adresinizde bir Eposta Kimliği yok!" + +#. module: base_action_rule +#: field:base.action.rule,act_remind_user:0 +msgid "Remind Responsible" +msgstr "Sorumluya Hatırlat" + +#. module: base_action_rule +#: model:ir.module.module,description:base_action_rule.module_meta_information +msgid "This module allows to implement action rules for any object." +msgstr "" +"Bu modül herhangi bir nesne için eylem kurallaru uygulamanızı sağlar." + +#. module: base_action_rule +#: help:base.action.rule,sequence:0 +msgid "Gives the sequence order when displaying a list of rules." +msgstr "Kural listesini görüntülerken diziliş sırasını verir." + +#. module: base_action_rule +#: selection:base.action.rule,trg_date_range_type:0 +msgid "Months" +msgstr "Aylar" + +#. module: base_action_rule +#: field:base.action.rule,filter_id:0 +msgid "Filter" +msgstr "Süzgeç" + +#. module: base_action_rule +#: selection:base.action.rule,trg_date_type:0 +msgid "Date" +msgstr "Tarih" + +#. module: base_action_rule +#: help:base.action.rule,server_action_id:0 +msgid "" +"Describes the action name.\n" +"eg:on which object which action to be taken on basis of which condition" +msgstr "" +"Eylem adını belirtir.\n" +"ör:koşula uygun olarak hangi nesne için hangi eylem ele alınır" + +#. module: base_action_rule +#: model:ir.model,name:base_action_rule.model_ir_cron +msgid "ir.cron" +msgstr "ir.cron" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "%(object_description)s = Object description" +msgstr "%(nesne_tanım)lar = Nesne açıklama" + +#. module: base_action_rule +#: constraint:base.action.rule:0 +msgid "Error: The mail is not well formated" +msgstr "Hata: Mail düzgün bir formatta değil" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Email Actions" +msgstr "Epsota Eylemleri" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Email Information" +msgstr "Eposta Bilgisi" + +#. module: base_action_rule +#: model:ir.model,name:base_action_rule.model_base_action_rule +msgid "Action Rules" +msgstr "Eylem Kuralları" + +#. module: base_action_rule +#: help:base.action.rule,act_mail_body:0 +msgid "Content of mail" +msgstr "Posta içeriği" + +#. module: base_action_rule +#: field:base.action.rule,trg_user_id:0 +msgid "Responsible" +msgstr "Sorumlu" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "%(partner_email)s = Partner Email" +msgstr "%(paydas_eposta)lar = Paydaş Eposta" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "%(object_date)s = Creation date" +msgstr "%(nesne_tarih)ler = Oluşturma tarihi" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "%(object_user_email)s = Responsible Email" +msgstr "%(nesne_kullanıcı_eposta)lar = Sorumlu Eposta" + +#. module: base_action_rule +#: field:base.action.rule,act_mail_body:0 +msgid "Mail body" +msgstr "Posta gövdesi" + +#. module: base_action_rule +#: help:base.action.rule,act_remind_user:0 +msgid "" +"Check this if you want the rule to send a reminder by email to the user." +msgstr "" +"Kullanıcıya eposta ile anımsatma gönderme kuralını kullanmak için bunu " +"işaretleyin." + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Server Action to be Triggered" +msgstr "Tetiklenecek Sunucu Eylemi" + +#. module: base_action_rule +#: field:base.action.rule,act_mail_to_user:0 +msgid "Mail to Responsible" +msgstr "Sorumluya Posta" + +#. module: base_action_rule +#: field:base.action.rule,act_email_cc:0 +msgid "Add Watchers (Cc)" +msgstr "İzleyici Ekle (Cc)" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Conditions on Model Fields" +msgstr "Model Alanları Koşulları" + +#. module: base_action_rule +#: model:ir.actions.act_window,name:base_action_rule.base_action_rule_act +#: model:ir.ui.menu,name:base_action_rule.menu_base_action_rule_form +msgid "Automated Actions" +msgstr "Otomatik Eylemler" + +#. module: base_action_rule +#: field:base.action.rule,server_action_id:0 +msgid "Server Action" +msgstr "Sunucu Eylemi" + +#. module: base_action_rule +#: field:base.action.rule,regex_name:0 +msgid "Regex on Resource Name" +msgstr "Kaynak Adı için Kurallı İfade" + +#. module: base_action_rule +#: help:base.action.rule,act_remind_attach:0 +msgid "" +"Check this if you want that all documents attached to the object be attached " +"to the reminder email sent." +msgstr "" +"Nesneye iliştirilmiş bütün belgelerin gönderilen anımsatma epostasına " +"eklenmesini isterseniz bunu işaretleyin." + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Conditions on Timing" +msgstr "Zamanlama Koşulları" + +#. module: base_action_rule +#: field:base.action.rule,sequence:0 +msgid "Sequence" +msgstr "Diziliş" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Actions" +msgstr "Eylemler" + +#. module: base_action_rule +#: help:base.action.rule,active:0 +msgid "" +"If the active field is set to False, it will allow you to hide the rule " +"without removing it." +msgstr "" +"Eğer etkin alanı Yanlış olarak işaretli ise, kuralı silmeden gizlemenizi " +"sağlar." + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "%(object_user)s = Responsible name" +msgstr "%(nesne_kullanıcı)lar = Sorumlu adı" + +#. module: base_action_rule +#: field:base.action.rule,create_date:0 +msgid "Create Date" +msgstr "Tarih Oluştur" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Conditions on States" +msgstr "Durum Koşulları" + +#. module: base_action_rule +#: field:base.action.rule,trg_date_type:0 +msgid "Trigger Date" +msgstr "Tetikleme Tarihi" From 6d1753a7342a6a64f1bac8340fae21530ed2d241 Mon Sep 17 00:00:00 2001 From: Vo Minh Thu Date: Wed, 1 Jun 2011 09:44:00 +0200 Subject: [PATCH 63/65] [FIX] tools/config: properly cast config file values. bzr revid: vmt@openerp.com-20110601074400-hv1jrgoqw2ji0yah --- openerp/tools/config.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/openerp/tools/config.py b/openerp/tools/config.py index 7a10a774cf8..65f6726febc 100644 --- a/openerp/tools/config.py +++ b/openerp/tools/config.py @@ -72,6 +72,9 @@ class configmanager(object): ['publisher_warranty_url', 'load_language', 'root_path', 'init', 'save', 'config', 'update']) + # dictionary mapping option destination (keys in self.options) to MyOptions. + self.casts = {} + self.misc = {} self.config_file = fname self.has_ssl = check_ssl() @@ -251,6 +254,7 @@ class configmanager(object): for group in parser.option_groups: for option in group.option_list: self.options[option.dest] = option.my_default + self.casts[option.dest] = option self.parse_config() @@ -314,8 +318,12 @@ class configmanager(object): ] for arg in keys: + # Copy the command-line argument... if getattr(opt, arg): self.options[arg] = getattr(opt, arg) + # ... or keep, but cast, the config file value. + elif isinstance(self.options[arg], basestring) and self.casts[arg].type in optparse.Option.TYPE_CHECKER: + self.options[arg] = optparse.Option.TYPE_CHECKER[self.casts[arg].type](self.casts[arg], arg, self.options[arg]) keys = [ 'language', 'translate_out', 'translate_in', 'overwrite_existing_translations', @@ -327,8 +335,12 @@ class configmanager(object): ] for arg in keys: + # Copy the command-line argument... if getattr(opt, arg) is not None: self.options[arg] = getattr(opt, arg) + # ... or keep, but cast, the config file value. + elif isinstance(self.options[arg], basestring) and self.casts[arg].type in optparse.Option.TYPE_CHECKER: + self.options[arg] = optparse.Option.TYPE_CHECKER[self.casts[arg].type](self.casts[arg], arg, self.options[arg]) if opt.assert_exit_level: self.options['assert_exit_level'] = self._LOGLEVELS[opt.assert_exit_level] From 26d85afab623f00481ed1f5181f78ee03b4eeed0 Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" Date: Wed, 1 Jun 2011 11:11:16 +0200 Subject: [PATCH 64/65] [IMP] account: added access rights for model_account_treasury_report bzr revid: qdp-launchpad@openerp.com-20110601091116-iysfehqoj7r2hlue --- addons/account/security/ir.model.access.csv | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/account/security/ir.model.access.csv b/addons/account/security/ir.model.access.csv index 1ab94806b63..50e8dced7e6 100644 --- a/addons/account/security/ir.model.access.csv +++ b/addons/account/security/ir.model.access.csv @@ -125,3 +125,5 @@ "access_account_invoice_tax_sale_manager","account.invoice.tax sale manager","model_account_invoice_tax","base.group_sale_salesman",1,0,0,0 "access_account_sequence_fiscal_year_sale_user","account.sequence.fiscalyear.sale.user","model_account_sequence_fiscalyear","base.group_sale_salesman",1,1,1,0 "access_account_sequence_fiscal_year_sale_manager","account.sequence.fiscalyear.sale.manager","model_account_sequence_fiscalyear","base.group_sale_manager",1,1,1,1 +"access_account_treasury_report_manager","account.treasury.report.manager","model_account_treasury_report","account.group_account_manager",1,0,0,0 + From 7d60eddba8f89c00c5f3cad205c478f84f72e769 Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" Date: Wed, 1 Jun 2011 12:20:21 +0200 Subject: [PATCH 65/65] [IMP] account, analytic accounting: added group by state on analytic accounts bzr revid: qdp-launchpad@openerp.com-20110601102021-pe3ixdhuwd410g0j --- addons/account/project/project_view.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/account/project/project_view.xml b/addons/account/project/project_view.xml index 1e3f4d5d373..e1f383f4792 100644 --- a/addons/account/project/project_view.xml +++ b/addons/account/project/project_view.xml @@ -17,6 +17,7 @@ +
@@ -44,6 +45,7 @@ +