| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/dms |
| GIT | |
| GIT | https://github.com/OCA/dms.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/dms/tree/18.0/dms |
| VERSION | |
| VERSION | 1.1.1 |
| CATEGORY | |
| CATEGORY | Document Management |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA), MuK IT |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA), MuK IT |
| COMMITTERS | |
| COMMITTERS | root, Víctor Martínez, Weblate, OCA-git-bot, oca-ci, CarlosRoca13, Matteo Mircoli |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/dms |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:30:09 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web - bus - web_tour - html_editor - http_routing - onboarding - portal - web_editor - auth_signup |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | DMS is a module for creating, managing and viewing document files directly within Odoo. This module is only the basis for an entire ecosystem of apps that extend and seamlessly integrate with the document management system. This module adds portal functionality for directories and files for allowed users, both portal or internal users. You can get as well a tokenized link from a directory or a file for sharing it with any anonymous user. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
portal_my_dms |
My DMS | ir.ui.view | qweb | New |
portal_my_dms_breadcrumbs |
My DMS: Breadcrumbs | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
portal_my_home_dms |
Portal My Home : dms entries | ir.ui.view | qweb | Inherits portal.portal_my_home |
res_config_settings_view_form |
res.config.settings.view.form.inherit.dms | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
search_dms_directory |
dms_directory.search | dms.directory | search | New |
search_dms_file |
dms_file.search | dms.file | search | New |
search_dms_file_migration |
dms_file.search | dms.file | search | New |
view_dms_access_groups_form |
dms_access.group.form | dms.access.group | form | New |
view_dms_access_groups_tree |
dms_access_groups.list | dms.access.group | list | New |
view_dms_category_form |
dms_category.form | dms.category | form | New |
view_dms_category_search |
dms_category.search | dms.category | search | New |
view_dms_category_tree |
dms_category.list | dms.category | list | New |
view_dms_directory_form |
dms_directory.form | dms.directory | form | New |
view_dms_directory_kanban |
dms_directory.kanban | dms.directory | kanban | New |
view_dms_directory_new_form |
dms_directory.form | dms.directory | xpath | Inherits view_dms_directory_form |
view_dms_directory_tree |
dms_directory.list | dms.directory | list | New |
view_dms_file_form |
dms_file.form | dms.file | form | New |
view_dms_file_graph |
dms_file.graph | dms.file | graph | New |
view_dms_file_kanban |
dms_file.kanban | dms.file | kanban | New |
view_dms_file_kanban_wizard_selection |
dms_file.kanban.wizard.selection | dms.file | kanban | Inherits dms.view_dms_file_kanban |
view_dms_file_migration_tree |
dms_file.list | dms.file | list | New |
view_dms_file_new_form |
dms_file.form | dms.file | xpath | Inherits view_dms_file_form |
view_dms_file_pivot |
dms_file.pivot | dms.file | pivot | New |
view_dms_file_tree |
dms_file.list | dms.file | list | New |
view_dms_storage_form |
dms_storage.form | dms.storage | form | New |
view_dms_storage_new_form |
dms_storage.form | dms.storage | xpath | Inherits view_dms_storage_form |
view_dms_storage_search |
dms_storage.search | dms.storage | search | New |
view_dms_storage_tree |
dms_storage.list | dms.storage | list | New |
view_dms_tag_form |
dms_tag.form | dms.tag | form | New |
view_dms_tag_kanban |
dms_tag.kanban | dms.tag | kanban | New |
view_dms_tag_search |
dms_tag.search | dms.tag | search | New |
view_dms_tag_tree |
dms_tag.list | dms.tag | list | New |
wizard_dms_file_move_form_view |
wizard.dms.file.move.form | wizard.dms.file.move | form | New |
wizard_dms_share_form |
wizard.dms.share.form | wizard.dms.share | field | Inherits portal.portal_share_wizard |
category_id
Many2one → dms.category
comodel_name='dms.category'
context={'dms_category_show_path': True}
string='Category'
color
Integer
default=0
company_id
Many2one → res.company
comodel_name='res.company'
index='btree'
readonly=True
related='storage_id.company_id'
store=True
string='Company'
is_hidden
Boolean
readonly=True
related='storage_id.is_hidden'
store=True
string='Storage is Hidden'
name
Char
index='btree'
required=True
storage_id
Many2one → dms.storage
comodel_name='dms.storage'
copy=True
store=True
string='Storage'
storage_id_save_type
Selection
related='storage_id.save_type'
store=False
search_panel_select_range(self, field_name, **kwargs)
No new fields.
Public methods (1)unlink(self)
child_group_ids
One2many → dms.access.group
comodel_name='dms.access.group'
inverse_name='parent_group_id'
string='Child Groups'
complete_directory_ids
Many2many → dms.directory
auto_join=True
column1='gid'
column2='aid'
comodel_name='dms.directory'
readonly=True
relation='dms_directory_complete_groups_rel'
string='Complete directories'
count_directories
Integer
compute='_compute_count_directories'
count_users
Integer
compute='_compute_users'
store=True
directory_ids
Many2many → dms.directory
auto_join=True
column1='gid'
column2='aid'
comodel_name='dms.directory'
readonly=True
relation='dms_directory_groups_rel'
string='Directories'
explicit_user_ids
Many2many → res.users
column1='gid'
column2='uid'
comodel_name='res.users'
relation='dms_access_group_explicit_users_rel'
string='Explicit Users'
group_ids
Many2many → res.groups
column1='gid'
column2='rid'
comodel_name='res.groups'
relation='dms_access_group_groups_rel'
string='Groups'
name
Char
required=True
string='Group Name'
translate=True
parent_group_id
Many2one → dms.access.group
comodel_name='dms.access.group'
index='btree'
ondelete='cascade'
string='Parent Group'
parent_path
Char
index='btree'
perm_create
Boolean
string='Create Access'
perm_inclusive_create
Boolean
compute='_compute_inclusive_permissions'
recursive=True
store=True
string='Inherited Create Access'
perm_inclusive_unlink
Boolean
compute='_compute_inclusive_permissions'
recursive=True
store=True
string='Inherited Unlink Access'
perm_inclusive_write
Boolean
compute='_compute_inclusive_permissions'
recursive=True
store=True
string='Inherited Write Access'
perm_unlink
Boolean
string='Unlink Access'
perm_write
Boolean
string='Write Access'
users
Many2many → res.users
auto_join=True
column1='gid'
column2='uid'
comodel_name='res.users'
compute='_compute_users'
recursive=True
relation='dms_access_group_users_rel'
store=True
string='Group Users'
copy_data(self, default=None)
default_get(self, fields_list)
active
Boolean
default=True
help='The active field allows you to hide the category without removing it.'
child_category_ids
One2many → dms.category
comodel_name='dms.category'
inverse_name='parent_id'
string='Child Categories'
complete_name
Char
compute='_compute_complete_name'
recursive=True
store=True
count_categories
Integer
compute='_compute_count_categories'
string='Count Subcategories'
count_directories
Integer
compute='_compute_count_directories'
count_files
Integer
compute='_compute_count_files'
count_tags
Integer
compute='_compute_count_tags'
directory_ids
One2many → dms.directory
comodel_name='dms.directory'
inverse_name='category_id'
readonly=True
string='Directories'
file_ids
One2many → dms.file
comodel_name='dms.file'
inverse_name='category_id'
readonly=True
string='Files'
name
Char
required=True
translate=True
parent_id
Many2one → dms.category
comodel_name='dms.category'
index='btree'
ondelete='cascade'
string='Parent Category'
parent_path
Char
index='btree'
tag_ids
One2many → dms.tag
comodel_name='dms.tag'
inverse_name='category_id'
string='Tags'
No public methods.
alias_process
Selection
default='directory'
help=' Define how incoming emails are processed:\n\n - Single Files: The email gets attached to the directory and\n all attachments are created as files.\n\n - Subdirectory: A new subdirectory is created for each email\n and the mail is attached to this subdirectory. The attachments\n are created as files of the subdirectory.\n '
required=True
selection=[('files', 'Single Files'), ('directory', 'Subdirectory')]
string='Unpack Emails as'
allowed_model_ids
Many2many → ir.model
comodel_name='ir.model'
related='storage_id.model_ids'
child_directory_ids
One2many → dms.directory
auto_join=False
comodel_name='dms.directory'
copy=True
inverse_name='parent_id'
string='Subdirectories'
complete_group_ids
Many2many → dms.access.group
column1='aid'
column2='gid'
comodel_name='dms.access.group'
compute='_compute_groups'
compute_sudo=True
readonly=True
recursive=True
relation='dms_directory_complete_groups_rel'
store=True
string='Complete Groups'
complete_name
Char
compute='_compute_complete_name'
recursive=True
store=True
count_directories
Integer
compute='_compute_count_directories'
string='Count Subdirectories Title'
count_directories_title
Char
compute='_compute_count_directories'
string='Count Subdirectories'
count_elements
Integer
compute='_compute_count_elements'
count_files
Integer
compute='_compute_count_files'
string='Count Files Title'
count_files_title
Char
compute='_compute_count_files'
string='Count Files'
count_total_directories
Integer
compute='_compute_count_total_directories'
string='Total Subdirectories'
count_total_elements
Integer
compute='_compute_count_total_elements'
string='Total Elements'
count_total_files
Integer
compute='_compute_count_total_files'
string='Total Files'
file_ids
One2many → dms.file
auto_join=False
comodel_name='dms.file'
copy=True
inverse_name='directory_id'
string='Files'
group_ids
Many2many → dms.access.group
column1='aid'
column2='gid'
comodel_name='dms.access.group'
relation='dms_directory_groups_rel'
string='Groups'
human_size
Char
compute='_compute_human_size'
string='Size (human readable)'
inherit_group_ids
Boolean
default=True
string='Inherit Groups'
is_root_directory
Boolean
default=False
help='Indicates if the directory is a root directory.\n A root directory has a settings object, while a directory with a set\n parent inherits the settings form its parent.'
model_id
Many2one → ir.model
comodel_name='ir.model'
compute='_compute_model_id'
domain="[('id', 'in', allowed_model_ids)]"
inverse='_inverse_model_id'
store=True
string='Model'
parent_id
Many2one → dms.directory
comodel_name='dms.directory'
compute='_compute_parent_id'
copy=True
default=<expr>
domain="[('permission_create', '=', True)]"
index='btree'
ondelete='restrict'
prefetch=False
readonly=False
store=True
string='Parent Directory'
parent_path
Char
index='btree'
root_directory_id
Many2one → dms.directory
compute='_compute_root_id'
store=True
args: 'dms.directory', 'Root Directory'
size
Float
compute='_compute_size'
starred
Boolean
compute='_compute_starred'
inverse='_inverse_starred'
search='_search_starred'
storage_id
Many2one → dms.storage
auto_join=True
comodel_name='dms.storage'
compute='_compute_storage_id'
compute_sudo=True
ondelete='restrict'
readonly=False
store=True
string='Storage'
storage_id_inherit_access_from_parent_record
Boolean
related='storage_id.inherit_access_from_parent_record'
related_sudo=True
store=True
storage_id_save_type
Selection
prefetch=False
readonly=True
related='storage_id.save_type'
related_sudo=True
store=False
tag_ids
Many2many → dms.tag
column1='did'
column2='tid'
comodel_name='dms.tag'
compute='_compute_tags'
domain="[\n '|', ['category_id', '=', False],\n ['category_id', 'child_of', category_id]]\n "
readonly=False
relation='dms_directory_tag_rel'
store=True
string='Tags'
user_star_ids
Many2many → res.users
column1='did'
column2='uid'
comodel_name='res.users'
relation='dms_directory_star_rel'
string='Stars'
action_dms_directories_all_directory(self)
action_dms_files_all_directory(self)
action_save_onboarding_directory_step(self)
check_access_token(self, access_token=False)
copy_data(self, default=None)
create(self, vals_list)
message_new(self, msg_dict, custom_values=None)
message_update(self, msg_dict, update_vals=None)
search_panel_select_multi_range(self, field_name, **kwargs)
search_panel_select_range(self, field_name, **kwargs)
toggle_starred(self)
unlink(self)
write(self, vals)
active
Boolean
default=True
help='If a file is set to archived, it is not displayed, but still exists.'
string='Archived'
attachment_id
Many2one → ir.attachment
comodel_name='ir.attachment'
index=True
ondelete='cascade'
prefetch=False
string='Attachment File'
checksum
Char
index='btree'
readonly=True
string='Checksum/SHA1'
content
Binary
attachment=False
compute='_compute_content'
inverse='_inverse_content'
prefetch=False
required=True
store=False
content_binary
Binary
attachment=False
prefetch=False
content_file
Binary
attachment=True
prefetch=False
directory_id
Many2one → dms.directory
auto_join=True
comodel_name='dms.directory'
context={'dms_directory_show_path': True}
domain="[('permission_create', '=', True)]"
index='btree'
ondelete='restrict'
required=True
string='Directory'
tracking=True
extension
Char
compute='_compute_extension'
readonly=True
store=True
human_size
Char
compute='_compute_human_size'
readonly=True
store=True
string='Size (human readable)'
image_1920
Image
compute='_compute_image_1920'
readonly=False
store=True
is_lock_editor
Boolean
compute='_compute_locked'
string='Editor'
is_locked
Boolean
compute='_compute_locked'
string='Locked'
locked_by
Many2one → res.users
comodel_name='res.users'
migration
Char
compute='_compute_migration'
compute_sudo=True
prefetch=False
readonly=True
store=True
string='Migration Status'
mimetype
Char
compute='_compute_mimetype'
readonly=True
store=True
string='Type'
path_json
Text
compute='_compute_path'
compute_sudo=True
readonly=True
store=False
path_names
Char
compute='_compute_path'
compute_sudo=True
readonly=True
store=False
require_migration
Boolean
compute='_compute_migration'
compute_sudo=True
store=True
res_id
Integer
related='directory_id.res_id'
string='Linked attachments record ID'
res_model
Char
related='directory_id.res_model'
string='Linked attachments model'
root_directory_id
Many2one
related='directory_id.root_directory_id'
save_type
Char
compute='_compute_save_type'
prefetch=False
string='Current Save Type'
size
Float
readonly=True
storage_id
Many2one
prefetch=False
readonly=True
related='directory_id.storage_id'
tag_ids
Many2many → dms.tag
column1='fid'
column2='tid'
comodel_name='dms.tag'
domain="['|', ('category_id', '=', False),('category_id', '=?', category_id)]"
relation='dms_file_tag_rel'
string='Tags'
action_migrate(self, should_logging=True)
action_save_onboarding_file_step(self)
action_wizard_dms_file_move(self)
check_access(self, operation)
check_access_token(self, access_token=False)
copy_data(self, default=None)
create(self, vals_list)
get_human_size(self)
lock(self)
search_panel_select_multi_range(self, field_name, **kwargs)
search_panel_select_range(self, field_name, **kwargs)
unlink(self)
unlock(self)
icon_url
Char
compute='_compute_icon_url'
string='Icon URL'
No public methods.
permission_create
Boolean
compute='_compute_permissions'
search='_search_permission_create'
string='Create Access'
permission_read
Boolean
compute='_compute_permissions'
search='_search_permission_read'
string='Read Access'
permission_unlink
Boolean
compute='_compute_permissions'
search='_search_permission_unlink'
string='Delete Access'
permission_write
Boolean
compute='_compute_permissions'
search='_search_permission_write'
string='Write Access'
record_ref
Reference
compute='_compute_record_ref'
selection=<expr>
string='Record Referenced'
res_id
Integer
index='btree'
store=True
string='Linked attachments record ID'
res_model
Char
index='btree'
store=True
string='Linked attachments model'
create(self, vals_list)
filtered_domain(self, domain)
unlink(self)
write(self, vals)
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
help='If set, directories and files will only be available for the selected company.'
string='Company'
count_storage_directories
Integer
compute='_compute_count_storage_directories'
string='Count Directories'
count_storage_files
Integer
compute='_compute_count_storage_files'
string='Count Files'
include_message_attachments
Boolean
default=False
help='Indicate if directories and files auto-create in mail composition process too'
string='Create files from message attachments'
inherit_access_from_parent_record
Boolean
default=False
help='Indicate if directories and files access work only with related model access (for example, if some directories are related with any sale, only users with read access to these sale can access)'
string='Inherit permissions from related record'
is_hidden
Boolean
default=False
help='Indicates if directories and files are hidden by default.'
string='Storage is Hidden'
model
Char
search='_search_model'
store=False
model_ids
Many2many → ir.model
string='Linked Models'
args: 'ir.model'
name
Char
required=True
root_directory_ids
One2many → dms.directory
auto_join=False
comodel_name='dms.directory'
copy=False
inverse_name='storage_id'
readonly=False
string='Root Directories'
save_type
Selection
default='database'
help='The save type is used to determine how a file is saved by the system. If you change this setting, you can migrate existing files manually by triggering the action.'
required=True
selection=[('database', 'Database'), ('file', 'Filestore'), ('attachment', 'Attachment')]
storage_directory_ids
One2many → dms.directory
auto_join=False
comodel_name='dms.directory'
copy=False
inverse_name='storage_id'
readonly=True
string='Directories'
storage_file_ids
One2many → dms.file
auto_join=False
comodel_name='dms.file'
copy=False
inverse_name='storage_id'
readonly=True
string='Files'
action_save_onboarding_storage_step(self)
action_storage_migrate(self)
write(self, values)
active
Boolean
default=True
help='The active field allows you to hide the tag without removing it.'
category_id
Many2one → dms.category
comodel_name='dms.category'
context={'dms_category_show_path': True}
ondelete='set null'
string='Category'
color
Integer
default=10
string='Color Index'
count_directories
Integer
compute='_compute_count_directories'
count_files
Integer
compute='_compute_count_files'
directory_ids
Many2many → dms.directory
column1='tid'
column2='did'
comodel_name='dms.directory'
readonly=True
relation='dms_directory_tag_rel'
string='Directories'
file_ids
Many2many → dms.file
column1='tid'
column2='fid'
comodel_name='dms.file'
readonly=True
relation='dms_file_tag_rel'
string='Files'
name
Char
required=True
translate=True
No public methods.
No new fields.
Public methods (3)create(self, vals_list)
unlink(self)
write(self, vals)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)action_close_panel_dms_file(self)
No new fields.
Public methods (3)action_open_documents_onboarding_directory(self)
action_open_documents_onboarding_file(self)
action_open_documents_onboarding_storage(self)
documents_onboarding_directory_state
Selection
default='not_done'
selection=[('not_done', 'Not done'), ('just_done', 'Just done'), ('done', 'Done'), ('closed', 'Closed')]
documents_onboarding_file_state
Selection
default='not_done'
selection=[('not_done', 'Not done'), ('just_done', 'Just done'), ('done', 'Done'), ('closed', 'Closed')]
documents_onboarding_state
Selection
default='not_done'
selection=[('not_done', 'Not done'), ('just_done', 'Just done'), ('done', 'Done'), ('closed', 'Closed')]
documents_onboarding_storage_state
Selection
default='not_done'
selection=[('not_done', 'Not done'), ('just_done', 'Just done'), ('done', 'Done'), ('closed', 'Closed')]
action_close_documents_onboarding(self)
get_and_update_documents_onboarding_state(self)
set_onboarding_step_done(self, step)
documents_binary_max_size
Integer
config_parameter='dms.binary_max_size'
help='Defines the maximum upload size in MB. Default (25MB)'
string='Size'
documents_forbidden_extensions
Char
config_parameter='dms.forbidden_extensions'
help="Defines a list of forbidden file extensions. (Example: 'exe,msi')"
string='Extensions'
No public methods.
count_files
Integer
readonly=True
directory_id
Many2one → dms.directory
comodel_name='dms.directory'
required=True
string='Directory'
default_get(self, fields)
process(self)
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/dms |
| GIT | |
| GIT | https://github.com/OCA/dms.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/dms/tree/17.0/dms |
| VERSION | |
| VERSION | 1.2.5 |
| CATEGORY | |
| CATEGORY | Document Management |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA), MuK IT |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA), MuK IT |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Víctor Martínez, Weblate, OCA-git-bot, oca-ci, Gil Arasa Verge, kaynnan, Timothée VANNIER, Timothée Vannier |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/dms |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:20:03 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web - bus - web_tour - http_routing - onboarding - portal - web_editor - auth_signup |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | DMS is a module for creating, managing and viewing document files directly within Odoo. This module is only the basis for an entire ecosystem of apps that extend and seamlessly integrate with the document management system. This module adds portal functionality for directories and files for allowed users, both portal or internal users. You can get as well a tokenized link from a directory or a file for sharing it with any anonymous user. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
portal_my_dms |
My DMS | ir.ui.view | qweb | New |
portal_my_dms_breadcrumbs |
My DMS: Breadcrumbs | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
portal_my_home_dms |
Portal My Home : dms entries | ir.ui.view | qweb | Inherits portal.portal_my_home |
res_config_settings_view_form |
res.config.settings.view.form.inherit.dms | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
search_dms_directory |
dms_directory.search | dms.directory | search | New |
search_dms_file |
dms_file.search | dms.file | search | New |
search_dms_file_migration |
dms_file.search | dms.file | search | New |
view_dms_access_groups_form |
dms_access.group.form | dms.access.group | form | New |
view_dms_access_groups_tree |
dms_access_groups.tree | dms.access.group | tree | New |
view_dms_category_form |
dms_category.form | dms.category | form | New |
view_dms_category_search |
dms_category.search | dms.category | search | New |
view_dms_category_tree |
dms_category.tree | dms.category | tree | New |
view_dms_directory_form |
dms_directory.form | dms.directory | form | New |
view_dms_directory_kanban |
dms_directory.kanban | dms.directory | kanban | New |
view_dms_directory_new_form |
dms_directory.form | dms.directory | xpath | Inherits view_dms_directory_form |
view_dms_directory_tree |
dms_directory.tree | dms.directory | tree | New |
view_dms_file_form |
dms_file.form | dms.file | form | New |
view_dms_file_graph |
dms_file.graph | dms.file | graph | New |
view_dms_file_kanban |
dms_file.kanban | dms.file | kanban | New |
view_dms_file_kanban_wizard_selection |
dms_file.kanban.wizard.selection | dms.file | kanban | Inherits dms.view_dms_file_kanban |
view_dms_file_migration_tree |
dms_file.tree | dms.file | tree | New |
view_dms_file_new_form |
dms_file.form | dms.file | xpath | Inherits view_dms_file_form |
view_dms_file_pivot |
dms_file.pivot | dms.file | pivot | New |
view_dms_file_tree |
dms_file.tree | dms.file | tree | New |
view_dms_storage_form |
dms_storage.form | dms.storage | form | New |
view_dms_storage_new_form |
dms_storage.form | dms.storage | xpath | Inherits view_dms_storage_form |
view_dms_storage_search |
dms_storage.search | dms.storage | search | New |
view_dms_storage_tree |
dms_storage.tree | dms.storage | tree | New |
view_dms_tag_form |
dms_tag.form | dms.tag | form | New |
view_dms_tag_kanban |
dms_tag.kanban | dms.tag | kanban | New |
view_dms_tag_search |
dms_tag.search | dms.tag | search | New |
view_dms_tag_tree |
dms_tag.tree | dms.tag | tree | New |
wizard_dms_file_move_form_view |
wizard.dms.file.move.form | wizard.dms.file.move | form | New |
wizard_dms_share_form |
wizard.dms.share.form | wizard.dms.share | field | Inherits portal.portal_share_wizard |
category_id
Many2one → dms.category
comodel_name='dms.category'
context={'dms_category_show_path': True}
string='Category'
color
Integer
default=0
company_id
Many2one → res.company
comodel_name='res.company'
index='btree'
readonly=True
related='storage_id.company_id'
store=True
string='Company'
is_hidden
Boolean
readonly=True
related='storage_id.is_hidden'
store=True
string='Storage is Hidden'
name
Char
index='btree'
required=True
storage_id
Many2one → dms.storage
comodel_name='dms.storage'
copy=True
store=True
string='Storage'
storage_id_save_type
Selection
related='storage_id.save_type'
store=False
search_panel_select_range(self, field_name, **kwargs)
No new fields.
Public methods (1)unlink(self)
child_group_ids
One2many → dms.access.group
comodel_name='dms.access.group'
inverse_name='parent_group_id'
string='Child Groups'
complete_directory_ids
Many2many → dms.directory
auto_join=True
column1='gid'
column2='aid'
comodel_name='dms.directory'
readonly=True
relation='dms_directory_complete_groups_rel'
string='Complete directories'
count_directories
Integer
compute='_compute_count_directories'
count_users
Integer
compute='_compute_users'
store=True
directory_ids
Many2many → dms.directory
auto_join=True
column1='gid'
column2='aid'
comodel_name='dms.directory'
readonly=True
relation='dms_directory_groups_rel'
string='Directories'
explicit_user_ids
Many2many → res.users
column1='gid'
column2='uid'
comodel_name='res.users'
relation='dms_access_group_explicit_users_rel'
string='Explicit Users'
group_ids
Many2many → res.groups
column1='gid'
column2='rid'
comodel_name='res.groups'
relation='dms_access_group_groups_rel'
string='Groups'
name
Char
required=True
string='Group Name'
translate=True
parent_group_id
Many2one → dms.access.group
comodel_name='dms.access.group'
index='btree'
ondelete='cascade'
string='Parent Group'
parent_path
Char
index='btree'
unaccent=False
perm_create
Boolean
string='Create Access'
perm_inclusive_create
Boolean
compute='_compute_inclusive_permissions'
recursive=True
store=True
string='Inherited Create Access'
perm_inclusive_unlink
Boolean
compute='_compute_inclusive_permissions'
recursive=True
store=True
string='Inherited Unlink Access'
perm_inclusive_write
Boolean
compute='_compute_inclusive_permissions'
recursive=True
store=True
string='Inherited Write Access'
perm_unlink
Boolean
string='Unlink Access'
perm_write
Boolean
string='Write Access'
users
Many2many → res.users
auto_join=True
column1='gid'
column2='uid'
comodel_name='res.users'
compute='_compute_users'
recursive=True
relation='dms_access_group_users_rel'
store=True
string='Group Users'
copy(self, default=None)
default_get(self, fields_list)
active
Boolean
default=True
help='The active field allows you to hide the category without removing it.'
child_category_ids
One2many → dms.category
comodel_name='dms.category'
inverse_name='parent_id'
string='Child Categories'
complete_name
Char
compute='_compute_complete_name'
recursive=True
store=True
count_categories
Integer
compute='_compute_count_categories'
string='Count Subcategories'
count_directories
Integer
compute='_compute_count_directories'
count_files
Integer
compute='_compute_count_files'
count_tags
Integer
compute='_compute_count_tags'
directory_ids
One2many → dms.directory
comodel_name='dms.directory'
inverse_name='category_id'
readonly=True
string='Directories'
file_ids
One2many → dms.file
comodel_name='dms.file'
inverse_name='category_id'
readonly=True
string='Files'
name
Char
required=True
translate=True
parent_id
Many2one → dms.category
comodel_name='dms.category'
index='btree'
ondelete='cascade'
string='Parent Category'
parent_path
Char
index='btree'
unaccent=False
tag_ids
One2many → dms.tag
comodel_name='dms.tag'
inverse_name='category_id'
string='Tags'
No public methods.
alias_process
Selection
default='directory'
help=' Define how incoming emails are processed:\n\n - Single Files: The email gets attached to the directory and\n all attachments are created as files.\n\n - Subdirectory: A new subdirectory is created for each email\n and the mail is attached to this subdirectory. The attachments\n are created as files of the subdirectory.\n '
required=True
selection=[('files', 'Single Files'), ('directory', 'Subdirectory')]
string='Unpack Emails as'
allowed_model_ids
Many2many → ir.model
comodel_name='ir.model'
related='storage_id.model_ids'
child_directory_ids
One2many → dms.directory
auto_join=False
comodel_name='dms.directory'
copy=True
inverse_name='parent_id'
string='Subdirectories'
complete_group_ids
Many2many → dms.access.group
column1='aid'
column2='gid'
comodel_name='dms.access.group'
compute='_compute_groups'
compute_sudo=True
readonly=True
recursive=True
relation='dms_directory_complete_groups_rel'
store=True
string='Complete Groups'
complete_name
Char
compute='_compute_complete_name'
recursive=True
store=True
count_directories
Integer
compute='_compute_count_directories'
string='Count Subdirectories Title'
count_directories_title
Char
compute='_compute_count_directories'
string='Count Subdirectories'
count_elements
Integer
compute='_compute_count_elements'
count_files
Integer
compute='_compute_count_files'
string='Count Files Title'
count_files_title
Char
compute='_compute_count_files'
string='Count Files'
count_total_directories
Integer
compute='_compute_count_total_directories'
string='Total Subdirectories'
count_total_elements
Integer
compute='_compute_count_total_elements'
string='Total Elements'
count_total_files
Integer
compute='_compute_count_total_files'
string='Total Files'
file_ids
One2many → dms.file
auto_join=False
comodel_name='dms.file'
copy=True
inverse_name='directory_id'
string='Files'
group_ids
Many2many → dms.access.group
column1='aid'
column2='gid'
comodel_name='dms.access.group'
relation='dms_directory_groups_rel'
string='Groups'
human_size
Char
compute='_compute_human_size'
string='Size (human readable)'
inherit_group_ids
Boolean
default=True
string='Inherit Groups'
is_root_directory
Boolean
default=False
help='Indicates if the directory is a root directory.\n A root directory has a settings object, while a directory with a set\n parent inherits the settings form its parent.'
model_id
Many2one → ir.model
comodel_name='ir.model'
compute='_compute_model_id'
domain="[('id', 'in', allowed_model_ids)]"
inverse='_inverse_model_id'
store=True
string='Model'
parent_id
Many2one → dms.directory
comodel_name='dms.directory'
compute='_compute_parent_id'
copy=True
default=<expr>
domain="[('permission_create', '=', True)]"
index='btree'
ondelete='restrict'
prefetch=False
readonly=False
store=True
string='Parent Directory'
parent_path
Char
index='btree'
unaccent=False
root_directory_id
Many2one → dms.directory
compute='_compute_root_id'
store=True
args: 'dms.directory', 'Root Directory'
size
Float
compute='_compute_size'
starred
Boolean
compute='_compute_starred'
inverse='_inverse_starred'
search='_search_starred'
storage_id
Many2one → dms.storage
auto_join=True
comodel_name='dms.storage'
compute='_compute_storage_id'
compute_sudo=True
ondelete='restrict'
readonly=False
store=True
string='Storage'
storage_id_inherit_access_from_parent_record
Boolean
related='storage_id.inherit_access_from_parent_record'
related_sudo=True
store=True
storage_id_save_type
Selection
prefetch=False
readonly=True
related='storage_id.save_type'
related_sudo=True
store=False
tag_ids
Many2many → dms.tag
column1='did'
column2='tid'
comodel_name='dms.tag'
compute='_compute_tags'
domain="[\n '|', ['category_id', '=', False],\n ['category_id', 'child_of', category_id]]\n "
readonly=False
relation='dms_directory_tag_rel'
store=True
string='Tags'
user_star_ids
Many2many → res.users
column1='did'
column2='uid'
comodel_name='res.users'
relation='dms_directory_star_rel'
string='Stars'
action_dms_directories_all_directory(self)
action_dms_files_all_directory(self)
action_save_onboarding_directory_step(self)
check_access_token(self, access_token=False)
copy(self, default=None)
create(self, vals_list)
message_new(self, msg_dict, custom_values=None)
message_update(self, msg_dict, update_vals=None)
search_panel_select_multi_range(self, field_name, **kwargs)
search_panel_select_range(self, field_name, **kwargs)
toggle_starred(self)
unlink(self)
write(self, vals)
active
Boolean
default=True
help='If a file is set to archived, it is not displayed, but still exists.'
string='Archived'
attachment_id
Many2one → ir.attachment
comodel_name='ir.attachment'
index=True
ondelete='cascade'
prefetch=False
string='Attachment File'
checksum
Char
index='btree'
readonly=True
string='Checksum/SHA1'
content
Binary
attachment=False
compute='_compute_content'
inverse='_inverse_content'
prefetch=False
required=True
store=False
content_binary
Binary
attachment=False
prefetch=False
content_file
Binary
attachment=True
prefetch=False
directory_id
Many2one → dms.directory
auto_join=True
comodel_name='dms.directory'
context={'dms_directory_show_path': True}
domain="[('permission_create', '=', True)]"
index='btree'
ondelete='restrict'
required=True
string='Directory'
tracking=True
extension
Char
compute='_compute_extension'
readonly=True
store=True
human_size
Char
compute='_compute_human_size'
readonly=True
store=True
string='Size (human readable)'
image_1920
Image
compute='_compute_image_1920'
readonly=False
store=True
is_lock_editor
Boolean
compute='_compute_locked'
string='Editor'
is_locked
Boolean
compute='_compute_locked'
string='Locked'
locked_by
Many2one → res.users
comodel_name='res.users'
migration
Char
compute='_compute_migration'
compute_sudo=True
prefetch=False
readonly=True
store=True
string='Migration Status'
mimetype
Char
compute='_compute_mimetype'
readonly=True
store=True
string='Type'
path_json
Text
compute='_compute_path'
compute_sudo=True
readonly=True
store=False
path_names
Char
compute='_compute_path'
compute_sudo=True
readonly=True
store=False
require_migration
Boolean
compute='_compute_migration'
compute_sudo=True
store=True
res_id
Integer
related='directory_id.res_id'
string='Linked attachments record ID'
res_model
Char
related='directory_id.res_model'
string='Linked attachments model'
root_directory_id
Many2one
related='directory_id.root_directory_id'
save_type
Char
compute='_compute_save_type'
prefetch=False
string='Current Save Type'
size
Float
readonly=True
storage_id
Many2one
prefetch=False
readonly=True
related='directory_id.storage_id'
tag_ids
Many2many → dms.tag
column1='fid'
column2='tid'
comodel_name='dms.tag'
domain="['|', ('category_id', '=', False),('category_id', '=?', category_id)]"
relation='dms_file_tag_rel'
string='Tags'
action_migrate(self, should_logging=True)
action_save_onboarding_file_step(self)
action_wizard_dms_file_move(self)
check_access_rule(self, operation)
check_access_token(self, access_token=False)
copy(self, default=None)
create(self, vals_list)
get_attachment_object(self, attachment)
get_dms_files_from_attachments(self, attachment_ids=None)
get_human_size(self)
lock(self)
search_panel_select_multi_range(self, field_name, **kwargs)
search_panel_select_range(self, field_name, **kwargs)
unlink(self)
unlock(self)
icon_url
Char
compute='_compute_icon_url'
string='Icon URL'
No public methods.
permission_create
Boolean
compute='_compute_permissions'
search='_search_permission_create'
string='Create Access'
permission_read
Boolean
compute='_compute_permissions'
search='_search_permission_read'
string='Read Access'
permission_unlink
Boolean
compute='_compute_permissions'
search='_search_permission_unlink'
string='Delete Access'
permission_write
Boolean
compute='_compute_permissions'
search='_search_permission_write'
string='Write Access'
record_ref
Reference
compute='_compute_record_ref'
selection=<expr>
string='Record Referenced'
res_id
Integer
index='btree'
store=True
string='Linked attachments record ID'
res_model
Char
index='btree'
store=True
string='Linked attachments model'
create(self, vals_list)
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
help='If set, directories and files will only be available for the selected company.'
string='Company'
count_storage_directories
Integer
compute='_compute_count_storage_directories'
string='Count Directories'
count_storage_files
Integer
compute='_compute_count_storage_files'
string='Count Files'
include_message_attachments
Boolean
default=False
help='Indicate if directories and files auto-create in mail composition process too'
string='Create files from message attachments'
inherit_access_from_parent_record
Boolean
default=False
help='Indicate if directories and files access work only with related model access (for example, if some directories are related with any sale, only users with read access to these sale can access)'
string='Inherit permissions from related record'
is_hidden
Boolean
default=False
help='Indicates if directories and files are hidden by default.'
string='Storage is Hidden'
model
Char
search='_search_model'
store=False
model_ids
Many2many → ir.model
string='Linked Models'
args: 'ir.model'
name
Char
required=True
root_directory_ids
One2many → dms.directory
auto_join=False
comodel_name='dms.directory'
copy=False
inverse_name='storage_id'
readonly=False
string='Root Directories'
save_type
Selection
default='database'
help='The save type is used to determine how a file is saved by the system. If you change this setting, you can migrate existing files manually by triggering the action.'
required=True
selection=[('database', _('Database')), ('file', _('Filestore')), ('attachment', _('Attachment'))]
storage_directory_ids
One2many → dms.directory
auto_join=False
comodel_name='dms.directory'
copy=False
inverse_name='storage_id'
readonly=True
string='Directories'
storage_file_ids
One2many → dms.file
auto_join=False
comodel_name='dms.file'
copy=False
inverse_name='storage_id'
readonly=True
string='Files'
action_save_onboarding_storage_step(self)
action_storage_migrate(self)
write(self, values)
active
Boolean
default=True
help='The active field allows you to hide the tag without removing it.'
category_id
Many2one → dms.category
comodel_name='dms.category'
context={'dms_category_show_path': True}
ondelete='set null'
string='Category'
color
Integer
default=10
string='Color Index'
count_directories
Integer
compute='_compute_count_directories'
count_files
Integer
compute='_compute_count_files'
directory_ids
Many2many → dms.directory
column1='tid'
column2='did'
comodel_name='dms.directory'
readonly=True
relation='dms_directory_tag_rel'
string='Directories'
file_ids
Many2many → dms.file
column1='tid'
column2='fid'
comodel_name='dms.file'
readonly=True
relation='dms_file_tag_rel'
string='Files'
name
Char
required=True
translate=True
No public methods.
No new fields.
Public methods (3)create(self, vals_list)
unlink(self)
write(self, vals)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)action_close_panel_dms_file(self)
No new fields.
Public methods (3)action_open_documents_onboarding_directory(self)
action_open_documents_onboarding_file(self)
action_open_documents_onboarding_storage(self)
documents_onboarding_directory_state
Selection
default='not_done'
selection=[('not_done', 'Not done'), ('just_done', 'Just done'), ('done', 'Done'), ('closed', 'Closed')]
documents_onboarding_file_state
Selection
default='not_done'
selection=[('not_done', 'Not done'), ('just_done', 'Just done'), ('done', 'Done'), ('closed', 'Closed')]
documents_onboarding_state
Selection
default='not_done'
selection=[('not_done', 'Not done'), ('just_done', 'Just done'), ('done', 'Done'), ('closed', 'Closed')]
documents_onboarding_storage_state
Selection
default='not_done'
selection=[('not_done', 'Not done'), ('just_done', 'Just done'), ('done', 'Done'), ('closed', 'Closed')]
action_close_documents_onboarding(self)
get_and_update_documents_onboarding_state(self)
set_onboarding_step_done(self, step)
documents_binary_max_size
Integer
config_parameter='dms.binary_max_size'
help='Defines the maximum upload size in MB. Default (25MB)'
string='Size'
documents_forbidden_extensions
Char
config_parameter='dms.forbidden_extensions'
help="Defines a list of forbidden file extensions. (Example: 'exe,msi')"
string='Extensions'
No public methods.
count_files
Integer
readonly=True
directory_id
Many2one → dms.directory
comodel_name='dms.directory'
required=True
string='Directory'
default_get(self, fields)
process(self)
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/dms |
| GIT | |
| GIT | https://github.com/OCA/dms.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/dms/tree/16.0/dms |
| VERSION | |
| VERSION | 1.8.6 |
| CATEGORY | |
| CATEGORY | Document Management |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA), MuK IT |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA), MuK IT |
| COMMITTERS | |
| COMMITTERS | Daniel Reis, Víctor Martínez, Weblate, OCA-git-bot, oca-ci, Carlos Roca, Gil Arasa Verge, PicchiSeba, Adasat Torres de León, Lijo Antony, KB, Adasat torres de León |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/dms |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:53:42 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web - bus - web_tour - http_routing - portal - web_editor - auth_signup |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
dms_assets | ir.ui.view | qweb | Inherits web.assets_backend |
document_onboarding_directory_panel |
document_onboarding_panel | ir.ui.view | qweb | New |
document_onboarding_file_panel |
document_onboarding_panel | ir.ui.view | qweb | New |
onboarding_directory_step |
onboarding_directory_step | ir.ui.view | qweb | New |
onboarding_file_step |
onboarding_file_step | ir.ui.view | qweb | New |
onboarding_storage_step |
onboarding_storage_step | ir.ui.view | qweb | New |
portal_my_dms |
My DMS | ir.ui.view | qweb | New |
portal_my_dms_breadcrumbs |
My DMS: Breadcrumbs | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
portal_my_home_dms |
Portal My Home : dms entries | ir.ui.view | qweb | Inherits portal.portal_my_home |
res_config_settings_view_form |
res.config.settings.view.form.inherit.dms | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
search_dms_directory |
dms_directory.search | dms.directory | search | New |
search_dms_file |
dms_file.search | dms.file | search | New |
search_dms_file_migration |
dms_file.search | dms.file | search | New |
view_dms_access_groups_form |
dms_access.group.form | dms.access.group | form | New |
view_dms_access_groups_tree |
dms_access_groups.tree | dms.access.group | tree | New |
view_dms_category_form |
dms_category.form | dms.category | form | New |
view_dms_category_search |
dms_category.search | dms.category | search | New |
view_dms_category_tree |
dms_category.tree | dms.category | tree | New |
view_dms_directory_form |
dms_directory.form | dms.directory | form | New |
view_dms_directory_kanban |
dms_directory.kanban | dms.directory | kanban | New |
view_dms_directory_new_form |
dms_directory.form | dms.directory | xpath | Inherits view_dms_directory_form |
view_dms_directory_tree |
dms_directory.tree | dms.directory | tree | New |
view_dms_file_form |
dms_file.form | dms.file | form | New |
view_dms_file_graph |
dms_file.graph | dms.file | graph | New |
view_dms_file_kanban |
dms_file.kanban | dms.file | kanban | New |
view_dms_file_kanban_wizard_selection |
dms_file.kanban.wizard.selection | dms.file | kanban | Inherits dms.view_dms_file_kanban |
view_dms_file_migration_tree |
dms_file.tree | dms.file | tree | New |
view_dms_file_new_form |
dms_file.form | dms.file | xpath | Inherits view_dms_file_form |
view_dms_file_pivot |
dms_file.pivot | dms.file | pivot | New |
view_dms_file_tree |
dms_file.tree | dms.file | tree | New |
view_dms_storage_form |
dms_storage.form | dms.storage | form | New |
view_dms_storage_new_form |
dms_storage.form | dms.storage | xpath | Inherits view_dms_storage_form |
view_dms_storage_search |
dms_storage.search | dms.storage | search | New |
view_dms_storage_tree |
dms_storage.tree | dms.storage | tree | New |
view_dms_tag_form |
dms_tag.form | dms.tag | form | New |
view_dms_tag_kanban |
dms_tag.kanban | dms.tag | kanban | New |
view_dms_tag_search |
dms_tag.search | dms.tag | search | New |
view_dms_tag_tree |
dms_tag.tree | dms.tag | tree | New |
wizard_dms_file_move_form_view |
wizard.dms.file.move.form | wizard.dms.file.move | form | New |
wizard_dms_share_form |
wizard.dms.share.form | wizard.dms.share | field | Inherits portal.portal_share_wizard |
category_id
Many2one → dms.category
comodel_name='dms.category'
context="{'dms_category_show_path': True}"
string='Category'
color
Integer
default=0
company_id
Many2one → res.company
comodel_name='res.company'
index='btree'
readonly=True
related='storage_id.company_id'
store=True
string='Company'
is_hidden
Boolean
readonly=True
related='storage_id.is_hidden'
store=True
string='Storage is Hidden'
name
Char
index='btree'
required=True
storage_id
Many2one → dms.storage
comodel_name='dms.storage'
copy=True
store=True
string='Storage'
storage_id_save_type
Selection
related='storage_id.save_type'
store=False
search_panel_select_range(self, field_name, **kwargs)
No new fields.
Public methods (1)unlink(self)
child_group_ids
One2many → dms.access.group
comodel_name='dms.access.group'
inverse_name='parent_group_id'
string='Child Groups'
complete_directory_ids
Many2many → dms.directory
auto_join=True
column1='gid'
column2='aid'
comodel_name='dms.directory'
readonly=True
relation='dms_directory_complete_groups_rel'
string='Complete directories'
count_directories
Integer
compute='_compute_count_directories'
count_users
Integer
compute='_compute_users'
store=True
directory_ids
Many2many → dms.directory
auto_join=True
column1='gid'
column2='aid'
comodel_name='dms.directory'
readonly=True
relation='dms_directory_groups_rel'
string='Directories'
explicit_user_ids
Many2many → res.users
column1='gid'
column2='uid'
comodel_name='res.users'
relation='dms_access_group_explicit_users_rel'
string='Explicit Users'
group_ids
Many2many → res.groups
column1='gid'
column2='rid'
comodel_name='res.groups'
relation='dms_access_group_groups_rel'
string='Groups'
name
Char
required=True
string='Group Name'
translate=True
parent_group_id
Many2one → dms.access.group
comodel_name='dms.access.group'
index='btree'
ondelete='cascade'
string='Parent Group'
parent_path
Char
index='btree'
unaccent=False
perm_create
Boolean
string='Create Access'
perm_inclusive_create
Boolean
compute='_compute_inclusive_permissions'
recursive=True
store=True
string='Inherited Create Access'
perm_inclusive_unlink
Boolean
compute='_compute_inclusive_permissions'
recursive=True
store=True
string='Inherited Unlink Access'
perm_inclusive_write
Boolean
compute='_compute_inclusive_permissions'
recursive=True
store=True
string='Inherited Write Access'
perm_unlink
Boolean
string='Unlink Access'
perm_write
Boolean
string='Write Access'
users
Many2many → res.users
auto_join=True
column1='gid'
column2='uid'
comodel_name='res.users'
compute='_compute_users'
recursive=True
relation='dms_access_group_users_rel'
store=True
string='Group Users'
default_get(self, fields_list)
active
Boolean
default=True
help='The active field allows you to hide the category without removing it.'
child_category_ids
One2many → dms.category
comodel_name='dms.category'
inverse_name='parent_id'
string='Child Categories'
complete_name
Char
compute='_compute_complete_name'
recursive=True
store=True
count_categories
Integer
compute='_compute_count_categories'
string='Count Subcategories'
count_directories
Integer
compute='_compute_count_directories'
count_files
Integer
compute='_compute_count_files'
count_tags
Integer
compute='_compute_count_tags'
directory_ids
One2many → dms.directory
comodel_name='dms.directory'
inverse_name='category_id'
readonly=True
string='Directories'
file_ids
One2many → dms.file
comodel_name='dms.file'
inverse_name='category_id'
readonly=True
string='Files'
name
Char
required=True
translate=True
parent_id
Many2one → dms.category
comodel_name='dms.category'
index='btree'
ondelete='cascade'
string='Parent Category'
parent_path
Char
index='btree'
unaccent=False
tag_ids
One2many → dms.tag
comodel_name='dms.tag'
inverse_name='category_id'
string='Tags'
name_get(self)
alias_process
Selection
default='directory'
help=' Define how incoming emails are processed:\n\n - Single Files: The email gets attached to the directory and\n all attachments are created as files.\n\n - Subdirectory: A new subdirectory is created for each email\n and the mail is attached to this subdirectory. The attachments\n are created as files of the subdirectory.\n '
required=True
selection=[('files', 'Single Files'), ('directory', 'Subdirectory')]
string='Unpack Emails as'
allowed_model_ids
Many2many → ir.model
comodel_name='ir.model'
related='storage_id.model_ids'
child_directory_ids
One2many → dms.directory
auto_join=False
comodel_name='dms.directory'
copy=False
inverse_name='parent_id'
string='Subdirectories'
complete_group_ids
Many2many → dms.access.group
column1='aid'
column2='gid'
comodel_name='dms.access.group'
compute='_compute_groups'
compute_sudo=True
readonly=True
recursive=True
relation='dms_directory_complete_groups_rel'
store=True
string='Complete Groups'
complete_name
Char
compute='_compute_complete_name'
recursive=True
store=True
count_directories
Integer
compute='_compute_count_directories'
string='Count Subdirectories Title'
count_directories_title
Char
compute='_compute_count_directories'
string='Count Subdirectories'
count_elements
Integer
compute='_compute_count_elements'
count_files
Integer
compute='_compute_count_files'
string='Count Files Title'
count_files_title
Char
compute='_compute_count_files'
string='Count Files'
count_total_directories
Integer
compute='_compute_count_total_directories'
string='Total Subdirectories'
count_total_elements
Integer
compute='_compute_count_total_elements'
string='Total Elements'
count_total_files
Integer
compute='_compute_count_total_files'
string='Total Files'
file_ids
One2many → dms.file
auto_join=False
comodel_name='dms.file'
copy=False
inverse_name='directory_id'
string='Files'
group_ids
Many2many → dms.access.group
column1='aid'
column2='gid'
comodel_name='dms.access.group'
relation='dms_directory_groups_rel'
string='Groups'
human_size
Char
compute='_compute_human_size'
string='Size (human readable)'
inherit_group_ids
Boolean
default=True
string='Inherit Groups'
is_root_directory
Boolean
default=False
help='Indicates if the directory is a root directory.\n A root directory has a settings object, while a directory with a set\n parent inherits the settings form its parent.'
model_id
Many2one → ir.model
comodel_name='ir.model'
compute='_compute_model_id'
domain="[('id', 'in', allowed_model_ids)]"
inverse='_inverse_model_id'
store=True
string='Model'
parent_id
Many2one → dms.directory
comodel_name='dms.directory'
compute='_compute_parent_id'
copy=True
default=<expr>
domain="[('permission_create', '=', True)]"
index='btree'
ondelete='restrict'
prefetch=False
readonly=False
store=True
string='Parent Directory'
parent_path
Char
index='btree'
unaccent=False
root_directory_id
Many2one → dms.directory
compute='_compute_root_id'
store=True
args: 'dms.directory', 'Root Directory'
size
Float
compute='_compute_size'
starred
Boolean
compute='_compute_starred'
inverse='_inverse_starred'
search='_search_starred'
storage_id
Many2one → dms.storage
auto_join=True
comodel_name='dms.storage'
compute='_compute_storage_id'
compute_sudo=True
ondelete='restrict'
readonly=False
store=True
string='Storage'
storage_id_inherit_access_from_parent_record
Boolean
related='storage_id.inherit_access_from_parent_record'
related_sudo=True
store=True
storage_id_save_type
Selection
prefetch=False
readonly=True
related='storage_id.save_type'
related_sudo=True
store=False
tag_ids
Many2many → dms.tag
column1='did'
column2='tid'
comodel_name='dms.tag'
compute='_compute_tags'
domain="[\n '|', ['category_id', '=', False],\n ['category_id', 'child_of', category_id]]\n "
readonly=False
relation='dms_directory_tag_rel'
store=True
string='Tags'
user_star_ids
Many2many → res.users
column1='did'
column2='uid'
comodel_name='res.users'
relation='dms_directory_star_rel'
string='Stars'
action_dms_directories_all_directory(self)
action_dms_files_all_directory(self)
action_save_onboarding_directory_step(self)
check_access_token(self, access_token=False)
copy(self, default=None)
create(self, vals_list)
message_new(self, msg_dict, custom_values=None)
message_update(self, msg_dict, update_vals=None)
name_get(self)
search_panel_select_multi_range(self, field_name, **kwargs)
search_panel_select_range(self, field_name, **kwargs)
toggle_starred(self)
unlink(self)
write(self, vals)
active
Boolean
default=True
help='If a file is set to archived, it is not displayed, but still exists.'
string='Archived'
attachment_id
Many2one → ir.attachment
comodel_name='ir.attachment'
index=True
invisible=True
ondelete='cascade'
prefetch=False
string='Attachment File'
checksum
Char
index='btree'
readonly=True
string='Checksum/SHA1'
content
Binary
attachment=False
compute='_compute_content'
inverse='_inverse_content'
prefetch=False
required=True
store=False
content_binary
Binary
attachment=False
invisible=True
prefetch=False
content_file
Binary
attachment=True
invisible=True
prefetch=False
directory_id
Many2one → dms.directory
auto_join=True
comodel_name='dms.directory'
context="{'dms_directory_show_path': True}"
domain="[('permission_create', '=', True)]"
index='btree'
ondelete='restrict'
required=True
string='Directory'
tracking=True
extension
Char
compute='_compute_extension'
readonly=True
store=True
human_size
Char
compute='_compute_human_size'
readonly=True
store=True
string='Size (human readable)'
image_1920
Image
compute='_compute_image_1920'
readonly=False
store=True
is_lock_editor
Boolean
compute='_compute_locked'
string='Editor'
is_locked
Boolean
compute='_compute_locked'
string='Locked'
locked_by
Many2one → res.users
comodel_name='res.users'
migration
Char
compute='_compute_migration'
compute_sudo=True
prefetch=False
readonly=True
string='Migration Status'
mimetype
Char
compute='_compute_mimetype'
readonly=True
store=True
string='Type'
path_json
Text
compute='_compute_path'
compute_sudo=True
readonly=True
store=False
path_names
Char
compute='_compute_path'
compute_sudo=True
readonly=True
store=False
require_migration
Boolean
compute='_compute_migration'
compute_sudo=True
store=True
res_id
Integer
related='directory_id.res_id'
string='Linked attachments record ID'
res_model
Char
related='directory_id.res_model'
string='Linked attachments model'
root_directory_id
Many2one
related='directory_id.root_directory_id'
save_type
Char
compute='_compute_save_type'
invisible=True
prefetch=False
string='Current Save Type'
size
Float
readonly=True
storage_id
Many2one
prefetch=False
readonly=True
related='directory_id.storage_id'
store=True
tag_ids
Many2many → dms.tag
column1='fid'
column2='tid'
comodel_name='dms.tag'
domain="['|', ('category_id', '=', False),('category_id', '=?', category_id)]"
relation='dms_file_tag_rel'
string='Tags'
action_migrate(self, logging=True)
action_save_onboarding_file_step(self)
action_wizard_dms_file_move(self)
check_access_rule(self, operation)
check_access_token(self, access_token=False)
copy(self, default=None)
create(self, vals_list)
get_attachment_object(self, attachment)
get_dms_files_from_attachments(self, attachment_ids=None)
get_human_size(self)
lock(self)
search_panel_select_multi_range(self, field_name, **kwargs)
search_panel_select_range(self, field_name, **kwargs)
unlink(self)
unlock(self)
icon_url
Char
compute='_compute_icon_url'
string='Icon URL'
No public methods.
permission_create
Boolean
compute='_compute_permissions'
search='_search_permission_create'
string='Create Access'
permission_read
Boolean
compute='_compute_permissions'
search='_search_permission_read'
string='Read Access'
permission_unlink
Boolean
compute='_compute_permissions'
search='_search_permission_unlink'
string='Delete Access'
permission_write
Boolean
compute='_compute_permissions'
search='_search_permission_write'
string='Write Access'
record_ref
Reference
compute='_compute_record_ref'
selection=<expr>
string='Record Referenced'
res_id
Integer
index='btree'
store=True
string='Linked attachments record ID'
res_model
Char
index='btree'
store=True
string='Linked attachments model'
create(self, vals_list)
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
help='If set, directories and files will only be available for the selected company.'
string='Company'
count_storage_directories
Integer
compute='_compute_count_storage_directories'
string='Count Directories'
count_storage_files
Integer
compute='_compute_count_storage_files'
string='Count Files'
include_message_attachments
Boolean
default=False
help='Indicate if directories and files auto-create in mail composition process too'
string='Create files from message attachments'
inherit_access_from_parent_record
Boolean
default=False
help='Indicate if directories and files access work only with related model access (for example, if some directories are related with any sale, only users with read access to these sale can acess)'
string='Inherit permissions from related record'
is_hidden
Boolean
default=False
help='Indicates if directories and files are hidden by default.'
string='Storage is Hidden'
model
Char
search='_search_model'
store=False
model_ids
Many2many → ir.model
string='Linked Models'
args: 'ir.model'
name
Char
required=True
root_directory_ids
One2many → dms.directory
auto_join=False
comodel_name='dms.directory'
copy=False
inverse_name='storage_id'
readonly=False
string='Root Directories'
save_type
Selection
default='database'
help='The save type is used to determine how a file is saved by the\n system. If you change this setting, you can migrate existing files\n manually by triggering the action.'
required=True
selection=[('database', _('Database')), ('file', _('Filestore')), ('attachment', _('Attachment'))]
storage_directory_ids
One2many → dms.directory
auto_join=False
comodel_name='dms.directory'
copy=False
inverse_name='storage_id'
readonly=True
string='Directories'
storage_file_ids
One2many → dms.file
auto_join=False
comodel_name='dms.file'
copy=False
inverse_name='storage_id'
readonly=True
string='Files'
action_save_onboarding_storage_step(self)
action_storage_migrate(self)
write(self, values)
active
Boolean
default=True
help='The active field allows you to hide the tag without removing it.'
category_id
Many2one → dms.category
comodel_name='dms.category'
context="{'dms_category_show_path': True}"
ondelete='set null'
string='Category'
color
Integer
default=10
string='Color Index'
count_directories
Integer
compute='_compute_count_directories'
count_files
Integer
compute='_compute_count_files'
directory_ids
Many2many → dms.directory
column1='tid'
column2='did'
comodel_name='dms.directory'
readonly=True
relation='dms_directory_tag_rel'
string='Directories'
file_ids
Many2many → dms.file
column1='tid'
column2='fid'
comodel_name='dms.file'
readonly=True
relation='dms_file_tag_rel'
string='Files'
name
Char
required=True
translate=True
No public methods.
No new fields.
Public methods (3)create(self, vals_list)
unlink(self)
write(self, vals)
No new fields.
Public methods (0)No public methods.
documents_onboarding_directory_state
Selection
default='not_done'
selection=[('not_done', 'Not done'), ('just_done', 'Just done'), ('done', 'Done'), ('closed', 'Closed')]
documents_onboarding_file_state
Selection
default='not_done'
selection=[('not_done', 'Not done'), ('just_done', 'Just done'), ('done', 'Done'), ('closed', 'Closed')]
documents_onboarding_state
Selection
default='not_done'
selection=[('not_done', 'Not done'), ('just_done', 'Just done'), ('done', 'Done'), ('closed', 'Closed')]
documents_onboarding_storage_state
Selection
default='not_done'
selection=[('not_done', 'Not done'), ('just_done', 'Just done'), ('done', 'Done'), ('closed', 'Closed')]
action_close_documents_onboarding(self)
action_open_documents_onboarding_directory(self)
action_open_documents_onboarding_file(self)
action_open_documents_onboarding_storage(self)
get_and_update_documents_onboarding_state(self)
get_documents_steps_states_names(self)
documents_binary_max_size
Integer
config_parameter='dms.binary_max_size'
help='Defines the maximum upload size in MB. Default (25MB)'
string='Size'
documents_forbidden_extensions
Char
config_parameter='dms.forbidden_extensions'
help="Defines a list of forbidden file extensions. (Example: 'exe,msi')"
string='Extensions'
No public methods.
count_files
Integer
readonly=True
directory_id
Many2one → dms.directory
comodel_name='dms.directory'
required=True
string='Directory'
default_get(self, fields)
process(self)
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/dms |
| GIT | |
| GIT | https://github.com/OCA/dms.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/dms/tree/15.0/dms |
| VERSION | |
| VERSION | 1.14.1 |
| CATEGORY | |
| CATEGORY | Document Management |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA), MuK IT |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA), MuK IT |
| COMMITTERS | |
| COMMITTERS | Giedrius Slavinskas, Enric Tobella, OCA Transbot, Víctor Martínez, Weblate, OCA-git-bot, oca-ci, Marcel Savegnago, Alessandro Uffreduzzi, Jasmin Solanki, PicchiSeba |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/dms |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:46:31 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/social: - mail_preview_base OCA/web: - web_drop_target odoo/odoo: - web - base - base_setup - bus - web_tour - http_routing - portal - web_editor - auth_signup |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
dms_assets | ir.ui.view | qweb | Inherits web.assets_backend |
document_onboarding_directory_panel |
document_onboarding_panel | ir.ui.view | qweb | New |
document_onboarding_file_panel |
document_onboarding_panel | ir.ui.view | qweb | New |
onboarding_directory_step |
onboarding_directory_step | ir.ui.view | qweb | New |
onboarding_file_step |
onboarding_file_step | ir.ui.view | qweb | New |
onboarding_storage_step |
onboarding_storage_step | ir.ui.view | qweb | New |
portal_my_dms |
My DMS | ir.ui.view | qweb | New |
portal_my_dms_breadcrumbs |
My DMS: Breadcrumbs | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
portal_my_home_dms |
Portal My Home : dms entries | ir.ui.view | qweb | Inherits portal.portal_my_home |
res_config_settings_view_form |
res.config.settings.view.form.inherit.dms | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
search_dms_directory |
dms_directory.search | dms.directory | search | New |
search_dms_file |
dms_file.search | dms.file | search | New |
search_dms_file_migration |
dms_file.search | dms.file | search | New |
view_dms_access_groups_form |
dms_access.group.form | dms.access.group | form | New |
view_dms_access_groups_tree |
dms_access_groups.tree | dms.access.group | tree | New |
view_dms_category_form |
dms_category.form | dms.category | form | New |
view_dms_category_search |
dms_category.search | dms.category | search | New |
view_dms_category_tree |
dms_category.tree | dms.category | tree | New |
view_dms_directory_form |
dms_directory.form | dms.directory | form | New |
view_dms_directory_kanban |
dms_directory.kanban | dms.directory | kanban | New |
view_dms_directory_manager_form |
dms_directory.form | dms.directory | field | Inherits view_dms_directory_form |
view_dms_directory_new_form |
dms_directory.form | dms.directory | xpath | Inherits view_dms_directory_form |
view_dms_directory_tree |
dms_directory.tree | dms.directory | tree | New |
view_dms_file_form |
dms_file.form | dms.file | form | New |
view_dms_file_graph |
dms_file.graph | dms.file | graph | New |
view_dms_file_kanban |
dms_file.kanban | dms.file | kanban | New |
view_dms_file_kanban_wizard_selection |
dms_file.kanban.wizard.selection | dms.file | kanban | Inherits dms.view_dms_file_kanban |
view_dms_file_manager_form |
dms_file.form | dms.file | field | Inherits view_dms_file_form |
view_dms_file_migration_tree |
dms_file.tree | dms.file | tree | New |
view_dms_file_new_form |
dms_file.form | dms.file | xpath | Inherits view_dms_file_form |
view_dms_file_pivot |
dms_file.pivot | dms.file | pivot | New |
view_dms_file_tree |
dms_file.tree | dms.file | tree | New |
view_dms_storage_form |
dms_storage.form | dms.storage | form | New |
view_dms_storage_new_form |
dms_storage.form | dms.storage | xpath | Inherits view_dms_storage_form |
view_dms_storage_search |
dms_storage.search | dms.storage | search | New |
view_dms_storage_tree |
dms_storage.tree | dms.storage | tree | New |
view_dms_tag_form |
dms_tag.form | dms.tag | form | New |
view_dms_tag_kanban |
dms_tag.kanban | dms.tag | kanban | New |
view_dms_tag_search |
dms_tag.search | dms.tag | search | New |
view_dms_tag_tree |
dms_tag.tree | dms.tag | tree | New |
wizard_dms_file_move_form_view |
wizard.dms.file.move.form | wizard.dms.file.move | form | New |
wizard_dms_share_form |
wizard.dms.share.form | wizard.dms.share | field | Inherits portal.portal_share_wizard |
category_id
Many2one → dms.category
comodel_name='dms.category'
context="{'dms_category_show_path': True}"
string='Category'
color
Integer
default=0
company_id
Many2one → res.company
comodel_name='res.company'
index=True
readonly=True
related='storage_id.company_id'
store=True
string='Company'
is_hidden
Boolean
readonly=True
related='storage_id.is_hidden'
store=True
string='Storage is Hidden'
name
Char
index=True
required=True
storage_id
Many2one → dms.storage
comodel_name='dms.storage'
copy=True
store=True
string='Storage'
storage_id_save_type
Selection
related='storage_id.save_type'
store=False
search_panel_select_range(self, field_name, **kwargs)
No new fields.
Public methods (1)unlink(self)
child_group_ids
One2many → dms.access.group
comodel_name='dms.access.group'
inverse_name='parent_group_id'
string='Child Groups'
complete_directory_ids
Many2many → dms.directory
auto_join=True
column1='gid'
column2='aid'
comodel_name='dms.directory'
readonly=True
relation='dms_directory_complete_groups_rel'
string='Complete directories'
count_directories
Integer
compute='_compute_count_directories'
count_users
Integer
compute='_compute_users'
store=True
directory_ids
Many2many → dms.directory
auto_join=True
column1='gid'
column2='aid'
comodel_name='dms.directory'
readonly=True
relation='dms_directory_groups_rel'
string='Directories'
explicit_user_ids
Many2many → res.users
column1='gid'
column2='uid'
comodel_name='res.users'
relation='dms_access_group_explicit_users_rel'
string='Explicit Users'
group_ids
Many2many → res.groups
column1='gid'
column2='rid'
comodel_name='res.groups'
relation='dms_access_group_groups_rel'
string='Groups'
name
Char
required=True
string='Group Name'
translate=True
parent_group_id
Many2one → dms.access.group
comodel_name='dms.access.group'
index=True
ondelete='cascade'
string='Parent Group'
parent_path
Char
index=True
perm_create
Boolean
string='Create Access'
perm_inclusive_create
Boolean
compute='_compute_inclusive_permissions'
recursive=True
store=True
string='Inherited Create Access'
perm_inclusive_unlink
Boolean
compute='_compute_inclusive_permissions'
recursive=True
store=True
string='Inherited Unlink Access'
perm_inclusive_write
Boolean
compute='_compute_inclusive_permissions'
recursive=True
store=True
string='Inherited Write Access'
perm_unlink
Boolean
string='Unlink Access'
perm_write
Boolean
string='Write Access'
users
Many2many → res.users
auto_join=True
column1='gid'
column2='uid'
comodel_name='res.users'
compute='_compute_users'
recursive=True
relation='dms_access_group_users_rel'
store=True
string='Group Users'
default_get(self, fields_list)
active
Boolean
default=True
help='The active field allows you to hide the category without removing it.'
child_category_ids
One2many → dms.category
comodel_name='dms.category'
inverse_name='parent_id'
string='Child Categories'
complete_name
Char
compute='_compute_complete_name'
recursive=True
store=True
count_categories
Integer
compute='_compute_count_categories'
string='Count Subcategories'
count_directories
Integer
compute='_compute_count_directories'
count_files
Integer
compute='_compute_count_files'
count_tags
Integer
compute='_compute_count_tags'
directory_ids
One2many → dms.directory
comodel_name='dms.directory'
inverse_name='category_id'
readonly=True
string='Directories'
file_ids
One2many → dms.file
comodel_name='dms.file'
inverse_name='category_id'
readonly=True
string='Files'
name
Char
required=True
translate=True
parent_id
Many2one → dms.category
comodel_name='dms.category'
index=True
ondelete='cascade'
string='Parent Category'
parent_path
Char
index=True
tag_ids
One2many → dms.tag
comodel_name='dms.tag'
inverse_name='category_id'
string='Tags'
name_get(self)
alias_process
Selection
default='directory'
help=' Define how incoming emails are processed:\n\n - Single Files: The email gets attached to the directory and\n all attachments are created as files.\n\n - Subdirectory: A new subdirectory is created for each email\n and the mail is attached to this subdirectory. The attachments\n are created as files of the subdirectory.\n '
required=True
selection=[('files', 'Single Files'), ('directory', 'Subdirectory')]
string='Unpack Emails as'
allowed_model_ids
Many2many → ir.model
comodel_name='ir.model'
related='storage_id.model_ids'
child_directory_ids
One2many → dms.directory
auto_join=False
comodel_name='dms.directory'
copy=False
inverse_name='parent_id'
string='Subdirectories'
complete_group_ids
Many2many → dms.access.group
column1='aid'
column2='gid'
comodel_name='dms.access.group'
compute='_compute_groups'
compute_sudo=True
readonly=True
recursive=True
relation='dms_directory_complete_groups_rel'
store=True
string='Complete Groups'
complete_name
Char
compute='_compute_complete_name'
recursive=True
store=True
count_directories
Integer
compute='_compute_count_directories'
string='Count Subdirectories Title'
count_directories_title
Char
compute='_compute_count_directories'
string='Count Subdirectories'
count_elements
Integer
compute='_compute_count_elements'
count_files
Integer
compute='_compute_count_files'
string='Count Files Title'
count_files_title
Char
compute='_compute_count_files'
string='Count Files'
count_total_directories
Integer
compute='_compute_count_total_directories'
string='Total Subdirectories'
count_total_elements
Integer
compute='_compute_count_total_elements'
string='Total Elements'
count_total_files
Integer
compute='_compute_count_total_files'
string='Total Files'
file_ids
One2many → dms.file
auto_join=False
comodel_name='dms.file'
copy=False
inverse_name='directory_id'
string='Files'
group_ids
Many2many → dms.access.group
column1='aid'
column2='gid'
comodel_name='dms.access.group'
relation='dms_directory_groups_rel'
string='Groups'
human_size
Char
compute='_compute_human_size'
string='Size'
inherit_group_ids
Boolean
default=True
string='Inherit Groups'
is_root_directory
Boolean
default=False
help='Indicates if the directory is a root directory.\n A root directory has a settings object, while a directory with a set\n parent inherits the settings form its parent.'
model_id
Many2one → ir.model
comodel_name='ir.model'
compute='_compute_model_id'
domain="[('id', 'in', allowed_model_ids)]"
inverse='_inverse_model_id'
store=True
string='Model'
parent_id
Many2one → dms.directory
comodel_name='dms.directory'
compute='_compute_parent_id'
copy=True
default=<expr>
domain="[('permission_create', '=', True)]"
index=True
ondelete='restrict'
prefetch=False
readonly=False
store=True
string='Parent Directory'
parent_path
Char
index=True
root_directory_id
Many2one → dms.directory
compute='_compute_root_id'
store=True
args: 'dms.directory', 'Root Directory'
size
Float
compute='_compute_size'
starred
Boolean
compute='_compute_starred'
inverse='_inverse_starred'
search='_search_starred'
storage_id
Many2one → dms.storage
auto_join=True
comodel_name='dms.storage'
compute='_compute_storage_id'
compute_sudo=True
ondelete='restrict'
readonly=False
store=True
string='Storage'
storage_id_inherit_access_from_parent_record
Boolean
related='storage_id.inherit_access_from_parent_record'
related_sudo=True
store=True
storage_id_save_type
Selection
prefetch=False
readonly=True
related='storage_id.save_type'
related_sudo=True
store=False
tag_ids
Many2many → dms.tag
column1='did'
column2='tid'
comodel_name='dms.tag'
compute='_compute_tags'
domain="[\n '|', ['category_id', '=', False],\n ['category_id', 'child_of', category_id]]\n "
readonly=False
relation='dms_directory_tag_rel'
store=True
string='Tags'
user_star_ids
Many2many → res.users
column1='did'
column2='uid'
comodel_name='res.users'
relation='dms_directory_star_rel'
string='Stars'
action_dms_directories_all_directory(self)
action_dms_files_all_directory(self)
action_save_onboarding_directory_step(self)
check_access_token(self, access_token=False)
copy(self, default=None)
create(self, vals_list)
message_new(self, msg_dict, custom_values=None)
message_update(self, msg_dict, update_vals=None)
name_get(self)
search_panel_select_multi_range(self, field_name, **kwargs)
search_panel_select_range(self, field_name, **kwargs)
toggle_starred(self)
unlink(self)
write(self, vals)
active
Boolean
default=True
help='If a file is set to archived, it is not displayed, but still exists.'
string='Archived'
attachment_id
Many2one → ir.attachment
comodel_name='ir.attachment'
invisible=True
ondelete='cascade'
prefetch=False
string='Attachment File'
checksum
Char
index=True
readonly=True
string='Checksum/SHA1'
content
Binary
attachment=False
compute='_compute_content'
inverse='_inverse_content'
prefetch=False
required=True
store=False
content_binary
Binary
attachment=False
invisible=True
prefetch=False
content_file
Binary
attachment=True
invisible=True
prefetch=False
directory_id
Many2one → dms.directory
auto_join=True
comodel_name='dms.directory'
context="{'dms_directory_show_path': True}"
domain="[('permission_create', '=', True)]"
index=True
ondelete='restrict'
required=True
string='Directory'
tracking=True
extension
Char
compute='_compute_extension'
readonly=True
store=True
human_size
Char
compute='_compute_human_size'
readonly=True
store=True
string='Size'
image_1920
Image
compute='_compute_image_1920'
readonly=False
store=True
is_lock_editor
Boolean
compute='_compute_locked'
string='Editor'
is_locked
Boolean
compute='_compute_locked'
string='Locked'
locked_by
Many2one → res.users
comodel_name='res.users'
migration
Char
compute='_compute_migration'
compute_sudo=True
prefetch=False
readonly=True
string='Migration Status'
mimetype
Char
compute='_compute_mimetype'
readonly=True
store=True
string='Type'
path_json
Text
compute='_compute_path'
compute_sudo=True
readonly=True
store=False
path_names
Char
compute='_compute_path'
compute_sudo=True
readonly=True
store=False
require_migration
Boolean
compute='_compute_migration'
compute_sudo=True
store=True
res_id
Integer
related='directory_id.res_id'
string='Linked attachments record ID'
res_model
Char
related='directory_id.res_model'
string='Linked attachments model'
root_directory_id
Many2one
related='directory_id.root_directory_id'
save_type
Char
compute='_compute_save_type'
invisible=True
prefetch=False
string='Current Save Type'
size
Float
readonly=True
storage_id
Many2one
prefetch=False
readonly=True
related='directory_id.storage_id'
store=True
tag_ids
Many2many → dms.tag
column1='fid'
column2='tid'
comodel_name='dms.tag'
domain="['|', ('category_id', '=', False),('category_id', '=?', category_id)]"
relation='dms_file_tag_rel'
string='Tags'
action_migrate(self, logging=True)
action_save_onboarding_file_step(self)
action_wizard_dms_file_move(self)
check_access_rule(self, operation)
check_access_token(self, access_token=False)
copy(self, default=None)
create(self, vals_list)
get_human_size(self)
lock(self)
search_panel_select_multi_range(self, field_name, **kwargs)
search_panel_select_range(self, field_name, **kwargs)
unlock(self)
icon_url
Char
compute='_compute_icon_url'
string='Icon URL'
No public methods.
permission_create
Boolean
compute='_compute_permissions'
search='_search_permission_create'
string='Create Access'
permission_read
Boolean
compute='_compute_permissions'
search='_search_permission_read'
string='Read Access'
permission_unlink
Boolean
compute='_compute_permissions'
search='_search_permission_unlink'
string='Delete Access'
permission_write
Boolean
compute='_compute_permissions'
search='_search_permission_write'
string='Write Access'
record_ref
Reference
compute='_compute_record_ref'
selection=<expr>
string='Record Referenced'
res_id
Integer
index=True
store=True
string='Linked attachments record ID'
res_model
Char
index=True
store=True
string='Linked attachments model'
create(self, vals_list)
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
help='If set, directories and files will only be available for the selected company.'
string='Company'
count_storage_directories
Integer
compute='_compute_count_storage_directories'
string='Count Directories'
count_storage_files
Integer
compute='_compute_count_storage_files'
string='Count Files'
include_message_attachments
Boolean
default=False
help='Indicate if directories and files auto-create in mail composition process too'
string='Create files from message attachments'
inherit_access_from_parent_record
Boolean
default=False
help='Indicate if directories and files access work only with related model access (for example, if some directories are related with any sale, only users with read access to these sale can acess)'
string='Inherit permissions from related record'
is_hidden
Boolean
default=False
help='Indicates if directories and files are hidden by default.'
string='Storage is Hidden'
model
Char
search='_search_model'
store=False
model_ids
Many2many → ir.model
string='Linked Models'
args: 'ir.model'
name
Char
required=True
root_directory_ids
One2many → dms.directory
auto_join=False
comodel_name='dms.directory'
copy=False
inverse_name='storage_id'
readonly=False
string='Root Directories'
save_type
Selection
default='database'
help='The save type is used to determine how a file is saved by the\n system. If you change this setting, you can migrate existing files\n manually by triggering the action.'
required=True
selection=[('database', _('Database')), ('file', _('Filestore')), ('attachment', _('Attachment'))]
storage_directory_ids
One2many → dms.directory
auto_join=False
comodel_name='dms.directory'
copy=False
inverse_name='storage_id'
readonly=True
string='Directories'
storage_file_ids
One2many → dms.file
auto_join=False
comodel_name='dms.file'
copy=False
inverse_name='storage_id'
readonly=True
string='Files'
action_save_onboarding_storage_step(self)
action_storage_migrate(self)
write(self, values)
active
Boolean
default=True
help='The active field allows you to hide the tag without removing it.'
category_id
Many2one → dms.category
comodel_name='dms.category'
context="{'dms_category_show_path': True}"
ondelete='set null'
string='Category'
color
Integer
default=10
string='Color Index'
count_directories
Integer
compute='_compute_count_directories'
count_files
Integer
compute='_compute_count_files'
directory_ids
Many2many → dms.directory
column1='tid'
column2='did'
comodel_name='dms.directory'
readonly=True
relation='dms_directory_tag_rel'
string='Directories'
file_ids
Many2many → dms.file
column1='tid'
column2='fid'
comodel_name='dms.file'
readonly=True
relation='dms_file_tag_rel'
string='Files'
name
Char
required=True
translate=True
No public methods.
No new fields.
Public methods (2)create(self, vals_list)
write(self, vals)
No new fields.
Public methods (0)No public methods.
documents_onboarding_directory_state
Selection
default='not_done'
selection=[('not_done', 'Not done'), ('just_done', 'Just done'), ('done', 'Done'), ('closed', 'Closed')]
documents_onboarding_file_state
Selection
default='not_done'
selection=[('not_done', 'Not done'), ('just_done', 'Just done'), ('done', 'Done'), ('closed', 'Closed')]
documents_onboarding_state
Selection
default='not_done'
selection=[('not_done', 'Not done'), ('just_done', 'Just done'), ('done', 'Done'), ('closed', 'Closed')]
documents_onboarding_storage_state
Selection
default='not_done'
selection=[('not_done', 'Not done'), ('just_done', 'Just done'), ('done', 'Done'), ('closed', 'Closed')]
action_close_documents_onboarding(self)
action_open_documents_onboarding_directory(self)
action_open_documents_onboarding_file(self)
action_open_documents_onboarding_storage(self)
get_and_update_documents_onboarding_state(self)
get_documents_steps_states_names(self)
documents_binary_max_size
Integer
config_parameter='dms.binary_max_size'
help='Defines the maximum upload size in MB. Default (25MB)'
string='Size'
documents_forbidden_extensions
Char
config_parameter='dms.forbidden_extensions'
help="Defines a list of forbidden file extensions. (Example: 'exe,msi')"
string='Extensions'
No public methods.
count_files
Integer
readonly=True
directory_id
Many2one → dms.directory
comodel_name='dms.directory'
required=True
string='Directory'
default_get(self, fields)
process(self)
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/dms |
| GIT | |
| GIT | https://github.com/OCA/dms.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/dms/tree/14.0/dms |
| VERSION | |
| VERSION | 4.10.2 |
| CATEGORY | |
| CATEGORY | Document Management |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA), MuK IT |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA), MuK IT |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, GitHub, Jairo Llopis, Enric Tobella, OCA Transbot, Víctor Martínez, oca-travis, Weblate, OCA-git-bot, oca-ci, Yu Weng, Marcel Savegnago, Alessandro Uffreduzzi, PicchiSeba, Adasat Torres de León, FrancescoBallerini, Matt Jenkins |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/dms |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:40:52 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/social: - mail_preview_base OCA/web: - web_drop_target odoo/odoo: - web - base - base_setup - bus - web_tour - http_routing - portal - web_editor - auth_signup |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
dms_assets | ir.ui.view | qweb | Inherits web.assets_backend |
dms_frontend_demo |
dms_frontend_demo | ir.ui.view | qweb | Inherits web.assets_frontend |
document_onboarding_directory_panel |
document_onboarding_panel | ir.ui.view | qweb | New |
document_onboarding_file_panel |
document_onboarding_panel | ir.ui.view | qweb | New |
onboarding_directory_step |
onboarding_directory_step | ir.ui.view | qweb | New |
onboarding_file_step |
onboarding_file_step | ir.ui.view | qweb | New |
onboarding_storage_step |
onboarding_storage_step | ir.ui.view | qweb | New |
portal_my_dms |
My DMS | ir.ui.view | qweb | New |
portal_my_dms_breadcrumbs |
My DMS: Breadcrumbs | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
portal_my_home_dms |
Portal My Home : dms entries | ir.ui.view | qweb | Inherits portal.portal_my_home |
res_config_settings_view_form |
res.config.settings.view.form.inherit.dms | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
search_dms_directory |
dms_directory.search | dms.directory | search | New |
search_dms_file |
dms_file.search | dms.file | search | New |
search_dms_file_migration |
dms_file.search | dms.file | search | New |
view_dms_access_groups_form |
dms_access.group.form | dms.access.group | form | New |
view_dms_access_groups_tree |
dms_access_groups.tree | dms.access.group | tree | New |
view_dms_category_form |
dms_category.form | dms.category | form | New |
view_dms_category_search |
dms_category.search | dms.category | search | New |
view_dms_category_tree |
dms_category.tree | dms.category | tree | New |
view_dms_directory_form |
dms_directory.form | dms.directory | form | New |
view_dms_directory_kanban |
dms_directory.kanban | dms.directory | kanban | New |
view_dms_directory_manager_form |
dms_directory.form | dms.directory | field | Inherits view_dms_directory_form |
view_dms_directory_new_form |
dms_directory.form | dms.directory | xpath | Inherits view_dms_directory_form |
view_dms_directory_tree |
dms_directory.tree | dms.directory | tree | New |
view_dms_file_form |
dms_file.form | dms.file | form | New |
view_dms_file_graph |
dms_file.graph | dms.file | graph | New |
view_dms_file_kanban |
dms_file.kanban | dms.file | kanban | New |
view_dms_file_kanban_wizard_selection |
dms_file.kanban.wizard.selection | dms.file | kanban | Inherits dms.view_dms_file_kanban |
view_dms_file_manager_form |
dms_file.form | dms.file | field | Inherits view_dms_file_form |
view_dms_file_migration_tree |
dms_file.tree | dms.file | tree | New |
view_dms_file_new_form |
dms_file.form | dms.file | xpath | Inherits view_dms_file_form |
view_dms_file_pivot |
dms_file.pivot | dms.file | pivot | New |
view_dms_file_tree |
dms_file.tree | dms.file | tree | New |
view_dms_storage_form |
dms_storage.form | dms.storage | form | New |
view_dms_storage_new_form |
dms_storage.form | dms.storage | xpath | Inherits view_dms_storage_form |
view_dms_storage_search |
dms_storage.search | dms.storage | search | New |
view_dms_storage_tree |
dms_storage.tree | dms.storage | tree | New |
view_dms_tag_form |
dms_tag.form | dms.tag | form | New |
view_dms_tag_kanban |
dms_tag.kanban | dms.tag | kanban | New |
view_dms_tag_search |
dms_tag.search | dms.tag | search | New |
view_dms_tag_tree |
dms_tag.tree | dms.tag | tree | New |
category_id
Many2one → dms.category
comodel_name='dms.category'
context="{'dms_category_show_path': True}"
string='Category'
color
Integer
default=0
string='Color'
company_id
Many2one → res.company
comodel_name='res.company'
index=True
readonly=True
related='storage_id.company_id'
store=True
string='Company'
is_hidden
Boolean
readonly=True
related='storage_id.is_hidden'
store=True
string='Storage is Hidden'
name
Char
index=True
required=True
string='Name'
storage_id
Many2one → dms.storage
comodel_name='dms.storage'
copy=True
store=True
string='Storage'
storage_id_save_type
Selection
related='storage_id.save_type'
store=False
search_panel_select_range(self, field_name, **kwargs)
No new fields.
Public methods (1)unlink(self)
child_group_ids
One2many → dms.access.group
comodel_name='dms.access.group'
inverse_name='parent_group_id'
string='Child Groups'
complete_directory_ids
Many2many → dms.directory
auto_join=True
column1='gid'
column2='aid'
comodel_name='dms.directory'
readonly=True
relation='dms_directory_complete_groups_rel'
string='Complete directories'
count_directories
Integer
compute='_compute_count_directories'
string='Count Directories'
count_users
Integer
compute='_compute_users'
store=True
string='Users'
directory_ids
Many2many → dms.directory
auto_join=True
column1='gid'
column2='aid'
comodel_name='dms.directory'
readonly=True
relation='dms_directory_groups_rel'
string='Directories'
explicit_user_ids
Many2many → res.users
column1='gid'
column2='uid'
comodel_name='res.users'
relation='dms_access_group_explicit_users_rel'
string='Explicit Users'
group_ids
Many2many → res.groups
column1='gid'
column2='rid'
comodel_name='res.groups'
relation='dms_access_group_groups_rel'
string='Groups'
name
Char
required=True
string='Group Name'
translate=True
parent_group_id
Many2one → dms.access.group
comodel_name='dms.access.group'
index=True
ondelete='cascade'
string='Parent Group'
parent_path
Char
index=True
string='Parent Path'
perm_create
Boolean
string='Create Access'
perm_inclusive_create
Boolean
compute='_compute_inclusive_permissions'
store=True
string='Inherited Create Access'
perm_inclusive_unlink
Boolean
compute='_compute_inclusive_permissions'
store=True
string='Inherited Unlink Access'
perm_inclusive_write
Boolean
compute='_compute_inclusive_permissions'
store=True
string='Inherited Write Access'
perm_unlink
Boolean
string='Unlink Access'
perm_write
Boolean
string='Write Access'
users
Many2many → res.users
auto_join=True
column1='gid'
column2='uid'
comodel_name='res.users'
compute='_compute_users'
relation='dms_access_group_users_rel'
store=True
string='Group Users'
default_get(self, fields_list)
active
Boolean
default=True
help='The active field allows you to hide the category without removing it.'
child_category_ids
One2many → dms.category
comodel_name='dms.category'
inverse_name='parent_id'
string='Child Categories'
complete_name
Char
compute='_compute_complete_name'
store=True
count_categories
Integer
compute='_compute_count_categories'
string='Count Subcategories'
count_directories
Integer
compute='_compute_count_directories'
string='Count Directories'
count_files
Integer
compute='_compute_count_files'
string='Count Files'
count_tags
Integer
compute='_compute_count_tags'
string='Count Tags'
directory_ids
One2many → dms.directory
comodel_name='dms.directory'
inverse_name='category_id'
readonly=True
string='Directories'
file_ids
One2many → dms.file
comodel_name='dms.file'
inverse_name='category_id'
readonly=True
string='Files'
name
Char
required=True
string='Name'
translate=True
parent_id
Many2one → dms.category
comodel_name='dms.category'
index=True
ondelete='cascade'
string='Parent Category'
parent_path
Char
index=True
string='Parent Path'
tag_ids
One2many → dms.tag
comodel_name='dms.tag'
inverse_name='category_id'
string='Tags'
No public methods.
alias_process
Selection
default='directory'
help=' Define how incoming emails are processed:\n\n - Single Files: The email gets attached to the directory and\n all attachments are created as files.\n\n - Subdirectory: A new subdirectory is created for each email\n and the mail is attached to this subdirectory. The attachments\n are created as files of the subdirectory.\n '
required=True
selection=[('files', 'Single Files'), ('directory', 'Subdirectory')]
string='Unpack Emails as'
allowed_model_ids
Many2many → ir.model
comodel_name='ir.model'
related='storage_id.model_ids'
child_directory_ids
One2many → dms.directory
auto_join=False
comodel_name='dms.directory'
copy=False
inverse_name='parent_id'
string='Subdirectories'
complete_group_ids
Many2many → dms.access.group
column1='aid'
column2='gid'
comodel_name='dms.access.group'
compute='_compute_groups'
compute_sudo=True
readonly=True
relation='dms_directory_complete_groups_rel'
store=True
string='Complete Groups'
complete_name
Char
compute='_compute_complete_name'
store=True
args: 'Complete Name'
count_directories
Integer
compute='_compute_count_directories'
string='Count Subdirectories Title'
count_directories_title
Char
compute='_compute_count_directories'
string='Count Subdirectories'
count_elements
Integer
compute='_compute_count_elements'
string='Count Elements'
count_files
Integer
compute='_compute_count_files'
string='Count Files Title'
count_files_title
Char
compute='_compute_count_files'
string='Count Files'
count_total_directories
Integer
compute='_compute_count_total_directories'
string='Total Subdirectories'
count_total_elements
Integer
compute='_compute_count_total_elements'
string='Total Elements'
count_total_files
Integer
compute='_compute_count_total_files'
string='Total Files'
file_ids
One2many → dms.file
auto_join=False
comodel_name='dms.file'
copy=False
inverse_name='directory_id'
string='Files'
group_ids
Many2many → dms.access.group
column1='aid'
column2='gid'
comodel_name='dms.access.group'
relation='dms_directory_groups_rel'
string='Groups'
inherit_group_ids
Boolean
default=True
string='Inherit Groups'
is_root_directory
Boolean
default=False
help='Indicates if the directory is a root directory.\n A root directory has a settings object, while a directory with a set\n parent inherits the settings form its parent.'
string='Is Root Directory'
model_id
Many2one → ir.model
comodel_name='ir.model'
compute='_compute_model_id'
domain="[('id', 'in', allowed_model_ids)]"
inverse='_inverse_model_id'
store=True
string='Model'
parent_id
Many2one → dms.directory
comodel_name='dms.directory'
compute='_compute_parent_id'
copy=True
default=<expr>
domain="[('permission_create', '=', True)]"
index=True
ondelete='restrict'
prefetch=False
readonly=False
store=True
string='Parent Directory'
parent_path
Char
index=True
root_directory_id
Many2one → dms.directory
compute='_compute_root_id'
store=True
args: 'dms.directory', 'Root Directory'
size
Float
compute='_compute_size'
string='Size'
starred
Boolean
compute='_compute_starred'
inverse='_inverse_starred'
search='_search_starred'
string='Starred'
storage_id
Many2one → dms.storage
auto_join=True
comodel_name='dms.storage'
compute='_compute_storage_id'
compute_sudo=True
ondelete='restrict'
readonly=False
store=True
string='Storage'
storage_id_inherit_access_from_parent_record
Boolean
related='storage_id.inherit_access_from_parent_record'
related_sudo=True
store=True
storage_id_save_type
Selection
prefetch=False
readonly=True
related='storage_id.save_type'
related_sudo=True
store=False
tag_ids
Many2many → dms.tag
column1='did'
column2='tid'
comodel_name='dms.tag'
compute='_compute_tags'
domain="[\n '|', ['category_id', '=', False],\n ['category_id', 'child_of', category_id]]\n "
readonly=False
relation='dms_directory_tag_rel'
store=True
string='Tags'
user_star_ids
Many2many → res.users
column1='did'
column2='uid'
comodel_name='res.users'
relation='dms_directory_star_rel'
string='Stars'
action_save_onboarding_directory_step(self)
check_access_token(self, access_token=False)
copy(self, default=None)
create(self, vals_list)
message_new(self, msg_dict, custom_values=None)
message_update(self, msg_dict, update_vals=None)
name_get(self)
toggle_starred(self)
unlink(self)
write(self, vals)
active
Boolean
default=True
help='If a file is set to archived, it is not displayed, but still exists.'
string='Archived'
attachment_id
Many2one → ir.attachment
comodel_name='ir.attachment'
invisible=True
ondelete='cascade'
prefetch=False
string='Attachment File'
checksum
Char
index=True
readonly=True
string='Checksum/SHA1'
content
Binary
attachment=False
compute='_compute_content'
inverse='_inverse_content'
prefetch=False
required=True
store=False
string='Content'
content_binary
Binary
attachment=False
invisible=True
prefetch=False
string='Content Binary'
content_file
Binary
attachment=True
invisible=True
prefetch=False
string='Content File'
directory_id
Many2one → dms.directory
auto_join=True
comodel_name='dms.directory'
context="{'dms_directory_show_path': True}"
domain="[('permission_create', '=', True)]"
index=True
ondelete='restrict'
required=True
string='Directory'
extension
Char
compute='_compute_extension'
readonly=True
store=True
string='Extension'
image_1920
Image
compute='_compute_image_1920'
readonly=False
store=True
is_lock_editor
Boolean
compute='_compute_locked'
string='Editor'
is_locked
Boolean
compute='_compute_locked'
string='Locked'
locked_by
Many2one → res.users
comodel_name='res.users'
string='Locked by'
migration
Char
compute='_compute_migration'
compute_sudo=True
prefetch=False
readonly=True
string='Migration Status'
mimetype
Char
compute='_compute_mimetype'
readonly=True
store=True
string='Type'
path_json
Text
compute='_compute_path'
compute_sudo=True
readonly=True
store=False
string='Path Json'
path_names
Char
compute='_compute_path'
compute_sudo=True
readonly=True
store=False
string='Path Names'
require_migration
Boolean
compute='_compute_migration'
compute_sudo=True
store=True
res_id
Integer
related='directory_id.res_id'
string='Linked attachments record ID'
res_model
Char
related='directory_id.res_model'
string='Linked attachments model'
save_type
Char
compute='_compute_save_type'
invisible=True
prefetch=False
string='Current Save Type'
size
Float
readonly=True
string='Size'
storage_id
Many2one
prefetch=False
readonly=True
related='directory_id.storage_id'
store=True
tag_ids
Many2many → dms.tag
column1='fid'
column2='tid'
comodel_name='dms.tag'
domain="['|', ('category_id', '=', False),('category_id', '=?', category_id)]"
relation='dms_file_tag_rel'
string='Tags'
action_migrate(self, logging=True)
action_save_onboarding_file_step(self)
check_access_rule(self, operation)
check_access_token(self, access_token=False)
copy(self, default=None)
create(self, vals_list)
get_human_size(self)
lock(self)
search_panel_select_multi_range(self, field_name, **kwargs)
search_panel_select_range(self, field_name, **kwargs)
unlock(self)
icon_url
Char
compute='_compute_icon_url'
string='Icon URL'
No public methods.
permission_create
Boolean
compute='_compute_permissions'
search='_search_permission_create'
string='Create Access'
permission_read
Boolean
compute='_compute_permissions'
search='_search_permission_read'
string='Read Access'
permission_unlink
Boolean
compute='_compute_permissions'
search='_search_permission_unlink'
string='Delete Access'
permission_write
Boolean
compute='_compute_permissions'
search='_search_permission_write'
string='Write Access'
record_ref
Reference
compute='_compute_record_ref'
selection=<expr>
string='Record Referenced'
res_id
Integer
index=True
store=True
string='Linked attachments record ID'
res_model
Char
index=True
store=True
string='Linked attachments model'
create(self, vals_list)
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
help='If set, directories and files will only be available for the selected company.'
string='Company'
count_storage_directories
Integer
compute='_compute_count_storage_directories'
string='Count Directories'
count_storage_files
Integer
compute='_compute_count_storage_files'
string='Count Files'
include_message_attachments
Boolean
default=False
help='Indicate if directories and files auto-create in mail composition process too'
string='Create files from message attachments'
inherit_access_from_parent_record
Boolean
default=False
help='Indicate if directories and files access work only with related model access (for example, if some directories are related with any sale, only users with read access to these sale can acess)'
string='Inherit permissions from related record'
is_hidden
Boolean
default=False
help='Indicates if directories and files are hidden by default.'
string='Storage is Hidden'
model_ids
Many2many → ir.model
string='Linked Models'
args: 'ir.model'
name
Char
required=True
string='Name'
root_directory_ids
One2many → dms.directory
auto_join=False
comodel_name='dms.directory'
copy=False
inverse_name='storage_id'
readonly=False
string='Root Directories'
save_type
Selection
default='database'
help='The save type is used to determine how a file is saved by the\n system. If you change this setting, you can migrate existing files\n manually by triggering the action.'
required=True
selection=[('database', _('Database')), ('file', _('Filestore')), ('attachment', _('Attachment'))]
string='Save Type'
storage_directory_ids
One2many → dms.directory
auto_join=False
comodel_name='dms.directory'
copy=False
inverse_name='storage_id'
readonly=True
string='Directories'
storage_file_ids
One2many → dms.file
auto_join=False
comodel_name='dms.file'
copy=False
inverse_name='storage_id'
readonly=True
string='Files'
action_save_onboarding_storage_step(self)
action_storage_migrate(self)
active
Boolean
default=True
help='The active field allows you to hide the tag without removing it.'
category_id
Many2one → dms.category
comodel_name='dms.category'
context="{'dms_category_show_path': True}"
ondelete='set null'
string='Category'
color
Integer
default=10
string='Color Index'
count_directories
Integer
compute='_compute_count_directories'
string='Count Directories'
count_files
Integer
compute='_compute_count_files'
string='Count Files'
directory_ids
Many2many → dms.directory
column1='tid'
column2='did'
comodel_name='dms.directory'
readonly=True
relation='dms_directory_tag_rel'
string='Directories'
file_ids
Many2many → dms.file
column1='tid'
column2='fid'
comodel_name='dms.file'
readonly=True
relation='dms_file_tag_rel'
string='Files'
name
Char
required=True
string='Name'
translate=True
No public methods.
No new fields.
Public methods (2)create(self, vals_list)
write(self, vals)
No new fields.
Public methods (0)No public methods.
documents_onboarding_directory_state
Selection
default='not_done'
selection=[('not_done', 'Not done'), ('just_done', 'Just done'), ('done', 'Done'), ('closed', 'Closed')]
string='Documents Onboarding Directory State'
documents_onboarding_file_state
Selection
default='not_done'
selection=[('not_done', 'Not done'), ('just_done', 'Just done'), ('done', 'Done'), ('closed', 'Closed')]
string='Documents Onboarding File State'
documents_onboarding_state
Selection
default='not_done'
selection=[('not_done', 'Not done'), ('just_done', 'Just done'), ('done', 'Done'), ('closed', 'Closed')]
string='Documents Onboarding State'
documents_onboarding_storage_state
Selection
default='not_done'
selection=[('not_done', 'Not done'), ('just_done', 'Just done'), ('done', 'Done'), ('closed', 'Closed')]
string='Documents Onboarding Storage State'
action_close_documents_onboarding(self)
action_open_documents_onboarding_directory(self)
action_open_documents_onboarding_file(self)
action_open_documents_onboarding_storage(self)
get_and_update_documents_onboarding_state(self)
get_documents_steps_states_names(self)
documents_binary_max_size
Integer
config_parameter='dms.binary_max_size'
help='Defines the maximum upload size in MB. Default (25MB)'
string='Size'
documents_forbidden_extensions
Char
config_parameter='dms.forbidden_extensions'
help="Defines a list of forbidden file extensions. (Example: 'exe,msi')"
string='Extensions'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/dms |
| GIT | |
| GIT | https://github.com/OCA/dms.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/dms/tree/13.0/dms |
| VERSION | |
| VERSION | 8.5.2 |
| CATEGORY | |
| CATEGORY | Document Management |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA), MuK IT |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA), MuK IT |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Jairo Llopis, Daniel Reis, Enric Tobella, OCA Transbot, Víctor Martínez, Alexandre D. Díaz, oca-travis, Weblate, OCA-git-bot, oca-ci, Jaime Arroyo, Alessandro Uffreduzzi |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/dms |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:34:10 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/social: - mail_preview_base OCA/web: - web_drop_target odoo/odoo: - web - base - base_setup - bus - web_tour - http_routing - portal - web_editor - auth_signup |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
dms_assets | ir.ui.view | qweb | Inherits web.assets_backend |
dms_frontend_demo |
dms_frontend_demo | ir.ui.view | qweb | Inherits web.assets_frontend |
document_onboarding_directory_panel |
document_onboarding_panel | ir.ui.view | qweb | New |
document_onboarding_file_panel |
document_onboarding_panel | ir.ui.view | qweb | New |
onboarding_directory_step |
onboarding_directory_step | ir.ui.view | qweb | New |
onboarding_file_step |
onboarding_file_step | ir.ui.view | qweb | New |
onboarding_storage_step |
onboarding_storage_step | ir.ui.view | qweb | New |
portal_my_dms |
My DMS | ir.ui.view | qweb | New |
portal_my_dms_breadcrumbs |
My DMS: Breadcrumbs | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
portal_my_home_dms |
Portal My Home : dms entries | ir.ui.view | qweb | Inherits portal.portal_my_home |
res_config_settings_view_form |
res.config.settings.view.form.inherit.dms | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
search_dms_directory |
dms_directory.search | dms.directory | search | New |
search_dms_file |
dms_file.search | dms.file | search | New |
search_dms_file_migration |
dms_file.search | dms.file | search | New |
view_dms_access_groups_form |
dms_access.group.form | dms.access.group | form | New |
view_dms_access_groups_tree |
dms_access_groups.tree | dms.access.group | tree | New |
view_dms_category_form |
dms_category.form | dms.category | form | New |
view_dms_category_search |
dms_category.search | dms.category | search | New |
view_dms_category_tree |
dms_category.tree | dms.category | tree | New |
view_dms_directory_form |
dms_directory.form | dms.directory | form | New |
view_dms_directory_kanban |
dms_directory.kanban | dms.directory | kanban | New |
view_dms_directory_manager_form |
dms_directory.form | dms.directory | field | Inherits view_dms_directory_form |
view_dms_directory_new_form |
dms_directory.form | dms.directory | xpath | Inherits view_dms_directory_form |
view_dms_directory_tree |
dms_directory.tree | dms.directory | tree | New |
view_dms_file_form |
dms_file.form | dms.file | form | New |
view_dms_file_graph |
dms_file.graph | dms.file | graph | New |
view_dms_file_kanban |
dms_file.kanban | dms.file | kanban | New |
view_dms_file_kanban_wizard_selection |
dms_file.kanban.wizard.selection | dms.file | kanban | Inherits dms.view_dms_file_kanban |
view_dms_file_manager_form |
dms_file.form | dms.file | field | Inherits view_dms_file_form |
view_dms_file_migration_tree |
dms_file.tree | dms.file | tree | New |
view_dms_file_new_form |
dms_file.form | dms.file | xpath | Inherits view_dms_file_form |
view_dms_file_pivot |
dms_file.pivot | dms.file | pivot | New |
view_dms_file_tree |
dms_file.tree | dms.file | tree | New |
view_dms_storage_form |
dms_storage.form | dms.storage | form | New |
view_dms_storage_new_form |
dms_storage.form | dms.storage | xpath | Inherits view_dms_storage_form |
view_dms_storage_search |
dms_storage.search | dms.storage | search | New |
view_dms_storage_tree |
dms_storage.tree | dms.storage | tree | New |
view_dms_tag_form |
dms_tag.form | dms.tag | form | New |
view_dms_tag_kanban |
dms_tag.kanban | dms.tag | kanban | New |
view_dms_tag_search |
dms_tag.search | dms.tag | search | New |
view_dms_tag_tree |
dms_tag.tree | dms.tag | tree | New |
category_id
Many2one → dms.category
comodel_name='dms.category'
context="{'dms_category_show_path': True}"
string='Category'
color
Integer
default=0
string='Color'
company_id
Many2one → res.company
comodel_name='res.company'
index=True
readonly=True
related='storage_id.company_id'
store=True
string='Company'
is_hidden
Boolean
readonly=True
related='storage_id.is_hidden'
store=True
string='Storage is Hidden'
name
Char
index=True
required=True
string='Name'
storage_id
Many2one → dms.storage
comodel_name='dms.storage'
copy=True
store=True
string='Storage'
storage_id_save_type
Selection
related='storage_id.save_type'
store=False
search_panel_select_range(self, field_name)
No new fields.
Public methods (1)unlink(self)
child_group_ids
One2many → dms.access.group
comodel_name='dms.access.group'
inverse_name='parent_group_id'
string='Child Groups'
complete_directory_ids
Many2many → dms.directory
auto_join=True
column1='gid'
column2='aid'
comodel_name='dms.directory'
readonly=True
relation='dms_directory_complete_groups_rel'
string='Complete directories'
count_directories
Integer
compute='_compute_count_directories'
string='Count Directories'
count_users
Integer
compute='_compute_users'
store=True
string='Users'
directory_ids
Many2many → dms.directory
auto_join=True
column1='gid'
column2='aid'
comodel_name='dms.directory'
readonly=True
relation='dms_directory_groups_rel'
string='Directories'
explicit_user_ids
Many2many → res.users
column1='gid'
column2='uid'
comodel_name='res.users'
relation='dms_access_group_explicit_users_rel'
string='Explicit Users'
group_ids
Many2many → res.groups
column1='gid'
column2='rid'
comodel_name='res.groups'
relation='dms_access_group_groups_rel'
string='Groups'
name
Char
required=True
string='Group Name'
translate=True
parent_group_id
Many2one → dms.access.group
comodel_name='dms.access.group'
index=True
ondelete='cascade'
string='Parent Group'
parent_path
Char
index=True
string='Parent Path'
perm_create
Boolean
string='Create Access'
perm_inclusive_create
Boolean
compute='_compute_inclusive_permissions'
store=True
string='Inherited Create Access'
perm_inclusive_unlink
Boolean
compute='_compute_inclusive_permissions'
store=True
string='Inherited Unlink Access'
perm_inclusive_write
Boolean
compute='_compute_inclusive_permissions'
store=True
string='Inherited Write Access'
perm_unlink
Boolean
string='Unlink Access'
perm_write
Boolean
string='Write Access'
users
Many2many → res.users
auto_join=True
column1='gid'
column2='uid'
comodel_name='res.users'
compute='_compute_users'
relation='dms_access_group_users_rel'
store=True
string='Group Users'
default_get(self, fields_list)
active
Boolean
default=True
help='The active field allows you to hide the category without removing it.'
child_category_ids
One2many → dms.category
comodel_name='dms.category'
inverse_name='parent_id'
string='Child Categories'
complete_name
Char
compute='_compute_complete_name'
store=True
count_categories
Integer
compute='_compute_count_categories'
string='Count Subcategories'
count_directories
Integer
compute='_compute_count_directories'
string='Count Directories'
count_files
Integer
compute='_compute_count_files'
string='Count Files'
count_tags
Integer
compute='_compute_count_tags'
string='Count Tags'
directory_ids
One2many → dms.directory
comodel_name='dms.directory'
inverse_name='category_id'
readonly=True
string='Directories'
file_ids
One2many → dms.file
comodel_name='dms.file'
inverse_name='category_id'
readonly=True
string='Files'
name
Char
required=True
string='Name'
translate=True
parent_id
Many2one → dms.category
comodel_name='dms.category'
index=True
ondelete='cascade'
string='Parent Category'
parent_path
Char
index=True
string='Parent Path'
tag_ids
One2many → dms.tag
comodel_name='dms.tag'
inverse_name='category_id'
string='Tags'
No public methods.
alias_process
Selection
default='directory'
help=' Define how incoming emails are processed:\n\n - Single Files: The email gets attached to the directory and\n all attachments are created as files.\n\n - Subdirectory: A new subdirectory is created for each email\n and the mail is attached to this subdirectory. The attachments\n are created as files of the subdirectory.\n '
required=True
selection=[('files', 'Single Files'), ('directory', 'Subdirectory')]
string='Unpack Emails as'
allowed_model_ids
Many2many → ir.model
comodel_name='ir.model'
related='storage_id.model_ids'
child_directory_ids
One2many → dms.directory
auto_join=False
comodel_name='dms.directory'
copy=False
inverse_name='parent_id'
string='Subdirectories'
complete_group_ids
Many2many → dms.access.group
column1='aid'
column2='gid'
comodel_name='dms.access.group'
compute='_compute_groups'
compute_sudo=True
readonly=True
relation='dms_directory_complete_groups_rel'
store=True
string='Complete Groups'
complete_name
Char
compute='_compute_complete_name'
store=True
args: 'Complete Name'
count_directories
Integer
compute='_compute_count_directories'
string='Count Subdirectories Title'
count_directories_title
Char
compute='_compute_count_directories'
string='Count Subdirectories'
count_elements
Integer
compute='_compute_count_elements'
string='Count Elements'
count_files
Integer
compute='_compute_count_files'
string='Count Files Title'
count_files_title
Char
compute='_compute_count_files'
string='Count Files'
count_total_directories
Integer
compute='_compute_count_total_directories'
string='Total Subdirectories'
count_total_elements
Integer
compute='_compute_count_total_elements'
string='Total Elements'
count_total_files
Integer
compute='_compute_count_total_files'
string='Total Files'
file_ids
One2many → dms.file
auto_join=False
comodel_name='dms.file'
copy=False
inverse_name='directory_id'
string='Files'
group_ids
Many2many → dms.access.group
column1='aid'
column2='gid'
comodel_name='dms.access.group'
relation='dms_directory_groups_rel'
string='Groups'
inherit_group_ids
Boolean
default=True
string='Inherit Groups'
is_root_directory
Boolean
default=False
help='Indicates if the directory is a root directory.\n A root directory has a settings object, while a directory with a set\n parent inherits the settings form its parent.'
string='Is Root Directory'
model_id
Many2one → ir.model
comodel_name='ir.model'
compute='_compute_model_id'
domain="[('id', 'in', allowed_model_ids)]"
inverse='_inverse_model_id'
store=True
string='Model'
parent_id
Many2one → dms.directory
comodel_name='dms.directory'
compute='_compute_parent_id'
copy=True
default=<expr>
domain="[('permission_create', '=', True)]"
index=True
ondelete='restrict'
prefetch=False
readonly=False
store=True
string='Parent Directory'
parent_path
Char
index=True
size
Float
compute='_compute_size'
string='Size'
starred
Boolean
compute='_compute_starred'
inverse='_inverse_starred'
search='_search_starred'
string='Starred'
storage_id
Many2one → dms.storage
auto_join=True
comodel_name='dms.storage'
compute='_compute_storage_id'
compute_sudo=True
ondelete='restrict'
readonly=False
store=True
string='Storage'
storage_id_inherit_access_from_parent_record
Boolean
auto_join=True
related='storage_id.inherit_access_from_parent_record'
related_sudo=True
store=True
storage_id_save_type
Selection
prefetch=False
readonly=True
related='storage_id.save_type'
related_sudo=True
store=False
tag_ids
Many2many → dms.tag
column1='did'
column2='tid'
comodel_name='dms.tag'
compute='_compute_tags'
domain="[\n '|', ['category_id', '=', False],\n ['category_id', 'child_of', category_id]]\n "
readonly=False
relation='dms_directory_tag_rel'
store=True
string='Tags'
user_star_ids
Many2many → res.users
column1='did'
column2='uid'
comodel_name='res.users'
relation='dms_directory_star_rel'
string='Stars'
action_save_onboarding_directory_step(self)
check_access_token(self, access_token=False)
copy(self, default=None)
create(self, vals_list)
get_alias_model_name(self, vals)
get_alias_values(self)
message_new(self, msg_dict, custom_values=None)
message_update(self, msg_dict, update_vals=None)
toggle_starred(self)
unlink(self)
write(self, vals)
active
Boolean
default=True
help='If a file is set to archived, it is not displayed, but still exists.'
string='Archived'
attachment_id
Many2one → ir.attachment
comodel_name='ir.attachment'
invisible=True
ondelete='cascade'
prefetch=False
string='Attachment File'
checksum
Char
index=True
readonly=True
size=40
string='Checksum/SHA1'
content
Binary
attachment=False
compute='_compute_content'
inverse='_inverse_content'
prefetch=False
required=True
store=False
string='Content'
content_binary
Binary
attachment=False
invisible=True
prefetch=False
string='Content Binary'
content_file
Binary
attachment=True
invisible=True
prefetch=False
string='Content File'
directory_id
Many2one → dms.directory
auto_join=True
comodel_name='dms.directory'
context="{'dms_directory_show_path': True}"
domain="[('permission_create', '=', True)]"
index=True
ondelete='restrict'
required=True
string='Directory'
extension
Char
compute='_compute_extension'
readonly=True
store=True
string='Extension'
image_1920
Image
compute='_compute_image_1920'
readonly=False
store=True
is_lock_editor
Boolean
compute='_compute_locked'
string='Editor'
is_locked
Boolean
compute='_compute_locked'
string='Locked'
locked_by
Many2one → res.users
comodel_name='res.users'
string='Locked by'
migration
Char
compute='_compute_migration'
compute_sudo=True
prefetch=False
readonly=True
string='Migration Status'
path_json
Text
compute='_compute_path'
compute_sudo=True
readonly=True
store=False
string='Path Json'
path_names
Char
compute='_compute_path'
compute_sudo=True
readonly=True
store=False
string='Path Names'
require_migration
Boolean
compute='_compute_migration'
compute_sudo=True
store=True
res_id
Integer
related='directory_id.res_id'
string='Linked attachments record ID'
res_mimetype
Char
compute='_compute_mimetype'
readonly=True
store=True
string='Type'
res_model
Char
related='directory_id.res_model'
string='Linked attachments model'
save_type
Char
compute='_compute_save_type'
invisible=True
prefetch=False
string='Current Save Type'
size
Float
readonly=True
string='Size'
storage_id
Many2one
prefetch=False
readonly=True
related='directory_id.storage_id'
store=True
tag_ids
Many2many → dms.tag
column1='fid'
column2='tid'
comodel_name='dms.tag'
relation='dms_file_tag_rel'
string='Tags'
action_migrate(self, logging=True)
action_save_onboarding_file_step(self)
check_access_rule(self, operation)
check_access_token(self, access_token=False)
copy(self, default=None)
create(self, vals_list)
get_human_size(self)
lock(self)
search_panel_select_multi_range(self, field_name, **kwargs)
search_panel_select_range(self, field_name, **kwargs)
unlock(self)
icon_url
Char
compute='_compute_icon_url'
string='Icon URL'
No public methods.
permission_create
Boolean
compute='_compute_permissions'
search='_search_permission_create'
string='Create Access'
permission_read
Boolean
compute='_compute_permissions'
search='_search_permission_read'
string='Read Access'
permission_unlink
Boolean
compute='_compute_permissions'
search='_search_permission_unlink'
string='Delete Access'
permission_write
Boolean
compute='_compute_permissions'
search='_search_permission_write'
string='Write Access'
record_ref
Reference
compute='_compute_record_ref'
selection=<expr>
string='Record Referenced'
res_id
Integer
index=True
store=True
string='Linked attachments record ID'
res_model
Char
index=True
store=True
string='Linked attachments model'
create(self, vals_list)
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
help='If set, directories and files will only be available for the selected company.'
string='Company'
count_storage_directories
Integer
compute='_compute_count_storage_directories'
string='Count Directories'
count_storage_files
Integer
compute='_compute_count_storage_files'
string='Count Files'
include_message_attachments
Boolean
default=False
help='Indicate if directories and files auto-create in mail composition process too'
string='Create files from message attachments'
inherit_access_from_parent_record
Boolean
default=False
help='Indicate if directories and files access work only with related model access (for example, if some directories are related with any sale, only users with read access to these sale can acess)'
string='Inherit permissions from related record'
is_hidden
Boolean
default=False
help='Indicates if directories and files are hidden by default.'
string='Storage is Hidden'
model_ids
Many2many → ir.model
string='Linked Models'
args: 'ir.model'
name
Char
required=True
string='Name'
root_directory_ids
One2many → dms.directory
auto_join=False
comodel_name='dms.directory'
copy=False
inverse_name='storage_id'
readonly=False
string='Root Directories'
save_type
Selection
default='database'
help='The save type is used to determine how a file is saved by the\n system. If you change this setting, you can migrate existing files\n manually by triggering the action.'
required=True
selection=[('database', _('Database')), ('file', _('Filestore')), ('attachment', _('Attachment'))]
string='Save Type'
storage_directory_ids
One2many → dms.directory
auto_join=False
comodel_name='dms.directory'
copy=False
inverse_name='storage_id'
readonly=True
string='Directories'
storage_file_ids
One2many → dms.file
auto_join=False
comodel_name='dms.file'
copy=False
inverse_name='storage_id'
readonly=True
string='Files'
action_save_onboarding_storage_step(self)
action_storage_migrate(self)
active
Boolean
default=True
help='The active field allows you to hide the tag without removing it.'
category_id
Many2one → dms.category
comodel_name='dms.category'
context="{'dms_category_show_path': True}"
ondelete='set null'
string='Category'
color
Integer
default=10
string='Color Index'
count_directories
Integer
compute='_compute_count_directories'
string='Count Directories'
count_files
Integer
compute='_compute_count_files'
string='Count Files'
directory_ids
Many2many → dms.directory
column1='tid'
column2='did'
comodel_name='dms.directory'
readonly=True
relation='dms_directory_tag_rel'
string='Directories'
file_ids
Many2many → dms.file
column1='tid'
column2='fid'
comodel_name='dms.file'
readonly=True
relation='dms_file_tag_rel'
string='Files'
name
Char
required=True
string='Name'
translate=True
No public methods.
No new fields.
Public methods (2)create(self, vals_list)
write(self, vals)
No new fields.
Public methods (0)No public methods.
documents_onboarding_directory_state
Selection
default='not_done'
selection=[('not_done', 'Not done'), ('just_done', 'Just done'), ('done', 'Done'), ('closed', 'Closed')]
string='Documents Onboarding Directory State'
documents_onboarding_file_state
Selection
default='not_done'
selection=[('not_done', 'Not done'), ('just_done', 'Just done'), ('done', 'Done'), ('closed', 'Closed')]
string='Documents Onboarding File State'
documents_onboarding_state
Selection
default='not_done'
selection=[('not_done', 'Not done'), ('just_done', 'Just done'), ('done', 'Done'), ('closed', 'Closed')]
string='Documents Onboarding State'
documents_onboarding_storage_state
Selection
default='not_done'
selection=[('not_done', 'Not done'), ('just_done', 'Just done'), ('done', 'Done'), ('closed', 'Closed')]
string='Documents Onboarding Storage State'
action_close_documents_onboarding(self)
action_open_documents_onboarding_directory(self)
action_open_documents_onboarding_file(self)
action_open_documents_onboarding_storage(self)
get_and_update_documents_onboarding_state(self)
get_documents_steps_states_names(self)
documents_binary_max_size
Integer
config_parameter='dms.binary_max_size'
help='Defines the maximum upload size in MB. Default (25MB)'
string='Size'
documents_forbidden_extensions
Char
config_parameter='dms.forbidden_extensions'
help="Defines a list of forbidden file extensions. (Example: 'exe,msi')"
string='Extensions'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/dms |
| GIT | |
| GIT | https://github.com/OCA/dms.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/dms/tree/12.0/dms |
| VERSION | |
| VERSION | 8.0.3 |
| CATEGORY | |
| CATEGORY | Document Management |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA), MuK IT |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA), MuK IT |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, GitHub, Jairo Llopis, Enric Tobella, OCA Transbot, Víctor Martínez, João Marques, oca-travis, Weblate, OCA-git-bot, Alessandro Uffreduzzi, Eduardo de Miguel |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/dms |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:29:14 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/social: - mail_preview_base OCA/web: - web_drop_target - web_view_searchpanel odoo/odoo: - web - base - document - base_setup - bus - web_tour - http_routing - portal |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
dms_assets | ir.ui.view | qweb | Inherits web.assets_backend |
dms_frontend_demo |
dms_frontend_demo | ir.ui.view | qweb | Inherits web.assets_frontend |
document_onboarding_directory_panel |
document_onboarding_panel | ir.ui.view | qweb | New |
document_onboarding_file_panel |
document_onboarding_panel | ir.ui.view | qweb | New |
onboarding_directory_step |
onboarding_directory_step | ir.ui.view | qweb | New |
onboarding_file_step |
onboarding_file_step | ir.ui.view | qweb | New |
onboarding_storage_step |
onboarding_storage_step | ir.ui.view | qweb | New |
portal_my_dms |
My DMS | ir.ui.view | qweb | New |
portal_my_dms_breadcrumbs |
My DMS: Breadcrumbs | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
portal_my_home_dms |
Portal My Home : dms entries | ir.ui.view | qweb | Inherits portal.portal_my_home |
res_config_settings_view_form |
res.config.settings.view.form.inherit.dms | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
search_dms_directory |
dms_directory.search | dms.directory | search | New |
search_dms_file |
dms_file.search | dms.file | search | New |
search_dms_file_migration |
dms_file.search | dms.file | search | New |
view_dms_access_groups_form |
dms_access.group.form | dms.access.group | form | New |
view_dms_access_groups_tree |
dms_access_groups.tree | dms.access.group | tree | New |
view_dms_category_form |
dms_category.form | dms.category | form | New |
view_dms_category_search |
dms_category.search | dms.category | search | New |
view_dms_category_tree |
dms_category.tree | dms.category | tree | New |
view_dms_directory_form |
dms_directory.form | dms.directory | form | New |
view_dms_directory_kanban |
dms_directory.kanban | dms.directory | kanban | New |
view_dms_directory_manager_form |
dms_directory.form | dms.directory | field | Inherits view_dms_directory_form |
view_dms_directory_new_form |
dms_directory.form | dms.directory | xpath | Inherits view_dms_directory_form |
view_dms_directory_tree |
dms_directory.tree | dms.directory | tree | New |
view_dms_file_form |
dms_file.form | dms.file | form | New |
view_dms_file_graph |
dms_file.graph | dms.file | graph | New |
view_dms_file_kanban |
dms_file.kanban | dms.file | kanban | New |
view_dms_file_manager_form |
dms_file.form | dms.file | field | Inherits view_dms_file_form |
view_dms_file_migration_tree |
dms_file.tree | dms.file | tree | New |
view_dms_file_new_form |
dms_file.form | dms.file | xpath | Inherits view_dms_file_form |
view_dms_file_pivot |
dms_file.pivot | dms.file | pivot | New |
view_dms_file_tree |
dms_file.tree | dms.file | tree | New |
view_dms_storage_form |
dms_storage.form | dms.storage | form | New |
view_dms_storage_new_form |
dms_storage.form | dms.storage | xpath | Inherits view_dms_storage_form |
view_dms_storage_search |
dms_storage.search | dms.storage | search | New |
view_dms_storage_tree |
dms_storage.tree | dms.storage | tree | New |
view_dms_tag_form |
dms_tag.form | dms.tag | form | New |
view_dms_tag_kanban |
dms_tag.kanban | dms.tag | kanban | New |
view_dms_tag_search |
dms_tag.search | dms.tag | search | New |
view_dms_tag_tree |
dms_tag.tree | dms.tag | tree | New |
No new fields.
Public methods (1)unlink(self)
child_group_ids
One2many → dms.access.group
comodel_name='dms.access.group'
inverse_name='parent_group_id'
string='Child Groups'
complete_directory_ids
Many2many → dms.directory
auto_join=True
column1='gid'
column2='aid'
comodel_name='dms.directory'
readonly=True
relation='dms_directory_complete_groups_rel'
string='Complete directories'
count_directories
Integer
compute='_compute_count_directories'
string='Count Directories'
count_users
Integer
compute='_compute_users'
store=True
string='Users'
directory_ids
Many2many → dms.directory
auto_join=True
column1='gid'
column2='aid'
comodel_name='dms.directory'
readonly=True
relation='dms_directory_groups_rel'
string='Directories'
explicit_user_ids
Many2many → res.users
column1='gid'
column2='uid'
comodel_name='res.users'
relation='dms_access_group_explicit_users_rel'
string='Explicit Users'
group_ids
Many2many → res.groups
column1='gid'
column2='rid'
comodel_name='res.groups'
relation='dms_access_group_groups_rel'
string='Groups'
name
Char
required=True
string='Group Name'
translate=True
parent_group_id
Many2one → dms.access.group
comodel_name='dms.access.group'
index=True
ondelete='cascade'
string='Parent Group'
parent_path
Char
index=True
string='Parent Path'
perm_create
Boolean
string='Create Access'
perm_inclusive_create
Boolean
compute='_compute_inclusive_permissions'
store=True
string='Inherited Create Access'
perm_inclusive_unlink
Boolean
compute='_compute_inclusive_permissions'
store=True
string='Inherited Unlink Access'
perm_inclusive_write
Boolean
compute='_compute_inclusive_permissions'
store=True
string='Inherited Write Access'
perm_unlink
Boolean
string='Unlink Access'
perm_write
Boolean
string='Write Access'
users
Many2many → res.users
auto_join=True
column1='gid'
column2='uid'
comodel_name='res.users'
compute='_compute_users'
relation='dms_access_group_users_rel'
store=True
string='Group Users'
default_get(self, fields_list)
active
Boolean
default=True
help='The active field allows you to hide the category without removing it.'
child_category_ids
One2many → dms.category
comodel_name='dms.category'
inverse_name='parent_id'
string='Child Categories'
complete_name
Char
compute='_compute_complete_name'
store=True
count_categories
Integer
compute='_compute_count_categories'
string='Count Subcategories'
count_directories
Integer
compute='_compute_count_directories'
string='Count Directories'
count_files
Integer
compute='_compute_count_files'
string='Count Files'
count_tags
Integer
compute='_compute_count_tags'
string='Count Tags'
directory_ids
One2many → dms.directory
comodel_name='dms.directory'
inverse_name='category_id'
readonly=True
string='Directories'
file_ids
One2many → dms.file
comodel_name='dms.file'
inverse_name='category_id'
readonly=True
string='Files'
name
Char
required=True
string='Name'
translate=True
parent_id
Many2one → dms.category
comodel_name='dms.category'
index=True
ondelete='cascade'
string='Parent Category'
parent_path
Char
index=True
string='Parent Path'
tag_ids
One2many → dms.tag
comodel_name='dms.tag'
inverse_name='category_id'
string='Tags'
No public methods.
alias_process
Selection
default='directory'
help=' Define how incoming emails are processed:\n\n - Single Files: The email gets attached to the directory and\n all attachments are created as files.\n\n - Subdirectory: A new subdirectory is created for each email\n and the mail is attached to this subdirectory. The attachments\n are created as files of the subdirectory.\n '
required=True
selection=[('files', 'Single Files'), ('directory', 'Subdirectory')]
string='Unpack Emails as'
allowed_model_ids
Many2many → ir.model
comodel_name='ir.model'
compute='_compute_allowed_model_ids'
store=False
category_id
Many2one → dms.category
comodel_name='dms.category'
context="{'dms_category_show_path': True}"
string='Category'
child_directory_ids
One2many → dms.directory
auto_join=False
comodel_name='dms.directory'
copy=False
inverse_name='parent_id'
string='Subdirectories'
color
Integer
default=0
string='Color'
company_id
Many2one → res.company
comodel_name='res.company'
index=True
readonly=True
related='storage_id.company_id'
store=True
string='Company'
complete_group_ids
Many2many → dms.access.group
column1='aid'
column2='gid'
comodel_name='dms.access.group'
compute='_compute_groups'
compute_sudo=True
readonly=True
relation='dms_directory_complete_groups_rel'
store=True
string='Complete Groups'
complete_name
Char
compute='_compute_complete_name'
store=True
args: 'Complete Name'
count_directories
Integer
compute='_compute_count_directories'
string='Count Subdirectories Title'
count_directories_title
Char
compute='_compute_count_directories'
string='Count Subdirectories'
count_elements
Integer
compute='_compute_count_elements'
string='Count Elements'
count_files
Integer
compute='_compute_count_files'
string='Count Files Title'
count_files_title
Char
compute='_compute_count_files'
string='Count Files'
count_total_directories
Integer
compute='_compute_count_total_directories'
string='Total Subdirectories'
count_total_elements
Integer
compute='_compute_count_total_elements'
string='Total Elements'
count_total_files
Integer
compute='_compute_count_total_files'
string='Total Files'
file_ids
One2many → dms.file
auto_join=False
comodel_name='dms.file'
copy=False
inverse_name='directory_id'
string='Files'
group_ids
Many2many → dms.access.group
column1='aid'
column2='gid'
comodel_name='dms.access.group'
relation='dms_directory_groups_rel'
string='Groups'
inherit_group_ids
Boolean
default=True
string='Inherit Groups'
is_hidden
Boolean
readonly=True
related='storage_id.is_hidden'
string='Storage is Hidden'
is_root_directory
Boolean
default=False
help='Indicates if the directory is a root directory.\n A root directory has a settings object, while a directory with a set\n parent inherits the settings form its parent.'
string='Is Root Directory'
model_id
Many2one → ir.model
comodel_name='ir.model'
compute='_compute_model_id'
domain="[('id', 'in', allowed_model_ids)]"
inverse='_inverse_model_id'
store=True
string='Model'
name
Char
index=True
required=True
string='Name'
parent_id
Many2one → dms.directory
comodel_name='dms.directory'
copy=True
domain="[('permission_create', '=', True)]"
index=True
ondelete='restrict'
prefetch=False
string='Parent Directory'
parent_path
Char
index=True
root_storage_id
Many2one → dms.storage
comodel_name='dms.storage'
copy=True
ondelete='restrict'
string='Root Storage'
size
Integer
compute='_compute_size'
string='Size'
starred
Boolean
compute='_compute_starred'
inverse='_inverse_starred'
search='_search_starred'
string='Starred'
storage_id
Many2one → dms.storage
auto_join=True
comodel_name='dms.storage'
compute='_compute_storage'
compute_sudo=True
ondelete='restrict'
store=True
string='Storage'
storage_id_inherit_access_from_parent_record
Boolean
auto_join=True
related='storage_id.inherit_access_from_parent_record'
related_sudo=True
store=True
storage_id_save_type
Selection
prefetch=False
readonly=True
related='storage_id.save_type'
related_sudo=True
store=False
tag_ids
Many2many → dms.tag
column1='did'
column2='tid'
comodel_name='dms.tag'
domain="[\n '|', ['category_id', '=', False],\n ['category_id', 'child_of', category_id]]\n "
relation='dms_directory_tag_rel'
string='Tags'
user_star_ids
Many2many → res.users
column1='did'
column2='uid'
comodel_name='res.users'
relation='dms_directory_star_rel'
string='Stars'
action_save_onboarding_directory_step(self)
check_access_token(self, access_token=False)
copy(self, default=None)
create(self, vals_list)
get_alias_model_name(self, vals)
get_alias_values(self)
message_new(self, msg_dict, custom_values=None)
message_update(self, msg_dict, update_vals=None)
toggle_starred(self)
unlink(self)
write(self, vals)
active
Boolean
default=True
help='If a file is set to archived, it is not displayed, but still exists.'
string='Archived'
attachment_id
Many2one → ir.attachment
comodel_name='ir.attachment'
invisible=True
ondelete='cascade'
prefetch=False
string='Attachment File'
category_id
Many2one → dms.category
comodel_name='dms.category'
context="{'dms_category_show_path': True}"
string='Category'
checksum
Char
index=True
readonly=True
size=40
string='Checksum/SHA1'
color
Integer
default=0
string='Color'
company_id
Many2one → res.company
comodel_name='res.company'
index=True
readonly=True
related='storage_id.company_id'
store=True
string='Company'
content
Binary
attachment=False
compute='_compute_content'
inverse='_inverse_content'
prefetch=False
required=True
store=False
string='Content'
content_binary
Binary
attachment=False
invisible=True
prefetch=False
string='Content Binary'
content_file
Binary
attachment=True
invisible=True
prefetch=False
string='Content File'
directory_id
Many2one → dms.directory
auto_join=True
comodel_name='dms.directory'
context="{'dms_directory_show_path': True}"
domain="[('permission_create', '=', True)]"
index=True
ondelete='restrict'
required=True
string='Directory'
extension
Char
compute='_compute_extension'
readonly=True
store=True
string='Extension'
is_hidden
Boolean
readonly=True
related='storage_id.is_hidden'
string='Storage is Hidden'
is_lock_editor
Boolean
compute='_compute_locked'
string='Editor'
is_locked
Boolean
compute='_compute_locked'
string='Locked'
locked_by
Many2one → res.users
comodel_name='res.users'
string='Locked by'
migration
Char
compute='_compute_migration'
compute_sudo=True
prefetch=False
readonly=True
string='Migration Status'
name
Char
index=True
required=True
string='Filename'
path_json
Text
compute='_compute_path'
readonly=True
store=False
string='Path Json'
path_names
Char
compute='_compute_path'
readonly=True
store=False
string='Path Names'
require_migration
Boolean
compute='_compute_migration'
compute_sudo=True
store=True
res_mimetype
Char
compute='_compute_mimetype'
readonly=True
store=True
string='Type'
save_type
Char
compute='_compute_save_type'
invisible=True
prefetch=False
string='Current Save Type'
size
Integer
readonly=True
string='Size'
storage_id
Many2one
prefetch=False
readonly=True
related='directory_id.storage_id'
store=True
storage_id_save_type
Selection
related='storage_id.save_type'
store=False
tag_ids
Many2many → dms.tag
column1='fid'
column2='tid'
comodel_name='dms.tag'
relation='dms_file_tag_rel'
string='Tags'
action_migrate(self, logging=True)
action_save_onboarding_file_step(self)
check_access_rule(self, operation)
check_access_token(self, access_token=False)
copy(self, default=None)
create(self, vals_list)
get_human_size(self)
lock(self)
search_panel_select_multi_range(self, field_name, **kwargs)
search_panel_select_range(self, field_name, **kwargs)
unlock(self)
custom_thumbnail
Binary
attachment=False
string='Custom Thumbnail'
custom_thumbnail_medium
Binary
attachment=True
compute='_compute_custom_thumbnail'
store=True
args: 'Medium Custom Thumbnail'
custom_thumbnail_small
Binary
attachment=True
compute='_compute_custom_thumbnail'
store=True
args: 'Small Custom Thumbnail'
icon_url
Char
compute='_compute_icon_url'
args: 'Icon URL'
thumbnail
Binary
compute='_compute_thumbnail'
string='Thumbnail'
thumbnail_medium
Binary
compute='_compute_thumbnail'
args: 'Medium Thumbnail'
thumbnail_small
Binary
compute='_compute_thumbnail'
args: 'Small Thumbnail'
No public methods.
permission_create
Boolean
compute='_compute_permissions'
search='_search_permission_create'
string='Create Access'
permission_read
Boolean
compute='_compute_permissions'
search='_search_permission_read'
string='Read Access'
permission_unlink
Boolean
compute='_compute_permissions'
search='_search_permission_unlink'
string='Delete Access'
permission_write
Boolean
compute='_compute_permissions'
search='_search_permission_write'
string='Write Access'
record_ref
Reference
compute='_compute_record_ref'
selection=[]
string='Record Referenced'
res_id
Integer
index=True
string='Linked attachments record ID'
res_model
Char
index=True
string='Linked attachments model'
No public methods.
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
help='If set, directories and files will only be available for the selected company.'
string='Company'
count_storage_directories
Integer
compute='_compute_count_storage_directories'
string='Count Directories'
count_storage_files
Integer
compute='_compute_count_storage_files'
string='Count Files'
include_message_attachments
Boolean
default=False
help='Indicate if directories and files auto-create in mail composition process too'
string='Create files from message attachments'
inherit_access_from_parent_record
Boolean
default=False
help='Indicate if directories and files access work only with related model access (for example, if some directories are related with any sale, only users with read access to these sale can acess)'
string='Inherit permissions from related record'
is_hidden
Boolean
default=False
help='Indicates if directories and files are hidden by default.'
string='Storage is Hidden'
model_ids
Many2many → ir.model
string='Linked Models'
args: 'ir.model'
name
Char
required=True
string='Name'
root_directory_ids
One2many → dms.directory
auto_join=False
comodel_name='dms.directory'
copy=False
inverse_name='root_storage_id'
readonly=False
string='Root Directories'
save_type
Selection
default='database'
help='The save type is used to determine how a file is saved by the\n system. If you change this setting, you can migrate existing files\n manually by triggering the action.'
required=True
selection=[('database', _('Database')), ('file', _('Filestore')), ('attachment', _('Attachment'))]
string='Save Type'
storage_directory_ids
One2many → dms.directory
auto_join=False
comodel_name='dms.directory'
copy=False
inverse_name='storage_id'
readonly=True
string='Directories'
storage_file_ids
One2many → dms.file
auto_join=False
comodel_name='dms.file'
copy=False
inverse_name='storage_id'
readonly=True
string='Files'
action_save_onboarding_storage_step(self)
action_storage_migrate(self)
active
Boolean
default=True
help='The active field allows you to hide the tag without removing it.'
category_id
Many2one → dms.category
comodel_name='dms.category'
context="{'dms_category_show_path': True}"
ondelete='set null'
string='Category'
color
Integer
default=10
string='Color Index'
count_directories
Integer
compute='_compute_count_directories'
string='Count Directories'
count_files
Integer
compute='_compute_count_files'
string='Count Files'
directory_ids
Many2many → dms.directory
column1='tid'
column2='did'
comodel_name='dms.directory'
readonly=True
relation='dms_directory_tag_rel'
string='Directories'
file_ids
Many2many → dms.file
column1='tid'
column2='fid'
comodel_name='dms.file'
readonly=True
relation='dms_file_tag_rel'
string='Files'
name
Char
required=True
string='Name'
translate=True
No public methods.
No new fields.
Public methods (2)create(self, vals_list)
write(self, vals)
No new fields.
Public methods (0)No public methods.
documents_onboarding_directory_state
Selection
default='not_done'
selection=[('not_done', 'Not done'), ('just_done', 'Just done'), ('done', 'Done'), ('closed', 'Closed')]
string='Documents Onboarding Directory State'
documents_onboarding_file_state
Selection
default='not_done'
selection=[('not_done', 'Not done'), ('just_done', 'Just done'), ('done', 'Done'), ('closed', 'Closed')]
string='Documents Onboarding File State'
documents_onboarding_state
Selection
default='not_done'
selection=[('not_done', 'Not done'), ('just_done', 'Just done'), ('done', 'Done'), ('closed', 'Closed')]
string='Documents Onboarding State'
documents_onboarding_storage_state
Selection
default='not_done'
selection=[('not_done', 'Not done'), ('just_done', 'Just done'), ('done', 'Done'), ('closed', 'Closed')]
string='Documents Onboarding Storage State'
action_close_documents_onboarding(self)
action_open_documents_onboarding_directory(self)
action_open_documents_onboarding_file(self)
action_open_documents_onboarding_storage(self)
get_and_update_documents_onboarding_state(self)
get_documents_steps_states_names(self)
documents_binary_max_size
Integer
config_parameter='dms.binary_max_size'
help='Defines the maximum upload size in MB. Default (25MB)'
string='Size'
documents_forbidden_extensions
Char
config_parameter='dms.forbidden_extensions'
help="Defines a list of forbidden file extensions. (Example: 'exe,msi')"
string='Extensions'
No public methods.
| STATUS | |
|---|---|
| STATUS | Open migration PR - not merged yet for this version |
| REPOSITORY | |
| REPOSITORY | OCA/dms |
| PULL REQUEST | |
| PULL REQUEST | [19.0][MIG] dms: Migration to 19.0 (#475) |