Passed
Push — master ( 5e306e...e48f16 )
by Jordi
04:40
created

ReferenceDefinitionsView.__init__()   B

Complexity

Conditions 1

Size

Total Lines 42
Code Lines 37

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 37
dl 0
loc 42
rs 8.9919
c 0
b 0
f 0
cc 1
nop 3
1
# -*- coding: utf-8 -*-
2
#
3
# This file is part of SENAITE.CORE
4
#
5
# Copyright 2018 by it's authors.
6
# Some rights reserved. See LICENSE.rst, CONTRIBUTORS.rst.
7
8
from Products.ATContentTypes.content import schemata
9
from Products.Archetypes import atapi
10
from bika.lims import bikaMessageFactory as _
11
from bika.lims.browser.bika_listing import BikaListingView
12
from bika.lims.config import PROJECTNAME
13
from bika.lims.interfaces import IReferenceDefinitions
14
from bika.lims.permissions import AddReferenceDefinition
15
from plone.app.folder.folder import ATFolder, ATFolderSchema
16
from zope.interface.declarations import implements
17
18
19
class ReferenceDefinitionsView(BikaListingView):
20
    def __init__(self, context, request):
21
        super(ReferenceDefinitionsView, self).__init__(context, request)
22
        self.catalog = 'bika_setup_catalog'
23
        self.contentFilter = {'portal_type': 'ReferenceDefinition',
24
                              'sort_on': 'sortable_title'}
25
        self.context_actions = {_('Add'):
26
                                {'url': 'createObject?type_name=ReferenceDefinition',
27
                                 'permission': AddReferenceDefinition,
28
                                 'icon': '++resource++bika.lims.images/add.png'}}
29
        self.icon = self.portal_url + "/++resource++bika.lims.images/referencedefinition_big.png"
30
        self.title = self.context.translate(_("Reference Definitions"))
31
        self.description = self.context.translate(_(
32
            "ReferenceDefinition represents a Reference Definition "
33
            "or sample type used for quality control testing"))
34
35
        self.show_select_row = False
36
        self.show_select_column = True
37
        self.pagesize = 25
38
39
        self.columns = {
40
            'Title': {'title': _('Title'),
41
                      'index': 'sortable_title'},
42
            'Description': {'title': _('Description'),
43
                            'index': 'description',
44
                            'toggle': True},
45
        }
46
47
        self.review_states = [
48
            {'id':'default',
49
             'title': _('Active'),
50
             'contentFilter': {'is_active': True},
51
             'transitions': [{'id':'deactivate'}, ],
52
             'columns': ['Title', 'Description']},
53
            {'id':'inactive',
54
             'title': _('Inactive'),
55
             'contentFilter': {'is_active': False},
56
             'transitions': [{'id':'activate'}, ],
57
             'columns': ['Title', 'Description']},
58
            {'id':'all',
59
             'title': _('All'),
60
             'contentFilter':{},
61
             'columns': ['Title', 'Description']},
62
        ]
63
64
    def before_render(self):
65
        """Before template render hook
66
        """
67
        # Don't allow any context actions
68
        self.request.set("disable_border", 1)
69
70
    def folderitems(self):
71
        items = BikaListingView.folderitems(self)
72
        for x in range(len(items)):
73
            if not items[x].has_key('obj'): continue
74
            obj = items[x]['obj']
75
            items[x]['Description'] = obj.Description()
76
            items[x]['replace']['Title'] = "<a href='%s'>%s</a>" % \
77
                 (items[x]['url'], items[x]['Title'])
78
79
            after_icons = ''
80
            if obj.getBlank():
81
                after_icons += "<img src='++resource++bika.lims.images/blank.png' title='Blank'>"
82
            if obj.getHazardous():
83
                after_icons += "<img src='++resource++bika.lims.images/hazardous.png' title='Hazardous'>"
84
            items[x]['replace']['Title'] = "<a href='%s'>%s</a>&nbsp;%s" % \
85
                 (items[x]['url'], items[x]['Title'], after_icons)
86
87
        return items
88
89
90
schema = ATFolderSchema.copy()
91
92
93
class ReferenceDefinitions(ATFolder):
94
    implements(IReferenceDefinitions)
95
    displayContentsTab = False
96
    schema = schema
97
98
schemata.finalizeATCTSchema(schema, folderish = True, moveDiscussion = False)
99
atapi.registerType(ReferenceDefinitions, PROJECTNAME)
100