Initial commit: OCA Technical packages (595 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:43:03 +02:00
commit 2cc02aac6e
24950 changed files with 2318079 additions and 0 deletions

View file

@ -0,0 +1,113 @@
================
Attachment Queue
================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:94a2771dcad492d3d050eac9fe0255e6cc1eb0c16aa52d31b95f98fe3206c6c4
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github
:target: https://github.com/OCA/server-tools/tree/16.0/attachment_queue
:alt: OCA/server-tools
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/server-tools-16-0/server-tools-16-0-attachment_queue
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/server-tools&target_branch=16.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module adds async processing capabilities to attachments by implementing a new model attachment.queue that wraps attachments and stores additional information so that it can be processed in an asynchronous way.
A use case of this module can be found in the attachment_synchronize module.
**Table of contents**
.. contents::
:local:
Usage
=====
Go the menu Settings > Technical > Database Structure > Attachments Queue
You can create / see standard attachments with additional fields
Configure the batch limit for attachments that can be sync by the cron task at a go:
Settings > Technical > System parameters > attachment_queue_cron_batch_limit
image:: ../static/description/tree.png
This module can be used in combination with attachment_synchronize to control file processing workflow
image:: ../static/description/form.png
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/server-tools/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/server-tools/issues/new?body=module:%20attachment_queue%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
~~~~~~~
* Akretion
Contributors
~~~~~~~~~~~~
* Valentin CHEMIERE <valentin.chemiere@akretion.com>
* Florian da Costa <florian.dacosta@akretion.com>
* Angel Moya <http://angelmoya.es>
* Dan Kiplangat <dan@sunflowerweb.nl>
* Kevin Khao <kevin.khao@akretion.com>
Maintainers
~~~~~~~~~~~
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
.. |maintainer-florian-dacosta| image:: https://github.com/florian-dacosta.png?size=40px
:target: https://github.com/florian-dacosta
:alt: florian-dacosta
.. |maintainer-sebastienbeau| image:: https://github.com/sebastienbeau.png?size=40px
:target: https://github.com/sebastienbeau
:alt: sebastienbeau
Current `maintainers <https://odoo-community.org/page/maintainer-role>`__:
|maintainer-florian-dacosta| |maintainer-sebastienbeau|
This module is part of the `OCA/server-tools <https://github.com/OCA/server-tools/tree/16.0/attachment_queue>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View file

@ -0,0 +1,2 @@
from . import models
from . import wizards

View file

@ -0,0 +1,23 @@
# Copyright 2015 Florian DA COSTA @ Akretion
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
"name": "Attachment Queue",
"version": "16.0.1.2.1",
"author": "Akretion,Odoo Community Association (OCA)",
"summary": "Base module adding the concept of queue for processing files",
"website": "https://github.com/OCA/server-tools",
"maintainers": ["florian-dacosta", "sebastienbeau"],
"license": "AGPL-3",
"category": "Generic Modules",
"depends": ["base", "mail", "queue_job"],
"data": [
"views/attachment_queue_view.xml",
"security/ir.model.access.csv",
"data/mail_template.xml",
"data/queue_job_channel.xml",
"wizards/attachement_queue_reschedule.xml",
],
"demo": ["demo/attachment_queue.xml"],
"installable": True,
}

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo noupdate="1">
<record id="attachment_failure_notification" model="mail.template">
<field name="email_to">{{object.failure_emails}}</field>
<field name="name">Attachment Failure notification</field>
<field name="subject">The attachment {{object.name}} has failed</field>
<field name="model_id" ref="attachment_queue.model_attachment_queue" />
<field
name="body_html"
><![CDATA[
<p style="margin:0px 0px 10px 0px;font-size:13px;font-family:&quot;Lucida Grande&quot;, Helvetica, Verdana, Arial, sans-serif;">Hello,<br><br></p>
<p style="margin:0px 0px 10px 0px;font-size:13px;font-family:&quot;Lucida Grande&quot;, Helvetica, Verdana, Arial, sans-serif;">The attachment ${object.name} has failed with the following error message : <br>${object.state_message}<br></p><p style="margin:0px 0px 10px 0px;font-size:13px;font-family:&quot;Lucida Grande&quot;, Helvetica, Verdana, Arial, sans-serif;"></p>
<p style="margin:0px 0px 10px 0px;font-size:13px;font-family:&quot;Lucida Grande&quot;, Helvetica, Verdana, Arial, sans-serif;">Regards,<br></p>
]]></field>
</record>
</odoo>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo noupdate="1">
<record id="attachment_queue_job_channel" model="queue.job.channel">
<field name="name">attachment_queue</field>
<field name="parent_id" ref="queue_job.channel_root" />
</record>
</odoo>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo noupdate="1">
<record id="dummy_attachment_queue" model="attachment.queue">
<field name="name">Dummy file Used for unitests</field>
</record>
</odoo>

View file

@ -0,0 +1,620 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * attachment_queue
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: attachment_queue
#: model:mail.template,body_html:attachment_queue.attachment_failure_notification
msgid ""
"\n"
" <p style=\"margin:0px 0px 10px 0px;font-size:13px;font-family:&quot;Lucida Grande&quot;, Helvetica, Verdana, Arial, sans-serif;\">Hello,<br><br></p>\n"
" <p style=\"margin:0px 0px 10px 0px;font-size:13px;font-family:&quot;Lucida Grande&quot;, Helvetica, Verdana, Arial, sans-serif;\">The attachment ${object.name} has failed with the following error message : <br>${object.state_message}<br></p><p style=\"margin:0px 0px 10px 0px;font-size:13px;font-family:&quot;Lucida Grande&quot;, Helvetica, Verdana, Arial, sans-serif;\"></p>\n"
" <p style=\"margin:0px 0px 10px 0px;font-size:13px;font-family:&quot;Lucida Grande&quot;, Helvetica, Verdana, Arial, sans-serif;\">Regards,<br></p>\n"
" "
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__access_token
msgid "Access Token"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_needaction
msgid "Action Needed"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_ids
msgid "Activities"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_exception_decoration
msgid "Activity Exception Decoration"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_state
msgid "Activity State"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_type_icon
msgid "Activity Type Icon"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__assigned_attachment_ids
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__assigned_attachment_ids
msgid "Assigned Attachments"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__attachment_id
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Attachment"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_attachment_count
msgid "Attachment Count"
msgstr ""
#. module: attachment_queue
#: model:mail.template,name:attachment_queue.attachment_failure_notification
msgid "Attachment Failure notification"
msgstr ""
#. module: attachment_queue
#: model:ir.model,name:attachment_queue.model_attachment_queue
msgid "Attachment Queue"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__local_url
msgid "Attachment URL"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__attachment_ids
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Attachments"
msgstr ""
#. module: attachment_queue
#: model:ir.actions.act_window,name:attachment_queue.action_attachment_queue
#: model:ir.ui.menu,name:attachment_queue.menu_attachment_queue
msgid "Attachments Queue"
msgstr ""
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Binary"
msgstr ""
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_reschedule_attachment
msgid "Cancel"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__changeset_change_ids
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__changeset_change_ids
msgid "Changeset Changes"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__changeset_ids
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__changeset_ids
msgid "Changesets"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__checksum
msgid "Checksum/SHA1"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__failure_emails
msgid ""
"Comma-separated list of email addresses to be notified in case offailure"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__company_id
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Company"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__count_changesets
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__count_changesets
msgid "Count Changesets"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__count_pending_changeset_changes
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__count_pending_changeset_changes
msgid "Count Pending Changeset Changes"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__count_pending_changesets
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__count_pending_changesets
msgid "Count Pending Changesets"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__create_uid
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__create_uid
msgid "Created by"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__create_date
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__create_date
msgid "Created on"
msgstr ""
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Creation Month"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__db_datas
msgid "Database Data"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__date_done
msgid "Date Done"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__description
msgid "Description"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__display_name
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__display_name
msgid "Display Name"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields.selection,name:attachment_queue.selection__attachment_queue__state__done
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Done"
msgstr ""
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_form
msgid "Error"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields.selection,name:attachment_queue.selection__attachment_queue__state__failed
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Failed"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__failure_emails
msgid "Failure Emails"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__datas
msgid "File Content (base64)"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__raw
msgid "File Content (raw)"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__file_size
msgid "File Size"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__file_type
msgid "File Type"
msgstr ""
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "File type"
msgstr ""
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Filter on my documents"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_follower_ids
msgid "Followers"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_partner_ids
msgid "Followers (Partners)"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__activity_type_icon
msgid "Font awesome icon e.g. fa-tasks"
msgstr ""
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Group By"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__has_message
msgid "Has Message"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__id
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__id
msgid "ID"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_exception_icon
msgid "Icon"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__activity_exception_icon
msgid "Icon to indicate an exception activity."
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__message_needaction
msgid "If checked, new messages require your attention."
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__message_has_error
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__message_has_sms_error
msgid "If checked, some messages have a delivery error."
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__image_height
msgid "Image Height"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__image_src
msgid "Image Src"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__image_width
msgid "Image Width"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__index_content
msgid "Indexed Content"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_is_follower
msgid "Is Follower"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__public
msgid "Is public document"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue____last_update
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule____last_update
msgid "Last Modified on"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__write_uid
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__write_uid
msgid "Last Updated by"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__write_date
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__write_date
msgid "Last Updated on"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__attachment_id
msgid "Link to ir.attachment model "
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_main_attachment_id
msgid "Main Attachment"
msgstr ""
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_form
msgid "Manual run"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_has_error
msgid "Message Delivery error"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_ids
msgid "Messages"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__mimetype
msgid "Mime Type"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__my_activity_date_deadline
msgid "My Activity Deadline"
msgstr ""
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "My Document(s)"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__name
msgid "Name"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_calendar_event_id
msgid "Next Activity Calendar Event"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_date_deadline
msgid "Next Activity Deadline"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_summary
msgid "Next Activity Summary"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_type_id
msgid "Next Activity Type"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_needaction_counter
msgid "Number of Actions"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_has_error_counter
msgid "Number of errors"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__message_needaction_counter
msgid "Number of messages requiring action"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__message_has_error_counter
msgid "Number of messages with delivery error"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__original_id
msgid "Original (unoptimized, unresized) attachment"
msgstr ""
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Owner"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields.selection,name:attachment_queue.selection__attachment_queue__state__pending
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Pending"
msgstr ""
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_reschedule_attachment
msgid "Requeue Attachments"
msgstr ""
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_form
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_reschedule_attachment
msgid "Reschedule"
msgstr ""
#. module: attachment_queue
#: model:ir.actions.act_window,name:attachment_queue.action_reschedule_attachment
msgid "Reschedule Attachment"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__res_field
msgid "Resource Field"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__res_id
msgid "Resource ID"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__res_model
msgid "Resource Model"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__res_name
msgid "Resource Name"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_user_id
msgid "Responsible User"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_has_sms_error
msgid "SMS Delivery error"
msgstr ""
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_form
msgid "Set to Done"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__smart_search
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__smart_search
msgid "Smart Search"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__state
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "State"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__state_message
msgid "State Message"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__activity_state
msgid ""
"Status based on activities\n"
"Overdue: Due date is already passed\n"
"Today: Activity date is today\n"
"Planned: Future activities."
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__store_fname
msgid "Stored Filename"
msgstr ""
#. module: attachment_queue
#: model:mail.template,subject:attachment_queue.attachment_failure_notification
msgid "The attachment {{object.name}} has failed"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__file_type
msgid ""
"The file type determines an import method to be used to parse and transform "
"data before their import in ERP or an export"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__count_pending_changeset_changes
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue_reschedule__count_pending_changeset_changes
msgid "The number of pending changes of this record"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__count_pending_changesets
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue_reschedule__count_pending_changesets
msgid "The number of pending changesets of this record"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__count_changesets
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue_reschedule__count_changesets
msgid "The overall number of changesets of this record"
msgstr ""
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_reschedule_attachment
msgid "The selected attachments will be rescheduled."
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__type
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Type"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__activity_exception_decoration
msgid "Type of the exception activity on record."
msgstr ""
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "URL"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__url
msgid "Url"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__user_can_see_changeset
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__user_can_see_changeset
msgid "User Can See Changeset"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__website_message_ids
msgid "Website Messages"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__website_message_ids
msgid "Website communication history"
msgstr ""
#. module: attachment_queue
#: model:ir.model,name:attachment_queue.model_attachment_queue_reschedule
msgid "Wizard to reschedule a selection of attachments"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__type
msgid ""
"You can either upload a file from your computer or copy/paste an internet "
"link to your file."
msgstr ""
#. module: attachment_queue
#. odoo-python
#: code:addons/attachment_queue/tests/test_models.py:0
#: code:addons/attachment_queue/tests/test_models.py:0
#, python-format
msgid "boom"
msgstr ""

View file

@ -0,0 +1,620 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * attachment_queue
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: attachment_queue
#: model:mail.template,body_html:attachment_queue.attachment_failure_notification
msgid ""
"\n"
" <p style=\"margin:0px 0px 10px 0px;font-size:13px;font-family:&quot;Lucida Grande&quot;, Helvetica, Verdana, Arial, sans-serif;\">Hello,<br><br></p>\n"
" <p style=\"margin:0px 0px 10px 0px;font-size:13px;font-family:&quot;Lucida Grande&quot;, Helvetica, Verdana, Arial, sans-serif;\">The attachment ${object.name} has failed with the following error message : <br>${object.state_message}<br></p><p style=\"margin:0px 0px 10px 0px;font-size:13px;font-family:&quot;Lucida Grande&quot;, Helvetica, Verdana, Arial, sans-serif;\"></p>\n"
" <p style=\"margin:0px 0px 10px 0px;font-size:13px;font-family:&quot;Lucida Grande&quot;, Helvetica, Verdana, Arial, sans-serif;\">Regards,<br></p>\n"
" "
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__access_token
msgid "Access Token"
msgstr "Pristupni token"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_needaction
msgid "Action Needed"
msgstr "Potrebna akcija"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_ids
msgid "Activities"
msgstr "Aktivnosti"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_exception_decoration
msgid "Activity Exception Decoration"
msgstr "Dekoracija iznimke aktivnosti"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_state
msgid "Activity State"
msgstr "Status aktivnosti"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_type_icon
msgid "Activity Type Icon"
msgstr "Ikona tipa aktivnosti"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__assigned_attachment_ids
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__assigned_attachment_ids
msgid "Assigned Attachments"
msgstr "Dodeljeni prilozi"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__attachment_id
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Attachment"
msgstr "Prilog"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_attachment_count
msgid "Attachment Count"
msgstr "Broj priloga"
#. module: attachment_queue
#: model:mail.template,name:attachment_queue.attachment_failure_notification
msgid "Attachment Failure notification"
msgstr "Obavještenje o neuspjehu priloga"
#. module: attachment_queue
#: model:ir.model,name:attachment_queue.model_attachment_queue
msgid "Attachment Queue"
msgstr "Red priloga"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__local_url
msgid "Attachment URL"
msgstr "URL Zakačke"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__attachment_ids
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Attachments"
msgstr "Prilozi"
#. module: attachment_queue
#: model:ir.actions.act_window,name:attachment_queue.action_attachment_queue
#: model:ir.ui.menu,name:attachment_queue.menu_attachment_queue
msgid "Attachments Queue"
msgstr "Red priloga"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Binary"
msgstr "Binarni"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_reschedule_attachment
msgid "Cancel"
msgstr "Otkaži"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__changeset_change_ids
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__changeset_change_ids
msgid "Changeset Changes"
msgstr "Promene skupa izmena"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__changeset_ids
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__changeset_ids
msgid "Changesets"
msgstr "Skupovi izmena"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__checksum
msgid "Checksum/SHA1"
msgstr "Kontrolni zbroj/SHA1"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__failure_emails
msgid ""
"Comma-separated list of email addresses to be notified in case offailure"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__company_id
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Company"
msgstr "Preduzeće"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__count_changesets
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__count_changesets
msgid "Count Changesets"
msgstr "Broj skupova izmena"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__count_pending_changeset_changes
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__count_pending_changeset_changes
msgid "Count Pending Changeset Changes"
msgstr "Broj promena skupa izmena na čekanju"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__count_pending_changesets
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__count_pending_changesets
msgid "Count Pending Changesets"
msgstr "Broj skupova izmena na čekanju"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__create_uid
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__create_uid
msgid "Created by"
msgstr "Kreirao"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__create_date
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__create_date
msgid "Created on"
msgstr "Kreirano"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Creation Month"
msgstr "Mjesec kreiranja"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__db_datas
msgid "Database Data"
msgstr "Podaci baze"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__date_done
msgid "Date Done"
msgstr "Datum završetka"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__description
msgid "Description"
msgstr "Opis"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__display_name
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__display_name
msgid "Display Name"
msgstr "Prikazani naziv"
#. module: attachment_queue
#: model:ir.model.fields.selection,name:attachment_queue.selection__attachment_queue__state__done
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Done"
msgstr "Gotovo"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_form
msgid "Error"
msgstr "Greška"
#. module: attachment_queue
#: model:ir.model.fields.selection,name:attachment_queue.selection__attachment_queue__state__failed
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Failed"
msgstr "Neuspješan"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__failure_emails
msgid "Failure Emails"
msgstr "E-mail greške"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__datas
msgid "File Content (base64)"
msgstr "Sadržaj datoteke (base64)"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__raw
msgid "File Content (raw)"
msgstr "Sadržaj datoteke (sirovo)"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__file_size
msgid "File Size"
msgstr "Veličine datoteke"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__file_type
msgid "File Type"
msgstr "Tip datoteke"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "File type"
msgstr "Tip datoteke"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Filter on my documents"
msgstr "Filtriraj moje dokumente"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_follower_ids
msgid "Followers"
msgstr "Pratioci"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_partner_ids
msgid "Followers (Partners)"
msgstr "Pratioci (Partneri)"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__activity_type_icon
msgid "Font awesome icon e.g. fa-tasks"
msgstr "Font awesome ikona npr. fa-tasks"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Group By"
msgstr "Grupiši po"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__has_message
msgid "Has Message"
msgstr "Ima poruku"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__id
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__id
msgid "ID"
msgstr "ID"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_exception_icon
msgid "Icon"
msgstr "Ikona"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__activity_exception_icon
msgid "Icon to indicate an exception activity."
msgstr "Ikona za prikaz iznimki."
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__message_needaction
msgid "If checked, new messages require your attention."
msgstr "Ako je zakačeno, nove poruke će zahtjevati vašu pažnju"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__message_has_error
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__message_has_sms_error
msgid "If checked, some messages have a delivery error."
msgstr "Ako je označeno neke poruke mogu imati grešku u dostavi."
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__image_height
msgid "Image Height"
msgstr "Visina slike"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__image_src
msgid "Image Src"
msgstr "Izvor slike"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__image_width
msgid "Image Width"
msgstr "Širina slike"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__index_content
msgid "Indexed Content"
msgstr "Indeksiani sadržaj"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_is_follower
msgid "Is Follower"
msgstr "Pratilac"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__public
msgid "Is public document"
msgstr "Je javni dokument"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue____last_update
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule____last_update
msgid "Last Modified on"
msgstr "Zadnje mijenjano"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__write_uid
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__write_uid
msgid "Last Updated by"
msgstr "Zadnji ažurirao"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__write_date
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__write_date
msgid "Last Updated on"
msgstr "Zadnje ažurirano"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__attachment_id
msgid "Link to ir.attachment model "
msgstr "Veza na ir.attachment model "
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_main_attachment_id
msgid "Main Attachment"
msgstr "Glavna zakačka"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_form
msgid "Manual run"
msgstr "Ručno pokretanje"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_has_error
msgid "Message Delivery error"
msgstr "Greška pri isporuci poruke"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_ids
msgid "Messages"
msgstr "Poruke"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__mimetype
msgid "Mime Type"
msgstr "Mime Tip"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__my_activity_date_deadline
msgid "My Activity Deadline"
msgstr "Rok za moju aktivnost"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "My Document(s)"
msgstr "Moj(i) Dokument(i)"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__name
msgid "Name"
msgstr "Naziv:"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_calendar_event_id
msgid "Next Activity Calendar Event"
msgstr "Kaldendarski događaj slijedeće aktivnosti"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_date_deadline
msgid "Next Activity Deadline"
msgstr "Krajnji rok za sljedeću aktivnost"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_summary
msgid "Next Activity Summary"
msgstr "Pregled sljedeće aktivnosti"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_type_id
msgid "Next Activity Type"
msgstr "Tip sljedeće aktivnosti"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_needaction_counter
msgid "Number of Actions"
msgstr "Broj akcija"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_has_error_counter
msgid "Number of errors"
msgstr "Broj grešaka"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__message_needaction_counter
msgid "Number of messages requiring action"
msgstr "Broj poruka koje zahtijevaju aktivnost"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__message_has_error_counter
msgid "Number of messages with delivery error"
msgstr "Broj poruka sa greškama pri isporuci"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__original_id
msgid "Original (unoptimized, unresized) attachment"
msgstr "Originalni (neoptimizovan, neresize-ovan) prilog"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Owner"
msgstr "Vlasnik"
#. module: attachment_queue
#: model:ir.model.fields.selection,name:attachment_queue.selection__attachment_queue__state__pending
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Pending"
msgstr "Na čekanju"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_reschedule_attachment
msgid "Requeue Attachments"
msgstr "Ponovo stavi u red priloge"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_form
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_reschedule_attachment
msgid "Reschedule"
msgstr "Ponovo zakaži"
#. module: attachment_queue
#: model:ir.actions.act_window,name:attachment_queue.action_reschedule_attachment
msgid "Reschedule Attachment"
msgstr "Ponovo zakaži prilog"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__res_field
msgid "Resource Field"
msgstr "Polje resursa"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__res_id
msgid "Resource ID"
msgstr "ID Resursa"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__res_model
msgid "Resource Model"
msgstr "Model resursa"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__res_name
msgid "Resource Name"
msgstr "Naziv resursa"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_user_id
msgid "Responsible User"
msgstr "Odgovorni korisnik"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_has_sms_error
msgid "SMS Delivery error"
msgstr "Greška u slanju SMSa"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_form
msgid "Set to Done"
msgstr "Postavi na završeno"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__smart_search
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__smart_search
msgid "Smart Search"
msgstr "Pametna pretraga"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__state
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "State"
msgstr "Status"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__state_message
msgid "State Message"
msgstr "Poruka o stanju"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__activity_state
msgid ""
"Status based on activities\n"
"Overdue: Due date is already passed\n"
"Today: Activity date is today\n"
"Planned: Future activities."
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__store_fname
msgid "Stored Filename"
msgstr "Pohranjeni naziv datoteke"
#. module: attachment_queue
#: model:mail.template,subject:attachment_queue.attachment_failure_notification
msgid "The attachment {{object.name}} has failed"
msgstr "Prilog {{object.name}} je neuspješno"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__file_type
msgid ""
"The file type determines an import method to be used to parse and transform "
"data before their import in ERP or an export"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__count_pending_changeset_changes
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue_reschedule__count_pending_changeset_changes
msgid "The number of pending changes of this record"
msgstr "Broj promena na čekanju ovog zapisa"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__count_pending_changesets
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue_reschedule__count_pending_changesets
msgid "The number of pending changesets of this record"
msgstr "Broj čekajućih skupa promjena ovog zapisa"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__count_changesets
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue_reschedule__count_changesets
msgid "The overall number of changesets of this record"
msgstr "Ukupan broj skupova izmena ovog zapisa"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_reschedule_attachment
msgid "The selected attachments will be rescheduled."
msgstr "Odabrani prilozi će biti ponovo zakazani."
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__type
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Type"
msgstr "Tip"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__activity_exception_decoration
msgid "Type of the exception activity on record."
msgstr "Vrsta aktivnosti iznimke na zapisu."
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "URL"
msgstr "URL"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__url
msgid "Url"
msgstr "Url"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__user_can_see_changeset
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__user_can_see_changeset
msgid "User Can See Changeset"
msgstr "Korisnik može videti skup izmena"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__website_message_ids
msgid "Website Messages"
msgstr "Poruke sa website-a"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__website_message_ids
msgid "Website communication history"
msgstr "Povijest komunikacije Web stranice"
#. module: attachment_queue
#: model:ir.model,name:attachment_queue.model_attachment_queue_reschedule
msgid "Wizard to reschedule a selection of attachments"
msgstr "Čarobnjak za ponovno zakazivanje odabira priloga"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__type
msgid ""
"You can either upload a file from your computer or copy/paste an internet "
"link to your file."
msgstr ""
#. module: attachment_queue
#. odoo-python
#: code:addons/attachment_queue/tests/test_models.py:0
#: code:addons/attachment_queue/tests/test_models.py:0
#, python-format
msgid "boom"
msgstr "bum"

View file

@ -0,0 +1,655 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * attachment_queue
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-02-12 20:35+0000\n"
"Last-Translator: Ivorra78 <informatica@totmaterial.es>\n"
"Language-Team: none\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"
#. module: attachment_queue
#: model:mail.template,body_html:attachment_queue.attachment_failure_notification
msgid ""
"\n"
" <p style=\"margin:0px 0px 10px 0px;font-size:13px;font-"
"family:&quot;Lucida Grande&quot;, Helvetica, Verdana, Arial, sans-serif;"
"\">Hello,<br><br></p>\n"
" <p style=\"margin:0px 0px 10px 0px;font-size:13px;font-"
"family:&quot;Lucida Grande&quot;, Helvetica, Verdana, Arial, sans-serif;"
"\">The attachment ${object.name} has failed with the following error "
"message : <br>${object.state_message}<br></p><p style=\"margin:0px 0px 10px "
"0px;font-size:13px;font-family:&quot;Lucida Grande&quot;, Helvetica, "
"Verdana, Arial, sans-serif;\"></p>\n"
" <p style=\"margin:0px 0px 10px 0px;font-size:13px;font-"
"family:&quot;Lucida Grande&quot;, Helvetica, Verdana, Arial, sans-serif;"
"\">Regards,<br></p>\n"
" "
msgstr ""
"\n"
" <p style=\"margin:0px 0px 10px 0px;font-size:13px;font-"
"family:&quot;Lucida Grande&quot;, Helvetica, Verdana, Arial, sans-serif;"
"\">Hola,<br><br></p>\n"
" <p style=\"margin:0px 0px 10px 0px;font-size:13px;font-"
"family:&quot;Lucida Grande&quot;, Helvetica, Verdana, Arial, sans-serif;"
"\">El archivo adjunto ${object.name}ha fallado con el siguiente mensaje de "
"error : <br>${object.state_message}<br></p><p style=\"margin:0px 0px 10px "
"0px;font-size:13px;font-family:&quot;Lucida Grande&quot;, Helvetica, "
"Verdana, Arial, sans-serif;\"></p>\n"
" <p style=\"margin:0px 0px 10px 0px;font-size:13px;font-"
"family:&quot;Lucida Grande&quot;, Helvetica, Verdana, Arial, sans-serif;"
"\">Saludos,<br></p>\n"
" "
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__access_token
msgid "Access Token"
msgstr "Ficha de Acceso"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_needaction
msgid "Action Needed"
msgstr "Acción Necesaria"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_ids
msgid "Activities"
msgstr "Actividades"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_exception_decoration
msgid "Activity Exception Decoration"
msgstr "Decoración de Actividad de Excepción"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_state
msgid "Activity State"
msgstr "Estado de la Actividad"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_type_icon
msgid "Activity Type Icon"
msgstr "Icono de Tipo de Actividad"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__assigned_attachment_ids
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__assigned_attachment_ids
msgid "Assigned Attachments"
msgstr "Archivos Adjuntos Asignados"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__attachment_id
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Attachment"
msgstr "Archivo Adjunto"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_attachment_count
msgid "Attachment Count"
msgstr "Conteo de Adjuntos"
#. module: attachment_queue
#: model:mail.template,name:attachment_queue.attachment_failure_notification
msgid "Attachment Failure notification"
msgstr "Adjuntar Notificación de fallo"
#. module: attachment_queue
#: model:ir.model,name:attachment_queue.model_attachment_queue
msgid "Attachment Queue"
msgstr "Cola de Archivos Adjuntos"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__local_url
msgid "Attachment URL"
msgstr "URL del Archivo Adjunto"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__attachment_ids
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Attachments"
msgstr "Archivos Adjuntos"
#. module: attachment_queue
#: model:ir.actions.act_window,name:attachment_queue.action_attachment_queue
#: model:ir.ui.menu,name:attachment_queue.menu_attachment_queue
msgid "Attachments Queue"
msgstr "Cola de Archivos Adjuntos"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Binary"
msgstr "Binario"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_reschedule_attachment
msgid "Cancel"
msgstr "Cancelar"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__changeset_change_ids
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__changeset_change_ids
msgid "Changeset Changes"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__changeset_ids
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__changeset_ids
msgid "Changesets"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__checksum
msgid "Checksum/SHA1"
msgstr "Verificación de suma/SHA1"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__failure_emails
msgid ""
"Comma-separated list of email addresses to be notified in case offailure"
msgstr ""
"Lista separada por comas de direcciones de correo electrónico a las que "
"notificar en caso de fallo"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__company_id
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Company"
msgstr "Companía"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__count_changesets
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__count_changesets
msgid "Count Changesets"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__count_pending_changeset_changes
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__count_pending_changeset_changes
msgid "Count Pending Changeset Changes"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__count_pending_changesets
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__count_pending_changesets
msgid "Count Pending Changesets"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__create_uid
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__create_uid
msgid "Created by"
msgstr "Creado por"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__create_date
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__create_date
msgid "Created on"
msgstr "Creado el"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Creation Month"
msgstr "Mes de Creación"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__db_datas
msgid "Database Data"
msgstr "Base de Datos"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__date_done
msgid "Date Done"
msgstr "Fecha de Realización"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__description
msgid "Description"
msgstr "Descripción"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__display_name
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__display_name
msgid "Display Name"
msgstr "Mostrar Nombre"
#. module: attachment_queue
#: model:ir.model.fields.selection,name:attachment_queue.selection__attachment_queue__state__done
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Done"
msgstr "Realizado"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_form
msgid "Error"
msgstr "Error"
#. module: attachment_queue
#: model:ir.model.fields.selection,name:attachment_queue.selection__attachment_queue__state__failed
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Failed"
msgstr "Fallido"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__failure_emails
msgid "Failure Emails"
msgstr "Correos Electrónicos de Error"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__datas
msgid "File Content (base64)"
msgstr "Contenido del Archivo (base64)"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__raw
msgid "File Content (raw)"
msgstr "Contenido del Archivo (sin procesar)"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__file_size
msgid "File Size"
msgstr "Tamaño del Archivo"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__file_type
msgid "File Type"
msgstr "Tipo de Archivo"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "File type"
msgstr "Tipo de archivo"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Filter on my documents"
msgstr "Filtrar en mis documentos"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_follower_ids
msgid "Followers"
msgstr "Seguidores/as"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_partner_ids
msgid "Followers (Partners)"
msgstr "Seguidores (Socios)"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__activity_type_icon
msgid "Font awesome icon e.g. fa-tasks"
msgstr "Icono de fuente impresionante, por ejemplo fa-tasks"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Group By"
msgstr "Grupo Por"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__has_message
msgid "Has Message"
msgstr "Tiene Mensaje"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__id
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__id
msgid "ID"
msgstr "ID"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_exception_icon
msgid "Icon"
msgstr "Icono"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__activity_exception_icon
msgid "Icon to indicate an exception activity."
msgstr "Icono para indicar la excepción de la actividad."
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__message_needaction
msgid "If checked, new messages require your attention."
msgstr "Si está marcada, nuevos mensajes requieren su atención."
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__message_has_error
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__message_has_sms_error
msgid "If checked, some messages have a delivery error."
msgstr "Si está marcado, algunos mensajes tienen un error de entrega."
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__image_height
msgid "Image Height"
msgstr "Altura de la imagen"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__image_src
msgid "Image Src"
msgstr "Origen de la imagen"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__image_width
msgid "Image Width"
msgstr "Anchura de la Imagen"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__index_content
msgid "Indexed Content"
msgstr "Contenido Indexado"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_is_follower
msgid "Is Follower"
msgstr "Es Seguidor/a"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__public
msgid "Is public document"
msgstr "Es un documento público"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue____last_update
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule____last_update
msgid "Last Modified on"
msgstr "Última modificación el"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__write_uid
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__write_uid
msgid "Last Updated by"
msgstr "Última Actualización por"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__write_date
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__write_date
msgid "Last Updated on"
msgstr "Última Actualización el"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__attachment_id
msgid "Link to ir.attachment model "
msgstr "Enlace al modelo ir.attachment "
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_main_attachment_id
msgid "Main Attachment"
msgstr "Archivo Adjunto Principal"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_form
msgid "Manual run"
msgstr "Ejecución manual"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_has_error
msgid "Message Delivery error"
msgstr "Error en Entrega de Mensaje"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_ids
msgid "Messages"
msgstr "Mensajes"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__mimetype
msgid "Mime Type"
msgstr "Tipo Mimo"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__my_activity_date_deadline
msgid "My Activity Deadline"
msgstr "Fecha Límite de Mi Actividad"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "My Document(s)"
msgstr "Mis Documento(s)"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__name
msgid "Name"
msgstr "Nombre"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_calendar_event_id
msgid "Next Activity Calendar Event"
msgstr "Próximo Evento del Calendario de Actividades"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_date_deadline
msgid "Next Activity Deadline"
msgstr "Fecha límite de la Siguiente Actividad"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_summary
msgid "Next Activity Summary"
msgstr "Resumen de la Siguiente Actividad"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_type_id
msgid "Next Activity Type"
msgstr "Tipo de la Siguiente Actividad"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_needaction_counter
msgid "Number of Actions"
msgstr "Número de Acciones"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_has_error_counter
msgid "Number of errors"
msgstr "Número de errores"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__message_needaction_counter
msgid "Number of messages requiring action"
msgstr "Número de mensajes que requieren una acción"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__message_has_error_counter
msgid "Number of messages with delivery error"
msgstr "Número de mensajes con error de entrega"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__original_id
msgid "Original (unoptimized, unresized) attachment"
msgstr "Archivo adjunto original (sin optimizar y sin redimensionar)"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Owner"
msgstr "Propietario"
#. module: attachment_queue
#: model:ir.model.fields.selection,name:attachment_queue.selection__attachment_queue__state__pending
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Pending"
msgstr "Pendiente"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_reschedule_attachment
msgid "Requeue Attachments"
msgstr "Volver a poner en cola los Archivos Adjuntos"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_form
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_reschedule_attachment
msgid "Reschedule"
msgstr "Reprogramar"
#. module: attachment_queue
#: model:ir.actions.act_window,name:attachment_queue.action_reschedule_attachment
msgid "Reschedule Attachment"
msgstr "Reprogramar Adjunto"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__res_field
msgid "Resource Field"
msgstr "Campo de Recurso"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__res_id
msgid "Resource ID"
msgstr "ID del Recurso"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__res_model
msgid "Resource Model"
msgstr "Modelo del Recurso"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__res_name
msgid "Resource Name"
msgstr "Nombre del Recurso"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_user_id
msgid "Responsible User"
msgstr "Usuario Responsable"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_has_sms_error
msgid "SMS Delivery error"
msgstr "Error en la Entrega de SMS"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_form
msgid "Set to Done"
msgstr "Establecer como Hecho"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__smart_search
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__smart_search
msgid "Smart Search"
msgstr "Búsqueda Inteligente"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__state
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "State"
msgstr "Estado"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__state_message
msgid "State Message"
msgstr "Mensaje de Estado"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__activity_state
msgid ""
"Status based on activities\n"
"Overdue: Due date is already passed\n"
"Today: Activity date is today\n"
"Planned: Future activities."
msgstr ""
"Estado basado en actividades\n"
"Vencido: Fecha de vencimiento ya paso\n"
"Hoy: La fecha de actividad es hoy\n"
"Planeado: Actividades futuras."
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__store_fname
msgid "Stored Filename"
msgstr "Nombre del Archivo Almacenado"
#. module: attachment_queue
#: model:mail.template,subject:attachment_queue.attachment_failure_notification
msgid "The attachment {{object.name}} has failed"
msgstr "El archivo adjunto {{object.name}} ha fallado"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__file_type
msgid ""
"The file type determines an import method to be used to parse and transform "
"data before their import in ERP or an export"
msgstr ""
"El tipo de archivo determina el método de importación que se utilizará para "
"analizar y transformar los datos antes de importarlos al ERP o exportarlos"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__count_pending_changeset_changes
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue_reschedule__count_pending_changeset_changes
msgid "The number of pending changes of this record"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__count_pending_changesets
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue_reschedule__count_pending_changesets
msgid "The number of pending changesets of this record"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__count_changesets
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue_reschedule__count_changesets
msgid "The overall number of changesets of this record"
msgstr ""
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_reschedule_attachment
msgid "The selected attachments will be rescheduled."
msgstr "Los anexos seleccionados se reprogramarán."
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__type
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Type"
msgstr "Tipo"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__activity_exception_decoration
msgid "Type of the exception activity on record."
msgstr "Tipo de actividad excepcional registrada."
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "URL"
msgstr "URL"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__url
msgid "Url"
msgstr "Url"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__user_can_see_changeset
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__user_can_see_changeset
msgid "User Can See Changeset"
msgstr ""
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__website_message_ids
msgid "Website Messages"
msgstr "Mensajes de la Página Web"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__website_message_ids
msgid "Website communication history"
msgstr "Historial de la comunicación del sitio web"
#. module: attachment_queue
#: model:ir.model,name:attachment_queue.model_attachment_queue_reschedule
msgid "Wizard to reschedule a selection of attachments"
msgstr "Asistente para reprogramar una selección de anexos"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__type
msgid ""
"You can either upload a file from your computer or copy/paste an internet "
"link to your file."
msgstr ""
"Puede cargar un archivo desde su ordenador o copiar/pegar un enlace de "
"Internet a su archivo."
#. module: attachment_queue
#. odoo-python
#: code:addons/attachment_queue/tests/test_models.py:0
#, python-format
msgid "boom"
msgstr "auge"

View file

@ -0,0 +1,655 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * attachment_queue
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-01-16 16:06+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
"Language-Team: none\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.6.2\n"
#. module: attachment_queue
#: model:mail.template,body_html:attachment_queue.attachment_failure_notification
msgid ""
"\n"
" <p style=\"margin:0px 0px 10px 0px;font-size:13px;font-"
"family:&quot;Lucida Grande&quot;, Helvetica, Verdana, Arial, sans-serif;"
"\">Hello,<br><br></p>\n"
" <p style=\"margin:0px 0px 10px 0px;font-size:13px;font-"
"family:&quot;Lucida Grande&quot;, Helvetica, Verdana, Arial, sans-serif;"
"\">The attachment ${object.name} has failed with the following error "
"message : <br>${object.state_message}<br></p><p style=\"margin:0px 0px 10px "
"0px;font-size:13px;font-family:&quot;Lucida Grande&quot;, Helvetica, "
"Verdana, Arial, sans-serif;\"></p>\n"
" <p style=\"margin:0px 0px 10px 0px;font-size:13px;font-"
"family:&quot;Lucida Grande&quot;, Helvetica, Verdana, Arial, sans-serif;"
"\">Regards,<br></p>\n"
" "
msgstr ""
"\n"
" <p style=\"margin:0px 0px 10px 0px;font-size:13px;font-"
"family:&quot;Lucida Grande&quot;, Helvetica, Verdana, Arial, sans-serif;"
"\">Salce,<br><br></p>\n"
" <p style=\"margin:0px 0px 10px 0px;font-size:13px;font-"
"family:&quot;Lucida Grande&quot;, Helvetica, Verdana, Arial, sans-serif;"
"\">l'allegato ${object.name} ha un errore con il segente messaggio : <br>"
"${object.state_message}<br></p><p style=\"margin:0px 0px 10px 0px;font-"
"size:13px;font-family:&quot;Lucida Grande&quot;, Helvetica, Verdana, Arial, "
"sans-serif;\"></p>\n"
" <p style=\"margin:0px 0px 10px 0px;font-size:13px;font-"
"family:&quot;Lucida Grande&quot;, Helvetica, Verdana, Arial, sans-serif;"
"\">Saluti,<br></p>\n"
" "
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__access_token
msgid "Access Token"
msgstr "Token di accesso"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_needaction
msgid "Action Needed"
msgstr "Azione richiesta"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_ids
msgid "Activities"
msgstr "Attività"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_exception_decoration
msgid "Activity Exception Decoration"
msgstr "Decorazione eccezione attività"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_state
msgid "Activity State"
msgstr "Stato attività"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_type_icon
msgid "Activity Type Icon"
msgstr "Icona tipo attività"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__assigned_attachment_ids
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__assigned_attachment_ids
msgid "Assigned Attachments"
msgstr "Allegati assegnati"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__attachment_id
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Attachment"
msgstr "Allegato"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_attachment_count
msgid "Attachment Count"
msgstr "Conteggio allegati"
#. module: attachment_queue
#: model:mail.template,name:attachment_queue.attachment_failure_notification
msgid "Attachment Failure notification"
msgstr "Notifica errore allegato"
#. module: attachment_queue
#: model:ir.model,name:attachment_queue.model_attachment_queue
msgid "Attachment Queue"
msgstr "Coda allegato"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__local_url
msgid "Attachment URL"
msgstr "URL allegato"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__attachment_ids
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Attachments"
msgstr "Allegati"
#. module: attachment_queue
#: model:ir.actions.act_window,name:attachment_queue.action_attachment_queue
#: model:ir.ui.menu,name:attachment_queue.menu_attachment_queue
msgid "Attachments Queue"
msgstr "Coda allegati"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Binary"
msgstr "Binaria"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_reschedule_attachment
msgid "Cancel"
msgstr "Annulla"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__changeset_change_ids
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__changeset_change_ids
msgid "Changeset Changes"
msgstr "Modifiche dell'insieme di modifiche"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__changeset_ids
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__changeset_ids
msgid "Changesets"
msgstr "Insiemi di modifiche"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__checksum
msgid "Checksum/SHA1"
msgstr "Checksum/SHA1"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__failure_emails
msgid ""
"Comma-separated list of email addresses to be notified in case offailure"
msgstr ""
"Elenco di indirizzi e-mail separati da virgola da avvisare in caso di errore"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__company_id
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Company"
msgstr "Azienda"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__count_changesets
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__count_changesets
msgid "Count Changesets"
msgstr "Conta insiemi di modifiche"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__count_pending_changeset_changes
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__count_pending_changeset_changes
msgid "Count Pending Changeset Changes"
msgstr "Conteggio modifiche dell'insieme di modifiche in attesa"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__count_pending_changesets
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__count_pending_changesets
msgid "Count Pending Changesets"
msgstr "Conteggio insieme di modifiche in attesa"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__create_uid
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__create_uid
msgid "Created by"
msgstr "Creato da"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__create_date
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__create_date
msgid "Created on"
msgstr "Creato il"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Creation Month"
msgstr "Mese creazione"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__db_datas
msgid "Database Data"
msgstr "Dati database"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__date_done
msgid "Date Done"
msgstr "Data completamento"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__description
msgid "Description"
msgstr "Descrizione"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__display_name
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__display_name
msgid "Display Name"
msgstr "Nome visualizzato"
#. module: attachment_queue
#: model:ir.model.fields.selection,name:attachment_queue.selection__attachment_queue__state__done
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Done"
msgstr "Evasa"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_form
msgid "Error"
msgstr "Errore"
#. module: attachment_queue
#: model:ir.model.fields.selection,name:attachment_queue.selection__attachment_queue__state__failed
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Failed"
msgstr "Fallito"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__failure_emails
msgid "Failure Emails"
msgstr "E-mail fallite"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__datas
msgid "File Content (base64)"
msgstr "Contenuto file (base64)"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__raw
msgid "File Content (raw)"
msgstr "Contenuto file (raw)"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__file_size
msgid "File Size"
msgstr "Dimensione file"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__file_type
msgid "File Type"
msgstr "Tipo file"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "File type"
msgstr "Tipo file"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Filter on my documents"
msgstr "Filtra sui miei documenti"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_follower_ids
msgid "Followers"
msgstr "Seguito da"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_partner_ids
msgid "Followers (Partners)"
msgstr "Seguito da (partner)"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__activity_type_icon
msgid "Font awesome icon e.g. fa-tasks"
msgstr "Icona Font Awesome es. fa-tasks"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Group By"
msgstr "Raggruppa per"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__has_message
msgid "Has Message"
msgstr "Ha un messaggio"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__id
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__id
msgid "ID"
msgstr "ID"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_exception_icon
msgid "Icon"
msgstr "Icona"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__activity_exception_icon
msgid "Icon to indicate an exception activity."
msgstr "Icona per indicare un'attività eccezione."
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__message_needaction
msgid "If checked, new messages require your attention."
msgstr "Se selezionata, nuovi messaggi richiedono attenzione."
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__message_has_error
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__message_has_sms_error
msgid "If checked, some messages have a delivery error."
msgstr "Se selezionata, alcuni messaggi hanno un errore di consegna."
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__image_height
msgid "Image Height"
msgstr "Altezza immagine"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__image_src
msgid "Image Src"
msgstr "Sorgente immagine"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__image_width
msgid "Image Width"
msgstr "Larghezza immagine"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__index_content
msgid "Indexed Content"
msgstr "Contenuto indicizzato"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_is_follower
msgid "Is Follower"
msgstr "Segue"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__public
msgid "Is public document"
msgstr "È un documento pubblico"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue____last_update
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule____last_update
msgid "Last Modified on"
msgstr "Ultima modifica il"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__write_uid
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__write_uid
msgid "Last Updated by"
msgstr "Ultimo aggiornamento di"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__write_date
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__write_date
msgid "Last Updated on"
msgstr "Ultimo aggiornamento il"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__attachment_id
msgid "Link to ir.attachment model "
msgstr "Collegamento a l modelloir.attachment "
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_main_attachment_id
msgid "Main Attachment"
msgstr "Allegato principale"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_form
msgid "Manual run"
msgstr "Escuzione manuale"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_has_error
msgid "Message Delivery error"
msgstr "Errore di consegna messaggio"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_ids
msgid "Messages"
msgstr "Messaggi"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__mimetype
msgid "Mime Type"
msgstr "Tipo MIME"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__my_activity_date_deadline
msgid "My Activity Deadline"
msgstr "Scadenza mia attività"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "My Document(s)"
msgstr "I miei documenti"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__name
msgid "Name"
msgstr "Nome"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_calendar_event_id
msgid "Next Activity Calendar Event"
msgstr "Evento calendario attività successiva"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_date_deadline
msgid "Next Activity Deadline"
msgstr "Scadenza prossima attività"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_summary
msgid "Next Activity Summary"
msgstr "Riepilogo prossima attività"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_type_id
msgid "Next Activity Type"
msgstr "Tipo prossima attività"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_needaction_counter
msgid "Number of Actions"
msgstr "Numero di azioni"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_has_error_counter
msgid "Number of errors"
msgstr "Numero di errori"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__message_needaction_counter
msgid "Number of messages requiring action"
msgstr "Numero di messaggi che richiedono un'azione"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__message_has_error_counter
msgid "Number of messages with delivery error"
msgstr "Numero di messaggi con errore di consegna"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__original_id
msgid "Original (unoptimized, unresized) attachment"
msgstr "Allegato originale (non ottimizzato, non ridimensionato)"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Owner"
msgstr "Proprietario"
#. module: attachment_queue
#: model:ir.model.fields.selection,name:attachment_queue.selection__attachment_queue__state__pending
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Pending"
msgstr "In attesa"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_reschedule_attachment
msgid "Requeue Attachments"
msgstr "Riaccoda allegati"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_form
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_reschedule_attachment
msgid "Reschedule"
msgstr "Riprogrammare"
#. module: attachment_queue
#: model:ir.actions.act_window,name:attachment_queue.action_reschedule_attachment
msgid "Reschedule Attachment"
msgstr "Riprogramma allegato"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__res_field
msgid "Resource Field"
msgstr "Campo risorsa"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__res_id
msgid "Resource ID"
msgstr "ID risorsa"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__res_model
msgid "Resource Model"
msgstr "Modello risorsa"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__res_name
msgid "Resource Name"
msgstr "Nome risorsa"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__activity_user_id
msgid "Responsible User"
msgstr "Utente responsabile"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__message_has_sms_error
msgid "SMS Delivery error"
msgstr "Errore consegna SMS"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_form
msgid "Set to Done"
msgstr "Imposta a eseguito"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__smart_search
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__smart_search
msgid "Smart Search"
msgstr "Ricerca intelligente"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__state
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "State"
msgstr "Stato"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__state_message
msgid "State Message"
msgstr "Messaggio stato"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__activity_state
msgid ""
"Status based on activities\n"
"Overdue: Due date is already passed\n"
"Today: Activity date is today\n"
"Planned: Future activities."
msgstr ""
"Stato in base alle attività\n"
"Scaduto: la data richiesta è trascorsa\n"
"Oggi: la data attività è oggi\n"
"Pianificato: attività future."
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__store_fname
msgid "Stored Filename"
msgstr "Nome file memorizzato"
#. module: attachment_queue
#: model:mail.template,subject:attachment_queue.attachment_failure_notification
msgid "The attachment {{object.name}} has failed"
msgstr "L'allegato {{object.name}} ha un errore"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__file_type
msgid ""
"The file type determines an import method to be used to parse and transform "
"data before their import in ERP or an export"
msgstr ""
"Il tipo di file determina il metodo di importazione da utilizzare per "
"elaborare e trasformare i dati prima dell'importazione nell'ERP o per "
"l'esportazione"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__count_pending_changeset_changes
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue_reschedule__count_pending_changeset_changes
msgid "The number of pending changes of this record"
msgstr "Numero di modifiche di questo record in attesa"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__count_pending_changesets
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue_reschedule__count_pending_changesets
msgid "The number of pending changesets of this record"
msgstr "Numero di insiemi di modifiche in attesa di questo record"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__count_changesets
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue_reschedule__count_changesets
msgid "The overall number of changesets of this record"
msgstr "Numero totale di insiemi di modifiche di questo record"
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_reschedule_attachment
msgid "The selected attachments will be rescheduled."
msgstr "L'allegato selezionato verrà riprogrammato."
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__type
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "Type"
msgstr "Tipo"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__activity_exception_decoration
msgid "Type of the exception activity on record."
msgstr "Tipo di attività eccezione sul record."
#. module: attachment_queue
#: model_terms:ir.ui.view,arch_db:attachment_queue.view_attachment_queue_search
msgid "URL"
msgstr "URL"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__url
msgid "Url"
msgstr "URL"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__user_can_see_changeset
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue_reschedule__user_can_see_changeset
msgid "User Can See Changeset"
msgstr "L'utente può vedere l'insieme delle modifiche"
#. module: attachment_queue
#: model:ir.model.fields,field_description:attachment_queue.field_attachment_queue__website_message_ids
msgid "Website Messages"
msgstr "Messaggi sito web"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__website_message_ids
msgid "Website communication history"
msgstr "Cronologia comunicazioni sito web"
#. module: attachment_queue
#: model:ir.model,name:attachment_queue.model_attachment_queue_reschedule
msgid "Wizard to reschedule a selection of attachments"
msgstr "Procedura guidata per riprogrammare una selezione di allegati"
#. module: attachment_queue
#: model:ir.model.fields,help:attachment_queue.field_attachment_queue__type
msgid ""
"You can either upload a file from your computer or copy/paste an internet "
"link to your file."
msgstr ""
"È possibile caricare un file dal computer oppure fare copia/incolla di un "
"collegamento Internet al file."
#. module: attachment_queue
#. odoo-python
#: code:addons/attachment_queue/tests/test_models.py:0
#, python-format
msgid "boom"
msgstr "boom"

View file

@ -0,0 +1 @@
from . import attachment_queue

View file

@ -0,0 +1,175 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import logging
import psycopg2
from psycopg2 import OperationalError
from odoo import _, api, fields, models
from odoo.exceptions import UserError
from odoo.service.model import PG_CONCURRENCY_ERRORS_TO_RETRY
from odoo.addons.queue_job.exception import RetryableJobError
_logger = logging.getLogger(__name__)
DEFAULT_ETA_FOR_RETRY = 60 * 60
STR_ERR_ATTACHMENT_RUNNING = "The attachment is currently being in processing"
STR_ERROR_DURING_PROCESSING = "Error during processing of attachment_queue id {}: \n"
class AttachmentQueue(models.Model):
_name = "attachment.queue"
_description = "Attachment Queue"
_inherits = {"ir.attachment": "attachment_id"}
_inherit = ["mail.thread", "mail.activity.mixin"]
attachment_id = fields.Many2one(
"ir.attachment",
required=True,
ondelete="cascade",
help="Link to ir.attachment model ",
)
file_type = fields.Selection(
selection=[],
index="btree",
help="The file type determines an import method to be used "
"to parse and transform data before their import in ERP or an export",
)
date_done = fields.Datetime()
state = fields.Selection(
[("pending", "Pending"), ("failed", "Failed"), ("done", "Done")],
readonly=False,
required=True,
default="pending",
index="btree",
)
state_message = fields.Text()
failure_emails = fields.Char(
compute="_compute_failure_emails",
help="Comma-separated list of email addresses to be notified in case of"
"failure",
)
def _job_attrs(self):
# Override this method to have file type specific job attributes
self.ensure_one()
return {"channel": "root.attachment_queue"}
def _schedule_jobs(self):
for el in self:
kwargs = el._job_attrs()
el.with_delay(**kwargs).run_as_job()
@api.model_create_multi
def create(self, vals_list):
res = super().create(vals_list)
res._schedule_jobs()
return res
def button_reschedule(self):
self.write({"state": "pending", "state_message": ""})
self._schedule_jobs()
def _compute_failure_emails(self):
for attach in self:
attach.failure_emails = attach._get_failure_emails()
def _get_failure_emails(self):
# to be overriden in submodules implementing the file_type
self.ensure_one()
return ""
def button_manual_run(self):
"""
Run the process for an individual attachment queue from a dedicated button
"""
try:
self._cr.execute(
"""
SELECT id
FROM attachment_queue
WHERE id = %s
FOR UPDATE NOWAIT
""",
(self.id,),
)
except psycopg2.OperationalError as exc:
raise UserError(_(STR_ERR_ATTACHMENT_RUNNING)) from exc
if self.state != "done":
self.run()
def run_as_job(self):
"""Run the process for an individual attachment queue from a async job"""
try:
self._cr.execute(
"""
SELECT id
FROM attachment_queue
WHERE id = %s
FOR UPDATE NOWAIT
""",
(self.id,),
)
except psycopg2.OperationalError as exc:
raise RetryableJobError(
STR_ERR_ATTACHMENT_RUNNING,
seconds=DEFAULT_ETA_FOR_RETRY,
ignore_retry=True,
) from exc
if self.state != "done":
try:
with self.env.cr.savepoint():
self.run()
except OperationalError as err:
# re-raise typical transaction serialization error so queue job retries
# no need to set attachment as failed since it will be retried.
if err.pgcode in PG_CONCURRENCY_ERRORS_TO_RETRY:
raise
self._set_attachment_failure(err)
except RetryableJobError as err:
# re-raise Retryable Error to keep the functionality
# we still set the attachment as failed here because it may not be
# retried (in case max_retries is reached). We would not want a
# pending attachment with no related pending job
self._set_attachment_failure(err)
# a rollback has been made before because of the savepoint.
# we need to commit because we re-raise the exception and a rollback
# will be performed
self.env.cr.commit() # pylint: disable=E8102
raise
except Exception as err:
self._set_attachment_failure(err)
def _set_attachment_failure(self, error):
_logger.warning(STR_ERROR_DURING_PROCESSING.format(self.id) + str(error))
self.write({"state": "failed", "state_message": str(error)})
emails = self.failure_emails
if emails:
self.env.ref("attachment_queue.attachment_failure_notification").send_mail(
self.id
)
def run(self):
"""
Run the process for an individual attachment queue
"""
self._run()
self.write(
{
"state": "done",
"date_done": fields.Datetime.now(),
}
)
return True
def _run(self):
self.ensure_one()
_logger.info("Starting processing of attachment queue id %d", self.id)
def set_done(self):
"""
Manually set to done
"""
message = "Manually set to done by %s" % self.env.user.name
self.write({"state_message": message, "state": "done"})

View file

@ -0,0 +1,5 @@
* Valentin CHEMIERE <valentin.chemiere@akretion.com>
* Florian da Costa <florian.dacosta@akretion.com>
* Angel Moya <http://angelmoya.es>
* Dan Kiplangat <dan@sunflowerweb.nl>
* Kevin Khao <kevin.khao@akretion.com>

View file

@ -0,0 +1,3 @@
This module adds async processing capabilities to attachments by implementing a new model attachment.queue that wraps attachments and stores additional information so that it can be processed in an asynchronous way.
A use case of this module can be found in the attachment_synchronize module.

View file

@ -0,0 +1,16 @@
Go the menu Settings > Technical > Database Structure > Attachments Queue
You can create / see standard attachments with additional fields
Configure the batch limit for attachments that can be sync by the cron task at a go:
Settings > Technical > System parameters > attachment_queue_cron_batch_limit
image:: ../static/description/tree.png
This module can be used in combination with attachment_synchronize to control file processing workflow
image:: ../static/description/form.png

View file

@ -0,0 +1,4 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_attachment_queue_user,attachment.queue.user,model_attachment_queue,,1,0,0,0
access_attachment_queue_manager,attachment.queue.manager,model_attachment_queue,base.group_no_one,1,1,1,1
access_attachment_reschedule_wizard,Attachment Queue Reschedule,attachment_queue.model_attachment_queue_reschedule,base.group_no_one,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_attachment_queue_user attachment.queue.user model_attachment_queue 1 0 0 0
3 access_attachment_queue_manager attachment.queue.manager model_attachment_queue base.group_no_one 1 1 1 1
4 access_attachment_reschedule_wizard Attachment Queue Reschedule attachment_queue.model_attachment_queue_reschedule base.group_no_one 1 1 1 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View file

@ -0,0 +1,441 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>Attachment Queue</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic, pre.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="attachment-queue">
<h1 class="title">Attachment Queue</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:94a2771dcad492d3d050eac9fe0255e6cc1eb0c16aa52d31b95f98fe3206c6c4
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/server-tools/tree/16.0/attachment_queue"><img alt="OCA/server-tools" src="https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/server-tools-16-0/server-tools-16-0-attachment_queue"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/server-tools&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module adds async processing capabilities to attachments by implementing a new model attachment.queue that wraps attachments and stores additional information so that it can be processed in an asynchronous way.</p>
<p>A use case of this module can be found in the attachment_synchronize module.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#usage" id="toc-entry-1">Usage</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-2">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-3">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-4">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-5">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-6">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#toc-entry-1">Usage</a></h1>
<p>Go the menu Settings &gt; Technical &gt; Database Structure &gt; Attachments Queue</p>
<p>You can create / see standard attachments with additional fields</p>
<p>Configure the batch limit for attachments that can be sync by the cron task at a go:</p>
<p>Settings &gt; Technical &gt; System parameters &gt; attachment_queue_cron_batch_limit</p>
<p>image:: ../static/description/tree.png</p>
<p>This module can be used in combination with attachment_synchronize to control file processing workflow</p>
<p>image:: ../static/description/form.png</p>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#toc-entry-2">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/server-tools/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/server-tools/issues/new?body=module:%20attachment_queue%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#toc-entry-3">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#toc-entry-4">Authors</a></h2>
<ul class="simple">
<li>Akretion</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#toc-entry-5">Contributors</a></h2>
<ul class="simple">
<li>Valentin CHEMIERE &lt;<a class="reference external" href="mailto:valentin.chemiere&#64;akretion.com">valentin.chemiere&#64;akretion.com</a>&gt;</li>
<li>Florian da Costa &lt;<a class="reference external" href="mailto:florian.dacosta&#64;akretion.com">florian.dacosta&#64;akretion.com</a>&gt;</li>
<li>Angel Moya &lt;<a class="reference external" href="http://angelmoya.es">http://angelmoya.es</a>&gt;</li>
<li>Dan Kiplangat &lt;<a class="reference external" href="mailto:dan&#64;sunflowerweb.nl">dan&#64;sunflowerweb.nl</a>&gt;</li>
<li>Kevin Khao &lt;<a class="reference external" href="mailto:kevin.khao&#64;akretion.com">kevin.khao&#64;akretion.com</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-6">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
</a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainers</a>:</p>
<p><a class="reference external image-reference" href="https://github.com/florian-dacosta"><img alt="florian-dacosta" src="https://github.com/florian-dacosta.png?size=40px" /></a> <a class="reference external image-reference" href="https://github.com/sebastienbeau"><img alt="sebastienbeau" src="https://github.com/sebastienbeau.png?size=40px" /></a></p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/server-tools/tree/16.0/attachment_queue">OCA/server-tools</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View file

@ -0,0 +1,3 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import test_attachment_queue

View file

@ -0,0 +1,148 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from unittest import mock
from odoo_test_helper import FakeModelLoader
from odoo import registry
from odoo.exceptions import UserError
from odoo.tests.common import TransactionCase
from odoo.tools import mute_logger
from odoo.addons.queue_job.exception import RetryableJobError
from odoo.addons.queue_job.tests.common import trap_jobs
DUMMY_AQ_VALS = {
"datas": "",
"name": "dummy_aq.doc",
}
MOCK_PATH_RUN = (
"odoo.addons.attachment_queue.models.attachment_queue.AttachmentQueue._run"
)
class TestAttachmentBaseQueue(TransactionCase):
def _create_dummy_attachment(self, override=False, no_job=False):
override = override or {}
vals = DUMMY_AQ_VALS.copy()
vals.update(override)
if no_job:
return (
self.env["attachment.queue"].with_context(test_queue_job_no_delay=True)
).create(vals)
return self.env["attachment.queue"].create(vals)
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.loader = FakeModelLoader(cls.env, cls.__module__)
cls.loader.backup_registry()
from .test_models import AttachmentQueue
cls.loader.update_registry((AttachmentQueue,))
@classmethod
def tearDownClass(cls):
super().tearDownClass()
cls.loader.restore_registry()
return super().tearDownClass()
def setUp(self):
super().setUp()
self.aq_model = self.env["attachment.queue"]
def test_job_created(self):
with trap_jobs() as trap:
attachment = self._create_dummy_attachment()
trap.assert_enqueued_job(
attachment.run_as_job,
)
def test_aq_locked_job(self):
"""If an attachment is already running, and a job tries to run it, retry later"""
attachment = self.env.ref("attachment_queue.dummy_attachment_queue")
with registry(self.env.cr.dbname).cursor() as new_cr:
new_cr.execute(
"""
SELECT id
FROM attachment_queue
WHERE id = %s
FOR UPDATE NOWAIT
""",
(attachment.id,),
)
with self.assertRaises(RetryableJobError), mute_logger("odoo.sql_db"):
attachment.run_as_job()
def test_aq_locked_button(self):
"""If an attachment is already running, and a user tries to run it manually,
raise error window"""
attachment = self.env.ref("attachment_queue.dummy_attachment_queue")
with registry(self.env.cr.dbname).cursor() as new_cr:
new_cr.execute(
"""
SELECT id
FROM attachment_queue
WHERE id = %s
FOR UPDATE NOWAIT
""",
(attachment.id,),
)
with self.assertRaises(UserError), mute_logger("odoo.sql_db"):
attachment.button_manual_run()
def test_run_ok(self):
"""Attachment queue should have correct state and result"""
partners_initial = len(self.env["res.partner"].search([]))
with mock.patch.object(
type(self.aq_model),
"_run",
self.env["attachment.queue"].mock_run_create_partners,
):
attachment = self._create_dummy_attachment(no_job=True)
partners_after = len(self.env["res.partner"].search([]))
self.assertEqual(partners_after, partners_initial + 10)
self.assertEqual(attachment.state, "done")
def test_run_fails(self):
"""Attachment queue should have correct state/error message"""
with mock.patch.object(
type(self.aq_model), "_run", self.env["attachment.queue"].mock_run_fail
):
attachment = self._create_dummy_attachment(no_job=True)
self.assertEqual(attachment.state, "failed")
self.assertEqual(attachment.state_message, "boom")
def test_run_fails_rollback(self):
"""In case of failure, no side effects should occur"""
partners_initial = len(self.env["res.partner"].search([]))
with mock.patch.object(
type(self.aq_model),
"_run",
self.env["attachment.queue"].mock_run_create_partners_and_fail,
):
self._create_dummy_attachment(no_job=True)
partners_after = len(self.env["res.partner"].search([]))
self.assertEqual(partners_after, partners_initial)
failure_email = self.env["mail.mail"].search(
[("subject", "ilike", "dummy_aq.doc")]
)
self.assertEqual(failure_email.email_to, "test@test.com")
def test_set_done(self):
"""Test set_done manually"""
attachment = self._create_dummy_attachment()
self.assertEqual(attachment.state, "pending")
attachment.set_done()
self.assertEqual(attachment.state, "done")
def test_reschedule_wizard(self):
attachment = self.env.ref("attachment_queue.dummy_attachment_queue")
attachment.write({"state": "failed"})
wizard = (
self.env["attachment.queue.reschedule"]
.with_context(active_model="attachment.queue", active_ids=attachment.ids)
.create({})
)
wizard.reschedule()
self.assertEqual(attachment.state, "pending")

View file

@ -0,0 +1,23 @@
# Copyright 2023 Akretion
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import _, models
from odoo.exceptions import UserError
class AttachmentQueue(models.Model):
_inherit = "attachment.queue"
_name = "attachment.queue"
def mock_run_fail(self):
raise UserError(_("boom"))
def mock_run_create_partners(self):
for x in range(10):
self.env["res.partner"].create({"name": str(x)})
def mock_run_create_partners_and_fail(self):
self.mock_run_create_partners()
raise UserError(_("boom"))
def _get_failure_emails(self):
return "test@test.com"

View file

@ -0,0 +1,166 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="view_attachment_queue_form" model="ir.ui.view">
<field name="model">attachment.queue</field>
<field name="inherit_id" ref="base.view_attachment_form" />
<field name="mode">primary</field>
<field name="arch" type="xml">
<xpath expr="/form/*" position="before">
<header>
<button
name="button_manual_run"
states="pending,failed"
string="Manual run"
type="object"
class="oe_highlight"
/>
<button
name="button_reschedule"
states="done,failed"
string="Reschedule"
type="object"
class="oe_highlight"
/>
<button
name="set_done"
states="pending,failed"
string="Set to Done"
type="object"
/>
</header>
</xpath>
<field name="url" position="after">
<field name="date_done" />
<field name="state" />
<field name="file_type" />
</field>
<group name="description_group" position="after">
<group name="state_message" string="Error" colspan="4">
<field name="state_message" nolabel="1" colspan="2" />
</group>
</group>
<xpath expr="//sheet" position="after">
<div class="oe_chatter">
<field name="activity_ids" widget="mail_activity" />
</div>
</xpath>
</field>
</record>
<record id="view_attachment_queue_tree" model="ir.ui.view">
<field name="model">attachment.queue</field>
<field name="arch" type="xml">
<tree default_order='create_date desc'>
<field name="create_date" />
<field name="name" />
<field name="file_type" />
<field name="type" />
<field name="state" />
</tree>
</field>
</record>
<record id="view_attachment_queue_search" model="ir.ui.view">
<field name="model">attachment.queue</field>
<field name="arch" type="xml">
<search string="Attachments">
<field
name="name"
filter_domain="[('name','ilike',self)]"
string="Attachment"
/>
<field name="create_date" />
<filter name="url" string="URL" domain="[('type','=','url')]" />
<filter name="binary" string="Binary" domain="[('type','=','binary')]" />
<separator />
<filter
name="my_documents_filter"
string="My Document(s)"
domain="[('create_uid','=',uid)]"
help="Filter on my documents"
/>
<field name="create_uid" />
<field name="type" />
<filter
string="Pending"
name="pending"
domain="[('state', '=', 'pending')]"
/>
<filter string="Failed" name="failed" domain="[('state', '=', 'failed')]" />
<filter string="Done" name="done" domain="[('state', '=', 'done')]" />
<group expand="0" string="Group By">
<filter
string="Owner"
name="owner"
domain="[]"
context="{'group_by':'create_uid'}"
/>
<filter
string="Type"
name="type"
domain="[]"
context="{'group_by':'type'}"
groups="base.group_no_one"
/>
<filter
string="Company"
name="company"
domain="[]"
context="{'group_by':'company_id'}"
groups="base.group_multi_company"
/>
<filter
string="Creation Month"
name="creation_month"
domain="[]"
context="{'group_by':'create_date'}"
/>
<filter
string="State"
name="state"
domain="[]"
context="{'group_by': 'state'}"
/>
<filter
string="File type"
name="file_type"
domain="[]"
context="{'group_by': 'file_type'}"
/>
</group>
</search>
</field>
</record>
<record id="action_attachment_queue" model="ir.actions.act_window">
<field name="name">Attachments Queue</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">attachment.queue</field>
<field name="view_mode">tree,form</field>
<field name="view_id" eval="False" />
<field name="search_view_id" ref="view_attachment_queue_search" />
</record>
<record id="act_open_attachment_que_view_tree" model="ir.actions.act_window.view">
<field eval="10" name="sequence" />
<field name="view_mode">tree</field>
<field name="view_id" ref="view_attachment_queue_tree" />
<field name="act_window_id" ref="action_attachment_queue" />
</record>
<record id="act_open_attachment_que_view_form" model="ir.actions.act_window.view">
<field eval="10" name="sequence" />
<field name="view_mode">form</field>
<field name="view_id" ref="view_attachment_queue_form" />
<field name="act_window_id" ref="action_attachment_queue" />
</record>
<menuitem
id="menu_attachment_queue"
parent="queue_job.menu_queue_job_root"
sequence="20"
action="action_attachment_queue"
/>
</odoo>

View file

@ -0,0 +1 @@
from . import attachement_queue_reschedule

View file

@ -0,0 +1,29 @@
# Copyright 2013-2020 Camptocamp SA
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html)
from odoo import fields, models
class AttachmentQueueReschedule(models.TransientModel):
_name = "attachment.queue.reschedule"
_description = "Wizard to reschedule a selection of attachments"
def _default_attachment_ids(self):
res = False
context = self.env.context
if context.get("active_model") == "attachment.queue" and context.get(
"active_ids"
):
res = context["active_ids"]
return res
attachment_ids = fields.Many2many(
comodel_name="attachment.queue",
string="Attachments",
default=lambda r: r._default_attachment_ids(),
)
def reschedule(self):
attachments = self.attachment_ids
attachments.button_reschedule()
return {"type": "ir.actions.act_window_close"}

View file

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="view_reschedule_attachment" model="ir.ui.view">
<field name="name">Reschedule Attachments</field>
<field name="model">attachment.queue.reschedule</field>
<field name="arch" type="xml">
<form string="Requeue Attachments">
<group string="The selected attachments will be rescheduled.">
<field name="attachment_ids" nolabel="1" colspan="2" />
</group>
<footer>
<button
name="reschedule"
string="Reschedule"
type="object"
class="oe_highlight"
/>
<button string="Cancel" class="oe_link" special="cancel" />
</footer>
</form>
</field>
</record>
<record id="action_reschedule_attachment" model="ir.actions.act_window">
<field name="name">Reschedule Attachment</field>
<field name="res_model">attachment.queue.reschedule</field>
<field name="view_mode">form</field>
<field name="view_id" ref="view_reschedule_attachment" />
<field name="target">new</field>
<field name="binding_model_id" ref="attachment_queue.model_attachment_queue" />
</record>
</odoo>