[MERGE] Sync with trunk
bzr revid: tde@openerp.com-20131220171818-obp76209n322b9ql
This commit is contained in:
commit
c3c97ea3df
|
@ -7,14 +7,14 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
|
||||
"PO-Revision-Date: 2013-07-02 06:32+0000\n"
|
||||
"PO-Revision-Date: 2013-12-19 08:06+0000\n"
|
||||
"Last-Translator: Chertykov Denis <chertykov@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-09-12 05:32+0000\n"
|
||||
"X-Generator: Launchpad (build 16761)\n"
|
||||
"X-Launchpad-Export-Date: 2013-12-20 05:11+0000\n"
|
||||
"X-Generator: Launchpad (build 16872)\n"
|
||||
|
||||
#. module: account
|
||||
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0
|
||||
|
@ -184,6 +184,13 @@ msgid ""
|
|||
" </p>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"<p class=\"oe_view_nocontent_create\">\n"
|
||||
" Щелкните, чтобы добавить отчетный период.\n"
|
||||
" </p><p>\n"
|
||||
" Отчетный период как правило - месяц или квартал .\n"
|
||||
" Обычно он соответствует периодам налоговой декларации.\n"
|
||||
" </p>\n"
|
||||
" "
|
||||
|
||||
#. module: account
|
||||
#: model:ir.actions.act_window,name:account.action_view_created_invoice_dashboard
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
<field name="journal"/>
|
||||
<field name="bank_id" domain="[('partner_id','=',partner_id)]" />
|
||||
<field name="company_id" widget='selection' groups="base.group_multi_company" on_change="onchange_company_id(company_id)"/>
|
||||
<field name="partner_id" widget='selection' invisible="1"/>
|
||||
<field name="partner_id" invisible="1"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
|
|
|
@ -31,7 +31,7 @@ class report_document_user(osv.osv):
|
|||
'name': fields.char('Year', size=64,readonly=True),
|
||||
'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'),
|
||||
('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month',readonly=True),
|
||||
'user_id':fields.integer('Owner', readonly=True),
|
||||
'user_id': fields.many2one('res.users', 'Owner', readonly=True),
|
||||
'user': fields.related('user_id', 'name', type='char', size=64, readonly=True),
|
||||
'directory': fields.char('Directory',size=64,readonly=True),
|
||||
'datas_fname': fields.char('File Name',size=64,readonly=True),
|
||||
|
|
|
@ -413,13 +413,12 @@ class email_template(osv.osv):
|
|||
assert values.get('email_from'), 'email_from is missing or empty after template rendering, send_mail() cannot proceed'
|
||||
|
||||
# process partner_to field that is a comma separated list of partner_ids -> recipient_ids
|
||||
# TDENOTE: should probably be done in saas / 7.0, FIXME
|
||||
values['recipient_ids'] = []
|
||||
partner_to = values.pop('partner_to', '')
|
||||
if partner_to:
|
||||
for partner_id in partner_to.split(','):
|
||||
if partner_id: # placeholders could generate '', 3, 2 due to some empty field values
|
||||
values['recipient_ids'].append((4, int(partner_id)))
|
||||
# placeholders could generate '', 3, 2 due to some empty field values
|
||||
tpl_partner_ids = [pid for pid in partner_to.split(',') if pid]
|
||||
values['recipient_ids'] += [(4, pid) for pid in self.pool['res.partner'].exists(cr, SUPERUSER_ID, tpl_partner_ids, context=context)]
|
||||
|
||||
attachment_ids = values.pop('attachment_ids', [])
|
||||
attachments = values.pop('attachments', [])
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
|
||||
import base64
|
||||
from openerp.addons.mail.tests.common import TestMail
|
||||
from openerp.tools import mute_logger
|
||||
|
||||
|
||||
class test_message_compose(TestMail):
|
||||
|
@ -200,3 +201,44 @@ class test_message_compose(TestMail):
|
|||
# Generate messsage with default email and partner on template
|
||||
mail_value = mail_compose.generate_email_for_composer(cr, uid, email_template_id, uid)
|
||||
self.assertEqual(set(mail_value['partner_ids']), set(send_to), 'mail.message partner_ids list created by template is incorrect')
|
||||
|
||||
@mute_logger('openerp.osv.orm', 'openerp.osv.orm')
|
||||
def test_10_email_templating(self):
|
||||
""" Tests designed for the mail.compose.message wizard updated by email_template. """
|
||||
cr, uid, context = self.cr, self.uid, {}
|
||||
|
||||
# create the email.template on mail.group model
|
||||
group_model_id = self.registry('ir.model').search(cr, uid, [('model', '=', 'mail.group')])[0]
|
||||
email_template = self.registry('email.template')
|
||||
email_template_id = email_template.create(cr, uid, {
|
||||
'model_id': group_model_id,
|
||||
'name': 'Pigs Template',
|
||||
'email_from': 'Raoul Grosbedon <raoul@example.com>',
|
||||
'subject': '${object.name}',
|
||||
'body_html': '${object.description}',
|
||||
'user_signature': True,
|
||||
'email_to': 'b@b.b c@c.c',
|
||||
'email_cc': 'd@d.d',
|
||||
'partner_to': '${user.partner_id.id},%s,%s,-1' % (self.user_raoul.partner_id.id, self.user_bert.partner_id.id)
|
||||
})
|
||||
|
||||
# not force send: email_recipients is not taken into account
|
||||
msg_id = email_template.send_mail(cr, uid, email_template_id, self.group_pigs_id, context=context)
|
||||
mail = self.mail_mail.browse(cr, uid, msg_id, context=context)
|
||||
self.assertEqual(mail.subject, 'Pigs', 'email_template: send_mail: wrong subject')
|
||||
self.assertEqual(mail.email_to, 'b@b.b c@c.c', 'email_template: send_mail: wrong email_to')
|
||||
self.assertEqual(mail.email_cc, 'd@d.d', 'email_template: send_mail: wrong email_cc')
|
||||
self.assertEqual(
|
||||
set([partner.id for partner in mail.recipient_ids]),
|
||||
set((self.partner_admin_id, self.user_raoul.partner_id.id, self.user_bert.partner_id.id)),
|
||||
'email_template: send_mail: wrong management of partner_to')
|
||||
|
||||
# force send: take email_recipients into account
|
||||
email_template.send_mail(cr, uid, email_template_id, self.group_pigs_id, force_send=True, context=context)
|
||||
sent_emails = self._build_email_kwargs_list
|
||||
email_to_lst = [
|
||||
['b@b.b', 'c@c.c'], ['"Followers of Pigs" <admin@example.com>'],
|
||||
['"Followers of Pigs" <raoul@raoul.fr>'], ['"Followers of Pigs" <bert@bert.fr>']]
|
||||
self.assertEqual(len(sent_emails), 4, 'email_template: send_mail: 3 valid email recipients + email_to -> should send 4 emails')
|
||||
for email in sent_emails:
|
||||
self.assertIn(email['email_to'], email_to_lst, 'email_template: send_mail: wrong email_recipients')
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
from openerp import tools
|
||||
from openerp import tools, SUPERUSER_ID
|
||||
from openerp.osv import osv, fields
|
||||
|
||||
|
||||
|
@ -143,9 +143,9 @@ class mail_compose_message(osv.TransientModel):
|
|||
partner_ids.append(partner_id)
|
||||
partner_to = rendered_values.pop('partner_to', '')
|
||||
if partner_to:
|
||||
for partner_id in partner_to.split(','):
|
||||
if partner_id: # placeholders could generate '', 3, 2 due to some empty field values
|
||||
partner_ids.append(int(partner_id))
|
||||
# placeholders could generate '', 3, 2 due to some empty field values
|
||||
tpl_partner_ids = [pid for pid in partner_to.split(',') if pid]
|
||||
partner_ids += self.pool['res.partner'].exists(cr, SUPERUSER_ID, tpl_partner_ids, context=context)
|
||||
return partner_ids
|
||||
|
||||
def generate_email_for_composer_batch(self, cr, uid, template_id, res_ids, context=None):
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -96,7 +96,7 @@ class report_custom(report_rml):
|
|||
res=cr.fetchone()[0]
|
||||
date_xml=[]
|
||||
date_today=time.strftime('%Y-%m-%d %H:%M:%S')
|
||||
date_xml +=['<res name="%s" today="%s" />' % (res,date_today)]
|
||||
date_xml +=['<res name="%s" today="%s" />' % (to_xml(res),date_today)]
|
||||
|
||||
cr.execute("SELECT id, name, color_name FROM hr_holidays_status ORDER BY id")
|
||||
legend=cr.fetchall()
|
||||
|
@ -128,7 +128,7 @@ class report_custom(report_rml):
|
|||
# date_xml=[]
|
||||
for l in range(0,len(legend)):
|
||||
date_xml += ['<legend row="%d" id="%d" name="%s" color="%s" />' % (l+1,legend[l][0],_(legend[l][1]),legend[l][2])]
|
||||
date_xml += ['<date month="%s" year="%d" />' % (som.strftime('%B'), som.year),'<days>']
|
||||
date_xml += ['<date month="%s" year="%d" />' % (ustr(som.strftime('%B')), som.year),'<days>']
|
||||
|
||||
cell=1
|
||||
if day_diff.days>=30:
|
||||
|
|
|
@ -106,7 +106,7 @@ class report_custom(report_rml):
|
|||
<date>%s</date>
|
||||
<company>%s</company>
|
||||
</header>
|
||||
''' % (str(rml_obj.formatLang(time.strftime("%Y-%m-%d"),date=True))+' ' + str(time.strftime("%H:%M")),registry['res.users'].browse(cr,uid,uid).company_id.name)
|
||||
''' % (str(rml_obj.formatLang(time.strftime("%Y-%m-%d"),date=True))+' ' + str(time.strftime("%H:%M")),toxml(registry['res.users'].browse(cr,uid,uid).company_id.name))
|
||||
|
||||
xml='''<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<report>
|
||||
|
|
|
@ -201,7 +201,7 @@ class mail_message(osv.Model):
|
|||
|
||||
def _get_default_from(self, cr, uid, context=None):
|
||||
this = self.pool.get('res.users').browse(cr, SUPERUSER_ID, uid, context=context)
|
||||
if this.alias_domain:
|
||||
if this.alias_name and this.alias_domain:
|
||||
return '%s <%s@%s>' % (this.name, this.alias_name, this.alias_domain)
|
||||
elif this.email:
|
||||
return '%s <%s>' % (this.name, this.email)
|
||||
|
|
|
@ -117,6 +117,7 @@ class MailMassMailingCreate(osv.TransientModel):
|
|||
'default_use_mass_mailing_campaign': True,
|
||||
'default_use_active_domain': True,
|
||||
'default_model': wizard.model_id.model,
|
||||
'default_res_id': False,
|
||||
'default_active_domain': wizard.domain,
|
||||
'default_mass_mailing_campaign_id': wizard.mass_mailing_campaign_id.id,
|
||||
'default_mass_mailing_id': wizard.mass_mailing_id.id,
|
||||
|
|
|
@ -75,6 +75,7 @@
|
|||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
<field name="context">{'default_mass_mailing_campaign_id': active_id}</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
|
|
|
@ -84,9 +84,10 @@ class note_note(osv.osv):
|
|||
return ids and ids[0] or False
|
||||
|
||||
def _set_stage_per_user(self, cr, uid, id, name, value, args=None, context=None):
|
||||
note = self.browse(cr, uid, id, context=context)
|
||||
if not value: return False
|
||||
stage_ids = [value] + [stage.id for stage in note.stage_ids if stage.user_id.id != uid ]
|
||||
if not value:
|
||||
return False
|
||||
note = self.browse(cr, SUPERUSER_ID, id, context=context) # do it as SUPERUSER because when creating, followers are not necessariliry set (another function field)
|
||||
stage_ids = [value] + [stage.id for stage in note.stage_ids if stage.user_id.id != uid]
|
||||
return self.write(cr, uid, [id], {'stage_ids': [(6, 0, set(stage_ids))]}, context=context)
|
||||
|
||||
def _get_stage_per_user(self, cr, uid, ids, name, args, context=None):
|
||||
|
|
|
@ -479,7 +479,7 @@ def Project():
|
|||
""" % (
|
||||
project.id,
|
||||
project.date_start or time.strftime('%Y-%m-%d'), working_days,
|
||||
'|'.join(['User_'+str(x) for x in puids])
|
||||
'|'.join(['User_'+str(x) for x in puids]) or 'None'
|
||||
)
|
||||
vacation = calendar_id and tuple(resource_pool.compute_vacation(cr, uid, calendar_id, context=context)) or False
|
||||
if vacation:
|
||||
|
@ -789,7 +789,7 @@ class task(osv.osv):
|
|||
}),
|
||||
'progress': fields.function(_hours_get, string='Working Time Progress (%)', multi='hours', group_operator="avg", help="If the task has a progress of 99.99% you should close the task if it's finished or reevaluate the time",
|
||||
store = {
|
||||
'project.task': (lambda self, cr, uid, ids, c={}: ids, ['work_ids', 'remaining_hours', 'planned_hours','state'], 10),
|
||||
'project.task': (lambda self, cr, uid, ids, c={}: ids, ['work_ids', 'remaining_hours', 'planned_hours', 'state', 'stage_id'], 10),
|
||||
'project.task.work': (_get_task, ['hours'], 10),
|
||||
}),
|
||||
'delay_hours': fields.function(_hours_get, string='Delay Hours', multi='hours', help="Computed as difference between planned hours by the project manager and the total hours of the task.",
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
</field>
|
||||
<xpath expr="//notebook/page[@string='Extra Info']" position="before">
|
||||
<page string="Worklogs">
|
||||
<field name="timesheet_ids" colspan="4" nolabel="1" context="{'default_user_id' : user_id, 'default_account_id' : analytic_account_id}"
|
||||
<field name="timesheet_ids" colspan="4" nolabel="1" context="{'default_user_id' : uid, 'default_account_id' : analytic_account_id}"
|
||||
groups="base.group_user">
|
||||
<tree editable="top" string="Timesheets">
|
||||
<field name="name"/>
|
||||
|
|
|
@ -71,10 +71,8 @@
|
|||
<filter string="Validated by" icon="terp-personal" context="{'group_by':'validator'}"/>
|
||||
<filter string="Product" name="group_product_id" icon="terp-accessories-archiver" context="{'group_by':'product_id'}"/>
|
||||
<filter string="Category" name="group_category_id" icon="terp-stock_symbol-selection" context="{'group_by':'category_id'}"/>
|
||||
<filter string="Reference Unit of Measure" name="group_product_uom" icon="terp-mrp" context="{'group_by':'product_uom'}"/>
|
||||
<filter string="Warehouse" icon="terp-go-home" context="{'group_by':'warehouse_id'}"/>
|
||||
<filter string="Reference UOM" name="group_product_uom" icon="terp-mrp" context="{'group_by':'product_uom'}"/>
|
||||
<filter string="Warehouse" icon="terp-go-home" context="{'group_by':'warehouse_id'}"/>
|
||||
<filter string="Destination" icon="terp-gtk-jump-to-ltr" context="{'group_by':'location_id'}"/>
|
||||
<filter string="Status" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/>
|
||||
<filter string="Company" icon="terp-go-home" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<record id="group_stock_manager" model="res.groups">
|
||||
<field name="name">Manager</field>
|
||||
<field name="category_id" ref="base.module_category_warehouse_management"/>
|
||||
<field name="implied_ids" eval="[(4, ref('group_stock_user')), (4, ref('account.group_account_user'))]"/>
|
||||
<field name="implied_ids" eval="[(4, ref('group_stock_user')), (4, ref('account.group_account_invoice'))]"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
|
|
Loading…
Reference in New Issue