Add used modules for Groupe URD production server

This commit is contained in:
Olivier Sarrat 2017-01-16 15:04:22 +01:00
parent f7a72d29c8
commit cecff5bca1
230 changed files with 17347 additions and 0 deletions

2
calendar_ics/__init__.py Normal file
View File

@ -0,0 +1,2 @@
import calendar
import res_partner

BIN
calendar_ics/__init__.pyc Normal file

Binary file not shown.

View File

@ -0,0 +1,43 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution, third party addon
# Copyright (C) 2004-2016 Vertel AB (<http://vertel.se>).
#
# 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': 'Calendar ics-urls',
'version': '0.1',
'category': 'Tools',
'summary': 'Subscription on calendar.ics-urls',
'licence': 'AGPL-3',
'description': """
Adds and updates calendar objects according to an ics-url
""",
'author': 'Vertel AB',
'website': 'http://www.vertel.se',
'depends': ['calendar',],
'data': [ 'res_partner_view.xml',
#'security/ir.model.access.csv',
'res_partner_data.xml'
],
'application': False,
'installable': True,
'demo': ['calendar_ics_demo.xml',],
}
# vim:expandtab:smartindent:tabstop=4s:softtabstop=4:shiftwidth=4:

312
calendar_ics/calendar.py Normal file
View File

@ -0,0 +1,312 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution, third party addon
# Copyright (C) 2004-2016 Vertel AB (<http://vertel.se>).
#
# 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, api, _
from pytz import timezone
from openerp.exceptions import except_orm, Warning, RedirectWarning
from datetime import datetime, timedelta, time
from time import strptime, mktime, strftime
from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
import re
from openerp import http
from openerp.http import request
import logging
_logger = logging.getLogger(__name__)
try:
from icalendar import Calendar, Event, vDatetime, FreeBusy
except ImportError:
raise Warning('icalendar library missing, pip install icalendar')
try:
import urllib2
except ImportError:
raise Warning('urllib2 library missing, pip install urllib2')
# calendar_ics -> res.partner
# http://ical.oops.se/holidays/Sweden/-1,+1
# http://www.skatteverketkalender.se/skvcal-manadsmoms-maxfyrtiomiljoner-ingenperiodisk-ingenrotrut-verk1.ics
class calendar_event(models.Model):
_inherit = 'calendar.event'
ics_subscription = fields.Boolean(default=False) # partner_ids + ics_subscription -> its ok to delete
@api.multi
def set_ics_event(self, ics_file, partner):
for event in Calendar.from_ical(ics_file).walk('vevent'):
#~ if not event.get('uid'):
#~ event.add('uid',reduce(lambda x,y: x ^ y, map(ord, str(event.get('dtstart') and event.get('dtstart').dt or '' + event.get('summary') + event.get('dtend') and event.get('dtend').dt or ''))) % 1024)
summary = ''
description = unicode(event.get('description', ''))
if unicode(event.get('summary')) and len(unicode(event.get('summary'))) < 35:
summary = unicode(event.get('summary'))
elif len(unicode(event.get('summary'))) >= 35:
summary = unicode(event.get('summary'))[:35]
if not event.get('description'):
description = unicode(event.get('summary'))
record = {r[1]:r[2] for r in [ ('dtstart','start_date',event.get('dtstart') and event.get('dtstart').dt.strftime(DEFAULT_SERVER_DATETIME_FORMAT)),
('dtend','stop_date',event.get('dtend') and event.get('dtend').dt.strftime(DEFAULT_SERVER_DATETIME_FORMAT)),
#~ ('dtstamp','start_datetime',event.get('dtstamp') and event.get('dtstamp').dt.strftime(DEFAULT_SERVER_DATETIME_FORMAT)),
#~ ('description','description',description),
('duration','duration',event.get('duration')),
('location','location',event.get('location') and unicode(event.get('location')) or partner.ics_location),
('class','class',event.get('class') and str(event.get('class')) or partner.ics_class),
('summary','name',summary),
('rrule', 'rrule',event.get('rrule') and event.get('rrule').to_ical() or None),
] if event.get(r[0])}
partner_ids = self.env['res.partner'].get_attendee_ids(event)
#~ raise Warning(partner_ids)
if partner_ids:
partner_ids.append(partner.id)
else:
partner_ids = [partner.id]
record['partner_ids'] = [(6,0,[partner_ids])]
#~ record['partner_ids'] = [(6,0,self.env['res.partner'].get_attendee_ids(event)[0] and self.env['res.partner'].get_attendee_ids(event)[0].append(partner.id) or [partner.id])]
#~ raise Warning(record['partner_ids'])
#~ record['attendee_ids'] = [(6,0,[attendee])]
record['ics_subscription'] = True
record['start'] = record.get('start_date')
record['stop'] = record.get('stop_date') or record.get('start')
record['description'] = description
record['show_as'] = partner.ics_show_as
record['allday'] = partner.ics_allday
#~ record['rrule'] = event.get('rrule').to_ical()
#~ raise Warning(record['rrule_type'].to_ical)
tmpStart = datetime.time(datetime.fromtimestamp(mktime(strptime(record['start'], DEFAULT_SERVER_DATETIME_FORMAT))))
tmpStop = datetime.fromtimestamp(mktime(strptime(record['stop'], DEFAULT_SERVER_DATETIME_FORMAT)))
if tmpStart == time(0,0,0) and tmpStart == datetime.time(tmpStop):
record['allday'] = True
if not record.get('stop_date'):
record['allday'] = True
record['stop_date'] = record['start_date']
elif record.get('stop_date') and record['allday']:
record['stop_date'] = vDatetime(tmpStop - timedelta(hours=24)).dt.strftime(DEFAULT_SERVER_DATETIME_FORMAT)
record['stop'] = record['stop_date']
_logger.error('ICS %s' % record)
self.env['calendar.event'].create(record)
#~ event_id = self.env['calendar.event'].create(record)
#~
#~ attendee_values = self.env['res.partner'].get_attendee_ids(event)
#~ for i in range(len(attendee_values[0])):
#~ self.env['calendar.attendee'].create({
#~ 'event_id': event_id.id,
#~ 'partner_id': attendee_values[0][i],
#~ 'email': attendee_values[1][i],
#~ })
#~ 'state': fields.selection(STATE_SELECTION, 'Status', readonly=True, help="Status of the attendee's participation"),
#~ 'cn': fields.function(_compute_data, string='Common name', type="char", multi='cn', store=True),
#~ 'partner_id': fields.many2one('res.partner', 'Contact', readonly="True"),
#~ 'email': fields.char('Email', help="Email of Invited Person"),
#~ 'availability': fields.selection([('free', 'Free'), ('busy', 'Busy')], 'Free/Busy', readonly="True"),
#~ 'access_token': fields.char('Invitation Token'),
#~ 'event_id': fields.many2one('calendar.event', 'Meeting linked', ondelete='cascade'),
@api.multi
def get_ics_event(self):
event = self[0]
ics = Event()
ics = self.env['calendar.attendee'].get_ics_file(event)
calendar = Calendar()
date_format = DEFAULT_SERVER_DATETIME_FORMAT
#~ for t in ics_record:
#~ ics[t[2]] = eval(t[3])
#~
#~ foo = {ics[t[2]]: event.read([t[1]]) for t in ics_record}
#~
#~
#~ ics['uid'] = event.id
#~ ics['allday'] = event.allday
#~
#~ if ics['allday']:
#~ date_format = DEFAULT_SERVER_DATE_FORMAT
#~
#~ ics['dtstart'] = vDatetime(datetime.fromtimestamp(mktime(strptime(event.start_date, date_format))))
#~ ics['dtend'] = vDatetime(datetime.fromtimestamp(mktime(strptime(event.stop_date, date_format))))
#~ ics['summary'] = event.name
#~ ics['description'] = event.description
#~ ics['class'] = event.read(['class'])
#~ calendar.add_component(ics)
#~ raise Warning(calendar.to_ical())
return ics
@api.multi
def get_ics_file(self, events_exported, partner):
"""
Returns iCalendar file for the event invitation.
@param event: event object (browse record)
@return: .ics file content
"""
ics = Event()
event = self[0]
#~ raise Warning(self.env.cr.dbname)
#~ The method below needs som proper rewriting to avoid overusing libraries.
def ics_datetime(idate, allday=False):
if idate:
if allday:
return str(vDatetime(datetime.fromtimestamp(mktime(strptime(idate, DEFAULT_SERVER_DATETIME_FORMAT)))).to_ical())[:8]
else:
return vDatetime(datetime.fromtimestamp(mktime(strptime(idate, DEFAULT_SERVER_DATETIME_FORMAT)))).to_ical() + 'Z'
return False
#~ try:
#~ # FIXME: why isn't this in CalDAV?
#~ import vobject
#~ except ImportError:
#~ return res
#~ cal = vobject.iCalendar()
#~ event = cal.add('vevent')
if not event.start or not event.stop:
raise osv.except_osv(_('Warning!'), _("First you have to specify the date of the invitation."))
ics['summary'] = event.name
if event.description:
ics['description'] = event.description
if event.location:
ics['location'] = event.location
if event.rrule:
ics['rrule'] = event.rrule
#~ ics.add('rrule', str(event.rrule), encode=0)
#~ raise Warning(ics['rrule'])
if event.alarm_ids:
for alarm in event.alarm_ids:
valarm = ics.add('valarm')
interval = alarm.interval
duration = alarm.duration
trigger = valarm.add('TRIGGER')
trigger.params['related'] = ["START"]
if interval == 'days':
delta = timedelta(days=duration)
elif interval == 'hours':
delta = timedelta(hours=duration)
elif interval == 'minutes':
delta = timedelta(minutes=duration)
trigger.value = delta
valarm.add('DESCRIPTION').value = alarm.name or 'Odoo'
if event.attendee_ids:
for attendee in event.attendee_ids:
attendee_add = ics.get('attendee')
attendee_add = attendee.cn and ('CN=' + attendee.cn) or ''
if attendee.cn and attendee.email:
attendee_add += ':'
attendee_add += attendee.email and ('MAILTO:' + attendee.email) or ''
ics.add('attendee', attendee_add, encode=0)
if events_exported:
event_not_found = True
for event_comparison in events_exported:
#~ raise Warning('event_comparison = %s ics = %s' % (event_comparison, ics))
if str(ics) == event_comparison:
event_not_found = False
break
if event_not_found:
events_exported.append(str(ics))
ics['uid'] = '%s@%s-%s' % (event.id, self.env.cr.dbname, partner.id)
ics['created'] = ics_datetime(strftime(DEFAULT_SERVER_DATETIME_FORMAT))
tmpStart = ics_datetime(event.start, event.allday)
tmpEnd = ics_datetime(event.stop, event.allday)
if event.allday:
ics['dtstart;value=date'] = tmpStart
else:
ics['dtstart'] = tmpStart
if tmpStart != tmpEnd or not event.allday:
if event.allday:
ics['dtend;value=date'] = str(vDatetime(datetime.fromtimestamp(mktime(strptime(event.stop, DEFAULT_SERVER_DATETIME_FORMAT))) + timedelta(hours=24)).to_ical())[:8]
else:
ics['dtend'] = tmpEnd
return [ics, events_exported]
else:
events_exported.append(str(ics))
ics['uid'] = '%s@%s-%s' % (event.id, self.env.cr.dbname, partner.id)
ics['created'] = ics_datetime(strftime(DEFAULT_SERVER_DATETIME_FORMAT))
tmpStart = ics_datetime(event.start, event.allday)
tmpEnd = ics_datetime(event.stop, event.allday)
if event.allday:
ics['dtstart;value=date'] = tmpStart
else:
ics['dtstart'] = tmpStart
if tmpStart != tmpEnd or not event.allday:
if event.allday:
ics['dtend;value=date'] = str(vDatetime(datetime.fromtimestamp(mktime(strptime(event.stop, DEFAULT_SERVER_DATETIME_FORMAT))) + timedelta(hours=24)).to_ical())[:8]
else:
ics['dtend'] = tmpEnd
return [ics, events_exported]
@api.multi
def get_ics_freebusy(self):
"""
Returns iCalendar file for the event invitation.
@param event: event object (browse record)
@return: .ics file content
"""
#~ ics = FreeBusy()
event = self[0]
def ics_datetime(idate, iallday=False):
if idate:
return vDatetime(idate).to_ical()
return False
if not event.start or not event.stop:
raise osv.except_osv(_('Warning!'), _("First you have to specify the date of the invitation."))
allday = event.allday
event_start = datetime.fromtimestamp(mktime(strptime(event.start, DEFAULT_SERVER_DATETIME_FORMAT)))
event_stop = datetime.fromtimestamp(mktime(strptime(event.stop, DEFAULT_SERVER_DATETIME_FORMAT)))
if allday:
event_stop += timedelta(hours=23, minutes=59, seconds=59)
return '%s/%s' % (ics_datetime(event_start, allday), ics_datetime(event_stop, allday))
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

