56 lines
2.3 KiB
Python
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)
|