1
|
|
|
# -*- coding: utf-8 -*- |
2
|
|
|
|
3
|
|
|
from bika.lims import api |
4
|
|
|
from bika.lims.api.security import check_permission |
5
|
|
|
from bika.lims.permissions import FieldEditAnalysisRemarks |
6
|
|
|
from pologgb.lims import logger |
7
|
|
|
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile |
8
|
|
|
from senaite.core.browser.modals import Modal |
9
|
|
|
|
10
|
|
|
|
11
|
|
|
class SetAnalysisRemarksModal(Modal): |
12
|
|
|
template = ViewPageTemplateFile("templates/set_analysis_remarks.pt") |
13
|
|
|
|
14
|
|
|
def __init__(self, context, request): |
15
|
|
|
super(SetAnalysisRemarksModal, self).__init__(context, request) |
16
|
|
|
|
17
|
|
|
def __call__(self): |
18
|
|
|
if self.request.form.get("submitted", False): |
19
|
|
|
self.handle_submit(REQUEST=self.request) |
20
|
|
|
return self.template() |
21
|
|
|
|
22
|
|
|
def handle_submit(self, REQUEST=None): |
23
|
|
|
analyses = map(api.get_object_by_uid, self.uids) |
24
|
|
|
remarks = self.request.get("remarks") |
25
|
|
|
overwrite = self.request.form.get("overwrite") or False |
26
|
|
|
for analysis in analyses: |
27
|
|
|
self.set_remarks_for(analysis, remarks, overwrite=overwrite) |
28
|
|
|
|
29
|
|
|
def set_remarks_for(self, analysis, remarks, overwrite=True): |
30
|
|
|
"""Set the remarks on the given analyses |
31
|
|
|
""" |
32
|
|
|
logger.info("Set remarks for analysis '{}' to {}" |
33
|
|
|
.format(analysis.getId(), remarks)) |
34
|
|
|
if not check_permission(FieldEditAnalysisRemarks, analysis): |
35
|
|
|
logger.warn("Not allowed to set remarks for {}" |
36
|
|
|
.format(analysis.getId())) |
37
|
|
|
return False |
38
|
|
|
if not overwrite: |
39
|
|
|
remarks = "{}\n{}".format(analysis.getRemarks(), remarks) |
40
|
|
|
analysis.setRemarks(api.safe_unicode(remarks)) |
41
|
|
|
analysis.reindexObject() |
42
|
|
|
return True |
43
|
|
|
|