Completed
Pull Request — 2.x (#1785)
by Jordi
07:06 queued 01:40
created

senaite.core.browser.viewlets.add_samples   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 6
eloc 27
dl 0
loc 41
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A AddSamplesViewlet.available() 0 8 3
A AddSamplesViewlet.get_sample_add_number() 0 5 1
A AddSamplesViewlet.get_add_url() 0 4 1
A AddSamplesViewlet.theme_view() 0 6 1
1
# -*- coding: utf-8 -*-
2
3
from bika.lims import api
4
from bika.lims.permissions import AddAnalysisRequest
5
from plone.app.layout.viewlets import ViewletBase
6
from plone.memoize.instance import memoize
7
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
8
from senaite.core.interfaces import ISamplesView
9
from zope.component import getMultiAdapter
10
11
12
class AddSamplesViewlet(ViewletBase):
13
    index = ViewPageTemplateFile("templates/add_samples.pt")
14
15
    def available(self):
16
        """Check if the add samples viewlet should be rendered
17
        """
18
        if not ISamplesView.providedBy(self.view):
19
            return False
20
        if not api.security.check_permission(AddAnalysisRequest, self.context):
21
            return False
22
        return True
23
24
    def get_sample_add_number(self):
25
        """Return the default number of Samples to add
26
        """
27
        setup = api.get_setup()
28
        return setup.getDefaultNumberOfARsToAdd() or 1
29
30
    def get_add_url(self):
31
        """Return the sample add URL
32
        """
33
        return "{}/ar_add".format(api.get_url(self.context))
34
35
    @property
36
    @memoize
37
    def theme_view(self):
38
        return getMultiAdapter(
39
            (self.context, self.request),
40
            name="senaite_theme")
41