BIN
calendar_ics/calendar.pyc Normal file

Binary file not shown.

View File

@ -0,0 +1,76 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<record id="calendar_event_1" model="calendar.event">
<field eval="1" name="active" />
<field name="user_id" ref="base.user_demo" />
<field name="partner_ids" eval="[(6,0,[ref('base.res_partner_address_4')])]" />
<field name="name">Demo meeting about meat</field>
<field name="description">Meeting to discuss project plan and hash out the details of implementation.</field>
<field eval="time.strftime('%Y-%m-03 10:20:00')" name="start" />
<field name="categ_ids" eval="[(6,0,[ref('calendar.categ_meet1')])]" />
<field eval="time.strftime('%Y-%m-03 16:30:00')" name="stop" />
<field eval="6.3" name="duration" />
<field eval="0" name="allday" />
<field name="state">open</field>
</record>
<record id="calendar_event_2" model="calendar.event">
<field eval="1" name="active" />
<field name="user_id" ref="base.user_demo" />
<field name="partner_ids" eval="[(6,0,[ref('base.res_partner_address_4')])]" />
<field name="name">Demo Kickoff</field>
<field name="description">Weekend at burneys</field>
<field eval="time.strftime('%Y-%m-05 10:20:00')" name="start" />
<field name="categ_ids" eval="[(6,0,[ref('calendar.categ_meet1')])]" />
<field eval="time.strftime('%Y-%m-07 10:20:00')" name="stop" />
<field eval="6.3" name="duration" />
<field eval="0" name="allday" />
<field name="state">open</field>
</record>
<record id="calendar_event_3" model="calendar.event">
<field eval="1" name="active" />
<field name="user_id" ref="base.user_demo" />
<field name="partner_ids" eval="[(6,0,[ref('base.res_partner_address_4')])]" />
<field name="name">Demo Bring the meat.</field>
<field name="description">All you can eat buffe.</field>
<field eval="time.strftime('%Y-%m-10')" name="start" />
<field name="categ_ids" eval="[(6,0,[ref('calendar.categ_meet1')])]" />
<field eval="time.strftime('%Y-%m-10')" name="stop" />
<field eval="6.3" name="duration" />
<field eval="1" name="allday" />
<field name="state">open</field>
</record>
<record id="calendar_event_4" model="calendar.event">
<field eval="1" name="active" />
<field name="user_id" ref="base.user_demo" />
<field name="partner_ids" eval="[(6,0,[ref('base.res_partner_address_4')])]" />
<field name="name">Demo Trash the meat grinder</field>
<field name="description">Bring your own hammers and tools</field>
<field name="location">BurgerTown, 31 butcherstreet</field>
<field eval="time.strftime('%Y-%m-25 08:00:00')" name="start" />
<field name="categ_ids" eval="[(6,0,[ref('calendar.categ_meet1')])]" />
<field eval="time.strftime('%Y-%m-25 09:00:00')" name="stop" />
<field eval="6.3" name="duration" />
<field eval="0" name="allday" />
<field name="state">open</field>
</record>
<record id="calendar_event_5" model="calendar.event">
<field eval="1" name="active" />
<field name="user_id" ref="base.user_demo" />
<field name="partner_ids" eval="[(6,0,[ref('base.res_partner_address_4')])]" />
<field name="name">Demo Trash the meat grinder reunion!</field>
<field name="description">Bring your own hammers and tools AND meat this time</field>
<field name="location">BurgerTown, 31 butcherstreet</field>
<field eval="time.strftime('%Y-%m-28 08:00:00')" name="start" />
<field name="categ_ids" eval="[(6,0,[ref('calendar.categ_meet1')])]" />
<field eval="time.strftime('%Y-%m-28 09:00:00')" name="stop" />
<field eval="6.3" name="duration" />
<field eval="0" name="allday" />
<field name="state">open</field>
</record>
</data>
</openerp>

View File

@ -0,0 +1,108 @@
<?xml version="1.0"?>
<openerp>
<data>
<!-- Calendar ICS Form View -->
<record model="ir.ui.view" id="view_calendar_ics_form">
<field name="name">Calendar - ics url</field>
<field name="model">calendar.ics</field>
<field name="arch" type="xml">
<form string="Ics">
<sheet>
<div class="oe_title">
<div class="oe_edit_only">
<label for="name"/>
</div>
<h1>
<field name="name"/>
</h1>
<h2>
<field name="user_id" />
<field name="url" />
<field name="active" />
<button name="get_events" string="Check" type="object" icon="gtk-ok" colspan="1"/>
</h2>
</div>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers"/>
<field name="message_ids" widget="mail_thread" />
</div>
</form>
</field>
</record>
<!-- CRM Meeting Tree View -->
<record model="ir.ui.view" id="view_calendar_ics_tree">
<field name="name">Calendar ics-url</field>
<field name="model">calendar.ics</field>
<field name="arch" type="xml">
<tree string="Ics-urls" fonts="bold:active==False">
<field name="name" />
<field name="user_id" />
<field name="url" />
<field name="active" />
<button name="get_events" string="Check" type="object" icon="gtk-ok" colspan="1"/>
</tree>
</field>
</record>
<!-- CRM Meeting Search View -->
<record id="view_calendar_ics_search" model="ir.ui.view">
<field name="name">Calendar ics Search</field>
<field name="model">calendar.ics</field>
<field name="arch" type="xml">
<search string="Search Calendar ics-urls">
<field name="name" string="Ics" filter_domain="[('name','ilike',self),('url','ilike',self)]"/>
<field name="user_id"/>
<filter icon="terp-go-today" string="My Urls" domain="[('user_id','=',uid)]" help="My Urls"/>
<filter icon="terp-go-today" string="Active" domain="[('cative','=',True)]" help="Active"/>
<filter icon="terp-go-today" string="Inactive" domain="[('user_id','=',False)]" help="Inactive"/>
<separator/>
<group expand="0" string="Group By">
<filter string="Owner" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
</group>
</search>
</field>
</record>
<record id="action_calendar_ics" model="ir.actions.act_window">
<field name="name">Calendar ics</field>
<field name="res_model">calendar.ics</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="view_calendar_ics_tree"/>
<field name="search_view_id" ref="view_calendar_ics_search"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to schedule a new Calendar ics url.
</p><p>
The calendar events in the url updates the calendar.
</p>
</field>
</record>
<record model="ir.actions.act_window.view" id="action_view_calendar_ics_tree">
<field name="act_window_id" ref="action_calendar_ics"/>
<field name="sequence" eval="2"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="view_calendar_ics_tree"/>
</record>
<record model="ir.actions.act_window.view" id="action_view_calendar_ics_form">
<field name="act_window_id" ref="action_calendar_ics"/>
<field name="sequence" eval="3"/>
<field name="view_mode">form</field>
<field name="view_id" ref="view_calendar_ics_form"/>
</record>
<menuitem id="menu_calendar_configuration" name="Calendar ics" parent="calendar.menu_calendar_configuration" action='action_calendar_ics' /> <!-- groups="base.group_no_one"/> -->
</data>
</openerp>

View File

