Commit 94921f8d authored by Łukasz Nowak's avatar Łukasz Nowak

Factorise code.

parent eeec5cad
......@@ -135,6 +135,28 @@ class SlapTool(BaseTool):
# Public GET methods
####################################################
def _getComputerInformation(self, computer_id, user, full):
user_document = self.getPortalObject().portal_catalog.getResultValue(
reference=user, portal_type=['Person', 'Computer', 'Software Instance'])
user_type = user_document.getPortalType()
self.REQUEST.response.setHeader('Content-Type', 'text/xml')
slap_computer = Computer(computer_id)
parent_uid = self._getComputerUidByReference(computer_id)
slap_computer._computer_partition_list = []
if user_type in ('Computer', 'Person'):
slap_computer._software_release_list = \
self._getSoftwareReleaseValueListForComputer(computer_id, full=full)
else:
slap_computer._software_release_list = []
for computer_partition in self.getPortalObject().portal_catalog(
parent_uid=parent_uid,
validation_state="validated",
portal_type="Computer Partition"):
slap_computer._computer_partition_list.append(
self._getSlapPartitionByPackingList(computer_partition.getObject()))
return xml_marshaller.xml_marshaller.dumps(slap_computer)
security.declareProtected(Permissions.AccessContentsInformation,
'getComputerInformation')
def getComputerInformation(self, computer_id):
......@@ -144,35 +166,12 @@ class SlapTool(BaseTool):
Reuses slap library for easy marshalling.
"""
def _getComputerInformation(computer_id, user):
user_document = self.getPortalObject().portal_catalog.getResultValue(
reference=user, portal_type=['Person', 'Computer', 'Software Instance'])
user_type = user_document.getPortalType()
self.REQUEST.response.setHeader('Content-Type', 'text/xml')
slap_computer = Computer(computer_id)
parent_uid = self._getComputerUidByReference(computer_id)
slap_computer._computer_partition_list = []
if user_type == 'Computer':
slap_computer._software_release_list = \
self._getSoftwareReleaseValueListForComputer(computer_id)
else:
slap_computer._software_release_list = []
for computer_partition in self.getPortalObject().portal_catalog(
parent_uid=parent_uid,
validation_state="validated",
portal_type="Computer Partition"):
slap_computer._computer_partition_list.append(
self._getSlapPartitionByPackingList(computer_partition.getObject()))
return xml_marshaller.xml_marshaller.dumps(slap_computer)
user = self.getPortalObject().portal_membership.getAuthenticatedMember().getUserName()
self._logAccess(user, user, '#access %s' % computer_id)
return CachingMethod(_getComputerInformation,
return CachingMethod(self._getComputerInformation,
id='_getComputerInformation',
cache_factory='slap_cache_factory')(computer_id, user)
cache_factory='slap_cache_factory')(
computer_id, user, False)
security.declareProtected(Permissions.AccessContentsInformation,
'getFullComputerInformation')
......@@ -183,32 +182,12 @@ class SlapTool(BaseTool):
Reuses slap library for easy marshalling.
"""
def _getFullComputerInformation(computer_id, user):
user_document = self.getPortalObject().portal_catalog.getResultValue(
reference=user, portal_type=['Person', 'Computer', 'Software Instance'])
user_type = user_document.getPortalType()
self.REQUEST.response.setHeader('Content-Type', 'text/xml')
slap_computer = Computer(computer_id)
parent_uid = self._getComputerUidByReference(computer_id)
slap_computer._computer_partition_list = []
if user_type in ('Computer', 'Person'):
slap_computer._software_release_list = \
self._getSoftwareReleaseValueListForComputer(computer_id, full=True)
else:
slap_computer._software_release_list = []
for computer_partition in self.getPortalObject().portal_catalog(
parent_uid=parent_uid,
validation_state="validated",
portal_type="Computer Partition"):
slap_computer._computer_partition_list.append(
self._getSlapPartitionByPackingList(computer_partition.getObject()))
return xml_marshaller.xml_marshaller.dumps(slap_computer)
user = self.getPortalObject().portal_membership.getAuthenticatedMember().getUserName()
self._logAccess(user, user, '#access %s' % computer_id)
return CachingMethod(_getFullComputerInformation,
return CachingMethod(self._getComputerInformation,
id='_getFullComputerInformation',
cache_factory='slap_cache_factory')(computer_id, user)
cache_factory='slap_cache_factory')(
computer_id, user, True)
security.declareProtected(Permissions.AccessContentsInformation,
'getComputerPartitionCertificate')
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment