odoo-addon-dms 17.0.1.2.1__py3-none-any.whl → 17.0.1.2.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,7 +7,7 @@ Document Management System
7
7
  !! This file is generated by oca-gen-addon-readme !!
8
8
  !! changes will be overwritten. !!
9
9
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
10
- !! source digest: sha256:966c4331ff7c75b1ea8cb1d065c878d81250957cd305a5d6422def133e2a7d63
10
+ !! source digest: sha256:14906170a451329cbce282b867d0012872de1fff38ce9e4388bbeeab3afbc087
11
11
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
12
12
 
13
13
  .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -5,7 +5,7 @@
5
5
  {
6
6
  "name": "Document Management System",
7
7
  "summary": """Document Management System for Odoo""",
8
- "version": "17.0.1.2.1",
8
+ "version": "17.0.1.2.3",
9
9
  "category": "Document Management",
10
10
  "license": "LGPL-3",
11
11
  "website": "https://github.com/OCA/dms",
@@ -698,6 +698,14 @@ class DmsDirectory(models.Model):
698
698
  res = super().write(vals)
699
699
  return res
700
700
 
701
+ @api.depends_context("directory_short_name")
702
+ def _compute_display_name(self):
703
+ if self.env.context.get("directory_short_name"):
704
+ for item in self:
705
+ item.display_name = item.name
706
+ else:
707
+ return super()._compute_display_name()
708
+
701
709
  def unlink(self):
702
710
  """Custom cascade unlink.
703
711
 
@@ -197,6 +197,7 @@ class DMSFile(models.Model):
197
197
  string="Attachment File",
198
198
  prefetch=False,
199
199
  ondelete="cascade",
200
+ index=True,
200
201
  )
201
202
 
202
203
  def get_human_size(self):
@@ -602,6 +603,13 @@ class DMSFile(models.Model):
602
603
  new_vals_list.append(vals)
603
604
  return super().create(new_vals_list)
604
605
 
606
+ def unlink(self):
607
+ attachments = self.mapped("attachment_id")
608
+ res = super().unlink()
609
+ if not self.env.context.get("dms_file"):
610
+ attachments.with_context(dms_file=True).unlink()
611
+ return res
612
+
605
613
  # ----------------------------------------------------------
606
614
  # Locking fields and functions
607
615
  locked_by = fields.Many2one(comodel_name="res.users")
@@ -1,4 +1,4 @@
1
- # Copyright 2021 Tecnativa - Víctor Martínez
1
+ # Copyright 2021-2025 Tecnativa - Víctor Martínez
2
2
  # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
3
3
  from odoo import api, models
4
4
  from odoo.tools import ormcache
@@ -99,3 +99,10 @@ class IrAttachment(models.Model):
99
99
  ):
100
100
  self._dms_operations()
101
101
  return res
102
+
103
+ def unlink(self):
104
+ if not self.env.context.get("dms_file"):
105
+ self.env["dms.file"].search(
106
+ [("attachment_id", "in", self.ids)]
107
+ ).with_context(dms_file=True).unlink()
108
+ return super().unlink()
@@ -367,7 +367,7 @@ ul.auto-toc {
367
367
  !! This file is generated by oca-gen-addon-readme !!
368
368
  !! changes will be overwritten. !!
369
369
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
370
- !! source digest: sha256:966c4331ff7c75b1ea8cb1d065c878d81250957cd305a5d6422def133e2a7d63
370
+ !! source digest: sha256:14906170a451329cbce282b867d0012872de1fff38ce9e4388bbeeab3afbc087
371
371
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
372
372
  <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/lgpl-3.0-standalone.html"><img alt="License: LGPL-3" src="https://img.shields.io/badge/licence-LGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/dms/tree/17.0/dms"><img alt="OCA/dms" src="https://img.shields.io/badge/github-OCA%2Fdms-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/dms-17-0/dms-17-0-dms"><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/dms&amp;target_branch=17.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
373
373
  <p>DMS is a module for creating, managing and viewing document files
@@ -3,6 +3,7 @@
3
3
  # Copyright 2024 Subteno - Timothée Vannier (https://www.subteno.com).
4
4
  # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
5
5
 
6
+ from odoo.exceptions import AccessError
6
7
  from odoo.tests.common import users
7
8
  from odoo.tools import mute_logger
8
9
 
@@ -48,6 +49,26 @@ class StorageAttachmentTestCase(StorageAttachmentBaseCase):
48
49
  directories = self.env["dms.directory"].search([])
49
50
  self.assertNotIn(directory.id, directories.ids)
50
51
 
52
+ @mute_logger("odoo.models.unlink")
53
+ def test_storage_attachment_unlink_lock_file(self):
54
+ group_partner_manager = self.env.ref("base.group_partner_manager")
55
+ self.dms_manager_user.write({"groups_id": [(4, group_partner_manager.id)]})
56
+ self.dms_user.write({"groups_id": [(4, group_partner_manager.id)]})
57
+ attachment = self._create_attachment("demo.txt")
58
+ attachment = attachment.with_user(self.dms_manager_user)
59
+ file = self.storage.storage_file_ids.filtered(lambda x: x.name == "demo.txt")
60
+ file.with_user(self.dms_user).lock()
61
+ self.assertTrue(file.is_locked)
62
+ self.assertFalse(file.is_lock_editor)
63
+ with self.assertRaises(AccessError):
64
+ attachment.unlink()
65
+ self.assertTrue(file.exists())
66
+ file.with_user(self.dms_user).unlock()
67
+ self.assertFalse(file.is_locked)
68
+ file.invalidate_recordset()
69
+ attachment.unlink()
70
+ self.assertFalse(file.exists())
71
+
51
72
  @users("dms-manager")
52
73
  def test_storage_attachment_misc(self):
53
74
  attachment = self._create_attachment("demo.txt")
@@ -105,6 +126,8 @@ class StorageAttachmentTestCase(StorageAttachmentBaseCase):
105
126
  self.assertEqual(
106
127
  self.storage.count_storage_files, 2, "Storage should have 2 files"
107
128
  )
129
+ dms_file.unlink()
130
+ self.assertFalse(attachment.exists())
108
131
 
109
132
  @users("dms-manager")
110
133
  def test_storage_attachment_directory_record_ref_access_dms_manager(self):
@@ -142,7 +142,7 @@
142
142
  </div>
143
143
  <div
144
144
  role="menuitem"
145
- t-if="record.permission_write.raw_value and record.active.raw_value"
145
+ t-if="record.permission_write.raw_value and record.active.raw_value and (!record.is_locked.raw_value or (record.is_locked.raw_value and record.is_lock_editor.raw_value))"
146
146
  >
147
147
  <a name="toggle_active" type="object">
148
148
  <i class="fa fa-archive" />
@@ -151,7 +151,7 @@
151
151
  </div>
152
152
  <div
153
153
  role="menuitem"
154
- t-if="record.permission_write.raw_value and !record.active.raw_value"
154
+ t-if="record.permission_write.raw_value and !record.active.raw_value and (!record.is_locked.raw_value or (record.is_locked.raw_value and record.is_lock_editor.raw_value))"
155
155
  >
156
156
  <a name="toggle_active" type="object">
157
157
  <i class="fa fa-archive" />
@@ -191,7 +191,7 @@
191
191
  </div>
192
192
  <div
193
193
  role="menuitem"
194
- t-if="record.permission_unlink.raw_value"
194
+ t-if="record.permission_unlink.raw_value and (!record.is_locked.raw_value or (record.is_locked.raw_value and record.is_lock_editor.raw_value))"
195
195
  >
196
196
  <a type="delete">
197
197
  <i class="fa fa-trash-o" />
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-dms
3
- Version: 17.0.1.2.1
3
+ Version: 17.0.1.2.3
4
4
  Requires-Python: >=3.10
5
5
  Requires-Dist: odoo>=17.0a,<17.1dev
6
6
  Summary: Document Management System for Odoo
@@ -22,7 +22,7 @@ Document Management System
22
22
  !! This file is generated by oca-gen-addon-readme !!
23
23
  !! changes will be overwritten. !!
24
24
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
25
- !! source digest: sha256:966c4331ff7c75b1ea8cb1d065c878d81250957cd305a5d6422def133e2a7d63
25
+ !! source digest: sha256:14906170a451329cbce282b867d0012872de1fff38ce9e4388bbeeab3afbc087
26
26
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
27
27
 
28
28
  .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -1,6 +1,6 @@
1
- odoo/addons/dms/README.rst,sha256=Y-KYJ9gJmTk99Upd5UT66tSTGEUTOtiFZzh1O-zwj-M,8260
1
+ odoo/addons/dms/README.rst,sha256=yAXBi03l-msGQo10Ku_79lOmWRxc6kRu5UzyNGasbpA,8260
2
2
  odoo/addons/dms/__init__.py,sha256=dnUeA_K1torbiMNF3tt2dtECdk-FkWm01DByr9MBMIA,69
3
- odoo/addons/dms/__manifest__.py,sha256=4zv677Dma4HwaXzOwIeR9YOo7B4ooESHxO41ylLwm5E,2440
3
+ odoo/addons/dms/__manifest__.py,sha256=SRk4fwZXXmO59yVfFM93zlLh9obLnZxn_05HE5pWnXE,2440
4
4
  odoo/addons/dms/actions/file.xml,sha256=z4UWfhmDcaOxdcwMbFH9Wjgi8_23RRAouD_o3FFaiaw,520
5
5
  odoo/addons/dms/controllers/__init__.py,sha256=akfNDwFGryweTYowOA3DbbP0zvLmQtCdihtGhYvsIPQ,40
6
6
  odoo/addons/dms/controllers/main.py,sha256=DW7wSHB_47kkxQQMCuic8ptvs_wnF-i6vJ0sXIKGgUk,531
@@ -28,11 +28,11 @@ odoo/addons/dms/models/__init__.py,sha256=MbhfClBwISk2qcZ1UJCLWTdwFre2IfodyIKHgR
28
28
  odoo/addons/dms/models/abstract_dms_mixin.py,sha256=KLraRQRM6cQeWWo1m1x4AOwpvWeBA2wd2P1sgKgbexA,2084
29
29
  odoo/addons/dms/models/access_groups.py,sha256=JPV-iZQ_FgJPEwxBUBwbz4h1t7C0TZ_MvQJyjk-IIcM,5656
30
30
  odoo/addons/dms/models/base.py,sha256=neudsxtQLBpS4uq6haivMC2Lwtfprajx1CsLJSGDaWA,1336
31
- odoo/addons/dms/models/directory.py,sha256=5MTkF-jOEprcUVS3H3zndVvBhJio3B9PRcM8IoxLfmc,27682
31
+ odoo/addons/dms/models/directory.py,sha256=7jrQ0A5-2KKOQK0eYR3vcOJmMWFj54ocB5hNcfz1Dl4,27967
32
32
  odoo/addons/dms/models/dms_category.py,sha256=DH1R7QUQQbGpGwDGxfm0oHenDVvWOrSeKmr-sttfvus,3337
33
- odoo/addons/dms/models/dms_file.py,sha256=jNMaUtJtYLph90fFz-2Yf_w8qXzvntx0Ai4P5kLv2fc,24115
33
+ odoo/addons/dms/models/dms_file.py,sha256=MqRjqQ7SwhoqNIHjhUsuEWWt39PYENyBlk2-mYg5WVs,24369
34
34
  odoo/addons/dms/models/dms_security_mixin.py,sha256=ZF_PUR3nHh0_rVw1-7D4pbcpi7bzUTETJPaIL-wWklw,9832
35
- odoo/addons/dms/models/ir_attachment.py,sha256=ABXO54R3D3RECp4Kza8VqfrpDWBbmOSdsTPUs_ctpyA,3987
35
+ odoo/addons/dms/models/ir_attachment.py,sha256=JcD9GGeiYj8ahSq1QtPaR_2Y_TpeqgTXar6nakjlnEQ,4240
36
36
  odoo/addons/dms/models/ir_binary.py,sha256=K62N0v6hEM5AE5GxB2iiPL86ISZy8lNvtTdQABrN_-0,710
37
37
  odoo/addons/dms/models/mail_thread.py,sha256=DBanYxThmxvMLoTWDvh2dBn9mHdADJx0gWTfifa4bcM,561
38
38
  odoo/addons/dms/models/mixins_thumbnail.py,sha256=7u27IgH4cXxSZXkZF-QWgS9uQ96u1I3Bp25xvYzpUXs,1659
@@ -53,7 +53,7 @@ odoo/addons/dms/security/ir.model.access.csv,sha256=_SuEwHD3SOXbpLalbr5FqGjPvwtD
53
53
  odoo/addons/dms/security/security.xml,sha256=PNM3fDyFN4CWooj_aMkLqTR0CYrjAugsCAKbcTm6crw,9159
54
54
  odoo/addons/dms/static/description/icon.png,sha256=KfrJt0JWFclsfbF1KsyjikkjwX3ib9OLlBf2QwyXSD4,1233
55
55
  odoo/addons/dms/static/description/icon.svg,sha256=kOfm8NcYxdEWmr5jGDjvCXmDix2mw-5LT0ZQ4omZ2c0,1820
56
- odoo/addons/dms/static/description/index.html,sha256=Se6ynWKYkUhi-n0TDn8Kv0tm_QmB15StzHLbCHzZtek,21674
56
+ odoo/addons/dms/static/description/index.html,sha256=9ngexaMoiteprPstBhOLhn_UFUozJh5Va0QkYRNm04w,21674
57
57
  odoo/addons/dms/static/description/portal_icon.svg,sha256=z5RFc6mU_DAgNHfOS2OncYBlQBczsawqwRI1IFwct0M,4801
58
58
  odoo/addons/dms/static/icons/file_ai.svg,sha256=HeCXVJivVnn6jjj__5WJiLfZv4mrmAamPFek0CwozCc,3343
59
59
  odoo/addons/dms/static/icons/file_aj.svg,sha256=mUbfvaV5_m3zJ3zZKldBbaFz4AZNQNecSZ1W_JCZeE4,3063
@@ -185,7 +185,7 @@ odoo/addons/dms/tests/test_directory.py,sha256=IGCy4xcWmVz5KWkPzmjUTxr64_GAiZEYE
185
185
  odoo/addons/dms/tests/test_file.py,sha256=YTgPQfUfy2KJRxak2SO-Ey8_5avbjGuPGyFAGsEsJMw,7710
186
186
  odoo/addons/dms/tests/test_file_database.py,sha256=FhRakGMc4lWlOS3tqIb-o-kH4CuE_6jW6V_GYc2pKJE,5843
187
187
  odoo/addons/dms/tests/test_portal.py,sha256=_dPa5ql6iWV_SjJjuxwXHPQt3ermzoSiiyKfvGAhCAI,3949
188
- odoo/addons/dms/tests/test_storage_attachment.py,sha256=z1sT7UZ57tabCGprKPrbiOgkmr7-kwKqMMRFjX0-nyU,6650
188
+ odoo/addons/dms/tests/test_storage_attachment.py,sha256=heePm0psf7VY4kBgwzyw5nSKkYxcWp1HKJodKv8SZyI,7740
189
189
  odoo/addons/dms/tests/test_storage_database.py,sha256=S9eDN2BrnzUAmeEPlh7RQ6nhnMEPumxiducEr1khcQw,5670
190
190
  odoo/addons/dms/tests/data/dms.category.csv,sha256=VBWa6-PEA6__yv_D6CXUZ7xU-8AAxD7z8jWo4sKb8S0,2631
191
191
  odoo/addons/dms/tests/data/dms.directory.csv,sha256=Klh3tEdMt_BB9hWgc_FRUsv_q4Uy-asUut0EuTmnLLU,53514
@@ -199,7 +199,7 @@ odoo/addons/dms/tools/file.py,sha256=RIq2VWswdGySj9fNwAUFgli_sLcHK1rnidcd5icrTSk
199
199
  odoo/addons/dms/views/dms_access_groups_views.xml,sha256=xtKE5llLOacj_dRyH8oB04kGVg2_VuhTcWQ0zxINgBw,4786
200
200
  odoo/addons/dms/views/dms_category.xml,sha256=CyHbudcFCrodEZ54nbwycd_5hunABPz0NQsjNub6sWQ,4303
201
201
  odoo/addons/dms/views/dms_directory.xml,sha256=cK_LQdFh2MMwnVc3SLwEYxvEUELbiUacVEuq9QanXBg,34084
202
- odoo/addons/dms/views/dms_file.xml,sha256=lXlBMZ-H5a6K3n958IdTS96lBEoERt7SiWNoyH_NwCo,29983
202
+ odoo/addons/dms/views/dms_file.xml,sha256=x8K4agQBfSJ7qO-X3yF2-eFu4u7WLfDqnpTVxGXfYdU,30289
203
203
  odoo/addons/dms/views/dms_tag.xml,sha256=ybtRR_SptYMOafqeGdFzbJy9Z_ekhBfZ1RqNl8cI_J8,7342
204
204
  odoo/addons/dms/views/menu.xml,sha256=2VHK7IrsQjp9rCqcihMVzMuoZFirRt8sHI8mxkNkzZI,2151
205
205
  odoo/addons/dms/views/res_config_settings.xml,sha256=aoEhrRvTaGhwIiOa3WwUvayGXDVx-78_pFhuhGeFDTY,2429
@@ -209,7 +209,7 @@ odoo/addons/dms/wizards/wizard_dms_file_move.py,sha256=zQouQDJuLWOrjzkksiUaTf0DF
209
209
  odoo/addons/dms/wizards/wizard_dms_file_move_views.xml,sha256=bYWdX_QlMpIOS5gRk7iEyddHKLCvAkvzDxfT3oM1lCo,1931
210
210
  odoo/addons/dms/wizards/wizard_dms_share.py,sha256=s7n6nQy0I6qVsvQ7Z57lfY28wi8tbd9062Bdw-BSoWg,558
211
211
  odoo/addons/dms/wizards/wizard_dms_share_views.xml,sha256=63BhWyowqJ2Yf3RdOdjT6WvC13jXxTKzsJEZXmaHv-A,1230
212
- odoo_addon_dms-17.0.1.2.1.dist-info/METADATA,sha256=7e3gTd45I9A-04ohnOWBgafSbqkCXKutm7_syH1lh8Q,8780
213
- odoo_addon_dms-17.0.1.2.1.dist-info/WHEEL,sha256=9fEMia4zL7ZuZbnCOrcYogUhmn4XFIVaJ8G4YGI31xc,81
214
- odoo_addon_dms-17.0.1.2.1.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
215
- odoo_addon_dms-17.0.1.2.1.dist-info/RECORD,,
212
+ odoo_addon_dms-17.0.1.2.3.dist-info/METADATA,sha256=r89Q9aD1tSKs3lweXNRw_w0XV6oEyJoPfrKFp5u3NP8,8780
213
+ odoo_addon_dms-17.0.1.2.3.dist-info/WHEEL,sha256=9fEMia4zL7ZuZbnCOrcYogUhmn4XFIVaJ8G4YGI31xc,81
214
+ odoo_addon_dms-17.0.1.2.3.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
215
+ odoo_addon_dms-17.0.1.2.3.dist-info/RECORD,,