Skip to content

Commit

Permalink
Merge pull request #449 from OCA/18.0
Browse files Browse the repository at this point in the history
Syncing from upstream OCA/queue (18.0)
  • Loading branch information
bt-admin authored Feb 21, 2025
2 parents 0dc5068 + 92ae72a commit 075f9c4
Show file tree
Hide file tree
Showing 51 changed files with 3,921 additions and 1 deletion.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,11 @@ Available addons
addon | version | maintainers | summary
--- | --- | --- | ---
[queue_job](queue_job/) | 18.0.1.2.1 | [![guewen](https://github.com/guewen.png?size=30px)](https://github.com/guewen) | Job Queue
[queue_job_batch](queue_job_batch/) | 18.0.1.0.0 | | Job Queue Batch
[queue_job_cron](queue_job_cron/) | 18.0.1.1.0 | | Scheduled Actions as Queue Jobs
[queue_job_subscribe](queue_job_subscribe/) | 18.0.1.0.0 | | Control which users are subscribed to queue job notifications
[test_queue_job](test_queue_job/) | 18.0.1.0.0 | | Queue Job Tests
[test_queue_job_batch](test_queue_job_batch/) | 18.0.1.0.0 | | Test Job Queue Batch

[//]: # (end addons)

Expand Down
137 changes: 137 additions & 0 deletions queue_job_batch/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
===============
Job Queue Batch
===============

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:b6e605728ea05be0bf98dbe6e94c197bab21882e965286ef214f719e252b444e
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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%2Fqueue-lightgray.png?logo=github
:target: https://github.com/OCA/queue/tree/18.0/queue_job_batch
:alt: OCA/queue
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/queue-18-0/queue-18-0-queue_job_batch
: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/queue&target_branch=18.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This addon adds an a grouper for queue jobs.

It allows to show your jobs in a batched form in order to know better
the results.

Example:

.. code:: python
from odoo import models, fields, api
class MyModel(models.Model):
_name = 'my.model'
def my_method(self, a, k=None):
_logger.info('executed with a: %s and k: %s', a, k)
class MyOtherModel(models.Model):
_name = 'my.other.model'
@api.multi
def button_do_stuff(self):
batch = self.env['queue.job.batch'].get_new_batch('Group')
model = self.env['my.model'].with_context(job_batch=batch)
for i in range(1, 100):
model.with_delay().my_method('a', k=i)
In the snippet of code above, when we call ``button_do_stuff``, 100 jobs
capturing the method and arguments will be postponed. It will be
executed as soon as the Jobrunner has a free bucket, which can be
instantaneous if no other job is running.

Once all the jobs have finished, the grouper will be marked as finished.

**Table of contents**

.. contents::
:local:

Usage
=====

You can manage your batch jobs from the Systray. A new button will be
shown with your currently executing job batches and the recently
finished job groups.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/queue/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/queue/issues/new?body=module:%20queue_job_batch%0Aversion:%2018.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
-------

* Creu Blanca

Contributors
------------

- Enric Tobella <[email protected]>

- `Trobz <https://trobz.com>`__:

- Hoang Diep <[email protected]>

- `ForgeFlow <https://forgeflow.com>`__:

- Lois Rilo <[email protected]>
- Jasmin Solanki <[email protected]>

- `Camptocamp <https://camptocamp.com>`__:

- Maksym Yankin <[email protected]>
- Iván Todorovich <[email protected]>

Other credits
-------------

The migration of this module from 12.0 to 14.0 was financially supported
by Camptocamp

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.

This module is part of the `OCA/queue <https://github.com/OCA/queue/tree/18.0/queue_job_batch>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
2 changes: 2 additions & 0 deletions queue_job_batch/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from . import controllers
from . import models
33 changes: 33 additions & 0 deletions queue_job_batch/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Copyright 2019 Creu Blanca
# Copyright 2023 ForgeFlow S.L. (http://www.forgeflow.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)

{
"name": "Job Queue Batch",
"version": "18.0.1.0.0",
"author": "Creu Blanca,Odoo Community Association (OCA)",
"website": "https://github.com/OCA/queue",
"license": "AGPL-3",
"category": "Generic Modules",
"depends": [
"queue_job",
],
"data": [
# data
"data/queue_job_channel_data.xml",
"data/queue_job_function_data.xml",
# security
"security/security.xml",
"security/ir.model.access.csv",
# views
"views/queue_job_views.xml",
"views/queue_job_batch_views.xml",
],
"assets": {
"web.assets_backend": [
"queue_job_batch/static/src/**/*.js",
"queue_job_batch/static/src/**/*.xml",
"queue_job_batch/static/src/**/*.scss",
],
},
}
1 change: 1 addition & 0 deletions queue_job_batch/controllers/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import webclient
23 changes: 23 additions & 0 deletions queue_job_batch/controllers/webclient.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Copyright 2025 Camptocamp SA (https://www.camptocamp.com).
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo.http import request

from odoo.addons.mail.controllers.webclient import WebclientController


class WebClient(WebclientController):
def _process_request_for_internal_user(self, store, **kwargs):
res = super()._process_request_for_internal_user(store, **kwargs)
if kwargs.get("systray_get_queue_job_batches"):
# sudo: bus.bus: reading non-sensitive last id
bus_last_id = request.env["bus.bus"].sudo()._bus_last_id()
batches = request.env.user._get_queue_job_batches()
store.add(batches)
store.add(
{
"queueJobBatchCounter": len(batches),
"queueJobBatchCounterBusId": bus_last_id,
}
)
return res
6 changes: 6 additions & 0 deletions queue_job_batch/data/queue_job_channel_data.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<odoo noupdate="1">
<record model="queue.job.channel" id="channel_queue_job_batch">
<field name="name">queue.job.batch</field>
<field name="parent_id" ref="queue_job.channel_root" />
</record>
</odoo>
7 changes: 7 additions & 0 deletions queue_job_batch/data/queue_job_function_data.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<odoo noupdate="1">
<record id="job_function_queue_job_check_state" model="queue.job.function">
<field name="model_id" ref="queue_job_batch.model_queue_job_batch" />
<field name="channel_id" ref="queue_job_batch.channel_queue_job_batch" />
<field name="method">check_state</field>
</record>
</odoo>
Loading

0 comments on commit 075f9c4

Please sign in to comment.