Files
enterprise-addons/documents/wizard/documents_sharing_access.py
T

56 lines
2.3 KiB
Python

from odoo import api, fields, models
class DocumentsShareAccess(models.TransientModel):
_name = 'documents.sharing.access'
_description = "Documents share access"
documents_sharing_id = fields.Many2one('documents.sharing', 'Documents share', ondelete='cascade')
partner_id = fields.Many2one('res.partner', ondelete='cascade')
# Rights edition
role = fields.Selection('_get_role_options', string='Role', required=True)
expiration_date = fields.Datetime('Expiration')
original_expiration_date = fields.Datetime('Original Expiration')
is_deleted = fields.Boolean()
# Additional readonly fields for displaying information
partner_is_me = fields.Boolean(string="Is me", compute="_compute_partner_is_me")
# Edition flags
has_user = fields.Boolean(compute='_compute_has_user')
has_warning_no_access = fields.Boolean(compute="_compute_has_warning_no_access")
is_on_single_document = fields.Boolean(compute="_compute_is_on_single_document")
is_readonly = fields.Boolean(related="documents_sharing_id.is_readonly")
@api.model
def _get_role_options(self):
return self.env['documents.sharing']._get_role_options()
@api.depends_context('uid')
@api.depends('partner_id')
def _compute_partner_is_me(self):
me = self.env.user.partner_id
for record in self:
record.partner_is_me = record.partner_id == me
@api.depends('documents_sharing_id.document_ids')
def _compute_is_on_single_document(self):
for record in self:
record.is_on_single_document = record.documents_sharing_id.is_single
@api.depends('partner_id.user_ids')
def _compute_has_user(self):
for record in self:
record.has_user = bool(record.partner_id.user_ids)
@api.depends('documents_sharing_id.access_via_link', 'documents_sharing_id.invite_partner_ids',
'partner_id.user_ids', 'is_deleted')
def _compute_has_warning_no_access(self):
for record in self:
record.has_warning_no_access = (
not record.documents_sharing_id.invite_partner_ids # we are modifying rights not inviting
and record.documents_sharing_id.access_via_link.endswith('none')
and not record.has_user
and not record.is_deleted)