Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cleanup Controlpanel Items #1727

Merged
merged 5 commits into from
Jan 7, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ Changelog
2.0.0rc3 (unreleased)
---------------------

- #1727 Cleanup Controlpanel Items
- #1726 Content rules control panel templates styled
- #1724 Purge stale metadata and indexes from analysis catalog
- #1720 Fix UnicodeDecodeError for Instrument Import Log View
Expand Down
2 changes: 0 additions & 2 deletions src/bika/lims/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,6 @@ def initialize(context):
from bika.lims.content.containertype import ContainerType # noqa
from bika.lims.content.department import Department # noqa
from bika.lims.content.duplicateanalysis import DuplicateAnalysis # noqa
from bika.lims.content.identifiertype import IdentifierType # noqa
from bika.lims.content.instrument import Instrument # noqa
from bika.lims.content.instrumentcalibration import InstrumentCalibration # noqa
from bika.lims.content.instrumentcertification import InstrumentCertification # noqa
Expand Down Expand Up @@ -149,7 +148,6 @@ def initialize(context):
from bika.lims.controlpanel.bika_containers import Containers # noqa
from bika.lims.controlpanel.bika_containertypes import ContainerTypes # noqa
from bika.lims.controlpanel.bika_departments import Departments # noqa
from bika.lims.controlpanel.bika_identifiertypes import IdentifierTypes # noqa
from bika.lims.controlpanel.bika_instrumentlocations import InstrumentLocations # noqa
from bika.lims.controlpanel.bika_instruments import Instruments # noqa
from bika.lims.controlpanel.bika_instrumenttypes import InstrumentTypes # noqa
Expand Down
4 changes: 2 additions & 2 deletions src/bika/lims/controlpanel/bika_analysiscategories.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,7 @@ def __init__(self, context, request):
}),
("SortKey", {
"title": _("Sort Key"),
"attr": "getSortKey",
"sortable": False
"sortable": True
}),
))

Expand Down Expand Up @@ -125,6 +124,7 @@ def folderitem(self, obj, item, index):

item["replace"]["Title"] = get_link(url, value=title)
item["Description"] = description
item["SortKey"] = obj.getSortKey()

department = obj.getDepartment()
if department:
Expand Down
23 changes: 13 additions & 10 deletions src/bika/lims/controlpanel/bika_analysisservices.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,7 @@
# Some rights reserved, see README and LICENSE.

import collections
from senaite.core.interfaces import IHideActionsMenu
from transaction import savepoint

from Products.ATContentTypes.content.schemata import finalizeATCTSchema
from Products.Archetypes import atapi
from Products.CMFCore.utils import getToolByName
from Products.CMFPlone.utils import _createObjectByType
from Products.CMFPlone.utils import safe_unicode
from Products.Five.browser import BrowserView
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
from bika.lims import api
from bika.lims import bikaMessageFactory as _
from bika.lims.browser.bika_listing import BikaListingView
Expand All @@ -45,6 +36,15 @@
from plone.app.folder.folder import ATFolder
from plone.app.folder.folder import ATFolderSchema
from plone.app.layout.globals.interfaces import IViewView
from Products.Archetypes import atapi
from Products.ATContentTypes.content.schemata import finalizeATCTSchema
from Products.CMFCore.utils import getToolByName
from Products.CMFPlone.utils import _createObjectByType
from Products.CMFPlone.utils import safe_unicode
from Products.Five.browser import BrowserView
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
from senaite.core.interfaces import IHideActionsMenu
from transaction import savepoint
from zope.i18n.locales import locales
from zope.interface.declarations import implements

Expand Down Expand Up @@ -249,7 +249,6 @@ def __init__(self, context, request):
"sortable": False}),
("SortKey", {
"title": _("Sort Key"),
"attr": "getSortKey",
"sortable": False}),
))

Expand Down Expand Up @@ -396,6 +395,10 @@ def folderitem(self, obj, item, index):
unit = obj.getUnit()
item["Unit"] = unit and format_supsub(unit) or ""

# Sort key
sortkey = obj.getSortKey()
item["SortKey"] = sortkey

# Icons
after_icons = ""
if obj.getAccredited():
Expand Down
1 change: 1 addition & 0 deletions src/bika/lims/controlpanel/bika_artemplates.py
Original file line number Diff line number Diff line change
Expand Up @@ -126,5 +126,6 @@ class ARTemplates(ATFolder):
displayContentsTab = False
schema = schema


