[IMP] *: remove "French spacing" 👺
According to Wiktionary, French spacing is "the archaic practice (though still current in French) of inserting a space around colons, semicolons, question marks, and exclamation marks". This is not standard practice in English and most languages of the world. The purpose of this commit is to start purging the code from this typo, as it may reflect poorly on the software for some people. closes odoo/odoo#114533 Related: odoo/enterprise#37853 Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
This commit is contained in:
@@ -107,7 +107,7 @@ class AccountAccount(models.Model):
|
||||
related_taxes_amount = fields.Integer(compute='_compute_related_taxes_amount')
|
||||
|
||||
_sql_constraints = [
|
||||
('code_company_uniq', 'unique (code,company_id)', 'The code of the account must be unique per company !')
|
||||
('code_company_uniq', 'unique (code,company_id)', 'The code of the account must be unique per company!')
|
||||
]
|
||||
|
||||
non_trade = fields.Boolean(default=False,
|
||||
|
||||
@@ -410,7 +410,7 @@ class account_journal(models.Model):
|
||||
def _count_results_and_sum_amounts(self, results_dict, target_currency, curr_cache=None):
|
||||
""" Loops on a query result to count the total number of invoices and sum
|
||||
their amount_total field (expressed in the given target currency).
|
||||
amount_total must be signed !
|
||||
amount_total must be signed!
|
||||
"""
|
||||
rslt_count = 0
|
||||
rslt_sum = 0.0
|
||||
|
||||
@@ -399,7 +399,7 @@ class AccountMoveLine(models.Model):
|
||||
(
|
||||
"check_credit_debit",
|
||||
"CHECK(display_type IN ('line_section', 'line_note') OR credit * debit=0)",
|
||||
"Wrong credit or debit value in accounting entry !"
|
||||
"Wrong credit or debit value in accounting entry!"
|
||||
),
|
||||
(
|
||||
"check_amount_currency_balance_sign",
|
||||
|
||||
@@ -173,7 +173,7 @@ class AccountTax(models.Model):
|
||||
country_code = fields.Char(related='country_id.code', readonly=True)
|
||||
|
||||
_sql_constraints = [
|
||||
('name_company_uniq', 'unique(name, company_id, type_tax_use, tax_scope)', 'Tax names must be unique !'),
|
||||
('name_company_uniq', 'unique(name, company_id, type_tax_use, tax_scope)', 'Tax names must be unique!'),
|
||||
]
|
||||
|
||||
@api.constrains('tax_group_id')
|
||||
|
||||
@@ -18,7 +18,7 @@ class AccountMove(models.Model):
|
||||
help='The aggregated state of all the EDIs with web-service of this move')
|
||||
edi_error_count = fields.Integer(
|
||||
compute='_compute_edi_error_count',
|
||||
help='How many EDIs are in error for this move ?')
|
||||
help='How many EDIs are in error for this move?')
|
||||
edi_blocking_level = fields.Selection(
|
||||
selection=[('info', 'Info'), ('warning', 'Warning'), ('error', 'Error')],
|
||||
compute='_compute_edi_error_message')
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
<!-- Amounts. -->
|
||||
<ram:SpecifiedLineTradeAgreement>
|
||||
<!-- Line information: unit_price
|
||||
NB: the gross_price_unit should be the price tax excluded !
|
||||
NB: the gross_price_unit should be the price tax excluded!
|
||||
if price_unit = 100 and tax 10% price_include -> then the gross_price_unit is 91
|
||||
-->
|
||||
<ram:GrossPriceProductTradePrice>
|
||||
@@ -56,7 +56,7 @@
|
||||
<ram:SpecifiedLineTradeDelivery>
|
||||
<ram:BilledQuantity
|
||||
t-att-unitCode="line_vals.get('unece_uom_code')"
|
||||
t-out="line.quantity"/> <!-- /!\ The quantity is the line.quantity since we keep the unece_uom_code ! -->
|
||||
t-out="line.quantity"/> <!-- /!\ The quantity is the line.quantity since we keep the unece_uom_code! -->
|
||||
</ram:SpecifiedLineTradeDelivery>
|
||||
|
||||
<ram:SpecifiedLineTradeSettlement>
|
||||
|
||||
@@ -240,7 +240,7 @@ class AccountEdiXmlCII(models.AbstractModel):
|
||||
invoice.currency_id = currency
|
||||
else:
|
||||
logs.append(_("Could not retrieve currency: %s. Did you enable the multicurrency option and "
|
||||
"activate the currency ?", currency_code_node.text))
|
||||
"activate the currency?", currency_code_node.text))
|
||||
|
||||
# ==== Reference ====
|
||||
|
||||
|
||||
@@ -489,7 +489,7 @@ class AccountEdiXmlUBL20(models.AbstractModel):
|
||||
invoice.currency_id = currency
|
||||
else:
|
||||
logs.append(_("Could not retrieve currency: %s. Did you enable the multicurrency option "
|
||||
"and activate the currency ?", currency_code_node.text))
|
||||
"and activate the currency?", currency_code_node.text))
|
||||
|
||||
# ==== invoice_date ====
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ function fromField(f, record) {
|
||||
copyButton.setAttribute('class', 'btn btn-sm btn-primary o_clipboard_button o_btn_char_copy py-0 px-2');
|
||||
copyButton.onclick = function(event) {
|
||||
event.preventDefault();
|
||||
$(copyButton).tooltip({title: _t("Copied !"), trigger: "manual", placement: "bottom"});
|
||||
$(copyButton).tooltip({title: _t("Copied!"), trigger: "manual", placement: "bottom"});
|
||||
var clipboard = new ClipboardJS('.o_clipboard_button', {
|
||||
target: function () {
|
||||
return $(secretSpan)[0];
|
||||
|
||||
@@ -40,4 +40,4 @@ class BarcodeRule(models.Model):
|
||||
elif len(findall) != 0:
|
||||
raise ValidationError(_("There is a syntax error in the barcode pattern %(pattern)s: a rule can only contain one pair of braces.", pattern=rule.pattern))
|
||||
elif p == '*':
|
||||
raise ValidationError(_(" '*' is not a valid Regex Barcode Pattern. Did you mean '.*' ?"))
|
||||
raise ValidationError(_(" '*' is not a valid Regex Barcode Pattern. Did you mean '.*'?"))
|
||||
|
||||
@@ -29,7 +29,7 @@ export class BarcodeScanner extends Component {
|
||||
window.navigator.vibrate(100);
|
||||
}
|
||||
} else {
|
||||
this.notification.add(error || this.env._t("Please, Scan again !"), {
|
||||
this.notification.add(error || this.env._t("Please, Scan again!"), {
|
||||
type: "warning",
|
||||
});
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
<group string="Send to:">
|
||||
<field colspan="2" name="user_ids" widget="many2many_tags" nolabel="1"/>
|
||||
</group>
|
||||
<group string="Why do you need this module ?">
|
||||
<group string="Why do you need this module?">
|
||||
<field colspan="2" name="body_html" widget="html" nolabel="1" placeholder="e.g. I'd like to use the SMS Marketing module to organize the promotion of our internal events, and exhibitions. I need access for 3 people of my team."/>
|
||||
</group>
|
||||
<footer>
|
||||
|
||||
@@ -18,5 +18,5 @@ class MeetingType(models.Model):
|
||||
color = fields.Integer('Color', default=_default_color)
|
||||
|
||||
_sql_constraints = [
|
||||
('name_uniq', 'unique (name)', "Tag name already exists !"),
|
||||
('name_uniq', 'unique (name)', "Tag name already exists!"),
|
||||
]
|
||||
|
||||
@@ -141,7 +141,7 @@ export class AttendeeCalendarModel extends CalendarModel {
|
||||
} else {
|
||||
const confirm = await new Promise((resolve) => {
|
||||
this.dialog.add(ConfirmationDialog, {
|
||||
body: this.env._t("Are you sure you want to delete this record ?"),
|
||||
body: this.env._t("Are you sure you want to delete this record?"),
|
||||
confirm: resolve.bind(null, true),
|
||||
}, {
|
||||
onClose: resolve.bind(null, false),
|
||||
|
||||
@@ -27,7 +27,7 @@ class TestRecurrentEvent(common.TransactionCase):
|
||||
meetings_count = self.CalendarEvent.with_context({'virtual_id': True}).search_count([
|
||||
('start', '>=', '2011-03-13'), ('stop', '<=', '2011-05-13')
|
||||
])
|
||||
self.assertEqual(meetings_count, 5, 'Recurrent daily meetings are not created !')
|
||||
self.assertEqual(meetings_count, 5, 'Recurrent daily meetings are not created!')
|
||||
|
||||
def test_recurrent_meeting2(self):
|
||||
# I create a weekly meeting till a particular end date.
|
||||
@@ -52,4 +52,4 @@ class TestRecurrentEvent(common.TransactionCase):
|
||||
meetings_count = self.CalendarEvent.search_count([
|
||||
('start', '>=', '2011-03-13'), ('stop', '<=', '2011-05-13')
|
||||
])
|
||||
self.assertEqual(meetings_count, 10, 'Recurrent weekly meetings are not created !')
|
||||
self.assertEqual(meetings_count, 10, 'Recurrent weekly meetings are not created!')
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<!-- Message with scheduled notification -->
|
||||
<record id="message_demo_partner_2_0" model="mail.message">
|
||||
<field name="author_id" ref="base.partner_demo"/>
|
||||
<field name="body" type="html"><p>Hello! Could you send us your address ?</p></field>
|
||||
<field name="body" type="html"><p>Hello! Could you send us your address?</p></field>
|
||||
<field name="date" eval="(DateTime.today() - timedelta(days=1)).strftime('%Y-%m-%d %H:%M:00')"/>
|
||||
<field name="model">res.partner</field>
|
||||
<field name="res_id" ref="base.res_partner_2"/>
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
<field name="email_from">jdunagan@leclub.example.com</field>
|
||||
<field name="body"><![CDATA[<p>Hello,<br />
|
||||
I am Jacques from Le Club SARL. I am interested in attending a training organized by your company.<br />
|
||||
Can you send me the details ?</p>]]></field>
|
||||
Can you send me the details?</p>]]></field>
|
||||
<field name="message_type">email</field>
|
||||
<field name="subtype_id" ref="mail.mt_comment"/>
|
||||
</record>
|
||||
@@ -228,7 +228,7 @@ Contact: +1 813 494 5005</p>]]></field>
|
||||
<field name="author_id" eval="False"/>
|
||||
<field name="email_from">logan_expert@gmail.example.com</field>
|
||||
<field name="body"><![CDATA[<p>Hi,<br />
|
||||
Could you send me your product catalogue please ?<br />
|
||||
Could you send me your product catalogue please?<br />
|
||||
Regards,<br />
|
||||
David Logan<br />
|
||||
ESM Expert<br />]]></field>
|
||||
|
||||
@@ -67,7 +67,7 @@ registry.category("web_tour.tours").add('crm_tour', {
|
||||
}, {
|
||||
id: "drag_opportunity_to_won_step",
|
||||
trigger: ".o_opportunity_kanban .o_kanban_record:last-of-type",
|
||||
content: Markup(_t("Drag your opportunity to <b>Won</b> when you get the deal. Congrats !")),
|
||||
content: Markup(_t("Drag your opportunity to <b>Won</b> when you get the deal. Congrats!")),
|
||||
position: "bottom",
|
||||
run: "drag_and_drop_native .o_opportunity_kanban .o_kanban_group:eq(3) ",
|
||||
}, {
|
||||
|
||||
@@ -37,7 +37,7 @@ Content-Transfer-Encoding: 8bit
|
||||
|
||||
This is an example email. All sensitive content has been stripped out.
|
||||
|
||||
ALL GLORY TO THE HYPNOTOAD !
|
||||
ALL GLORY TO THE HYPNOTOAD!
|
||||
|
||||
Cheers,
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ class TestCrmMailActivity(TestCrmCommon):
|
||||
cls.activity_type_2 = cls.env['mail.activity.type'].create({
|
||||
'name': 'Call for Demo',
|
||||
'delay_count': 6,
|
||||
'summary': 'ACT 2 : I want to show you my ERP !',
|
||||
'summary': 'ACT 2 : I want to show you my ERP!',
|
||||
'res_model': 'crm.lead',
|
||||
})
|
||||
for activity_type in cls.activity_type_1 + cls.activity_type_2:
|
||||
|
||||
@@ -636,7 +636,7 @@ class TestCRMLead(TestCrmCommon):
|
||||
self.assertEqual(new_lead.name, 'Delivery cost inquiry')
|
||||
|
||||
message = new_lead.with_user(self.user_sales_manager).message_post(
|
||||
body='Here is my offer !',
|
||||
body='Here is my offer!',
|
||||
subtype_xmlid='mail.mt_comment')
|
||||
self.assertEqual(message.author_id, self.user_sales_manager.partner_id)
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<group>
|
||||
<field name="lost_reason_id" options="{'no_create_edit': True}" />
|
||||
</group>
|
||||
<field name="lost_feedback" placeholder="What went wrong ?"/>
|
||||
<field name="lost_feedback" placeholder="What went wrong?"/>
|
||||
<footer>
|
||||
<button name="action_lost_reason_apply" string="Submit" type="object" class="btn-primary" data-hotkey="q"/>
|
||||
<button string="Cancel" class="btn-secondary" special="cancel" data-hotkey="z"/>
|
||||
|
||||
@@ -15,13 +15,13 @@ var DragOppToWonStepIndex = _.findIndex(registry.category("web_tour.tours").get(
|
||||
registry.category("web_tour.tours").get("crm_tour").steps.splice(DragOppToWonStepIndex + 1, 0, {
|
||||
/**
|
||||
* Add some steps between "Drag your opportunity to <b>Won</b> when you get
|
||||
* the deal. Congrats !" and "Let’s have a look at an Opportunity." to
|
||||
* the deal. Congrats!" and "Let’s have a look at an Opportunity." to
|
||||
* include the steps related to the lead generation (crm_iap_mine).
|
||||
* This eases the on boarding for the Lead Generation process.
|
||||
*
|
||||
*/
|
||||
trigger: ".o_button_generate_leads",
|
||||
content: Markup(_t("Looking for more opportunities ?<br>Try the <b>Lead Generation</b> tool.")),
|
||||
content: Markup(_t("Looking for more opportunities?<br>Try the <b>Lead Generation</b> tool.")),
|
||||
position: "bottom",
|
||||
run: function (actions) {
|
||||
actions.auto('.o_button_generate_leads');
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
</div>
|
||||
</span>
|
||||
|
||||
<h2>What do you need ?</h2>
|
||||
<h2>What do you need?</h2>
|
||||
|
||||
<group name="requests">
|
||||
<group>
|
||||
|
||||
@@ -327,7 +327,7 @@ class Digest(models.Model):
|
||||
)
|
||||
elif self.periodicity == 'daily' and user.has_group('base.group_erp_manager'):
|
||||
preferences.append(Markup('<p>%s<br /><a href="%s" target="_blank" style="color:#875A7B; font-weight: bold;">%s</a></p>') % (
|
||||
_('Prefer a broader overview ?'),
|
||||
_('Prefer a broader overview?'),
|
||||
f'/digest/{self.id:d}/set_periodicity?periodicity=weekly',
|
||||
_('Switch to weekly Digests')
|
||||
))
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
</record>
|
||||
<record id="event_0_ticket_0" model="event.event.ticket">
|
||||
<field name="name">Free</field>
|
||||
<field name="description">Free entrance, no food !</field>
|
||||
<field name="description">Free entrance, no food!</field>
|
||||
<field name="event_id" ref="event.event_0"/>
|
||||
<field name="start_sale_datetime" eval="(DateTime.today() + timedelta(days=5)).strftime('%Y-%m-%d 00:00:00')"/>
|
||||
<field name="end_sale_datetime" eval="(DateTime.today() + timedelta(days=10)).strftime('%Y-%m-%d 23:00:00')"/>
|
||||
@@ -68,7 +68,7 @@
|
||||
<field name="res_id" ref="event.event_1"/>
|
||||
<field name="body" type="html"><p>Hello Marc Demo,<br/>
|
||||
Our flight authorizations have been revoked due to insurance issues.<br/>
|
||||
Could you take care of it as soon as possible ?</p>
|
||||
Could you take care of it as soon as possible?</p>
|
||||
</field>
|
||||
<field name="message_type">comment</field>
|
||||
<field name="subtype_id" ref="mail.mt_comment"/>
|
||||
@@ -78,7 +78,7 @@
|
||||
<field name="model">event.event</field>
|
||||
<field name="res_id" ref="event.event_1"/>
|
||||
<field name="parent_id" ref="message_event_1_0"/>
|
||||
<field name="body" type="html"><p>Hi Mitchell Admin,<br/>I will take care of it today !</p></field>
|
||||
<field name="body" type="html"><p>Hi Mitchell Admin,<br/>I will take care of it today!</p></field>
|
||||
<field name="message_type">comment</field>
|
||||
<field name="subtype_id" ref="mail.mt_comment"/>
|
||||
<field name="author_id" ref="base.partner_demo"/>
|
||||
@@ -87,7 +87,7 @@
|
||||
<field name="model">event.event</field>
|
||||
<field name="res_id" ref="event.event_1"/>
|
||||
<field name="parent_id" ref="message_event_1_1"/>
|
||||
<field name="body" type="html"><p>Great ! This event will stay "blocked" until it is fixed.<br/>
|
||||
<field name="body" type="html"><p>Great! This event will stay "blocked" until it is fixed.<br/>
|
||||
Feel free to green it once everything is in order.</p>
|
||||
</field>
|
||||
<field name="message_type">comment</field>
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<field name="name">Event: Reminder</field>
|
||||
<field name="model_id" ref="event.model_event_registration"/>
|
||||
<field name="body">Ready for "{{ object.event_id.name }}" {{ object.get_date_range_str(object.partner_id.lang) }}?
|
||||
{{ 'It starts at %s' % format_time(time=object.event_begin_date, tz=object.event_id.date_tz, time_format='short', lang_code=object.partner_id.lang) + (', at %s' % object.event_id.address_inline if object.event_id.address_inline else '') + '.\nSee you there!' if object.event_id.address_inline or 'website_published' not in object.event_id._fields else 'Join us on %s/event/%i !' % (object.get_base_url(), object.event_id.id) }}</field>
|
||||
{{ 'It starts at %s' % format_time(time=object.event_begin_date, tz=object.event_id.date_tz, time_format='short', lang_code=object.partner_id.lang) + (', at %s' % object.event_id.address_inline if object.event_id.address_inline else '') + '.\nSee you there!' if object.event_id.address_inline or 'website_published' not in object.event_id._fields else 'Join us on %s/event/%i!' % (object.get_base_url(), object.event_id.id) }}</field>
|
||||
<field name="lang">{{ object.partner_id.lang }}</field>
|
||||
</record>
|
||||
|
||||
|
||||
@@ -11,4 +11,4 @@ class FleetVehicleTag(models.Model):
|
||||
name = fields.Char('Tag Name', required=True, translate=True)
|
||||
color = fields.Integer('Color')
|
||||
|
||||
_sql_constraints = [('name_uniq', 'unique (name)', "Tag name already exists !")]
|
||||
_sql_constraints = [('name_uniq', 'unique (name)', "Tag name already exists!")]
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<field name="description" type="html"><p>You just began the adventure! Welcome!</p></field>
|
||||
<field name="description_motivational" type="html">
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="flex-grow-1">Earn your first points and join the adventure !</div>
|
||||
<div class="flex-grow-1">Earn your first points and join the adventure!</div>
|
||||
<img class="ms-3 img img-fluid" style="max-height: 72px;" src="/gamification/static/img/rank_newbie_badge.svg"/>
|
||||
</div>
|
||||
</field>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<record id="rank_student" model="gamification.karma.rank">
|
||||
<field name="description_motivational" type="html">
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="flex-grow-1">Reach the next rank and gain a very nice mug !</div>
|
||||
<div class="flex-grow-1">Reach the next rank and gain a very nice mug!</div>
|
||||
<img class="ms-3 img img-fluid" style="max-height: 72px;" src="/gamification/static/img/rank_misc_mug.png"/>
|
||||
</div>
|
||||
</field>
|
||||
@@ -13,7 +13,7 @@
|
||||
<record id="rank_bachelor" model="gamification.karma.rank">
|
||||
<field name="description_motivational" type="html">
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="flex-grow-1">Reach the next rank and gain a very magic wand !</div>
|
||||
<div class="flex-grow-1">Reach the next rank and gain a very magic wand!</div>
|
||||
<img class="ms-3 img img-fluid" style="max-height: 72px;" src="/gamification/static/img/rank_misc_wand.png"/>
|
||||
</div>
|
||||
</field>
|
||||
@@ -22,7 +22,7 @@
|
||||
<record id="rank_master" model="gamification.karma.rank">
|
||||
<field name="description_motivational" type="html">
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="flex-grow-1">Reach the next rank and gain a very nice hat !</div>
|
||||
<div class="flex-grow-1">Reach the next rank and gain a very nice hat!</div>
|
||||
<img class="ms-3 img img-fluid" style="max-height: 72px;" src="/gamification/static/img/rank_misc_hat.png"/>
|
||||
</div>
|
||||
</field>
|
||||
@@ -31,7 +31,7 @@
|
||||
<record id="rank_doctor" model="gamification.karma.rank">
|
||||
<field name="description_motivational" type="html">
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="flex-grow-1">Reach the next rank and gain a very nice unicorn !</div>
|
||||
<div class="flex-grow-1">Reach the next rank and gain a very nice unicorn!</div>
|
||||
<img class="ms-3 img img-fluid" style="max-height: 72px;" src="/gamification/static/img/rank_misc_unicorn.png"/>
|
||||
</div>
|
||||
</field>
|
||||
|
||||
@@ -33,8 +33,8 @@
|
||||
<table width="590" border="0" cellpadding="0" style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;">
|
||||
<tr><td valign="top" style="font-size: 14px;">
|
||||
<div>
|
||||
Congratulations <t t-out="object.user_id.name or ''"></t> !<br/>
|
||||
You just received badge <strong t-out="object.badge_id.name or ''"></strong> !<br/>
|
||||
Congratulations <t t-out="object.user_id.name or ''"></t>!<br/>
|
||||
You just received badge <strong t-out="object.badge_id.name or ''"></strong>!<br/>
|
||||
<table t-if="not is_html_empty(object.badge_id.description)" cellspacing="0" cellpadding="0" border="0" style="width: 560px; margin-top: 5px;">
|
||||
<tbody><tr>
|
||||
<td valign="center">
|
||||
@@ -340,7 +340,7 @@
|
||||
You just reached a new rank : <strong t-out="object.rank_id.name or ''">Newbie</strong>
|
||||
</p>
|
||||
<t t-if="object.next_rank_id.name">
|
||||
<p>Continue your work to become a <strong t-out="object.next_rank_id.name or ''">Student</strong> !</p>
|
||||
<p>Continue your work to become a <strong t-out="object.next_rank_id.name or ''">Student</strong>!</p>
|
||||
</t>
|
||||
<div style="margin: 16px 0px 16px 0px;">
|
||||
<t t-set="gamification_redirection_data" t-value="object.get_gamification_redirection_data()"/>
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
<field name="description" placeholder="e.g. A Master Chief knows quite everything on the forum! You cannot beat him!"/>
|
||||
</page>
|
||||
<page string="Motivational" name="motivational">
|
||||
<field name="description_motivational" placeholder="e.g. Reach this rank to gain a free mug !"/>
|
||||
<field name="description_motivational" placeholder="e.g. Reach this rank to gain a free mug!"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
|
||||
@@ -112,7 +112,7 @@ class GoogleService(models.AbstractModel):
|
||||
if _log_params.get('client_secret'):
|
||||
_log_params['client_secret'] = _log_params['client_secret'][0:4] + 'x' * 12
|
||||
|
||||
_logger.debug("Uri: %s - Type : %s - Headers: %s - Params : %s !", uri, method, headers, _log_params)
|
||||
_logger.debug("Uri: %s - Type : %s - Headers: %s - Params : %s!", uri, method, headers, _log_params)
|
||||
|
||||
ask_time = fields.Datetime.now()
|
||||
try:
|
||||
@@ -139,6 +139,6 @@ class GoogleService(models.AbstractModel):
|
||||
status = error.response.status_code
|
||||
response = ""
|
||||
else:
|
||||
_logger.exception("Bad google request : %s !", error.response.content)
|
||||
_logger.exception("Bad google request : %s!", error.response.content)
|
||||
raise error
|
||||
return (status, response, ask_time)
|
||||
|
||||
@@ -91,7 +91,7 @@ class User(models.Model):
|
||||
user.with_user(user).sudo()._sync_google_calendar(google)
|
||||
self.env.cr.commit()
|
||||
except Exception as e:
|
||||
_logger.exception("[%s] Calendar Synchro - Exception : %s !", user, exception_to_unicode(e))
|
||||
_logger.exception("[%s] Calendar Synchro - Exception : %s!", user, exception_to_unicode(e))
|
||||
self.env.cr.rollback()
|
||||
|
||||
def stop_google_synchronization(self):
|
||||
|
||||
@@ -71,7 +71,7 @@ Excellent analytical skills, ability to think logically and "out of the box"</fi
|
||||
<record id="job_cto" model="hr.job">
|
||||
<field name="name">Chief Technical Officer</field>
|
||||
<field name="department_id" ref="dep_rd"/>
|
||||
<field name="description">You will take part in the consulting services we provide to our partners and customers : design, analysis, development, testing, project management, support/coaching. You will work autonomously as well as coordinate and supervise small distributed development teams for some projects. Optionally, you will deliver Odoo training sessions to partners and customers (8-10 people/session). You will report to the Head of Professional Services and work closely with all developers and consultants.
|
||||
<field name="description">You will take part in the consulting services we provide to our partners and customers: design, analysis, development, testing, project management, support/coaching. You will work autonomously as well as coordinate and supervise small distributed development teams for some projects. Optionally, you will deliver Odoo training sessions to partners and customers (8-10 people/session). You will report to the Head of Professional Services and work closely with all developers and consultants.
|
||||
|
||||
The job is located in Grand-Rosière (1367), Belgium (between Louvain-La-Neuve and Namur).</field>
|
||||
<field name="requirements">Bachelor, master or engineering degree in Computer Science or equivalent by experience
|
||||
|
||||
@@ -19,5 +19,5 @@ class EmployeeCategory(models.Model):
|
||||
employee_ids = fields.Many2many('hr.employee', 'employee_category_rel', 'category_id', 'emp_id', string='Employees')
|
||||
|
||||
_sql_constraints = [
|
||||
('name_uniq', 'unique (name)', "Tag name already exists !"),
|
||||
('name_uniq', 'unique (name)', "Tag name already exists!"),
|
||||
]
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
</record>
|
||||
|
||||
<record id="group_hr_user" model="res.groups">
|
||||
<field name="name">Officer : Manage all employees</field>
|
||||
<field name="name">Officer: Manage all employees</field>
|
||||
<field name="category_id" ref="base.module_category_human_resources_employees"/>
|
||||
<field name="implied_ids" eval="[(6, 0, [ref('base.group_private_addresses'), ref('base.group_user')])]"/>
|
||||
<field name="comment">The user will be able to approve document created by employees.</field>
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
<span><field name="department_id"/>&nbsp;</span>
|
||||
</div>
|
||||
<div t-if="!selection_mode">
|
||||
<span>Vacancies : <field name="expected_employees"/></span>
|
||||
<span>Vacancies: <field name="expected_employees"/></span>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
</record>
|
||||
|
||||
<record id="group_hr_attendance_kiosk" model="res.groups">
|
||||
<field name="name">User : Only kiosk mode</field>
|
||||
<field name="name">User: Only kiosk mode</field>
|
||||
<field name="category_id" ref="base.module_category_human_resources_employees"/>
|
||||
<field name="comment">The user will be able to open the kiosk mode and validate the employee PIN.</field>
|
||||
<field name="implied_ids" eval="[(6, 0, [ref('base.group_user')])]"/>
|
||||
@@ -22,7 +22,7 @@
|
||||
</record>
|
||||
|
||||
<record id="group_hr_attendance_user" model="res.groups">
|
||||
<field name="name">Officer : Manage all attendances</field>
|
||||
<field name="name">Officer: Manage all attendances</field>
|
||||
<field name="category_id" ref="base.module_category_human_resources_attendances"/>
|
||||
<field name="implied_ids" eval="[(4, ref('hr.group_hr_user')), (4, ref('hr_attendance.group_hr_attendance'))]"/>
|
||||
</record>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<CheckInOut checkedIn="checkedIn" employeeId="employee.id" nextAction="nextAction"/>
|
||||
</t>
|
||||
<div t-else="" class="alert alert-warning">
|
||||
<b>Warning</b> : Your user should be linked to an employee to use attendance.<br/> Please contact your administrator.
|
||||
<b>Warning</b>: Your user should be linked to an employee to use attendance.<br/> Please contact your administrator.
|
||||
</div>
|
||||
</CardLayout>
|
||||
</t>
|
||||
|
||||
@@ -8,7 +8,7 @@ const { Component } = owl;
|
||||
export class ContractWarningTooltip extends Component {
|
||||
get tooltipInfo() {
|
||||
return JSON.stringify({
|
||||
"text" : _t("Calendar Mismatch : The employee's calendar does not match this contract's calendar. This could lead to unexpected behaviors."),
|
||||
"text" : _t("Calendar Mismatch: The employee's calendar does not match this contract's calendar. This could lead to unexpected behaviors."),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<template id="hr_expense_template_refuse_reason">
|
||||
<p>Your Expense Report <t t-esc="name"/> has been refused</p>
|
||||
<ul class="o_timeline_tracking_value_list">
|
||||
<li>Reason : <t t-esc="reason"/></li>
|
||||
<li>Reason: <t t-esc="reason"/></li>
|
||||
</ul>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -806,11 +806,11 @@ class HolidaysRequest(models.Model):
|
||||
if leave.leave_type_request_unit == 'hour':
|
||||
res.append((
|
||||
leave.id,
|
||||
_("%s : %.2f hours") % (short_leave_name, leave.number_of_hours_display)))
|
||||
_("%s: %.2f hours") % (short_leave_name, leave.number_of_hours_display)))
|
||||
else:
|
||||
res.append((
|
||||
leave.id,
|
||||
_("%s : %.2f days") % (short_leave_name, leave.number_of_days)))
|
||||
_("%s: %.2f days") % (short_leave_name, leave.number_of_days)))
|
||||
else:
|
||||
if leave.holiday_type == 'company':
|
||||
target = leave.mode_company_id.name
|
||||
@@ -1129,9 +1129,9 @@ class HolidaysRequest(models.Model):
|
||||
calendar = holiday.employee_id.resource_calendar_id or company_calendar
|
||||
user = holiday.user_id
|
||||
if holiday.leave_type_request_unit == 'hour':
|
||||
meeting_name = _("%s on Time Off : %.2f hour(s)") % (holiday.employee_id.name or holiday.category_id.name, holiday.number_of_hours_display)
|
||||
meeting_name = _("%s on Time Off: %.2f hour(s)") % (holiday.employee_id.name or holiday.category_id.name, holiday.number_of_hours_display)
|
||||
else:
|
||||
meeting_name = _("%s on Time Off : %.2f day(s)") % (holiday.employee_id.name or holiday.category_id.name, holiday.number_of_days)
|
||||
meeting_name = _("%s on Time Off: %.2f day(s)") % (holiday.employee_id.name or holiday.category_id.name, holiday.number_of_days)
|
||||
meeting_values = {
|
||||
'name': meeting_name,
|
||||
'duration': holiday.number_of_days * (calendar.hours_per_day or HOURS_PER_DAY),
|
||||
|
||||
@@ -535,7 +535,7 @@ class HolidaysAllocation(models.Model):
|
||||
|
||||
res.append(
|
||||
(allocation.id,
|
||||
_("Allocation of %(allocation_name)s : %(duration).2f %(duration_type)s to %(person)s",
|
||||
_("Allocation of %(allocation_name)s: %(duration).2f %(duration_type)s to %(person)s",
|
||||
allocation_name=allocation.holiday_status_id.sudo().name,
|
||||
duration=allocation.number_of_hours_display if allocation.type_request_unit == 'hour' else allocation.number_of_days,
|
||||
duration_type=_('hours') if allocation.type_request_unit == 'hour' else _('days'),
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
</record>
|
||||
|
||||
<record id="group_hr_holidays_user" model="res.groups">
|
||||
<field name="name">Officer : Manage all requests</field>
|
||||
<field name="name">Officer: Manage all requests</field>
|
||||
<field name="category_id" ref="base.module_category_human_resources_time_off"/>
|
||||
<field name="implied_ids" eval="[(4, ref('hr_holidays.group_hr_holidays_responsible'))]"/>
|
||||
</record>
|
||||
@@ -197,7 +197,7 @@
|
||||
</record>
|
||||
|
||||
<record id="hr_leave_allocation_rule_officer_update" model="ir.rule">
|
||||
<field name="name">Allocations: holiday user : create/write</field>
|
||||
<field name="name">Allocations: holiday user: create/write</field>
|
||||
<field name="model_id" ref="model_hr_leave_allocation"/>
|
||||
<field name="domain_force">[
|
||||
('holiday_type', '=', 'employee'),
|
||||
|
||||
@@ -71,7 +71,7 @@ export class TimeOffCalendarController extends CalendarController {
|
||||
if (!record.can_cancel) {
|
||||
this.displayDialog(ConfirmationDialog, {
|
||||
title: this.env._t("Confirmation"),
|
||||
body: this.env._t("Are you sure you want to delete this record ?"),
|
||||
body: this.env._t("Are you sure you want to delete this record?"),
|
||||
confirm: async () => {
|
||||
await this.model.unlinkRecord(record.id);
|
||||
this.env.timeOffBus.trigger('update_dashboard');
|
||||
|
||||
@@ -16,5 +16,5 @@ class ApplicantCategory(models.Model):
|
||||
color = fields.Integer(string='Color Index', default=_get_default_color)
|
||||
|
||||
_sql_constraints = [
|
||||
('name_uniq', 'unique (name)', "Tag name already exists !"),
|
||||
('name_uniq', 'unique (name)', "Tag name already exists!"),
|
||||
]
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
</record>
|
||||
|
||||
<record id="group_hr_recruitment_user" model="res.groups">
|
||||
<field name="name">Officer : Manage all applicants</field>
|
||||
<field name="name">Officer: Manage all applicants</field>
|
||||
<field name="category_id" ref="base.module_category_human_resources_recruitment"/>
|
||||
<field name="implied_ids" eval="[(4, ref('hr.group_hr_user'))]"/>
|
||||
</record>
|
||||
|
||||
@@ -102,7 +102,7 @@ registry.category("web_tour.tours").add('hr_recruitment_tour',{
|
||||
}, {
|
||||
trigger: ".o_form_button_save",
|
||||
extra_trigger: ".o_employee_form",
|
||||
content: _t("Save it !"),
|
||||
content: _t("Save it!"),
|
||||
position: "bottom",
|
||||
width: 80
|
||||
}]});
|
||||
|
||||
@@ -28,13 +28,13 @@
|
||||
<record id="survey_recruitment_form_p1_q1" model="survey.question">
|
||||
<field name="survey_id" ref="survey_recruitment_form"/>
|
||||
<field name="sequence">2</field>
|
||||
<field name="title">Which country are you from ?</field>
|
||||
<field name="title">Which country are you from?</field>
|
||||
<field name="question_type">char_box</field>
|
||||
</record>
|
||||
<record id="survey_recruitment_form_p1_q2" model="survey.question">
|
||||
<field name="survey_id" ref="survey_recruitment_form"/>
|
||||
<field name="sequence">3</field>
|
||||
<field name="title">From which university did or will you graduate ?</field>
|
||||
<field name="title">From which university did or will you graduate?</field>
|
||||
<field name="question_type">char_box</field>
|
||||
</record>
|
||||
<record id="survey_recruitment_form_p1_q3" model="survey.question">
|
||||
@@ -65,7 +65,7 @@
|
||||
<field name="sequence">6</field>
|
||||
<field name="title">Knowledge</field>
|
||||
<field name="description" type="html">
|
||||
<p>What are your main knowledge regarding the job you are applying to ?</p></field>
|
||||
<p>What are your main knowledge regarding the job you are applying to?</p></field>
|
||||
<field name="question_type">text_box</field>
|
||||
</record>
|
||||
<record id="survey_recruitment_form_p1_q7" model="survey.question">
|
||||
@@ -80,7 +80,7 @@
|
||||
<record id="survey_recruitment_form_p1_q8" model="survey.question">
|
||||
<field name="survey_id" ref="survey_recruitment_form"/>
|
||||
<field name="sequence">8</field>
|
||||
<field name="title">What is important for you ?</field>
|
||||
<field name="title">What is important for you?</field>
|
||||
<field name="question_type">matrix</field>
|
||||
<field name="matrix_subtype">simple</field>
|
||||
</record>
|
||||
|
||||
@@ -17,7 +17,7 @@ class Job(models.Model):
|
||||
def action_new_survey(self):
|
||||
self.ensure_one()
|
||||
survey = self.env['survey.survey'].create({
|
||||
'title': _("Interview Form : %s") % self.name,
|
||||
'title': _("Interview Form: %s") % self.name,
|
||||
})
|
||||
self.write({'survey_id': survey.id})
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ class TestRecruitmentSurvey(common.SingleTransactionCase):
|
||||
'partner_name': 'Jane Doe',
|
||||
'email_from': 'customer@example.com',
|
||||
'department_id': cls.department_admins.id,
|
||||
'description': 'A nice Sys Admin job offer !',
|
||||
'description': 'A nice Sys Admin job offer!',
|
||||
'job_id': cls.job.id,
|
||||
})
|
||||
|
||||
|
||||
@@ -122,7 +122,7 @@ class TestTimesheet(TestCommonTimesheet):
|
||||
rule.active = False
|
||||
|
||||
def test_log_timesheet(self):
|
||||
""" Test when log timesheet : check analytic account, user and employee are correctly set. """
|
||||
""" Test when log timesheet: check analytic account, user and employee are correctly set. """
|
||||
Timesheet = self.env['account.analytic.line']
|
||||
timesheet_uom = self.project_customer.analytic_account_id.company_id.project_time_mode_id
|
||||
# employee 1 log some timesheet on task 1
|
||||
@@ -167,7 +167,7 @@ class TestTimesheet(TestCommonTimesheet):
|
||||
self.assertEqual(timesheet4.partner_id, self.project_customer.partner_id, 'Customer of new timesheet should be the same of the one set project (since no task on timesheet)')
|
||||
|
||||
def test_log_access_rights(self):
|
||||
""" Test access rights : user can update its own timesheets only, and manager can change all """
|
||||
""" Test access rights: user can update its own timesheets only, and manager can change all """
|
||||
# employee 1 log some timesheet on task 1
|
||||
Timesheet = self.env['account.analytic.line']
|
||||
timesheet1 = Timesheet.with_user(self.user_employee).create({
|
||||
|
||||
@@ -86,7 +86,7 @@ class TestWorkEntryHolidaysBase(TestWorkEntryBase):
|
||||
date_from = date_from or Datetime.today()
|
||||
date_to = date_to or Datetime.today() + relativedelta(days=1)
|
||||
return cls.env['hr.leave'].create({
|
||||
'name': 'Holiday !!!',
|
||||
'name': 'Holiday!!!',
|
||||
'employee_id': cls.richard_emp.id,
|
||||
'holiday_status_id': cls.leave_type.id,
|
||||
'date_to': date_to,
|
||||
|
||||
@@ -188,7 +188,7 @@ class TestWorkEntryLeave(TestWorkEntryHolidaysBase):
|
||||
])
|
||||
self.assertEqual(len(work_entries.work_entry_type_id), 1)
|
||||
leave = self.env['hr.leave'].create({
|
||||
'name': 'Holiday !!!',
|
||||
'name': 'Holiday!!!',
|
||||
'holiday_type': 'company',
|
||||
'mode_company_id': self.env.company.id,
|
||||
'holiday_status_id': self.leave_type.id,
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
</record>
|
||||
|
||||
<record id="chatbot_script_welcome_step_welcome" model="chatbot.script.step">
|
||||
<field name="message">Welcome to CompanyName ! 👋</field>
|
||||
<field name="message">Welcome to CompanyName! 👋</field>
|
||||
<field name="sequence">1</field>
|
||||
<field name="step_type">text</field>
|
||||
<field name="chatbot_script_id" ref="chatbot_script_welcome_bot"/>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<div class="o_livechat_rating text-center">
|
||||
<div class="o_livechat_rating_box">
|
||||
<div class="o_livechat_rating_feedback_text">
|
||||
Did we correctly answer your question ?
|
||||
Did we correctly answer your question?
|
||||
</div>
|
||||
<div class="o_livechat_rating_choices">
|
||||
<img t-att-src="widget.server_origin + '/rating/static/src/img/rating_5.png'" alt="Good" data-value="5"/>
|
||||
|
||||
@@ -157,7 +157,7 @@ odoo_mailgate: "|/path/to/odoo-mailgate.py --host=localhost -u %(uid)d -p PASSWO
|
||||
connection = server.connect(allow_archived=True)
|
||||
server.write({'state': 'done'})
|
||||
except UnicodeError as e:
|
||||
raise UserError(_("Invalid server name !\n %s", tools.ustr(e)))
|
||||
raise UserError(_("Invalid server name!\n %s", tools.ustr(e)))
|
||||
except (gaierror, timeout, IMAP4.abort) as e:
|
||||
raise UserError(_("No response received. Check server information.\n %s", tools.ustr(e)))
|
||||
except (IMAP4.error, poplib.error_proto) as err:
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
</record>
|
||||
<record id="mail_group_message_1_2" model="mail.group.message">
|
||||
<field name="subject">Re: Important Announce</field>
|
||||
<field name="body">Can I come with my dog ?</field>
|
||||
<field name="body">Can I come with my dog?</field>
|
||||
<field name="email_from">joel.willis63@example.com</field>
|
||||
<field name="moderation_status">accepted</field>
|
||||
<field name="group_message_parent_id" ref="mail_group_message_1"/>
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
<header style="min-height:31px;">
|
||||
<button name="action_launch" type="object" class="oe_highlight" string="Send"
|
||||
attrs="{'invisible': [('state', 'in', ('in_queue', 'sending', 'done'))]}" data-hotkey="v"
|
||||
confirm="This will send the email to all recipients. Are you sure you want to proceed ?"
|
||||
confirm="This will send the email to all recipients. Are you sure you want to proceed?"
|
||||
confirm-title="Send Confirmation" confirm-label="Send to all"
|
||||
/>
|
||||
<button name="action_schedule" type="object" class="btn-secondary" string="Schedule"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<data noupdate="1">
|
||||
<record id="mass_mail_lead_0" model="mailing.mailing">
|
||||
<field name="name">Lead Recall</field>
|
||||
<field name="subject">We want to hear from you !</field>
|
||||
<field name="subject">We want to hear from you!</field>
|
||||
<field name="state">draft</field>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="schedule_date" eval="(DateTime.today() + relativedelta(days=5)).strftime('%Y-%m-%d %H:%M:%S')"/>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<data noupdate="0">
|
||||
<record id="mass_mail_sale_order_0" model="mailing.mailing">
|
||||
<field name="name">Sale Promotion 1</field>
|
||||
<field name="subject">Our last promotions, just for you !</field>
|
||||
<field name="subject">Our last promotions, just for you!</field>
|
||||
<field name="state">draft</field>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="schedule_date" eval="(DateTime.today() + relativedelta(days=5)).strftime('%Y-%m-%d %H:%M:%S')"/>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<field name="campaign_id" ref="utm_campaign_0"/>
|
||||
<field name="mailing_model_id" ref="base.model_res_partner"/>
|
||||
<field name="mailing_domain" eval="[('parent_id', '=', ref('base.res_partner_4'))]"/>
|
||||
<field name="body_plaintext">This week-end, incredible promotion for XMas ! See http://sms.example.com !</field>
|
||||
<field name="body_plaintext">This week-end, incredible promotion for XMas! See http://sms.example.com!</field>
|
||||
</record>
|
||||
<!-- Generate link tracker information from it -->
|
||||
<function model="mailing.mailing" name="convert_links" eval="[ref('mass_mailing_sms.mailing_sms_0')]"/>
|
||||
@@ -134,7 +134,7 @@
|
||||
<field name="source_id" ref="mailing_sms_0_utm_source"/>
|
||||
<field name="mailing_model_id" ref="mass_mailing.model_mailing_list"/>
|
||||
<field name="contact_list_ids" eval="[(5, 0), (4, ref('mass_mailing_sms.mailing_list_sms_0'))]"/>
|
||||
<field name="body_plaintext">Extra promotion for you !</field>
|
||||
<field name="body_plaintext">Extra promotion for you!</field>
|
||||
</record>
|
||||
<!-- Simulate traces -->
|
||||
<record id="mailing_sms_1_trace_0" model="mailing.trace">
|
||||
|
||||
@@ -28,11 +28,11 @@
|
||||
<button name="action_put_in_queue" type="object"
|
||||
string="Send" class="oe_highlight" data-hotkey="v"
|
||||
attrs="{'invisible': ['|', '|', ('mailing_type', '=', 'mail'), ('state', 'in', ('in_queue', 'sending', 'done')), ('sms_force_send', '=', True)]}"
|
||||
confirm="This will send SMS to all recipients. Do you still want to proceed ?"/>
|
||||
confirm="This will send SMS to all recipients. Do you still want to proceed?"/>
|
||||
<button name="action_send_mail" type="object"
|
||||
string="Send Now" class="oe_highlight" data-hotkey="g"
|
||||
attrs="{'invisible': ['|', '|', '|', ('mailing_type', '=', 'mail'), ('state', 'in', ('in_queue', 'done')), ('schedule_type', '=', 'scheduled'), ('sms_force_send', '!=', True)]}"
|
||||
confirm="This will send SMS to all recipients now. Do you still want to proceed ?"/>
|
||||
confirm="This will send SMS to all recipients now. Do you still want to proceed?"/>
|
||||
</xpath>
|
||||
<!-- Headers / Warnings -->
|
||||
<xpath expr="//header" position="after">
|
||||
|
||||
@@ -14,7 +14,7 @@ class Product(models.Model):
|
||||
help='Date until which membership remains active.')
|
||||
|
||||
_sql_constraints = [
|
||||
('membership_date_greater', 'check(membership_date_to >= membership_date_from)', 'Error ! Ending Date cannot be set before Beginning Date.')
|
||||
('membership_date_greater', 'check(membership_date_to >= membership_date_from)', 'Error! Ending Date cannot be set before Beginning Date.')
|
||||
]
|
||||
|
||||
@api.model
|
||||
|
||||
@@ -165,6 +165,6 @@ class MicrosoftService(models.AbstractModel):
|
||||
status = error.response.status_code
|
||||
response = ""
|
||||
else:
|
||||
_logger.exception("Bad microsoft request : %s !", error.response.content)
|
||||
_logger.exception("Bad microsoft request: %s!", error.response.content)
|
||||
raise error
|
||||
return (status, response, ask_time)
|
||||
|
||||
@@ -126,7 +126,7 @@ class User(models.Model):
|
||||
user.with_user(user).sudo()._sync_microsoft_calendar()
|
||||
self.env.cr.commit()
|
||||
except Exception as e:
|
||||
_logger.exception("[%s] Calendar Synchro - Exception : %s !", user, exception_to_unicode(e))
|
||||
_logger.exception("[%s] Calendar Synchro - Exception : %s!", user, exception_to_unicode(e))
|
||||
self.env.cr.rollback()
|
||||
|
||||
def stop_microsoft_synchronization(self):
|
||||
|
||||
@@ -428,7 +428,7 @@ class MrpBomLine(models.Model):
|
||||
_sql_constraints = [
|
||||
('bom_qty_zero', 'CHECK (product_qty>=0)', 'All product quantities must be greater or equal to 0.\n'
|
||||
'Lines with 0 quantities can be used as optional lines. \n'
|
||||
'You should install the mrp_byproduct module if you want to manage extra products on BoMs !'),
|
||||
'You should install the mrp_byproduct module if you want to manage extra products on BoMs!'),
|
||||
]
|
||||
|
||||
@api.depends('product_id', 'tracking', 'operation_id')
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
attrs="{'invisible': ['|', '|', ('id', '=', False), ('state', 'in', ('done', 'cancel')), ('confirm_cancel', '=', True)]}"/>
|
||||
<button name="action_cancel" type="object" string="Cancel" data-hotkey="z"
|
||||
attrs="{'invisible': ['|', '|', ('id', '=', False), ('state', 'in', ('done', 'cancel')), ('confirm_cancel', '=', False)]}"
|
||||
confirm="Some product moves have already been confirmed, this manufacturing order can't be completely cancelled. Are you still sure you want to process ?"/>
|
||||
confirm="Some product moves have already been confirmed, this manufacturing order can't be completely cancelled. Are you still sure you want to process?"/>
|
||||
<button name="button_unbuild" type="object" string="Unbuild" attrs="{'invisible': [('state', '!=', 'done')]}" data-hotkey="shift+v"/>
|
||||
</header>
|
||||
<sheet>
|
||||
|
||||
@@ -19,13 +19,13 @@ class ConfirmExpiry(models.TransientModel):
|
||||
# For multiple expired lots, they are listed in the wizard view.
|
||||
self.description = _(
|
||||
"You are going to use some expired components."
|
||||
"\nDo you confirm you want to proceed ?"
|
||||
"\nDo you confirm you want to proceed?"
|
||||
)
|
||||
else:
|
||||
# For one expired lot, its name is written in the wizard message.
|
||||
self.description = _(
|
||||
"You are going to use the component %(product_name)s, %(lot_name)s which is expired."
|
||||
"\nDo you confirm you want to proceed ?",
|
||||
"\nDo you confirm you want to proceed?",
|
||||
product_name=self.lot_ids.product_id.display_name,
|
||||
lot_name=self.lot_ids.name,
|
||||
)
|
||||
|
||||
@@ -56,11 +56,11 @@
|
||||
<ul class="o_checklist">
|
||||
<li id="checklist-id-1"><p>Motherboard according to processor </p></li>
|
||||
<li id="checklist-id-2"><p>Processor need to decide </p></li>
|
||||
<li id="checklist-id-3"><p>Graphic card with great performance for games ! </p></li>
|
||||
<li id="checklist-id-3"><p>Graphic card with great performance for games! </p></li>
|
||||
<li id="checklist-id-4"><p>Hard drive big, for lot of internet backups </p></li>
|
||||
<li id="checklist-id-5"><p>Tower silent, better when watching films </p></li>
|
||||
<li id="checklist-id-6"><p>Blueray drive ? is it interesting yet ? </p></li>
|
||||
<li id="checklist-id-7"><p>Screen a big one, full of pixels, of course !</p></li>
|
||||
<li id="checklist-id-6"><p>Blueray drive ? is it interesting yet? </p></li>
|
||||
<li id="checklist-id-7"><p>Screen a big one, full of pixels, of course!</p></li>
|
||||
</ul>]]>
|
||||
</field>
|
||||
<field name="stage_id" ref="note_stage_03"/>
|
||||
|
||||
@@ -35,7 +35,7 @@ class Tag(models.Model):
|
||||
color = fields.Integer('Color Index', default=_get_default_color)
|
||||
|
||||
_sql_constraints = [
|
||||
('name_uniq', 'unique (name)', "Tag name already exists !"),
|
||||
('name_uniq', 'unique (name)', "Tag name already exists!"),
|
||||
]
|
||||
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ class PosCategory(models.Model):
|
||||
@api.constrains('parent_id')
|
||||
def _check_category_recursion(self):
|
||||
if not self._check_recursion():
|
||||
raise ValidationError(_('Error ! You cannot create recursive categories.'))
|
||||
raise ValidationError(_('Error! You cannot create recursive categories.'))
|
||||
|
||||
name = fields.Char(string='Category Name', required=True, translate=True)
|
||||
parent_id = fields.Many2one('pos.category', string='Parent Category', index=True)
|
||||
|
||||
@@ -96,7 +96,7 @@ class PosSession(models.Model):
|
||||
update_stock_at_closing = fields.Boolean('Stock should be updated at closing')
|
||||
bank_payment_ids = fields.One2many('account.payment', 'pos_session_id', 'Bank Payments', help='Account payments representing aggregated and bank split payments.')
|
||||
|
||||
_sql_constraints = [('uniq_name', 'unique(name)', "The name of this POS Session must be unique !")]
|
||||
_sql_constraints = [('uniq_name', 'unique(name)', "The name of this POS Session must be unique!")]
|
||||
|
||||
@api.depends('currency_id', 'company_id.currency_id')
|
||||
def _compute_is_in_company_currency(self):
|
||||
|
||||
@@ -98,7 +98,7 @@ export class DebugWidget extends Component {
|
||||
}
|
||||
async deleteOrders() {
|
||||
const { confirmed } = await this.popup.add(ConfirmPopup, {
|
||||
title: this.env._t("Delete Paid Orders ?"),
|
||||
title: this.env._t("Delete Paid Orders?"),
|
||||
body: this.env._t(
|
||||
"This operation will permanently destroy all paid orders from the local storage. You will lose all the data. This operation cannot be undone."
|
||||
),
|
||||
@@ -110,7 +110,7 @@ export class DebugWidget extends Component {
|
||||
}
|
||||
async deleteUnpaidOrders() {
|
||||
const { confirmed } = await this.popup.add(ConfirmPopup, {
|
||||
title: this.env._t("Delete Unpaid Orders ?"),
|
||||
title: this.env._t("Delete Unpaid Orders?"),
|
||||
body: this.env._t(
|
||||
"This operation will destroy all unpaid orders in the browser. You will lose all the unsaved data and exit the point of sale. This operation cannot be undone."
|
||||
),
|
||||
|
||||
@@ -8,7 +8,7 @@ export class ConfirmPopup extends AbstractAwaitablePopup {
|
||||
static defaultProps = {
|
||||
confirmText: _lt("Ok"),
|
||||
cancelText: _lt("Cancel"),
|
||||
title: _lt("Confirm ?"),
|
||||
title: _lt("Confirm?"),
|
||||
body: "",
|
||||
};
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ export class NumberPopup extends AbstractAwaitablePopup {
|
||||
static defaultProps = {
|
||||
confirmText: _t("Confirm"),
|
||||
cancelText: _t("Discard"),
|
||||
title: _t("Confirm ?"),
|
||||
title: _t("Confirm?"),
|
||||
body: "",
|
||||
cheap: false,
|
||||
startingValue: null,
|
||||
|
||||
@@ -128,7 +128,7 @@ export class TicketScreen extends IndependentToOrderScreen {
|
||||
title: this.env._t("Existing orderlines"),
|
||||
body: _.str.sprintf(
|
||||
this.env._t(
|
||||
"%s has a total amount of %s, are you sure you want to delete this order ?"
|
||||
"%s has a total amount of %s, are you sure you want to delete this order?"
|
||||
),
|
||||
order.name,
|
||||
this.getTotal(order)
|
||||
|
||||
@@ -38,7 +38,7 @@ export function useCashierSelector({ onCashierChanged } = { onCashierChanged: ()
|
||||
async function checkPin(employee) {
|
||||
const { confirmed, payload: inputPin } = await popup.add(NumberPopup, {
|
||||
isPassword: true,
|
||||
title: _t("Password ?"),
|
||||
title: _t("Password?"),
|
||||
});
|
||||
|
||||
if (!confirmed) {
|
||||
|
||||
@@ -329,7 +329,7 @@ export class FloorScreen extends Component {
|
||||
}
|
||||
const { confirmed, payload: newName } = await this.popup.add(TextInputPopup, {
|
||||
startingValue: selectedTable.name,
|
||||
title: this.env._t("Table Name ?"),
|
||||
title: this.env._t("Table Name?"),
|
||||
});
|
||||
if (!confirmed) {
|
||||
return;
|
||||
@@ -347,7 +347,7 @@ export class FloorScreen extends Component {
|
||||
const { confirmed, payload: inputNumber } = await this.popup.add(NumberPopup, {
|
||||
startingValue: selectedTable.seats,
|
||||
cheap: true,
|
||||
title: this.env._t("Number of Seats ?"),
|
||||
title: this.env._t("Number of Seats?"),
|
||||
isInputSelected: true,
|
||||
});
|
||||
if (!confirmed) {
|
||||
@@ -384,7 +384,7 @@ export class FloorScreen extends Component {
|
||||
return;
|
||||
}
|
||||
const { confirmed } = await this.popup.add(ConfirmPopup, {
|
||||
title: this.env._t("Are you sure ?"),
|
||||
title: this.env._t("Are you sure?"),
|
||||
body: this.env._t("Removing a table cannot be undone"),
|
||||
});
|
||||
if (!confirmed) {
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@ export class TableGuestsButton extends Component {
|
||||
const { confirmed, payload: inputNumber } = await this.popup.add(NumberPopup, {
|
||||
startingValue: this.nGuests,
|
||||
cheap: true,
|
||||
title: this.env._t("Guests ?"),
|
||||
title: this.env._t("Guests?"),
|
||||
isInputSelected: true,
|
||||
});
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
<field name="execution_details" invisible="1"/>
|
||||
<field name="is_active" widget="boolean_toggle" attrs="{'invisible': ['|', ('is_unlinked', '=', True), ('has_active', '=', False)]}"/>
|
||||
<field name="is_unlinked" invisible="True"/>
|
||||
<button name="action_unlink" string="Delete" type="object" icon="fa-trash" attrs="{'invisible': [('is_unlinked', '=', True)]}" confirm="This operation is irreversible. Do you wish to proceed to the record deletion ?"/>
|
||||
<button name="action_unlink" string="Delete" type="object" icon="fa-trash" attrs="{'invisible': [('is_unlinked', '=', True)]}" confirm="This operation is irreversible. Do you wish to proceed to the record deletion?"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -23,7 +23,7 @@ class ProductTag(models.Model):
|
||||
)
|
||||
|
||||
_sql_constraints = [
|
||||
('name_uniq', 'unique (name)', "Tag name already exists !"),
|
||||
('name_uniq', 'unique (name)', "Tag name already exists!"),
|
||||
]
|
||||
|
||||
@api.depends('product_template_ids', 'product_product_ids')
|
||||
|
||||
@@ -21,13 +21,13 @@ class ConfirmExpiry(models.TransientModel):
|
||||
# For multiple expired lots, they are listed in the wizard view.
|
||||
self.description = _(
|
||||
"You are going to deliver some product expired lots."
|
||||
"\nDo you confirm you want to proceed ?"
|
||||
"\nDo you confirm you want to proceed?"
|
||||
)
|
||||
else:
|
||||
# For one expired lot, its name is written in the wizard message.
|
||||
self.description = _(
|
||||
"You are going to deliver the product %(product_name)s, %(lot_name)s which is expired."
|
||||
"\nDo you confirm you want to proceed ?",
|
||||
"\nDo you confirm you want to proceed?",
|
||||
product_name=self.lot_ids.product_id.display_name,
|
||||
lot_name=self.lot_ids.name
|
||||
)
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
<form string="Working Time">
|
||||
<field name="two_weeks_calendar" invisible="1"/>
|
||||
<header>
|
||||
<button name="switch_calendar_type" attrs="{'invisible':[('two_weeks_calendar', '=', True)]}" string="Switch to 2 weeks calendar" type="object" confirm="Are you sure you want to switch this calendar to 2 weeks calendar ? All entries will be lost"/>
|
||||
<button name="switch_calendar_type" attrs="{'invisible':[('two_weeks_calendar', '=', False)]}" string="Switch to 1 week calendar" type="object" confirm="Are you sure you want to switch this calendar to 1 week calendar ? All entries will be lost"/>
|
||||
<button name="switch_calendar_type" attrs="{'invisible':[('two_weeks_calendar', '=', True)]}" string="Switch to 2 weeks calendar" type="object" confirm="Are you sure you want to switch this calendar to 2 weeks calendar? All entries will be lost"/>
|
||||
<button name="switch_calendar_type" attrs="{'invisible':[('two_weeks_calendar', '=', False)]}" string="Switch to 1 week calendar" type="object" confirm="Are you sure you want to switch this calendar to 1 week calendar? All entries will be lost"/>
|
||||
</header>
|
||||
<sheet string="Working Time">
|
||||
<widget name="web_ribbon" text="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
|
||||
|
||||
@@ -264,8 +264,8 @@
|
||||
<form string="Working Time">
|
||||
<field name="two_weeks_calendar" invisible="1"/>
|
||||
<header>
|
||||
<button name="switch_calendar_type" attrs="{'invisible':[('two_weeks_calendar', '=', True)]}" string="Switch to 2 weeks calendar" type="object" confirm="Are you sure you want to switch this calendar to 2 weeks calendar ? All entries will be lost"/>
|
||||
<button name="switch_calendar_type" attrs="{'invisible':[('two_weeks_calendar', '=', False)]}" string="Switch to 1 week calendar" type="object" confirm="Are you sure you want to switch this calendar to 1 week calendar ? All entries will be lost"/>
|
||||
<button name="switch_calendar_type" attrs="{'invisible':[('two_weeks_calendar', '=', True)]}" string="Switch to 2 weeks calendar" type="object" confirm="Are you sure you want to switch this calendar to 2 weeks calendar? All entries will be lost"/>
|
||||
<button name="switch_calendar_type" attrs="{'invisible':[('two_weeks_calendar', '=', False)]}" string="Switch to 1 week calendar" type="object" confirm="Are you sure you want to switch this calendar to 1 week calendar? All entries will be lost"/>
|
||||
</header>
|
||||
<sheet string="Working Time">
|
||||
<widget name="web_ribbon" text="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
|
||||
|
||||
@@ -31,7 +31,7 @@ export class ProductDiscountField extends FloatField {
|
||||
const isFirstOrderLine = this.props.record.data.id === orderLines[0].data.id;
|
||||
if (isFirstOrderLine && sameValue(orderLines)) {
|
||||
this.dialogService.add(ConfirmationDialog, {
|
||||
body: _lt("Do you want to apply this value to all lines ?"),
|
||||
body: _lt("Do you want to apply this value to all lines?"),
|
||||
confirm: () => {
|
||||
const commands = orderLines.slice(1).map((line) => {
|
||||
return {
|
||||
|
||||
@@ -17,5 +17,5 @@ class Tag(models.Model):
|
||||
color = fields.Integer('Color', default=_get_default_color)
|
||||
|
||||
_sql_constraints = [
|
||||
('name_uniq', 'unique (name)', "Tag name already exists !"),
|
||||
('name_uniq', 'unique (name)', "Tag name already exists!"),
|
||||
]
|
||||
|
||||
@@ -17358,7 +17358,7 @@
|
||||
isVisible: (env) => {
|
||||
return env.model.getters.getSheetIds().length > 1;
|
||||
},
|
||||
action: (env) => env.askConfirmation(_lt("Are you sure you want to delete this sheet ?"), () => {
|
||||
action: (env) => env.askConfirmation(_lt("Are you sure you want to delete this sheet?"), () => {
|
||||
env.model.dispatch("DELETE_SHEET", { sheetId: env.model.getters.getActiveSheetId() });
|
||||
}),
|
||||
})
|
||||
|
||||
@@ -97,7 +97,7 @@ class Location(models.Model):
|
||||
net_weight = fields.Float('Net Weight', compute="_compute_weight")
|
||||
forecast_weight = fields.Float('Forecasted Weight', compute="_compute_weight")
|
||||
|
||||
_sql_constraints = [('barcode_company_uniq', 'unique (barcode,company_id)', 'The barcode for a location must be unique per company !'),
|
||||
_sql_constraints = [('barcode_company_uniq', 'unique (barcode,company_id)', 'The barcode for a location must be unique per company!'),
|
||||
('inventory_freq_nonneg', 'check(cyclic_inventory_frequency >= 0)', 'The inventory frequency (days) for a location must be non-negative')]
|
||||
|
||||
@api.depends('outgoing_move_line_ids.reserved_qty', 'incoming_move_line_ids.reserved_qty',
|
||||
|
||||
@@ -28,7 +28,7 @@ class PackageType(models.Model):
|
||||
storage_category_capacity_ids = fields.One2many('stock.storage.category.capacity', 'package_type_id', 'Storage Category Capacity', copy=True)
|
||||
|
||||
_sql_constraints = [
|
||||
('barcode_uniq', 'unique(barcode)', "A barcode can only be assigned to one package type !"),
|
||||
('barcode_uniq', 'unique(barcode)', "A barcode can only be assigned to one package type!"),
|
||||
('positive_height', 'CHECK(height>=0.0)', 'Height must be positive'),
|
||||
('positive_width', 'CHECK(width>=0.0)', 'Width must be positive'),
|
||||
('positive_length', 'CHECK(packaging_length>=0.0)', 'Length must be positive'),
|
||||
|
||||
@@ -618,7 +618,7 @@
|
||||
<field name="search_view_id" ref="stock_move_line_view_search"/>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
No operations found. Let's create a transfer !
|
||||
No operations found. Let's create a transfer!
|
||||
</p>
|
||||
<p>
|
||||
Transfers allow you to move products from one location to another.
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
</field>
|
||||
</div>
|
||||
<div>
|
||||
<strong>Where do you want to send the products ?</strong>
|
||||
<strong>Where do you want to send the products?</strong>
|
||||
</div>
|
||||
<div>
|
||||
<field name="filtered_location" invisible="1"/>
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
<strong t-out="object.survey_id.display_name or ''">Furniture Creation</strong>
|
||||
certification
|
||||
</p>
|
||||
<p>Congratulations for passing the test with a score of <strong t-out="object.scoring_percentage"/>% !</p>
|
||||
<p>Congratulations for passing the test with a score of <strong t-out="object.scoring_percentage"/>%!</p>
|
||||
</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@@ -336,7 +336,7 @@
|
||||
<field name="is_scored_question" eval="True" />
|
||||
<field name="answer_datetime">2021-01-07 00:00:01</field>
|
||||
<field name="answer_score">1.0</field>
|
||||
<field name="question_placeholder">Beware of leap years !</field>
|
||||
<field name="question_placeholder">Beware of leap years!</field>
|
||||
</record>
|
||||
<!-- Question and predefined answer 12 -->
|
||||
<record model="survey.question" id="vendor_certification_page_3_question_4">
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<field name="time_limit" >10.0</field>
|
||||
<field name="questions_layout">page_per_question</field>
|
||||
<field name="description" type="html">
|
||||
<p>Choose your favourite subject and show how good you are. Ready ?</p></field>
|
||||
<p>Choose your favourite subject and show how good you are. Ready?</p></field>
|
||||
<field name="background_image" type="base64" file="survey/static/src/img/burger_quiz_background.jpg"/>
|
||||
</record>
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
<record id="survey_demo_burger_quiz_p2_q2" model="survey.question">
|
||||
<field name="survey_id" ref="survey_demo_burger_quiz"/>
|
||||
<field name="sequence">120</field>
|
||||
<field name="title">What is the biggest city in the world ?</field>
|
||||
<field name="title">What is the biggest city in the world?</field>
|
||||
<field name="question_type">simple_choice</field>
|
||||
<field name="constr_mandatory" eval="True"/>
|
||||
<field name="is_conditional" eval="True"/>
|
||||
@@ -126,7 +126,7 @@
|
||||
<record id="survey_demo_burger_quiz_p2_q3" model="survey.question">
|
||||
<field name="survey_id" ref="survey_demo_burger_quiz"/>
|
||||
<field name="sequence">130</field>
|
||||
<field name="title">Which is the highest volcano in Europe ?</field>
|
||||
<field name="title">Which is the highest volcano in Europe?</field>
|
||||
<field name="question_type">simple_choice</field>
|
||||
<field name="constr_mandatory" eval="True"/>
|
||||
<field name="is_conditional" eval="True"/>
|
||||
@@ -167,7 +167,7 @@
|
||||
<record id="survey_demo_burger_quiz_p3_q1" model="survey.question">
|
||||
<field name="survey_id" ref="survey_demo_burger_quiz"/>
|
||||
<field name="sequence">210</field>
|
||||
<field name="title">When did Genghis Khan die ?</field>
|
||||
<field name="title">When did Genghis Khan die?</field>
|
||||
<field name="question_type">simple_choice</field>
|
||||
<field name="constr_mandatory" eval="True"/>
|
||||
<field name="is_conditional" eval="True"/>
|
||||
@@ -195,7 +195,7 @@
|
||||
<record id="survey_demo_burger_quiz_p3_q2" model="survey.question">
|
||||
<field name="survey_id" ref="survey_demo_burger_quiz"/>
|
||||
<field name="sequence">220</field>
|
||||
<field name="title">Who is the architect of the Great Pyramid of Giza ?</field>
|
||||
<field name="title">Who is the architect of the Great Pyramid of Giza?</field>
|
||||
<field name="question_type">simple_choice</field>
|
||||
<field name="constr_mandatory" eval="True"/>
|
||||
<field name="is_conditional" eval="True"/>
|
||||
@@ -228,7 +228,7 @@
|
||||
<record id="survey_demo_burger_quiz_p3_q3" model="survey.question">
|
||||
<field name="survey_id" ref="survey_demo_burger_quiz"/>
|
||||
<field name="sequence">230</field>
|
||||
<field name="title">How many years did the 100 years war last ?</field>
|
||||
<field name="title">How many years did the 100 years war last?</field>
|
||||
<field name="question_type">simple_choice</field>
|
||||
<field name="constr_mandatory" eval="True"/>
|
||||
<field name="is_conditional" eval="True"/>
|
||||
@@ -269,7 +269,7 @@
|
||||
<record id="survey_demo_burger_quiz_p4_q1" model="survey.question">
|
||||
<field name="survey_id" ref="survey_demo_burger_quiz"/>
|
||||
<field name="sequence">310</field>
|
||||
<field name="title">Who received a Nobel prize in Physics for the discovery of neutrino oscillations, which shows that neutrinos have mass ?</field>
|
||||
<field name="title">Who received a Nobel prize in Physics for the discovery of neutrino oscillations, which shows that neutrinos have mass?</field>
|
||||
<field name="question_type">multiple_choice</field>
|
||||
<field name="constr_mandatory" eval="True"/>
|
||||
<field name="is_conditional" eval="True"/>
|
||||
@@ -304,7 +304,7 @@
|
||||
<record id="survey_demo_burger_quiz_p4_q2" model="survey.question">
|
||||
<field name="survey_id" ref="survey_demo_burger_quiz"/>
|
||||
<field name="sequence">320</field>
|
||||
<field name="title">What is, approximately, the critical mass of plutonium-239 ?</field>
|
||||
<field name="title">What is, approximately, the critical mass of plutonium-239?</field>
|
||||
<field name="question_type">simple_choice</field>
|
||||
<field name="constr_mandatory" eval="True"/>
|
||||
<field name="is_conditional" eval="True"/>
|
||||
@@ -337,7 +337,7 @@
|
||||
<record id="survey_demo_burger_quiz_p4_q3" model="survey.question">
|
||||
<field name="survey_id" ref="survey_demo_burger_quiz"/>
|
||||
<field name="sequence">330</field>
|
||||
<field name="title">Can Humans ever directly see a photon ?</field>
|
||||
<field name="title">Can Humans ever directly see a photon?</field>
|
||||
<field name="question_type">simple_choice</field>
|
||||
<field name="constr_mandatory" eval="True"/>
|
||||
<field name="is_conditional" eval="True"/>
|
||||
@@ -368,7 +368,7 @@
|
||||
<record id="survey_demo_burger_quiz_p5_q1" model="survey.question">
|
||||
<field name="survey_id" ref="survey_demo_burger_quiz"/>
|
||||
<field name="sequence">410</field>
|
||||
<field name="title">Which Musician is not in the 27th Club ?</field>
|
||||
<field name="title">Which Musician is not in the 27th Club?</field>
|
||||
<field name="question_type">multiple_choice</field>
|
||||
<field name="constr_mandatory" eval="True"/>
|
||||
<field name="is_conditional" eval="True"/>
|
||||
@@ -403,7 +403,7 @@
|
||||
<record id="survey_demo_burger_quiz_p5_q2" model="survey.question">
|
||||
<field name="survey_id" ref="survey_demo_burger_quiz"/>
|
||||
<field name="sequence">420</field>
|
||||
<field name="title">Which painting/drawing was not made by Pablo Picasso ?</field>
|
||||
<field name="title">Which painting/drawing was not made by Pablo Picasso?</field>
|
||||
<field name="question_type">simple_choice</field>
|
||||
<field name="constr_mandatory" eval="True"/>
|
||||
<field name="is_conditional" eval="True"/>
|
||||
@@ -462,7 +462,7 @@
|
||||
<record id="survey_demo_burger_quiz_p5_q3_sug3" model="survey.question.answer">
|
||||
<field name="question_id" ref="survey_demo_burger_quiz_p5_q3"/>
|
||||
<field name="sequence">3</field>
|
||||
<field name="value">I've been noticing gravity since I was very young !</field> <!-- Cameron Diaz -->
|
||||
<field name="value">I've been noticing gravity since I was very young!</field> <!-- Cameron Diaz -->
|
||||
</record>
|
||||
<record id="survey_demo_burger_quiz_p5_q3_sug4" model="survey.question.answer">
|
||||
<field name="question_id" ref="survey_demo_burger_quiz_p5_q3"/>
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
<record model="survey.question" id="survey_feedback_p1_q1">
|
||||
<field name="survey_id" ref="survey_feedback" />
|
||||
<field name="sequence">2</field>
|
||||
<field name="title">Where do you live ?</field>
|
||||
<field name="title">Where do you live?</field>
|
||||
<field name="question_type">char_box</field>
|
||||
<field name="question_placeholder">Brussels</field>
|
||||
<field name="constr_mandatory" eval="False"/>
|
||||
@@ -34,14 +34,14 @@
|
||||
<record model="survey.question" id="survey_feedback_p1_q2">
|
||||
<field name="survey_id" ref="survey_feedback" />
|
||||
<field name="sequence">3</field>
|
||||
<field name="title">When is your date of birth ?</field>
|
||||
<field name="title">When is your date of birth?</field>
|
||||
<field name="question_type">date</field>
|
||||
<field name="constr_mandatory" eval="False"/>
|
||||
</record>
|
||||
<record model="survey.question" id="survey_feedback_p1_q3">
|
||||
<field name="survey_id" ref="survey_feedback" />
|
||||
<field name="sequence">4</field>
|
||||
<field name="title">How frequently do you buy products online ?</field>
|
||||
<field name="title">How frequently do you buy products online?</field>
|
||||
<field name="question_type">simple_choice</field>
|
||||
<field name="comments_allowed" eval="True"/>
|
||||
<field name="comment_count_as_answer" eval="True"/>
|
||||
@@ -70,7 +70,7 @@
|
||||
<record model="survey.question" id="survey_feedback_p1_q4">
|
||||
<field name="survey_id" ref="survey_feedback" />
|
||||
<field name="sequence">5</field>
|
||||
<field name="title">How many times did you order products on our website ?</field>
|
||||
<field name="title">How many times did you order products on our website?</field>
|
||||
<field name="question_type">numerical_box</field>
|
||||
<field name="constr_mandatory" eval="True"/>
|
||||
</record>
|
||||
@@ -88,7 +88,7 @@
|
||||
<record model="survey.question" id="survey_feedback_p2_q1">
|
||||
<field name="survey_id" ref="survey_feedback" />
|
||||
<field name="sequence">7</field>
|
||||
<field name="title">Which of the following words would you use to describe our products ?</field>
|
||||
<field name="title">Which of the following words would you use to describe our products?</field>
|
||||
<field name="question_type">multiple_choice</field>
|
||||
<field name="constr_mandatory" eval="True"/>
|
||||
<field name="comments_allowed" eval="True"/>
|
||||
@@ -137,7 +137,7 @@
|
||||
<record model="survey.question" id="survey_feedback_p2_q2">
|
||||
<field name="survey_id" ref="survey_feedback" />
|
||||
<field name="sequence">8</field>
|
||||
<field name="title">What do you think about our new eCommerce ?</field>
|
||||
<field name="title">What do you think about our new eCommerce?</field>
|
||||
<field name="question_type">matrix</field>
|
||||
<field name="matrix_subtype">multiple</field>
|
||||
<field name="constr_mandatory" eval="True"/>
|
||||
@@ -190,7 +190,7 @@
|
||||
<record model="survey.question" id="survey_feedback_p2_q3">
|
||||
<field name="survey_id" ref="survey_feedback" />
|
||||
<field name="sequence">9</field>
|
||||
<field name="title">Do you have any other comments, questions, or concerns ?</field>
|
||||
<field name="title">Do you have any other comments, questions, or concerns?</field>
|
||||
<field name="question_type">text_box</field>
|
||||
<field name="constr_mandatory" eval="False"/>
|
||||
</record>
|
||||
|
||||
@@ -240,7 +240,7 @@
|
||||
<field name="user_input_id" ref="survey_answer_3"/>
|
||||
<field name="question_id" ref="survey_feedback_p2_q3"/>
|
||||
<field name="answer_type">text_box</field>
|
||||
<field name="value_text_box">The customizable desk received is not the one I ordered on your website and the quality is very poor ! Really disappointed.</field>
|
||||
<field name="value_text_box">The customizable desk received is not the one I ordered on your website and the quality is very poor! Really disappointed.</field>
|
||||
</record>
|
||||
|
||||
</data></odoo>
|
||||
|
||||
@@ -11,13 +11,13 @@
|
||||
<field name="scoring_success_min">55</field>
|
||||
<field name="questions_layout">page_per_question</field>
|
||||
<field name="description" type="html">
|
||||
<p>This small quiz will test your knowledge about our Company. Be prepared !</p></field>
|
||||
<p>This small quiz will test your knowledge about our Company. Be prepared!</p></field>
|
||||
<field name="background_image" type="base64" file="survey/static/src/img/survey_background.jpg"/>
|
||||
</record>
|
||||
|
||||
<!-- Page 1: general informations -->
|
||||
<record id="survey_demo_quiz_p1" model="survey.question">
|
||||
<field name="title">Who are you ?</field>
|
||||
<field name="title">Who are you?</field>
|
||||
<field name="survey_id" ref="survey_demo_quiz"/>
|
||||
<field name="sequence">1</field>
|
||||
<field name="question_type" eval="False"/>
|
||||
@@ -28,7 +28,7 @@
|
||||
<record id="survey_demo_quiz_p1_q1" model="survey.question">
|
||||
<field name="survey_id" ref="survey_demo_quiz"/>
|
||||
<field name="sequence">2</field>
|
||||
<field name="title">What is your email ?</field>
|
||||
<field name="title">What is your email?</field>
|
||||
<field name="question_type">char_box</field>
|
||||
<field name="constr_mandatory" eval="True"/>
|
||||
<field name="validation_email" eval="True"/>
|
||||
@@ -38,7 +38,7 @@
|
||||
<record id="survey_demo_quiz_p1_q2" model="survey.question">
|
||||
<field name="survey_id" ref="survey_demo_quiz"/>
|
||||
<field name="sequence">3</field>
|
||||
<field name="title">What is your nickname ?</field>
|
||||
<field name="title">What is your nickname?</field>
|
||||
<field name="question_type">char_box</field>
|
||||
<field name="question_placeholder">Don't be shy, be wild!</field>
|
||||
<field name="constr_mandatory" eval="True"/>
|
||||
@@ -47,7 +47,7 @@
|
||||
<record id="survey_demo_quiz_p1_q3" model="survey.question">
|
||||
<field name="survey_id" ref="survey_demo_quiz"/>
|
||||
<field name="sequence">4</field>
|
||||
<field name="title">Where are you from ?</field>
|
||||
<field name="title">Where are you from?</field>
|
||||
<field name="question_type">char_box</field>
|
||||
<field name="question_placeholder">Brussels, Belgium</field>
|
||||
<field name="constr_mandatory" eval="True"/>
|
||||
@@ -55,7 +55,7 @@
|
||||
<record id="survey_demo_quiz_p1_q4" model="survey.question">
|
||||
<field name="survey_id" ref="survey_demo_quiz"/>
|
||||
<field name="sequence">5</field>
|
||||
<field name="title">How old are you ?</field>
|
||||
<field name="title">How old are you?</field>
|
||||
<field name="description" type="html"><p>Just to categorize your answers, don't worry.</p></field>
|
||||
<field name="question_type">numerical_box</field>
|
||||
<field name="constr_mandatory" eval="True"/>
|
||||
@@ -74,15 +74,15 @@
|
||||
<record id="survey_demo_quiz_p2_q1" model="survey.question">
|
||||
<field name="survey_id" ref="survey_demo_quiz"/>
|
||||
<field name="sequence">11</field>
|
||||
<field name="title">When is Mitchell Admin born ?</field>
|
||||
<field name="description" type="html"><span>Our famous Leader !</span></field>
|
||||
<field name="title">When is Mitchell Admin born?</field>
|
||||
<field name="description" type="html"><span>Our famous Leader!</span></field>
|
||||
<field name="question_type">date</field>
|
||||
<field name="constr_mandatory" eval="True"/>
|
||||
</record>
|
||||
<record id="survey_demo_quiz_p2_q2" model="survey.question">
|
||||
<field name="survey_id" ref="survey_demo_quiz"/>
|
||||
<field name="sequence">12</field>
|
||||
<field name="title">When did precisely Marc Demo crop its first apple tree ?</field>
|
||||
<field name="title">When did precisely Marc Demo crop its first apple tree?</field>
|
||||
<field name="question_type">datetime</field>
|
||||
<field name="constr_mandatory" eval="True"/>
|
||||
</record>
|
||||
@@ -165,7 +165,7 @@
|
||||
<field name="survey_id" ref="survey_demo_quiz"/>
|
||||
<field name="sequence">23</field>
|
||||
<field name="title">Select trees that made more than 20K sales this year</field>
|
||||
<field name="description" type="html"><span>Our sales people have an advantage, but you can do it !</span></field>
|
||||
<field name="description" type="html"><span>Our sales people have an advantage, but you can do it!</span></field>
|
||||
<field name="question_type">multiple_choice</field>
|
||||
<field name="constr_mandatory" eval="False"/>
|
||||
<field name="comments_allowed" eval="True"/>
|
||||
@@ -326,7 +326,7 @@
|
||||
</record>
|
||||
|
||||
<record id="survey_demo_quiz_p4_q1" model="survey.question">
|
||||
<field name="title">Dogwood is from which family of trees ?</field>
|
||||
<field name="title">Dogwood is from which family of trees?</field>
|
||||
<field name="survey_id" ref="survey_demo_quiz"/>
|
||||
<field name="sequence">31</field>
|
||||
<field name="question_type">simple_choice</field>
|
||||
@@ -360,7 +360,7 @@
|
||||
</record>
|
||||
|
||||
<record id="survey_demo_quiz_p4_q2" model="survey.question">
|
||||
<field name="title">In which country did the bonsai technique develop ?</field>
|
||||
<field name="title">In which country did the bonsai technique develop?</field>
|
||||
<field name="survey_id" ref="survey_demo_quiz"/>
|
||||
<field name="sequence">32</field>
|
||||
<field name="question_type">simple_choice</field>
|
||||
@@ -394,7 +394,7 @@
|
||||
</record>
|
||||
|
||||
<record id="survey_demo_quiz_p4_q3" model="survey.question">
|
||||
<field name="title">Is the wood of a coniferous hard or soft ?</field>
|
||||
<field name="title">Is the wood of a coniferous hard or soft?</field>
|
||||
<field name="survey_id" ref="survey_demo_quiz"/>
|
||||
<field name="sequence">33</field>
|
||||
<field name="question_type">simple_choice</field>
|
||||
@@ -420,7 +420,7 @@
|
||||
</record>
|
||||
|
||||
<record id="survey_demo_quiz_p4_q4" model="survey.question">
|
||||
<field name="title">From which continent is native the Scots pine (pinus sylvestris) ?</field>
|
||||
<field name="title">From which continent is native the Scots pine (pinus sylvestris)?</field>
|
||||
<field name="survey_id" ref="survey_demo_quiz"/>
|
||||
<field name="sequence">34</field>
|
||||
<field name="question_type">simple_choice</field>
|
||||
@@ -500,7 +500,7 @@
|
||||
</record>
|
||||
|
||||
<record id="survey_demo_quiz_p4_q6" model="survey.question">
|
||||
<field name="title">After watching this video, will you swear that you are not going to procrastinate to trim your hedge this year ?</field>
|
||||
<field name="title">After watching this video, will you swear that you are not going to procrastinate to trim your hedge this year?</field>
|
||||
<field name="survey_id" ref="survey_demo_quiz"/>
|
||||
<field name="sequence">36</field>
|
||||
<field name="question_type">simple_choice</field>
|
||||
@@ -546,7 +546,7 @@
|
||||
<record id="survey_demo_quiz_p5_q1" model="survey.question">
|
||||
<field name="survey_id" ref="survey_demo_quiz"/>
|
||||
<field name="sequence">41</field>
|
||||
<field name="title">What do you think about this survey ?</field>
|
||||
<field name="title">What do you think about this survey?</field>
|
||||
<field name="description" type="html"><span>If you don't like us, please try to be as objective as possible.</span></field>
|
||||
<field name="question_type">simple_choice</field>
|
||||
<field name="comments_allowed" eval="True"/>
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
<field name="user_input_id" ref="survey_demo_quiz_answer_1"/>
|
||||
<field name="question_id" ref="survey_demo_quiz_p3_q2"/>
|
||||
<field name="answer_type">char_box</field>
|
||||
<field name="value_char_box">Mooses ?? Really ?</field>
|
||||
<field name="value_char_box">Mooses?? Really?</field>
|
||||
</record>
|
||||
<record id="survey_demo_quiz_answer_1_p3_q3_l1" model="survey.user_input.line">
|
||||
<field name="user_input_id" ref="survey_demo_quiz_answer_1"/>
|
||||
@@ -243,7 +243,7 @@
|
||||
<field name="user_input_id" ref="survey_demo_quiz_answer_2"/>
|
||||
<field name="question_id" ref="survey_demo_quiz_p3_q2"/>
|
||||
<field name="answer_type">char_box</field>
|
||||
<field name="value_char_box">Mooses are best pollinators of the world !</field>
|
||||
<field name="value_char_box">Mooses are best pollinators of the world!</field>
|
||||
</record>
|
||||
<record id="survey_demo_quiz_answer_2_p3_q3_l1" model="survey.user_input.line">
|
||||
<field name="user_input_id" ref="survey_demo_quiz_answer_2"/>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user