@ -0,0 +1,287 @@
from openerp import models, fields, api, _
from pytz import timezone
from openerp.exceptions import except_orm, Warning, RedirectWarning
from datetime import datetime, timedelta, time
from time import strptime, mktime, strftime
from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
import re
from openerp import http
from openerp.http import request
import logging
_logger = logging.getLogger(__name__)
#Debuggger package
#import pdb
## APPELER "pdb.set_trace()" pour faire un point de debuggage qu'on peut piloter ensuite depuis la console
try:
from icalendar import Calendar, Event, vDatetime, FreeBusy
except ImportError:
raise Warning('icalendar library missing, pip install icalendar')
try:
import urllib2
except ImportError:
raise Warning('urllib2 library missing, pip install urllib2')
class res_partner_icalendar(http.Controller):
# http://partner/<res.partner>/calendar/[private.ics|freebusy.ics|public.ics]
#~ simple_blog_list = request.env['blog.post'].sudo().search([('blog_id', '=', simple_blog.id)], order='message_last_post desc')
#~ @http.route(['/partner/<model("res.partner"):partner>/calendar/private.ics'], type='http', auth="public", website=True)
#~ def icalendar_private(self, partner=False, **post):
#~ if partner:
#~ document = partner.sudo().get_ics_calendar(type='private').to_ical()
#~ return request.make_response(
#~ headers=[('WWW-Authenticate', 'Basic realm="MaxRealm"')]
#~ )
#~ else:
#~ raise Warning("Private failed")
#~ pass # Some error page
@http.route(['/partner/<model("res.partner"):partner>/calendar/freebusy.ics'], type='http', auth="public", website=True)
def icalendar_freebusy(self, partner=False, **post):
if partner:
#~ raise Warning("Public successfull %s" % partner.get_ics_calendar(type='public').to_ical())
#~ return partner.get_ics_calendar(type='public').to_ical()
document = partner.sudo().get_ics_calendar(type='freebusy').to_ical()
return request.make_response(
document,
headers=[
('Content-Disposition', 'attachment; filename="freebusy.ifb"'),
('Content-Type', 'text/calendar'),
('Content-Length', len(document)),
]
)
else:
raise Warning()
pass # Some error page
#@http.route(['/partner/<model("res.partner"):partner>/calendar/public.ics'], type='http', auth="public", website=True)
@http.route(['/calendar-ics/<database_name>/<partner_id>/public.ics'], auth="public")
def icalendar_public(self, partner_id, **post):
#pdb.set_trace()
partner = http.request.env['res.partner'].sudo().search([('id','=',partner_id)])
if partner:
#~ raise Warning("Public successfull %s" % partner.get_ics_calendar(type='public').to_ical())
#~ return partner.sudo().get_ics_calendar(type='public')
document = partner.sudo().get_ics_calendar(type='public')
return request.make_response(
document,
headers=[
('Content-Disposition', 'attachment; filename="public.ics"'),
('Content-Type', 'text/calendar'),
('Content-Length', len(document)),
]
)
else:
raise Warning("Public failed")
pass # Some error page
class res_partner(models.Model):
_inherit = "res.partner"
ics_url = fields.Char(string='Url',required=False)
ics_active = fields.Boolean(string='Active',default=False)
ics_nextdate = fields.Datetime(string="Next")
#~ ics_frequency = fields.Integer(string="Frequency",default=60, help="Frequency in minutes, 60 = every hour, 1440 once per day, 10080 week, 43920 month, 131760 quarterly")
ics_frequency = fields.Selection([('15', 'Every fifteen minutes'), ('60', 'Every hour'), ('360', 'Four times a day'), ('1440', 'Once per day'), ('10080', 'Once every week'), ('43920', 'Once every month'), ('131760', 'Once every third month')], string='Frequency', default='60')
ics_class = fields.Selection([('private', 'Private'), ('public', 'Public'), ('confidential', 'Public for Employees')], string='Privacy', default='private')
ics_show_as = fields.Selection([('free', 'Free'), ('busy', 'Busy')], string='Show Time as')
ics_location = fields.Char(string='Location', help="Location of Event")
ics_allday = fields.Boolean(string='All Day')
ics_url_field = fields.Char(string='URL to the calendar', compute='create_ics_url')
@api.one
def create_ics_url(self):
self.ics_url_field = '%s/partner/%s/calendar/public.ics' % (self.env['ir.config_parameter'].sudo().get_param('web.base.url'), self.id)
@api.v7
def ics_cron_job(self, cr, uid, context=None):
for ics in self.pool.get('res.partner').browse(cr, uid, self.pool.get('res.partner').search(cr, uid, [('ics_active','=',True)])):
if (datetime.fromtimestamp(mktime(strptime(ics.ics_nextdate, DEFAULT_SERVER_DATETIME_FORMAT))) < datetime.today()):
ics.get_ics_events()
ics.ics_nextdate = datetime.fromtimestamp(mktime(strptime(ics.ics_nextdate, DEFAULT_SERVER_DATETIME_FORMAT))) + timedelta(minutes=int(ics.ics_frequency))
_logger.info('Cron job for %s done' % ics.name)
@api.one
def rm_ics_events(self):
self.env['calendar.event'].search(['&',('partner_ids','in',self.id),('ics_subscription','=',True)]).unlink()
@api.one
def get_ics_events(self):
if (self.ics_url):
try:
res = urllib2.urlopen(self.ics_url).read()
except urllib2.HTTPError as e:
_logger.error('ICS a %s %s' % (e.code, e.reason))
return False
except urllib2.URLError as e:
_logger.error('ICS c %s %s' % (e.code, e.reason))
return False
_logger.error('ICS %s' % res)
self.env['calendar.event'].search(['&',('partner_ids','in',self.id),('ics_subscription','=',True)]).unlink()
#~ for event in self.env['calendar.event'].search([('ics_id','=',self.id)]):
#~ event.unlink()
self.env['calendar.event'].set_ics_event(res, self)
@api.multi
def get_attendee_ids(self, event):
#~ raise Warning('get_attendee_ids run')
partner_ids = []
#~ attendee_mails = []
event_attendee_list = event.get('attendee')
if event_attendee_list:
if not (type(event_attendee_list) is list):
event_attendee_list = [event_attendee_list]
for vAttendee in event_attendee_list:
_logger.error('Attendee found %s' % vAttendee)
attendee_mailto = re.search('(:MAILTO:)([a-zA-Z0-9_@.\-]*)', vAttendee)
attendee_cn = re.search('(CN=)([^:]*)', vAttendee)
if attendee_mailto:
attendee_mailto = attendee_mailto.group(2)
if attendee_cn:
attendee_cn = attendee_cn.group(2)
elif not attendee_mailto and not attendee_cn:
attendee_cn = vAttendee
_logger.error('Attendee found %s' % attendee_cn)
#~ raise Warning('%s %s' % (vAttendee, attendee_cn))
if attendee_mailto:
partner_result = self.env['res.partner'].search([('email','=',attendee_mailto)])
if not partner_result:
partner_id = self.env['res.partner'].create({
'email': attendee_mailto,
'name': attendee_cn or attendee_mailto,
})
else:
partner_id = partner_result[0]
elif attendee_cn:
partner_result = self.env['res.partner'].search([('name','=',attendee_cn)])
if not partner_result:
partner_id = self.env['res.partner'].create({
'name': attendee_cn or attendee_mailto,
})
else:
partner_id = partner_result[0]
#~ self.env['calendar.attendee'].create({
#~ 'event_id': event_id.id,
#~ 'partner_id': partner_id.id or None,
#~ 'email': attendee_mailto or '',
#~ })
partner_ids.append(partner_id.id or None)
#~ attendee_mails.append(attendee_mailto or '')
return partner_ids
#~ return [partner_ids, attendee_mails]
def get_ics_calendar(self,type='public'):
calendar = Calendar()
if type == 'private':
for event in self.env['calendar.event'].search([('partner_ids','in',self.id)]):
calendar.add_component(event.get_ics_file())
elif type == 'freebusy':
fc = FreeBusy()
organizer_add = self.name and ('CN=' + self.name) or ''
if self.name and self.email:
organizer_add += ':'
organizer_add += self.email and ('MAILTO:' + self.email) or ''
fc['organizer'] = organizer_add
for event in self.env['calendar.event'].search([('partner_ids','in',self.id)]):
fc.add('freebusy', event.get_ics_freebusy(), encode=0)
#~ fb.add_component(fc)
return fc
elif type == 'public':
#~ raise Warning(self.env['calendar.event'].search([('partner_ids','in',self.id)]))
exported_ics = []
for event in reversed(self.env['calendar.event'].search([('partner_ids','in',self.id)])):
temporary_ics = event.get_ics_file(exported_ics, self)
if temporary_ics:
exported_ics.append(temporary_ics[1])
#~ temporary_ics[0].add('url', self.ics_url_field, encode=0)
calendar.add_component(temporary_ics[0])
#~ calendar.add('vevent', temporary_ics[0], encode=0)
#~ for attendees in event.attendee_ids:
#~ calendar.add('attendee', event.get_event_attendees(attendees), encode=0)
tmpCalendar = calendar.to_ical()
tmpSearch = re.findall('RRULE:[^\n]*\\;[^\n]*', tmpCalendar)
for counter in range(len(tmpSearch)):
tmpCalendar = tmpCalendar.replace(tmpSearch[counter], tmpSearch[counter].replace('\\;', ';', tmpSearch[counter].count('\\;')))
#~ raise Warning(tmpCalendar)
return tmpCalendar
@api.multi
def ics_mail(self,context=None):
#raise Warning('%s | %s' % (ids,picking))
compose_form = self.env.ref('mail.email_compose_message_wizard_form', False)
#~ raise Warning("%s compose_form" % compose_form)
mail= self.env['mail.compose.message'].create({
'template_id':self.env.ref('calendar_ics.email_ics_url').id,
'model': 'res.partner',
'res_id': self.id,
})
mail.write(mail.onchange_template_id( # gets defaults from template
self.env.ref('calendar_ics.email_ics_url').id, mail.composition_mode,
mail.model, mail.res_id,context=context
)['value'])
return {
'name': _('Compose Email'),
'type': 'ir.actions.act_window',
'view_type': 'form',
'view_mode': 'form',
'res_model': 'mail.compose.message',
'res_id':mail.id,
'views': [(compose_form.id, 'form')],
'view_id': compose_form.id,
'target': 'new',
}
return {'value': {'partner_id': False}, 'warning': {'title': 'Hello', 'message': 'Hejsan'}}
#~ ics['freebusy'] = '%s/%s' % (ics_datetime(event.start, event.allday), ics_datetime(event.stop, event.allday))
# vtodo, vjournal, vfreebusy
#~ eventprop = *(
#~ ; the following are optional,
#~ ; but MUST NOT occur more than once
#~ class / created / description / dtstart / geo /
#~ last-mod / location / organizer / priority /
#~ dtstamp / seq / status / summary / transp /
#~ uid / url / recurid /
#~ ; either 'dtend' or 'duration' may appear in
#~ ; a 'eventprop', but 'dtend' and 'duration'
#~ ; MUST NOT occur in the same 'eventprop'
#~ dtend / duration /
#~ ; the following are optional,
#~ ; and MAY occur more than once
#~ attach / attendee / categories / comment /
#~ contact / exdate / exrule / rstatus / related /
#~ resources / rdate / rrule / x-prop
#~ )

279
calendar_ics/res_partner.py Normal file
View File