schemata.finalizeATCTSchema(schema, folderish=True, moveDiscussion=False)
atapi.registerType(ARTemplates, PROJECTNAME)
86 changes: 54 additions & 32 deletions src/bika/lims/controlpanel/bika_batchlabels.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,18 @@
# Copyright 2018-2020 by it's authors.
# Some rights reserved, see README and LICENSE.

from Products.ATContentTypes.content import schemata
from Products.Archetypes import atapi
from bika.lims import api
import collections

from bika.lims import bikaMessageFactory as _
from bika.lims.browser.bika_listing import BikaListingView
from bika.lims.config import PROJECTNAME
from bika.lims.interfaces import IBatchLabels
from bika.lims.permissions import AddBatchLabel
from bika.lims.utils import get_link
from plone.app.folder.folder import ATFolder, ATFolderSchema
from plone.app.folder.folder import ATFolder
from plone.app.folder.folder import ATFolderSchema
from Products.Archetypes import atapi
from Products.ATContentTypes.content import schemata
from senaite.core.interfaces import IHideActionsMenu
from zope.interface.declarations import implements

Expand All @@ -36,52 +38,72 @@ class BatchLabelsView(BikaListingView):

def __init__(self, context, request):
super(BatchLabelsView, self).__init__(context, request)
self.catalog = 'bika_setup_catalog'
self.contentFilter = {'portal_type': 'BatchLabel',
'sort_on': 'sortable_title'}
self.context_actions = {_('Add'):
{'url': 'createObject?type_name=BatchLabel',
'permission': AddBatchLabel,
'icon': '++resource++bika.lims.images/add.png'}}

self.catalog = "bika_setup_catalog"

self.contentFilter = {
"portal_type": "BatchLabel",
"sort_on": "sortable_title",
}
self.context_actions = {
_("Add"): {
"url": "createObject?type_name=BatchLabel",
"permission": AddBatchLabel,
"icon": "++resource++bika.lims.images/add.png"}
}

self.title = self.context.translate(_("Batch Labels"))
self.icon = self.portal_url + "/++resource++bika.lims.images/batchlabel_big.png"
self.icon = "{}/{}".format(
self.portal_url,
"/++resource++bika.lims.images/batchlabel_big.png"
)
self.description = ""

self.show_select_row = False
self.show_select_column = True
self.pagesize = 25

self.columns = {
'Title': {'title': _('Label'),
'index':'sortable_title'},
}
self.columns = collections.OrderedDict((
("Title", {
"title": _("Label"),
"index": "sortable_title"}),
))

self.review_states = [
{'id':'default',
'title': _('Active'),
'contentFilter': {'is_active': True},
'transitions': [{'id':'deactivate'}, ],
'columns': ['Title']},
{'id':'inactive',
'title': _('Inactive'),
'contentFilter': {'is_active': False},
'transitions': [{'id':'activate'}, ],
'columns': ['Title']},
{'id':'all',
'title': _('All'),
'contentFilter':{},
'columns': ['Title']},
{
"id": "default",
"title": _("Active"),
"contentFilter": {"is_active": True},
"transitions": [{"id": "deactivate"}, ],
"columns": self.columns.keys(),
}, {
"id": "inactive",
"title": _("Inactive"),
"contentFilter": {'is_active': False},
"transitions": [{"id": "activate"}, ],
"columns": self.columns.keys(),
}, {
"id": "all",
"title": _("All"),
"contentFilter": {},
"columns": self.columns.keys(),
},
]

def folderitem(self, obj, item, index):
item["replace"]["Title"] = get_link(item["url"], item["Title"])
item["replace"]["Title"] = get_link(
item["url"], item["Title"])
return item


schema = ATFolderSchema.copy()


class BatchLabels(ATFolder):
implements(IBatchLabels, IHideActionsMenu)
displayContentsTab = False
schema = schema

schemata.finalizeATCTSchema(schema, folderish = True, moveDiscussion = False)

schemata.finalizeATCTSchema(schema, folderish=True, moveDiscussion=False)
atapi.registerType(BatchLabels, PROJECTNAME)
125 changes: 70 additions & 55 deletions src/bika/lims/controlpanel/bika_containers.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
# Copyright 2018-2020 by it's authors.
# Some rights reserved, see README and LICENSE.

from Products.ATContentTypes.content import schemata
from Products.Archetypes import atapi
import collections

