lims_analysis_sheet: analysis sheet: add permissions to view data

This commit is contained in:
Adrián Bernardi 2021-07-21 19:11:45 -03:00
parent 5e4334bed0
commit 1329ec53e3
5 changed files with 56 additions and 4 deletions

View file

@ -2,6 +2,10 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:lims.analysis_sheet,button_view_data_available:"
msgid "Button view data available"
msgstr "Botón ver datos disponible"
msgctxt "field:lims.analysis_sheet,compilation:"
msgid "Compilation"
msgstr "Compilación"
@ -754,6 +758,10 @@ msgctxt "model:lims.template.analysis_sheet.analysis.expression,name:"
msgid "Special Formula"
msgstr "Fórmula especial"
msgctxt "model:res.group,name:group_analysis_sheet_view_data"
msgid "Lims Analysis Sheet View Data"
msgstr "Lims Hoja de análisis Ver datos"
msgctxt "report:lims.analysis_sheet.report:"
msgid "("
msgstr "("

View file

@ -419,6 +419,8 @@ class AnalysisSheet(Workflow, ModelSQL, ModelView):
depends=['state'])
interface = fields.Function(fields.Many2One('lims.interface', 'Interface'),
'get_interface')
button_view_data_available = fields.Function(fields.Boolean(
'Button view data available'), 'get_button_view_data_available')
@classmethod
def __setup__(cls):
@ -443,12 +445,12 @@ class AnalysisSheet(Workflow, ModelSQL, ModelView):
'depends': ['state'],
},
'view_data': {
'invisible': Eval('state') == 'draft',
'depends': ['state'],
'invisible': ~Eval('button_view_data_available'),
'depends': ['button_view_data_available'],
},
'view_grouped_data': {
'invisible': Eval('state') == 'draft',
'depends': ['state'],
'invisible': ~Eval('button_view_data_available'),
'depends': ['button_view_data_available'],
},
'validate_': {
'invisible': Eval('state') != 'active',
@ -602,6 +604,29 @@ class AnalysisSheet(Workflow, ModelSQL, ModelView):
def get_interface(self, name):
return self.compilation.interface.id
@classmethod
def get_button_view_data_available(cls, sheets, name):
ModelData = Pool().get('ir.model.data')
user_id = Transaction().user
group_id = ModelData.get_id('lims_analysis_sheet',
'group_analysis_sheet_view_data')
allowed_group = (group_id in Transaction().context.get('groups'))
result = {}
for s in sheets:
if s.state == 'draft':
result[s.id] = False
continue
if allowed_group:
result[s.id] = True
continue
if s.professional.party.lims_user.id == user_id:
result[s.id] = True
continue
result[s.id] = False
return result
@classmethod
def create(cls, vlist):
vlist = cls.set_number(vlist)

View file

@ -4,6 +4,7 @@ depends:
lims
lims_interface
xml:
user.xml
configuration.xml
sheet.xml
interface.xml

View file

@ -0,0 +1,17 @@
<?xml version="1.0"?>
<tryton>
<data>
<!-- Groups -->
<record model="res.group" id="group_analysis_sheet_view_data">
<field name="name">Lims Analysis Sheet View Data</field>
</record>
<record model="res.user-res.group"
id="user_admin_group_analysis_sheet_view_data">
<field name="user" ref="res.user_admin"/>
<field name="group" ref="group_analysis_sheet_view_data"/>
</record>
</data>
</tryton>

View file

@ -33,6 +33,7 @@
<field name="confirmed_by"/>
<label name="confirmed_date"/>
<field name="confirmed_date"/>
<field name="button_view_data_available" colspan="4" invisible="1"/>
<button name="view_data" string="View data" colspan="4"/>
<label name="view"/>
<field name="view" widget="selection"/>