@ -0,0 +1,279 @@
from openerp import models, fields, api, _
from pytz import timezone
from openerp.exceptions import except_orm, Warning, RedirectWarning
from datetime import datetime, timedelta, time
from time import strptime, mktime, strftime
from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
import re
from openerp import http
from openerp.http import request
import logging
_logger = logging.getLogger(__name__)
try:
from icalendar import Calendar, Event, vDatetime, FreeBusy
except ImportError:
raise Warning('icalendar library missing, pip install icalendar')
try:
import urllib2
except ImportError:
raise Warning('urllib2 library missing, pip install urllib2')
class res_partner_icalendar(http.Controller):
# http://partner/<res.partner>/calendar/[private.ics|freebusy.ics|public.ics]
#~ simple_blog_list = request.env['blog.post'].sudo().search([('blog_id', '=', simple_blog.id)], order='message_last_post desc')
#~ @http.route(['/partner/<model("res.partner"):partner>/calendar/private.ics'], type='http', auth="public", website=True)
#~ def icalendar_private(self, partner=False, **post):
#~ if partner:
#~ document = partner.sudo().get_ics_calendar(type='private').to_ical()
#~ return request.make_response(
#~ headers=[('WWW-Authenticate', 'Basic realm="MaxRealm"')]
#~ )
#~ else:
#~ raise Warning("Private failed")
#~ pass # Some error page
@http.route(['/partner/<model("res.partner"):partner>/calendar/freebusy.ics'], type='http', auth="public", website=True)
def icalendar_freebusy(self, partner=False, **post):
if partner:
#~ raise Warning("Public successfull %s" % partner.get_ics_calendar(type='public').to_ical())
#~ return partner.get_ics_calendar(type='public').to_ical()
document = partner.sudo().get_ics_calendar(type='freebusy').to_ical()
return request.make_response(
document,
headers=[
('Content-Disposition', 'attachment; filename="freebusy.ifb"'),
('Content-Type', 'text/calendar'),
('Content-Length', len(document)),
]
)
else:
raise Warning()
pass # Some error page
@http.route(['/partner/<model("res.partner"):partner>/calendar/public.ics'], type='http', auth="public", website=True)
def icalendar_public(self, partner=False, **post):
if partner:
#~ raise Warning("Public successfull %s" % partner.get_ics_calendar(type='public').to_ical())
#~ return partner.sudo().get_ics_calendar(type='public')
document = partner.sudo().get_ics_calendar(type='public')
return request.make_response(
document,
headers=[
('Content-Disposition', 'attachment; filename="public.ics"'),
('Content-Type', 'text/calendar'),
('Content-Length', len(document)),
]
)
else:
raise Warning("Public failed")
pass # Some error page
class res_partner(models.Model):
_inherit = "res.partner"
ics_url = fields.Char(string='Url',required=False)
ics_active = fields.Boolean(string='Active',default=False)
ics_nextdate = fields.Datetime(string="Next")
#~ ics_frequency = fields.Integer(string="Frequency",default=60, help="Frequency in minutes, 60 = every hour, 1440 once per day, 10080 week, 43920 month, 131760 quarterly")
ics_frequency = fields.Selection([('15', 'Every fifteen minutes'), ('60', 'Every hour'), ('360', 'Four times a day'), ('1440', 'Once per day'), ('10080', 'Once every week'), ('43920', 'Once every month'), ('131760', 'Once every third month')], string='Frequency', default='60')
ics_class = fields.Selection([('private', 'Private'), ('public', 'Public'), ('confidential', 'Public for Employees')], string='Privacy', default='private')
ics_show_as = fields.Selection([('free', 'Free'), ('busy', 'Busy')], string='Show Time as')
ics_location = fields.Char(string='Location', help="Location of Event")
ics_allday = fields.Boolean(string='All Day')
ics_url_field = fields.Char(string='URL to the calendar', compute='create_ics_url')
@api.one
def create_ics_url(self):
self.ics_url_field = '%s/partner/%s/calendar/public.ics' % (self.env['ir.config_parameter'].sudo().get_param('web.base.url'), self.id)
@api.v7
def ics_cron_job(self, cr, uid, context=None):
for ics in self.pool.get('res.partner').browse(cr, uid, self.pool.get('res.partner').search(cr, uid, [('ics_active','=',True)])):
if (datetime.fromtimestamp(mktime(strptime(ics.ics_nextdate, DEFAULT_SERVER_DATETIME_FORMAT))) < datetime.today()):
ics.get_ics_events()
ics.ics_nextdate = datetime.fromtimestamp(mktime(strptime(ics.ics_nextdate, DEFAULT_SERVER_DATETIME_FORMAT))) + timedelta(minutes=int(ics.ics_frequency))
_logger.info('Cron job for %s done' % ics.name)
@api.one
def rm_ics_events(self):
self.env['calendar.event'].search(['&',('partner_ids','in',self.id),('ics_subscription','=',True)]).unlink()
@api.one
def get_ics_events(self):
if (self.ics_url):
try:
res = urllib2.urlopen(self.ics_url).read()
except urllib2.HTTPError as e:
_logger.error('ICS a %s %s' % (e.code, e.reason))
return False
except urllib2.URLError as e:
_logger.error('ICS c %s %s' % (e.code, e.reason))
return False
_logger.error('ICS %s' % res)
self.env['calendar.event'].search(['&',('partner_ids','in',self.id),('ics_subscription','=',True)]).unlink()
#~ for event in self.env['calendar.event'].search([('ics_id','=',self.id)]):
#~ event.unlink()
self.env['calendar.event'].set_ics_event(res, self)
@api.multi
def get_attendee_ids(self, event):
#~ raise Warning('get_attendee_ids run')
partner_ids = []
#~ attendee_mails = []
event_attendee_list = event.get('attendee')
if event_attendee_list:
if not (type(event_attendee_list) is list):
event_attendee_list = [event_attendee_list]
for vAttendee in event_attendee_list:
_logger.error('Attendee found %s' % vAttendee)
attendee_mailto = re.search('(:MAILTO:)([a-zA-Z0-9_@.\-]*)', vAttendee)
attendee_cn = re.search('(CN=)([^:]*)', vAttendee)
if attendee_mailto:
attendee_mailto = attendee_mailto.group(2)
if attendee_cn:
attendee_cn = attendee_cn.group(2)
elif not attendee_mailto and not attendee_cn:
attendee_cn = vAttendee
_logger.error('Attendee found %s' % attendee_cn)
#~ raise Warning('%s %s' % (vAttendee, attendee_cn))
if attendee_mailto:
partner_result = self.env['res.partner'].search([('email','=',attendee_mailto)])
if not partner_result:
partner_id = self.env['res.partner'].create({
'email': attendee_mailto,
'name': attendee_cn or attendee_mailto,
})
else:
partner_id = partner_result[0]
elif attendee_cn:
partner_result = self.env['res.partner'].search([('name','=',attendee_cn)])
if not partner_result:
partner_id = self.env['res.partner'].create({
'name': attendee_cn or attendee_mailto,
})
else:
partner_id = partner_result[0]
#~ self.env['calendar.attendee'].create({
#~ 'event_id': event_id.id,
#~ 'partner_id': partner_id.id or None,
#~ 'email': attendee_mailto or '',
#~ })
partner_ids.append(partner_id.id or None)
#~ attendee_mails.append(attendee_mailto or '')
return partner_ids
#~ return [partner_ids, attendee_mails]
def get_ics_calendar(self,type='public'):
calendar = Calendar()
if type == 'private':
for event in self.env['calendar.event'].search([('partner_ids','in',self.id)]):
calendar.add_component(event.get_ics_file())
elif type == 'freebusy':
fc = FreeBusy()
organizer_add = self.name and ('CN=' + self.name) or ''
if self.name and self.email:
organizer_add += ':'
organizer_add += self.email and ('MAILTO:' + self.email) or ''
fc['organizer'] = organizer_add
for event in self.env['calendar.event'].search([('partner_ids','in',self.id)]):
fc.add('freebusy', event.get_ics_freebusy(), encode=0)
#~ fb.add_component(fc)
return fc
elif type == 'public':
#~ raise Warning(self.env['calendar.event'].search([('partner_ids','in',self.id)]))
exported_ics = []
for event in reversed(self.env['calendar.event'].search([('partner_ids','in',self.id)])):
temporary_ics = event.get_ics_file(exported_ics, self)
if temporary_ics:
exported_ics.append(temporary_ics[1])
#~ temporary_ics[0].add('url', self.ics_url_field, encode=0)
calendar.add_component(temporary_ics[0])
#~ calendar.add('vevent', temporary_ics[0], encode=0)
#~ for attendees in event.attendee_ids:
#~ calendar.add('attendee', event.get_event_attendees(attendees), encode=0)
tmpCalendar = calendar.to_ical()
tmpSearch = re.findall('RRULE:[^\n]*\\;[^\n]*', tmpCalendar)
for counter in range(len(tmpSearch)):
tmpCalendar = tmpCalendar.replace(tmpSearch[counter], tmpSearch[counter].replace('\\;', ';', tmpSearch[counter].count('\\;')))
#~ raise Warning(tmpCalendar)
return tmpCalendar
@api.multi
def ics_mail(self,context=None):
#raise Warning('%s | %s' % (ids,picking))
compose_form = self.env.ref('mail.email_compose_message_wizard_form', False)
#~ raise Warning("%s compose_form" % compose_form)
mail= self.env['mail.compose.message'].create({
'template_id':self.env.ref('calendar_ics.email_ics_url').id,
'model': 'res.partner',
'res_id': self.id,
})
mail.write(mail.onchange_template_id( # gets defaults from template
self.env.ref('calendar_ics.email_ics_url').id, mail.composition_mode,
mail.model, mail.res_id,context=context
)['value'])
return {
'name': _('Compose Email'),
'type': 'ir.actions.act_window',
'view_type': 'form',
'view_mode': 'form',
'res_model': 'mail.compose.message',
'res_id':mail.id,
'views': [(compose_form.id, 'form')],
'view_id': compose_form.id,
'target': 'new',
}
return {'value': {'partner_id': False}, 'warning': {'title': 'Hello', 'message': 'Hejsan'}}
#~ ics['freebusy'] = '%s/%s' % (ics_datetime(event.start, event.allday), ics_datetime(event.stop, event.allday))
# vtodo, vjournal, vfreebusy
#~ eventprop = *(
#~ ; the following are optional,
#~ ; but MUST NOT occur more than once
#~ class / created / description / dtstart / geo /
#~ last-mod / location / organizer / priority /
#~ dtstamp / seq / status / summary / transp /
#~ uid / url / recurid /
#~ ; either 'dtend' or 'duration' may appear in
#~ ; a 'eventprop', but 'dtend' and 'duration'
#~ ; MUST NOT occur in the same 'eventprop'
#~ dtend / duration /
#~ ; the following are optional,
#~ ; and MAY occur more than once
#~ attach / attendee / categories / comment /
#~ contact / exdate / exrule / rstatus / related /
#~ resources / rdate / rrule / x-prop
#~ )

Binary file not shown.

View File

@ -0,0 +1,29 @@
<openerp>
<data noupdate="1">
<!--
Email Templates
-->
<record id="email_ics_url" model="email.template">
<field name="name">ics_url</field>
<field name="email_from">admin@example.com</field>
<field name="model_object_field" ref="calendar_ics.field_res_partner_ics_url_field" />
<field name="subject">Calendar ics url</field>
<field name="email_to">${(object.email or '')|safe}</field>
<field name="model_id" ref="base.model_res_partner" />
<field name="body_html">
<![CDATA[<p>Use this url for the ${object.name} calendar:</p>
<p>${object.ics_url_field}</p>
]]>
</field>
</record>
<record model="ir.cron" id="calendar_partner_cron_job">
<field name="name">Generate Recurring Calendar updates for Partners</field>
<field name="interval_number">15</field>
<field name="interval_type">minutes</field>
<field name="numbercall">-1</field>
<field name="model" eval="'res.partner'" />
<field name="function" eval="'ics_cron_job'" />
<field name="args" eval="'()'" />
</record>
</data>
</openerp>

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_partner_form" model="ir.ui.view">
<field name="name">res.partner.ics</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form" />
<field name="arch" type="xml">
<page name="internal_notes" position="after">
<page name="ics" string="Calendar ICS">
<group col="16">
<field name="ics_url" placeholder="http://your calendar ics url..." colspan="11" />
<button string="Check url" type="object" name="get_ics_events" colspan="2" />
<button string="Remove events" type="object" name="rm_ics_events" colspan="3" />
<field name="ics_active" colspan="16" />
</group>
<group>
<field name="ics_frequency" />
<field name="ics_nextdate" />
<field name="ics_class" />
<field name="ics_show_as" />
<field name="ics_location" />
<field name="ics_allday" />
<field name="ics_url_field" />
<button string="ics_url_mail" type="object" name="ics_mail" />
</group>
</page>
</page>
</field>
</record>
</data>
</openerp>

View File

@ -0,0 +1,3 @@
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
access_calendar_ics_manager,res.groups,model_calendar_ics,base.group_erp_manager,1,1,1,1
access_calendar_ics_all,res.groups,model_calendar_ics,,1,0,0,0
1 id name model_id/id group_id/id perm_read perm_write perm_create perm_unlink
2 access_calendar_ics_manager res.groups model_calendar_ics base.group_erp_manager 1 1 1 1
3 access_calendar_ics_all res.groups model_calendar_ics 1 0 0 0

View File

@ -0,0 +1,24 @@
# -*- 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/>.
#
##############################################################################
import google_account
import controllers
from .google_account import TIMEOUT # noqa

View File

@ -0,0 +1,41 @@
# -*- 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': 'Google Users',
'version': '1.0',
'category': 'Tools',
'description': """
The module adds google user in res user.
========================================
""",
'author': 'OpenERP SA',
'website': 'https://www.odoo.com',
'depends': ['base_setup'],
'data': [
'google_account_data.xml',
],
'demo': [],
'installable': True,
'auto_install': False,
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1 @@
import main