from bika.lims import api
from bika.lims import bikaMessageFactory as _
from bika.lims.browser.bika_listing import BikaListingView
Expand All @@ -28,7 +28,10 @@
from bika.lims.permissions import AddContainer
from bika.lims.utils import get_link
from bika.lims.utils import get_link_for
from plone.app.folder.folder import ATFolder, ATFolderSchema
from plone.app.folder.folder import ATFolder
from plone.app.folder.folder import ATFolderSchema
from Products.Archetypes import atapi
from Products.ATContentTypes.content import schemata
from senaite.core.interfaces import IHideActionsMenu
from zope.interface.declarations import implements

Expand All @@ -37,63 +40,71 @@ class ContainersView(BikaListingView):

def __init__(self, context, request):
super(ContainersView, self).__init__(context, request)
self.catalog = 'bika_setup_catalog'
self.contentFilter = {'portal_type': 'Container',
'sort_on': 'sortable_title'}
self.context_actions = {_('Add'):
{'url': 'createObject?type_name=Container',
'permission': AddContainer,
'icon': '++resource++bika.lims.images/add.png'}}

self.catalog = "bika_setup_catalog"

self.contentFilter = {
"portal_type": "Container",
"sort_on": "sortable_title",
}

self.context_actions = {
_("Add"): {
"url": "createObject?type_name=Container",
"permission": AddContainer,
"icon": "++resource++bika.lims.images/add.png"}
}

self.title = self.context.translate(_("Containers"))
self.icon = self.portal_url + "/++resource++bika.lims.images/container_big.png"
self.icon = "{}/{}".format(
self.portal_url,
"/++resource++bika.lims.images/container_big.png"
)

self.description = ""

self.show_select_row = False
self.show_select_column = True
self.pagesize = 25

self.columns = {
'Title': {'title': _('Container'),
'index':'sortable_title'},
'Description': {'title': _('Description'),
'index': 'description',
'toggle': True},
'ContainerType': {'title': _('Container Type'),
'toggle': True},
'Capacity': {'title': _('Capacity'),
'toggle': True},
'Pre-preserved': {'title': _('Pre-preserved'),
'toggle': True},
}
self.columns = collections.OrderedDict((
("Title", {
"title": _("Container"),
"index": "sortable_title"}),
("Description", {
"title": _("Description"),
"index": "description",
"toggle": True}),
("ContainerType", {
"title": _("Container Type"),
"toggle": True}),
("Capacity", {
"title": _("Capacity"),
"toggle": True}),
("Pre-preserved", {
"title": _("Pre-preserved"),
"toggle": True}),
))

self.review_states = [ # leave these titles and ids alone
{'id':'default',
'contentFilter': {'is_active': True},
'title': _('Active'),
'transitions': [{'id':'deactivate'}, ],
'columns': ['Title',
'Description',
'ContainerType',
'Capacity',
'Pre-preserved']},
{'id':'inactive',
'title': _('Inactive'),
'contentFilter': {'is_active': False},
'transitions': [{'id':'activate'}, ],
'columns': ['Title',
'Description',
'ContainerType',
'Capacity',
'Pre-preserved']},
{'id':'all',
'title': _('All'),
'contentFilter':{},
'transitions': [],
'columns': ['Title',
'Description',
'ContainerType',
'Capacity',
'Pre-preserved']},
self.review_states = [
{
"id": "default",
"title": _("Active"),
"contentFilter": {"is_active": True},
"transitions": [{"id": "deactivate"}, ],
"columns": self.columns.keys(),
}, {
"id": "inactive",
"title": _("Inactive"),
"contentFilter": {'is_active': False},
"transitions": [{"id": "activate"}, ],
"columns": self.columns.keys(),
}, {
"id": "all",
"title": _("All"),
"contentFilter": {},
"columns": self.columns.keys(),
},
]

def folderitem(self, obj, item, index):
Expand All @@ -108,19 +119,23 @@ def folderitem(self, obj, item, index):
})

if obj.getPrePreserved():
item["after"]["Pre-preserved"] = get_link_for(obj.getPreservation())
item["after"]["Pre-preserved"] = get_link_for(
obj.getPreservation())

item["replace"]["Title"] = get_link(
item["url"], item["Title"])

item["replace"]["Title"] = get_link(item["url"], item["Title"])
return item


schema = ATFolderSchema.copy()


class Containers(ATFolder):
implements(IContainers, IHideActionsMenu)
displayContentsTab = False
schema = schema


schemata.finalizeATCTSchema(schema, folderish = True, moveDiscussion = False)
schemata.finalizeATCTSchema(schema, folderish=True, moveDiscussion=False)
atapi.registerType(Containers, PROJECTNAME)
Loading