View File

@ -0,0 +1,32 @@
import simplejson
import urllib
import openerp
from openerp import http
from openerp.http import request
import openerp.addons.web.controllers.main as webmain
from openerp.addons.web.http import SessionExpiredException
from werkzeug.exceptions import BadRequest
import werkzeug.utils
class google_auth(http.Controller):
@http.route('/google_account/authentication', type='http', auth="none")
def oauth2callback(self, **kw):
""" This route/function is called by Google when user Accept/Refuse the consent of Google """
state = simplejson.loads(kw['state'])
dbname = state.get('d')
service = state.get('s')
url_return = state.get('f')
registry = openerp.modules.registry.RegistryManager.get(dbname)
with registry.cursor() as cr:
if kw.get('code',False):
registry.get('google.%s' % service).set_all_tokens(cr,request.session.uid,kw['code'])
return werkzeug.utils.redirect(url_return)
elif kw.get('error'):
return werkzeug.utils.redirect("%s%s%s" % (url_return ,"?error=" , kw.get('error')))
else:
return werkzeug.utils.redirect("%s%s" % (url_return ,"?error=Unknown_error"))

View File

@ -0,0 +1,189 @@
# -*- coding: utf-8 -*-
import openerp
from openerp.http import request
from openerp.osv import osv
from openerp import SUPERUSER_ID
from openerp.tools.translate import _
from datetime import datetime
from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT
import werkzeug.urls
import urllib2
import simplejson
import logging
_logger = logging.getLogger(__name__)
TIMEOUT = 20
class google_service(osv.osv_memory):
_name = 'google.service'
def generate_refresh_token(self, cr, uid, service, authorization_code, context=None):
ir_config = self.pool['ir.config_parameter']
client_id = ir_config.get_param(cr, SUPERUSER_ID, 'google_%s_client_id' % service)
client_secret = ir_config.get_param(cr, SUPERUSER_ID, 'google_%s_client_secret' % service)
redirect_uri = ir_config.get_param(cr, SUPERUSER_ID, 'google_redirect_uri')
#Get the Refresh Token From Google And store it in ir.config_parameter
headers = {"Content-type": "application/x-www-form-urlencoded"}
data = dict(code=authorization_code, client_id=client_id, client_secret=client_secret, redirect_uri=redirect_uri, grant_type="authorization_code")
data = werkzeug.url_encode(data)
try:
req = urllib2.Request("https://accounts.google.com/o/oauth2/token", data, headers)
content = urllib2.urlopen(req, timeout=TIMEOUT).read()
except urllib2.HTTPError:
error_msg = "Something went wrong during your token generation. Maybe your Authorization Code is invalid or already expired"
raise self.pool.get('res.config.settings').get_config_warning(cr, _(error_msg), context=context)
content = simplejson.loads(content)
return content.get('refresh_token')
def _get_google_token_uri(self, cr, uid, service, scope, context=None):
ir_config = self.pool['ir.config_parameter']
params = {
'scope': scope,
'redirect_uri': ir_config.get_param(cr, SUPERUSER_ID, 'google_redirect_uri'),
'client_id': ir_config.get_param(cr, SUPERUSER_ID, 'google_%s_client_id' % service),
'response_type': 'code',
'client_id': ir_config.get_param(cr, SUPERUSER_ID, 'google_%s_client_id' % service),
}
uri = 'https://accounts.google.com/o/oauth2/auth?%s' % werkzeug.url_encode(params)
return uri
# If no scope is passed, we use service by default to get a default scope
def _get_authorize_uri(self, cr, uid, from_url, service, scope=False, context=None):
""" This method return the url needed to allow this instance of OpenErp to access to the scope of gmail specified as parameters """
state_obj = dict(d=cr.dbname, s=service, f=from_url)
base_url = self.get_base_url(cr, uid, context)
client_id = self.get_client_id(cr, uid, service, context)
params = {
'response_type': 'code',
'client_id': client_id,
'state': simplejson.dumps(state_obj),
'scope': scope or 'https://www.googleapis.com/auth/%s' % (service,),
'redirect_uri': base_url + '/google_account/authentication',
'approval_prompt': 'force',
'access_type': 'offline'
}
uri = self.get_uri_oauth(a='auth') + "?%s" % werkzeug.url_encode(params)
return uri
def _get_google_token_json(self, cr, uid, authorize_code, service, context=None):
res = False
base_url = self.get_base_url(cr, uid, context)
client_id = self.get_client_id(cr, uid, service, context)
client_secret = self.get_client_secret(cr, uid, service, context)
params = {
'code': authorize_code,
'client_id': client_id,
'client_secret': client_secret,
'grant_type': 'authorization_code',
'redirect_uri': base_url + '/google_account/authentication'
}
headers = {"content-type": "application/x-www-form-urlencoded"}
try:
uri = self.get_uri_oauth(a='token')
data = werkzeug.url_encode(params)
st, res, ask_time = self._do_request(cr, uid, uri, params=data, headers=headers, type='POST', preuri='', context=context)
except urllib2.HTTPError:
error_msg = "Something went wrong during your token generation. Maybe your Authorization Code is invalid"
raise self.pool.get('res.config.settings').get_config_warning(cr, _(error_msg), context=context)
return res
def _refresh_google_token_json(self, cr, uid, refresh_token, service, context=None): # exchange_AUTHORIZATION vs Token (service = calendar)
res = False
client_id = self.get_client_id(cr, uid, service, context)
client_secret = self.get_client_secret(cr, uid, service, context)
params = {
'refresh_token': refresh_token,
'client_id': client_id,
'client_secret': client_secret,
'grant_type': 'refresh_token',
}
headers = {"content-type": "application/x-www-form-urlencoded"}
try:
uri = self.get_uri_oauth(a='token')
data = werkzeug.url_encode(params)
st, res, ask_time = self._do_request(cr, uid, uri, params=data, headers=headers, type='POST', preuri='', context=context)
except urllib2.HTTPError, e:
if e.code == 400: # invalid grant
registry = openerp.modules.registry.RegistryManager.get(request.session.db)
with registry.cursor() as cur:
self.pool['res.users'].write(cur, uid, [uid], {'google_%s_rtoken' % service: False}, context=context)
error_key = simplejson.loads(e.read()).get("error", "nc")
_logger.exception("Bad google request : %s !" % error_key)
error_msg = "Something went wrong during your token generation. Maybe your Authorization Code is invalid or already expired [%s]" % error_key
raise self.pool.get('res.config.settings').get_config_warning(cr, _(error_msg), context=context)
return res
def _do_request(self, cr, uid, uri, params={}, headers={}, type='POST', preuri="https://www.googleapis.com", context=None):
if context is None:
context = {}
""" Return a tuple ('HTTP_CODE', 'HTTP_RESPONSE') """
_logger.debug("Uri: %s - Type : %s - Headers: %s - Params : %s !" % (uri, type, headers, werkzeug.url_encode(params) if type == 'GET' else params))
status = 418
response = ""
ask_time = datetime.now().strftime(DEFAULT_SERVER_DATETIME_FORMAT)
try:
if type.upper() == 'GET' or type.upper() == 'DELETE':
data = werkzeug.url_encode(params)
req = urllib2.Request(preuri + uri + "?" + data)
elif type.upper() == 'POST' or type.upper() == 'PATCH' or type.upper() == 'PUT':
req = urllib2.Request(preuri + uri, params, headers)
else:
raise ('Method not supported [%s] not in [GET, POST, PUT, PATCH or DELETE]!' % (type))
req.get_method = lambda: type.upper()
request = urllib2.urlopen(req, timeout=TIMEOUT)
status = request.getcode()
if int(status) in (204, 404): # Page not found, no response
response = False
else:
content = request.read()
response = simplejson.loads(content)
try:
ask_time = datetime.strptime(request.headers.get('date'), "%a, %d %b %Y %H:%M:%S %Z")
except:
pass
except urllib2.HTTPError, e:
if e.code in (204, 404):
status = e.code
response = ""
else:
_logger.exception("Bad google request : %s !" % e.read())
if e.code in (400, 401, 410):
raise e
raise self.pool.get('res.config.settings').get_config_warning(cr, _("Something went wrong with your request to google"), context=context)
return (status, response, ask_time)
def get_base_url(self, cr, uid, context=None):
return self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url', default='http://www.openerp.com?NoBaseUrl', context=context)
def get_client_id(self, cr, uid, service, context=None):
return self.pool.get('ir.config_parameter').get_param(cr, SUPERUSER_ID, 'google_%s_client_id' % (service,), default=False, context=context)
def get_client_secret(self, cr, uid, service, context=None):
return self.pool.get('ir.config_parameter').get_param(cr, SUPERUSER_ID, 'google_%s_client_secret' % (service,), default=False, context=context)
def get_uri_oauth(self, a=''): # a = optional action
return "https://accounts.google.com/o/oauth2/%s" % (a,)
def get_uri_api(self):
return 'https://www.googleapis.com'

View File

@ -0,0 +1,9 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<record id="config_google_redirect_uri" model="ir.config_parameter">
<field name="key">google_redirect_uri</field>
<field name="value">urn:ietf:wg:oauth:2.0:oob</field>
</record>
</data>
</openerp>

View File

@ -0,0 +1,9 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<record id="config_google_redirect_uri" model="ir.config_parameter">
<field name="key">google_redirect_uri</field>
<field name="value">urn:ietf:wg:oauth:2.0:oob</field>
</record>
</data>
</openerp>

49
google_account/i18n/af.po Normal file
View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-05-18 11:29+0000\n"
"Last-Translator: <>\n"
"Language-Team: Afrikaans (http://www.transifex.com/odoo/odoo-8/language/af/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: af\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Geskep deur"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Geskep op"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Laas Opgedateer deur"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Laas Opgedateer op"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Iets het foutgegaan met jou versoek aan google"

52
google_account/i18n/ar.po Normal file
View File

@ -0,0 +1,52 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
# hoxhe aits <hoxhe0@gmail.com>, 2015
# Mustafa Rawi <mustafa@cubexco.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-09-12 22:29+0000\n"
"Last-Translator: Mustafa Rawi <mustafa@cubexco.com>\n"
"Language-Team: Arabic (http://www.transifex.com/odoo/odoo-8/language/ar/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: ar\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "أُنشئ بواسطة"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "أنشئ في"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "المعرف"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "آخر تحديث بواسطة"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "آخر تحديث في"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "حدث خطأ ما مع طلبك إلى جوجل"

50
google_account/i18n/bg.po Normal file
View File

@ -0,0 +1,50 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# Radina <radis.choice@gmail.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-07-01 12:32+0000\n"
"Last-Translator: Radina <radis.choice@gmail.com>\n"
"Language-Team: Bulgarian (http://www.transifex.com/odoo/odoo-8/language/bg/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: bg\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Създадено от"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Създадено на"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Последно обновено от"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Последно обновено на"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Нещо се обърка с Вашето искане до Google"

49
google_account/i18n/bs.po Normal file
View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-10-11 16:53+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Bosnian (http://www.transifex.com/odoo/odoo-8/language/bs/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: bs\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Kreirao"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Kreirano"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Zadnji ažurirao"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Zadnje ažurirano"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

49
google_account/i18n/ca.po Normal file
View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-11-25 18:54+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Catalan (http://www.transifex.com/odoo/odoo-8/language/ca/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: ca\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Creat per"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Creat el"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Actualitzat per última vegada per"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Actualitzat per última vegada el dia"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Alguna cosa ha fallat amb la seva sol·licitud a google"

49
google_account/i18n/cs.po Normal file
View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-05-27 09:14+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Czech (http://www.transifex.com/projects/p/odoo-8/language/cs/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: cs\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Vytvořil(a)"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Vytvořeno"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Naposled upraveno"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Naposled upraveno"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

49
google_account/i18n/da.po Normal file
View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-05-27 09:14+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Danish (http://www.transifex.com/odoo/odoo-8/language/da/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: da\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Oprettet af"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Oprettet den"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "Id"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Sidst opdateret af"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Sidst opdateret den"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

51
google_account/i18n/de.po Normal file
View File

@ -0,0 +1,51 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
# Mathias Neef <mn@copado.de>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-11-05 15:35+0000\n"
"Last-Translator: Mathias Neef <mn@copado.de>\n"
"Language-Team: German (http://www.transifex.com/odoo/odoo-8/language/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Erstellt von"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Erstellt am"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Zuletzt aktualisiert durch"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Zuletzt aktualisiert am"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Etwas ging schief mit Ihrer Anfrage an Google"

50
google_account/i18n/el.po Normal file
View File

@ -0,0 +1,50 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# Goutoudis Kostas <goutoudis@gmail.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-12-05 19:26+0000\n"
"Last-Translator: Goutoudis Kostas <goutoudis@gmail.com>\n"
"Language-Team: Greek (http://www.transifex.com/odoo/odoo-8/language/el/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: el\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Δημιουργήθηκε από"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Δημιουργήθηκε στις"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "Κωδικός"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Τελευταία Ενημέρωση από"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Τελευταία Ενημέρωση στις"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Κάτι πήγε λάθος με το αίτημα στην Google"

View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-07-17 07:11+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: English (United Kingdom) (http://www.transifex.com/odoo/odoo-8/language/en_GB/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: en_GB\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Created by"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Created on"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Last Updated by"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Last Updated on"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

52
google_account/i18n/es.po Normal file
View File

@ -0,0 +1,52 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# David Perez <david@closemarketing.es>, 2015
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
# Pedro M. Baeza <pedro.baeza@gmail.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-07-17 07:11+0000\n"
"Last-Translator: Pedro M. Baeza <pedro.baeza@gmail.com>\n"
"Language-Team: Spanish (http://www.transifex.com/odoo/odoo-8/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Creado por"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Creado en"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID (identificación)"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Última actualización de"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Última actualización en"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Algo fue mal en la petición a Google"

View File

@ -0,0 +1,50 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# Leonardo Germán Chianea <noamixcontenidos@gmail.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-08-20 21:41+0000\n"
"Last-Translator: Leonardo Germán Chianea <noamixcontenidos@gmail.com>\n"
"Language-Team: Spanish (Argentina) (http://www.transifex.com/odoo/odoo-8/language/es_AR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: es_AR\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Creado por"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Creado en"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Última actualización realizada por"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Última actualización el"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Algo salió mal con su solicitud a google"

View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-05-18 11:29+0000\n"
"Last-Translator: <>\n"
"Language-Team: Spanish (Bolivia) (http://www.transifex.com/odoo/odoo-8/language/es_BO/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: es_BO\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Creado por"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Creado en"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Última actualización de"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Última actualización en"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-05-18 11:29+0000\n"
"Last-Translator: <>\n"
"Language-Team: Spanish (Chile) (http://www.transifex.com/odoo/odoo-8/language/es_CL/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: es_CL\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Creado por"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Creado en"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID (identificación)"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Última actualización de"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Última actualización en"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-10-23 05:10+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Spanish (Colombia) (http://www.transifex.com/odoo/odoo-8/language/es_CO/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: es_CO\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Creado por"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Creado"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Actualizado por"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Actualizado"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Algo salió mal con su petición a Google"

View File

@ -0,0 +1,50 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-07-17 07:11+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Spanish (Costa Rica) (http://www.transifex.com/odoo/odoo-8/language/es_CR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: es_CR\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr ""
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Creado en"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-11-08 17:05+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Spanish (Dominican Republic) (http://www.transifex.com/odoo/odoo-8/language/es_DO/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: es_DO\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Creado por"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Creado en"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID (identificación)"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Última actualización de"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Última actualización en"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Algo fue mal en la petición a Google"

View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-10-14 01:51+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Spanish (Ecuador) (http://www.transifex.com/odoo/odoo-8/language/es_EC/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: es_EC\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Creado por:"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Creado"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Ultima Actualización por"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Actualizado en"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Ha existido un error cuando enviamos el requerimiento a Google"

View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2016-01-18 18:41+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Spanish (Mexico) (http://www.transifex.com/odoo/odoo-8/language/es_MX/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: es_MX\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Creado por"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Creado en"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Ultima actualizacion por"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Ultima actualización realizada"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Algo enviado esta mal con el requerimiento de google"

View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-05-18 11:29+0000\n"
"Last-Translator: <>\n"
"Language-Team: Spanish (Panama) (http://www.transifex.com/odoo/odoo-8/language/es_PA/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: es_PA\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Creado por"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Creado en"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Última actualización de"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Última actualización en"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

View File

@ -0,0 +1,50 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# Luis Miguel Sarabia <lmsarabia@gmail.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-07-21 14:52+0000\n"
"Last-Translator: Luis Miguel Sarabia <lmsarabia@gmail.com>\n"
"Language-Team: Spanish (Peru) (http://www.transifex.com/odoo/odoo-8/language/es_PE/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: es_PE\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Creado por"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Creado en"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Actualizado última vez por"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Ultima Actualización"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Algo ha fallado en su envío a google"

View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-07-17 07:11+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Spanish (Paraguay) (http://www.transifex.com/odoo/odoo-8/language/es_PY/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: es_PY\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr ""
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr ""
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2016-05-15 18:49+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Spanish (Venezuela) (http://www.transifex.com/odoo/odoo-8/language/es_VE/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: es_VE\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Creado por"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Creado en"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Última actualización realizada por"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Ultima actualizacion en"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

49
google_account/i18n/et.po Normal file
View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2016-03-12 14:09+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Estonian (http://www.transifex.com/odoo/odoo-8/language/et/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: et\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Loonud"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Loodud"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Viimati uuendatud"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Viimati uuendatud"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

50
google_account/i18n/eu.po Normal file
View File

@ -0,0 +1,50 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# Oihane Crucelaegui <oihanecruce@gmail.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-10-14 15:10+0000\n"
"Last-Translator: Oihane Crucelaegui <oihanecruce@gmail.com>\n"
"Language-Team: Basque (http://www.transifex.com/odoo/odoo-8/language/eu/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: eu\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Nork sortua"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Noiz sortua"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Nork eguneratua"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Noiz eguneratua"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Zerbait oker joan da googleko zure eskaerarekin"

49
google_account/i18n/fa.po Normal file
View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-07-17 07:11+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Persian (http://www.transifex.com/odoo/odoo-8/language/fa/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: fa\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "ایجاد شده توسط"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "ایجاد شده در"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "شناسه"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "آخرین به روز رسانی توسط"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "آخرین به روز رسانی در"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

51
google_account/i18n/fi.po Normal file
View File

@ -0,0 +1,51 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
# Kari Lindgren <kari.lindgren@emsystems.fi>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-07-22 16:16+0000\n"
"Last-Translator: Kari Lindgren <kari.lindgren@emsystems.fi>\n"
"Language-Team: Finnish (http://www.transifex.com/odoo/odoo-8/language/fi/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: fi\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Luonut"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Luotu"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Viimeksi päivittänyt"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Viimeksi päivitetty"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Jotakin meni vikaan google pyynnössäsi"

51
google_account/i18n/fr.po Normal file
View File

@ -0,0 +1,51 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
# Simon CARRIER <carrier.sim@gmail.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-09-07 09:22+0000\n"
"Last-Translator: Florian Hatat\n"
"Language-Team: French (http://www.transifex.com/odoo/odoo-8/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Créé par"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Créé le"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Dernière modification par"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Dernière mise à jour le"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Quelque chose ne s'est pas passé comme prévu avec votre demande à Google"

View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-05-18 11:29+0000\n"
"Last-Translator: <>\n"
"Language-Team: French (Belgium) (http://www.transifex.com/odoo/odoo-8/language/fr_BE/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: fr_BE\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Créé par"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Créé le"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Derniere fois mis à jour par"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Dernière mis à jour le"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-10-09 05:52+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: French (Canada) (http://www.transifex.com/odoo/odoo-8/language/fr_CA/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: fr_CA\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Créé par"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Créé le"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "Identifiant"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Dernière mise à jour par"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Dernière mise à jour le"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Quelque chose se passait mal avec votre demande chez Google"

49
google_account/i18n/gl.po Normal file
View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-07-17 07:11+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Galician (http://www.transifex.com/odoo/odoo-8/language/gl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: gl\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr ""
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Creado o"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

View File

@ -0,0 +1,48 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-01-21 14:08+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr ""
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr ""
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr ""
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

View File

@ -0,0 +1,106 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * google_base_account
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0alpha\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2012-12-21 17:05+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: google_base_account
#: field:res.users,gmail_user:0
msgid "Username"
msgstr ""
#. module: google_base_account
#: model:ir.actions.act_window,name:google_base_account.act_google_login_form
msgid "Google Login"
msgstr ""
#. module: google_base_account
#: code:addons/google_base_account/wizard/google_login.py:29
#, python-format
msgid "Google Contacts Import Error!"
msgstr ""
#. module: google_base_account
#: model:ir.model,name:google_base_account.model_res_users
msgid "Users"
msgstr ""
#. module: google_base_account
#: view:google.login:0
msgid "or"
msgstr ""
#. module: google_base_account
#: view:google.login:0
msgid "Google login"
msgstr ""
#. module: google_base_account
#: field:google.login,password:0
msgid "Google Password"
msgstr ""
#. module: google_base_account
#: code:addons/google_base_account/wizard/google_login.py:77
#, python-format
msgid "Error!"
msgstr ""
#. module: google_base_account
#: view:res.users:0
msgid "Google Account"
msgstr ""
#. module: google_base_account
#: view:res.users:0
msgid "Synchronization"
msgstr ""
#. module: google_base_account
#: code:addons/google_base_account/wizard/google_login.py:77
#, python-format
msgid "Authentication failed. Check the user and password."
msgstr ""
#. module: google_base_account
#: code:addons/google_base_account/wizard/google_login.py:29
#, python-format
msgid "Please install gdata-python-client from http://code.google.com/p/gdata-python-client/downloads/list"
msgstr ""
#. module: google_base_account
#: model:ir.model,name:google_base_account.model_google_login
msgid "Google Contact"
msgstr ""
#. module: google_base_account
#: view:google.login:0
msgid "Cancel"
msgstr ""
#. module: google_base_account
#: field:google.login,user:0
msgid "Google Username"
msgstr ""
#. module: google_base_account
#: field:res.users,gmail_password:0
msgid "Password"
msgstr ""
#. module: google_base_account
#: view:google.login:0
msgid "_Login"
msgstr ""

49
google_account/i18n/gu.po Normal file
View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-07-17 07:11+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Gujarati (http://www.transifex.com/odoo/odoo-8/language/gu/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: gu\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr ""
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr ""
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ઓળખ"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

49
google_account/i18n/he.po Normal file
View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-07-17 07:11+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Hebrew (http://www.transifex.com/odoo/odoo-8/language/he/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: he\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "נוצר על ידי"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "נוצר ב-"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "מזהה"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "עודכן לאחרונה על ידי"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "עודכן לאחרונה על"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

50
google_account/i18n/hi.po Normal file
View File

@ -0,0 +1,50 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# Lata Verma <lataverma@gmail.com>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2016-09-02 17:51+0000\n"
"Last-Translator: Lata Verma <lataverma@gmail.com>\n"
"Language-Team: Hindi (http://www.transifex.com/odoo/odoo-8/language/hi/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: hi\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "निर्माण कर्ता"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "निर्माण तिथि"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "पहचान"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "अंतिम सुधारकर्ता"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "अंतिम सुधार की तिथि"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "गूगल करने के लिए आपके अनुरोध के साथ कुछ गलत हुआ।"

50
google_account/i18n/hr.po Normal file
View File

@ -0,0 +1,50 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-10-15 18:04+0000\n"
"Last-Translator: Davor Bojkić <bole@dajmi5.com>\n"
"Language-Team: Croatian (http://www.transifex.com/odoo/odoo-8/language/hr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: hr\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Kreirao"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Vrijeme kreiranja"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Promijenio"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Vrijeme promjene"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Nešto je pogrešno u vašem zahtjevu prema Google-u"

52
google_account/i18n/hu.po Normal file
View File

@ -0,0 +1,52 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
# krnkris, 2015
# Tóth Csaba <i3rendszerhaz@gmail.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-07-17 07:11+0000\n"
"Last-Translator: krnkris\n"
"Language-Team: Hungarian (http://www.transifex.com/odoo/odoo-8/language/hu/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: hu\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Készítette"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Létrehozás dátuma"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Utoljára frissítette"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Utoljára frissítve"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Valami hiba lépett fel a google felé feladott kérés közben"

50
google_account/i18n/id.po Normal file
View File

@ -0,0 +1,50 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# oon arfiandwi <oon.arfiandwi@gmail.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-12-18 06:51+0000\n"
"Last-Translator: oon arfiandwi <oon.arfiandwi@gmail.com>\n"
"Language-Team: Indonesian (http://www.transifex.com/odoo/odoo-8/language/id/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: id\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Dibuat oleh"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Dibuat pada"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Diperbaharui oleh"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Diperbaharui pada"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Terjadi kesalahan pada permintaan layanan ke google"

49
google_account/i18n/is.po Normal file
View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-07-17 07:11+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Icelandic (http://www.transifex.com/odoo/odoo-8/language/is/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: is\n"
"Plural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Búið til af"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr ""
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "Auðkenni"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

50
google_account/i18n/it.po Normal file
View File

@ -0,0 +1,50 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2016-01-04 22:33+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Italian (http://www.transifex.com/odoo/odoo-8/language/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Creato da"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Creato il"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Ultima modifica di"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Ultima modifica il"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Qualcosa è andata male con la tua richiesta a google"

52
google_account/i18n/ja.po Normal file
View File

@ -0,0 +1,52 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
# Manami Hashi <manami@roomsfor.hk>, 2015
# Yoshi Tashiro <tashiro@roomsfor.hk>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-10-23 15:32+0000\n"
"Last-Translator: Yoshi Tashiro <tashiro@roomsfor.hk>\n"
"Language-Team: Japanese (http://www.transifex.com/odoo/odoo-8/language/ja/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: ja\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "作成者"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "作成日"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "最終更新者"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "最終更新日"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Googleへのリクエストに異常があるようです"

49
google_account/i18n/ka.po Normal file
View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-11-04 12:01+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Georgian (http://www.transifex.com/odoo/odoo-8/language/ka/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: ka\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "შემქმნელი"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "შექმნის თარიღი"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "იდენტიფიკატორი"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "ბოლოს განაახლა"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "ბოლოს განახლებულია"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

View File

@ -0,0 +1,51 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# Belkacem Mohammed <belkacem77@gmail.com>, 2015
# FIRST AUTHOR <EMAIL@ADDRESS>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-07-17 07:11+0000\n"
"Last-Translator: Belkacem Mohammed <belkacem77@gmail.com>\n"
"Language-Team: Kabyle (http://www.transifex.com/odoo/odoo-8/language/kab/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: kab\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Yerna-t"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Yerna di"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "Asulay"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Asnifel aneggaru sɣur"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Aleqqem aneggaru di"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

49
google_account/i18n/ko.po Normal file
View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-08-17 07:49+0000\n"
"Last-Translator: choijaeho <hwangtog@gmail.com>\n"
"Language-Team: Korean (http://www.transifex.com/odoo/odoo-8/language/ko/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: ko\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "작성자"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "작성일"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "최근 갱신한 사람"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "최근 갱신 날짜"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "귀하가 Google에 요청한 것에 무언가 문제가 발생했습니다"

49
google_account/i18n/ln.po Normal file
View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-07-17 07:11+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Lingala (http://www.transifex.com/odoo/odoo-8/language/ln/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: ln\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr ""
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr ""
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

49
google_account/i18n/lt.po Normal file
View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-07-17 07:11+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Lithuanian (http://www.transifex.com/odoo/odoo-8/language/lt/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: lt\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Sukūrė"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Sukurta"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Paskutini kartą atnaujino"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Paskutinį kartą atnaujinta"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

49
google_account/i18n/lv.po Normal file
View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-07-17 07:11+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Latvian (http://www.transifex.com/odoo/odoo-8/language/lv/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: lv\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Izveidoja"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Izveidots"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Pēdējo reizi atjaunoja"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Pēdējās izmaiņas"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

51
google_account/i18n/mk.po Normal file
View File

@ -0,0 +1,51 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# Aleksandar Vangelovski <aleksandarv@hbee.eu>, 2015
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-09-22 11:46+0000\n"
"Last-Translator: Aleksandar Vangelovski <aleksandarv@hbee.eu>\n"
"Language-Team: Macedonian (http://www.transifex.com/odoo/odoo-8/language/mk/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: mk\n"
"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Креирано од"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Креирано на"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Последно ажурирање од"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Последно ажурирање на"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Се извинуваме но има некој проблем со вашето барање до google"

View File

@ -0,0 +1,50 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# Shoble Thomas <mail2shobz@gmail.com>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2016-04-22 12:17+0000\n"
"Last-Translator: Shoble Thomas <mail2shobz@gmail.com>\n"
"Language-Team: Malayalam (India) (http://www.transifex.com/odoo/odoo-8/language/ml_IN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: ml_IN\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "നിർമിച്ചത്"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "നിർമിച്ച ദിവസം"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ഐ ഡി"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "അവസാനം അപ്ഡേറ്റ് ചെയ്തത്"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "അവസാനം അപ്ഡേറ്റ് ചെയ്ത ദിവസം"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "താങ്കൾ ഗൂഗിൾ ലിൽ കൊടുത്ത അപേക്ഷ യിൽ എന്തോ കുഴപ്പം സംഭവിച്ചു "

50
google_account/i18n/mn.po Normal file
View File

@ -0,0 +1,50 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-07-17 07:11+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Mongolian (http://www.transifex.com/odoo/odoo-8/language/mn/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: mn\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Үүсгэгч"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Үүсгэсэн огноо"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Сүүлийн засвар хийсэн"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Сүүлийн засвар хийсэн огноо"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

50
google_account/i18n/nb.po Normal file
View File

@ -0,0 +1,50 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-07-17 07:11+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Norwegian Bokmål (http://www.transifex.com/odoo/odoo-8/language/nb/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: nb\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Opprettet av"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Opprettet"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Sist oppdatert av"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Sist oppdatert"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

51
google_account/i18n/nl.po Normal file
View File

@ -0,0 +1,51 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
# Yenthe Van Ginneken <yenthespam@gmail.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-09-22 09:50+0000\n"
"Last-Translator: Yenthe Van Ginneken <yenthespam@gmail.com>\n"
"Language-Team: Dutch (http://www.transifex.com/odoo/odoo-8/language/nl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: nl\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Aangemaakt door"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Aangemaakt op"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Laatst aangepast door"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Laatst aangepast op"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Er ging iets fout tijdens het verbinden met Google"

View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-07-17 07:11+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Dutch (Belgium) (http://www.transifex.com/odoo/odoo-8/language/nl_BE/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: nl_BE\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Gemaakt door"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Gemaakt op"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Laatst bijgewerkt door"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Laatst bijgewerkt op"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

50
google_account/i18n/pl.po Normal file
View File

@ -0,0 +1,50 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-10-08 14:15+0000\n"
"Last-Translator: Dariusz Żbikowski <darek@krokus.com.pl>\n"
"Language-Team: Polish (http://www.transifex.com/odoo/odoo-8/language/pl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: pl\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Utworzone przez"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Data utworzenia"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Ostatnio modyfikowane przez"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Data ostatniej modyfikacji"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Coś poszło nie tak z twoim zapytaniem do Google"

50
google_account/i18n/pt.po Normal file
View File

@ -0,0 +1,50 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-11-25 14:30+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Portuguese (http://www.transifex.com/odoo/odoo-8/language/pt/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: pt\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Criada por"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Fundado em"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Últimamente Actualizado por"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Última Actualização em"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Aconteceu algo errado com o seu pedido à Google"

View File

@ -0,0 +1,51 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
# Mateus Cerqueira Lopes <mateus1@gmail.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-07-17 07:11+0000\n"
"Last-Translator: danimaribeiro <danimaribeiro@gmail.com>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/odoo/odoo-8/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: pt_BR\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Criado por"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Criado em"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Última atualização por"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Última atualização em"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Algo deu errado com o seu pedido para o Google"

50
google_account/i18n/ro.po Normal file
View File

@ -0,0 +1,50 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-07-17 18:23+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Romanian (http://www.transifex.com/odoo/odoo-8/language/ro/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: ro\n"
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Creat de"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Creat în"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Ultima actualizare făcută de"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Ultima actualizare în"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

51
google_account/i18n/ru.po Normal file
View File

@ -0,0 +1,51 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# Eduard, 2015
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-11-13 19:44+0000\n"
"Last-Translator: Eduard\n"
"Language-Team: Russian (http://www.transifex.com/odoo/odoo-8/language/ru/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: ru\n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Создано"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Создан"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Последний раз обновлено"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Последний раз обновлено"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Что-то пошло не так с вашим запросом к google"

49
google_account/i18n/sk.po Normal file
View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-10-08 05:16+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Slovak (http://www.transifex.com/odoo/odoo-8/language/sk/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: sk\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Vytvoril"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Vytvorené"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Naposledy upravoval"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Naposledy upravované"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Niečo sa pokazilo na vašej požiadavke na google"

51
google_account/i18n/sl.po Normal file
View File

@ -0,0 +1,51 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
# Matjaž Mozetič <m.mozetic@matmoz.si>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-07-17 07:11+0000\n"
"Last-Translator: Matjaž Mozetič <m.mozetic@matmoz.si>\n"
"Language-Team: Slovenian (http://www.transifex.com/odoo/odoo-8/language/sl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: sl\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Ustvaril"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Ustvarjeno"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Zadnji posodobil"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Zadnjič posodobljeno"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Pri vašem zahtevku google je prišlo do težav."

49
google_account/i18n/sq.po Normal file
View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-05-18 11:29+0000\n"
"Last-Translator: <>\n"
"Language-Team: Albanian (http://www.transifex.com/odoo/odoo-8/language/sq/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: sq\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Krijuar nga"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Krijuar me"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Modifikuar per here te fundit nga"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Modifikuar per here te fundit me"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

49
google_account/i18n/sr.po Normal file
View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-07-17 07:11+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Serbian (http://www.transifex.com/odoo/odoo-8/language/sr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: sr\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr ""
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Kreiran"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

View File

@ -0,0 +1,50 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-10-31 16:30+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Serbian (Latin) (http://www.transifex.com/odoo/odoo-8/language/sr@latin/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: sr@latin\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Kreirao"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Kreiran"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Zadnja izmjena"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Zadnja izmjena"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

51
google_account/i18n/sv.po Normal file
View File

@ -0,0 +1,51 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# Anders Wallenquist <anders.wallenquist@vertel.se>, 2015
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-12-11 13:25+0000\n"
"Last-Translator: Anders Wallenquist <anders.wallenquist@vertel.se>\n"
"Language-Team: Swedish (http://www.transifex.com/odoo/odoo-8/language/sv/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: sv\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Skapad av"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Skapad den"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Senast uppdaterad av"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Senast uppdaterad"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Något gick fel med Google-anropet"

49
google_account/i18n/ta.po Normal file
View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-05-18 11:29+0000\n"
"Last-Translator: <>\n"
"Language-Team: Tamil (http://www.transifex.com/odoo/odoo-8/language/ta/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: ta\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "உருவாக்கியவர்"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "உருவாக்கப்பட்ட \nதேதி"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "கடைசியாக புதுப்பிக்கப்பட்டது"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "கடைசியாக புதுப்பிக்கப்பட்டது"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "உங்கள் கோரிக்கை Google க்கு கொண்டு ஏதோ தவறு நடந்துவிட்டது"

50
google_account/i18n/th.po Normal file
View File

@ -0,0 +1,50 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-07-17 07:11+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Thai (http://www.transifex.com/odoo/odoo-8/language/th/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: th\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "จัดทำโดย"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "สร้างเมื่อ"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "อัพเดทครั้งสุดท้ายโดย"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "อัพเดทครั้งสุดท้ายเมื่อ"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

50
google_account/i18n/tr.po Normal file
View File

@ -0,0 +1,50 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-07-17 07:11+0000\n"
"Last-Translator: Murat Kaplan <muratk@projetgrup.com>\n"
"Language-Team: Turkish (http://www.transifex.com/odoo/odoo-8/language/tr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: tr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Oluşturan"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Oluşturulma"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Son Güncelleyen"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Son Güncelleme"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Google da yaptığınız isteğinizle ilgili bir şeyler yanlış gitti"

50
google_account/i18n/uk.po Normal file
View File

@ -0,0 +1,50 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# Bogdan, 2015
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-08-22 14:18+0000\n"
"Last-Translator: Bogdan\n"
"Language-Team: Ukrainian (http://www.transifex.com/odoo/odoo-8/language/uk/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: uk\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Створив"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Створено"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Востаннє відредаговано"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Дата останньої зміни"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "Щось пішло не так з вашим запитом в google"

49
google_account/i18n/vi.po Normal file
View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2016-02-23 04:22+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Vietnamese (http://www.transifex.com/odoo/odoo-8/language/vi/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: vi\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "Tạo bởi"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "Tạo trên"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "Cập nhật lần cuối bởi"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "Cập nhật lần cuối"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

View File

@ -0,0 +1,51 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012,2014
# mrshelly <mrshelly@hotmail.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-08-07 12:18+0000\n"
"Last-Translator: mrshelly <mrshelly@hotmail.com>\n"
"Language-Team: Chinese (China) (http://www.transifex.com/odoo/odoo-8/language/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: zh_CN\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "创建人"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "创建"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "标识"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "最后更新"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "最后一次更新"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr "你对谷歌的访问出错了"

View File

@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * google_account
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-21 14:08+0000\n"
"PO-Revision-Date: 2015-12-04 06:06+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Chinese (Taiwan) (http://www.transifex.com/odoo/odoo-8/language/zh_TW/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: zh_TW\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#. module: google_account
#: field:google.service,create_uid:0
msgid "Created by"
msgstr "建立者"
#. module: google_account
#: field:google.service,create_date:0
msgid "Created on"
msgstr "建立於"
#. module: google_account
#: field:google.service,id:0
msgid "ID"
msgstr "ID"
#. module: google_account
#: field:google.service,write_uid:0
msgid "Last Updated by"
msgstr "最後更新:"
#. module: google_account
#: field:google.service,write_date:0
msgid "Last Updated on"
msgstr "最後更新於"
#. module: google_account
#: code:addons/google_account/google_account.py:168
#, python-format
msgid "Something went wrong with your request to google"
msgstr ""

112
mail_tracking/README.rst Normal file
View File

@ -0,0 +1,112 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
=============
Mail tracking
=============
This module shows email notification tracking status for any messages in
mail thread (chatter). Each notified partner will have an intuitive icon just
right to his name.
Installation
============
If you're using a multi-database installation (with or without dbfilter option)
where /web/databse/selector returns a list of more than one database, then
you need to add ``mail_tracking`` addon to wide load addons list
(by default, only ``web`` addon), setting ``--load`` option.
For example, ``--load=web,mail_tracking``
Usage
=====
When user sends a message in mail_thread (chatter), for instance in partner
form, then an email tracking is created for each email notification. Then a
status icon will appear just right to name of notified partner.
These are all available status icons:
.. |sent| image:: mail_tracking/static/src/img/sent.png
:width: 10px
.. |delivered| image:: mail_tracking/static/src/img/delivered.png
:width: 15px
.. |opened| image:: mail_tracking/static/src/img/opened.png
:width: 15px
.. |error| image:: mail_tracking/static/src/img/error.png
:width: 10px
.. |waiting| image:: mail_tracking/static/src/img/waiting.png
:width: 10px
.. |unknown| image:: mail_tracking/static/src/img/unknown.png
:width: 10px
|unknown| **Unknown**: No email tracking info available. Maybe this notified partner has 'Receive Inbox Notifications by Email' == 'Never'
|waiting| **Waiting**: Waiting to be sent
|error| **Error**: Error while sending
|sent| **Sent**: Sent to SMTP server configured
|delivered| **Delivered**: Delivered to final MX server
|opened| **Opened**: Opened by partner
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/205/8.0
If you want to see all tracking emails and events you can go to
* Settings > Technical > Email > Tracking emails
* Settings > Technical > Email > Tracking events
Bug Tracker
===========
Bugs are tracked on `GitHub Issues
<https://github.com/OCA/social/issues>`_. In case of trouble, please
check there if your issue has already been reported. If you spotted it first,
help us smashing it by providing a detailed and welcomed feedback.
Credits
=======
Images
------
* Odoo Community Association: `Icon <https://github.com/OCA/maintainer-tools/blob/master/template/module/static/description/icon.svg>`_.
* Thanks to `LlubNek <https://openclipart.org/user-detail/LlubNek>`_ and `Openclipart
<https://openclipart.org>`_ for `the icon
<https://openclipart.org/detail/19342/open-envelope>`_.
Contributors
------------
* Pedro M. Baeza <pedro.baeza@tecnativa.com>
* Antonio Espinosa <antonio.espinosa@tecnativa.com>
Maintainer
----------
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
This module is maintained by the OCA.
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
To contribute to this module, please visit https://odoo-community.org.

View File

@ -0,0 +1,8 @@
# -*- coding: utf-8 -*-
# © 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
# flake8: noqa
from . import models
from . import controllers
from .hooks import pre_init_hook

BIN
mail_tracking/__init__.pyc Normal file

Binary file not shown.

View File

@ -0,0 +1,32 @@
# -*- coding: utf-8 -*-
# © 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
"name": "Email tracking",
"summary": "Email tracking system for all mails sent",
"version": "8.0.2.0.2",
"category": "Social Network",
"website": "http://www.tecnativa.com",
"author": "Tecnativa, "
"Odoo Community Association (OCA)",
"license": "AGPL-3",
"application": False,
"installable": True,
"depends": [
"decimal_precision",
"mail",
],
"data": [
"data/tracking_data.xml",
"security/ir.model.access.csv",
"views/assets.xml",
"views/mail_tracking_email_view.xml",
"views/mail_tracking_event_view.xml",
"views/res_partner_view.xml",
],
"qweb": [
"static/src/xml/mail_tracking.xml",
],
"pre_init_hook": "pre_init_hook",
}

View File

@ -0,0 +1,6 @@
# -*- coding: utf-8 -*-
# © 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
# flake8: noqa
from . import main

Binary file not shown.

View File

@ -0,0 +1,86 @@
# -*- coding: utf-8 -*-
# © 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import werkzeug
from psycopg2 import OperationalError
from openerp import api, http, registry, SUPERUSER_ID
import logging
_logger = logging.getLogger(__name__)
BLANK = 'R0lGODlhAQABAIAAANvf7wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='
def _env_get(db):
reg = False
try:
reg = registry(db)
except OperationalError:
_logger.warning("Selected BD '%s' not found", db)
except: # pragma: no cover
_logger.warning("Selected BD '%s' connection error", db)
if reg:
return api.Environment(reg.cursor(), SUPERUSER_ID, {})
return False
class MailTrackingController(http.Controller):
def _request_metadata(self):
request = http.request.httprequest
return {
'ip': request.remote_addr or False,
'user_agent': request.user_agent or False,
'os_family': request.user_agent.platform or False,
'ua_family': request.user_agent.browser or False,
}
@http.route('/mail/tracking/all/<string:db>',
type='http', auth='none')
def mail_tracking_all(self, db, **kw):
env = _env_get(db)
if not env:
return 'NOT FOUND'
metadata = self._request_metadata()
response = env['mail.tracking.email'].event_process(
http.request, kw, metadata)
env.cr.commit()
env.cr.close()
return response
@http.route('/mail/tracking/event/<string:db>/<string:event_type>',
type='http', auth='none')
def mail_tracking_event(self, db, event_type, **kw):
env = _env_get(db)
if not env:
return 'NOT FOUND'
metadata = self._request_metadata()
response = env['mail.tracking.email'].event_process(
http.request, kw, metadata, event_type=event_type)
env.cr.commit()
env.cr.close()
return response
@http.route('/mail/tracking/open/<string:db>'
'/<int:tracking_email_id>/blank.gif',
type='http', auth='none')
def mail_tracking_open(self, db, tracking_email_id, **kw):
env = _env_get(db)
if env:
tracking_email = env['mail.tracking.email'].search([
('id', '=', tracking_email_id),
])
if tracking_email:
metadata = self._request_metadata()
tracking_email.event_create('open', metadata)
else:
_logger.warning(
"MailTracking email '%s' not found", tracking_email_id)
env.cr.commit()
env.cr.close()
# Always return GIF blank image
response = werkzeug.wrappers.Response()
response.mimetype = 'image/gif'
response.data = BLANK.decode('base64')
return response

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More