Source code for pylero.project
# -*- coding: utf8 -*-
from __future__ import absolute_import, division, print_function
from __future__ import unicode_literals
import copy
from pylero.base_polarion import BasePolarion
from pylero.category import Category
from pylero.custom_field_type import CustomFieldType
from pylero.text import Text
from pylero.user import User
from pylero.exceptions import PyleroLibException
from pylero.tests_configuration import TestsConfiguration
[docs]class Project(BasePolarion):
"""Object to handle the Polarion WSDL tns4:Project class
Attributes:
active (boolean)
description (Text)
finish (date)
lead (User)
location (str)
lock_work_records_date (date)
name (string)
project_group (ProjectGroup)
project_id (string)
start (date)
tracker_prefix (string)
"""
_cls_suds_map = {"active": "active",
"description":
{"field_name": "description",
"cls": Text},
"finish": "finish",
"lead":
{"field_name": "lead",
"cls": User},
"location": "location",
"lock_work_records_date": "lockWorkRecordsDate",
"name": "name",
"project_group":
{"field_name": "projectGroupURI",
# cls is defined in _fix_circular_refs function
"named_arg": "uri",
"sync_field": "uri"},
"project_id": "id",
"start": "start",
"tracker_prefix": "trackerPrefix",
"uri": "_uri",
"_unresolved": "_unresolved"}
_id_field = "project_id"
_obj_client = "project_client"
_obj_struct = "tns2:Project"
URI_STRUCT = "subterra:data-service:objects:/default/" \
"%(id)s${%(obj)s}%(id)s"
[docs] @classmethod
def get_context_roles(cls, location):
"""Returns the context (project) roles for the given location.
Args:
location: the location of the context (project/project group)
Returns:
list of roles
References:
Security.getContextRoles
"""
return cls.session.security_client.service.getContextRoles(location)
[docs] def __init__(self, project_id=None, suds_object=None, location=None,
uri=None):
"""Project constructor.
Args:
project_id: when given, the object is populated with the
Project data.
suds_object: PolarionProject object. When given, the object
is populated by object data.
location: the location of the Polarion project
uri: the uri that references the PolarionProject
Notes:
Either project_id or suds_object or location or uri can be passed
in or none of them. If none of the identifying parameters are
passed in an empty object is created
References:
Project.getProject
Project.getProjectatLocation
Project.getProjectByURI
"""
super(self.__class__, self).__init__(project_id, suds_object)
if project_id:
# if the project is already cached, make a deep copy and use it.
# If not, get it and add it to the cache.
project = self._cache["projects"].get(project_id)
if project:
self._suds_object = copy.deepcopy(project)
else:
self._suds_object = self.session.project_client.service. \
getProject(project_id)
self._cache["projects"][project_id] = self._suds_object
elif location:
self._suds_object = self.session.project_client.service. \
getProjectatLocation(location)
elif uri:
self._suds_object = self.session.project_client.service. \
getProjectByURI(uri)
if project_id or location or uri:
if getattr(self._suds_object, "_unresolvable", True):
raise PyleroLibException("The Project was not found.")
def _fix_circular_refs(self):
# The module references ProjectGroup, which references this class
# This is not allowed, so the self reference is defined here.
from pylero.project_group import ProjectGroup
self._cls_suds_map["project_group"]["cls"] = ProjectGroup
[docs] def get_categories(self):
""" method get_categories retrieves a list of Category objects
Args:
None
Returns:
list of Category objects
References:
Tracker.getCategories
"""
self._verify_obj()
categories = []
for suds_cat in self.session.tracker_client.service. \
getCategories(self.project_id):
categories.append(Category(suds_object=suds_cat))
return categories
[docs] def get_defined_custom_field_keys(self, work_item_type_id):
"""Gets all custom field keys defined for a workitem type in a project.
Args:
work_item_type_id: the workitem type ID.
Returns:
list of key for the project for the given workitem type
References:
Tracker.getDefinedCustomFieldkeys
"""
self._verify_obj()
return self.session.tracker_client.service.getDefinedCustomFieldkeys(
self.project_id, work_item_type_id)
[docs] def get_defined_custom_field_type(self, work_item_type_id, key):
"""method get_defined_custom_field_type gets custom field definition
of a work item type for the given key.
Args:
work_item_type_id: the workitem type ID.
key: The key of the custom field
Returns:
CustomFieldType object
References:
Tracker.getDefinedCustomFieldType
"""
self._verify_obj()
suds_custom = self.session.tracker_client.service. \
getDefinedCustomFieldType(self._uri, work_item_type_id, key)
return CustomFieldType(suds_object=suds_custom)
[docs] def get_defined_custom_field_types(self, work_item_type_id):
"""method get_defined_custom_field_type gets custom field definition
of a work item type all keys.
Args:
work_item_type_id: the workitem type ID.
Returns:
list of CustomFieldType object
References:
Tracker.getDefinedCustomFieldType
"""
self._verify_obj()
customs = []
for suds_custom in self.session.tracker_client.service. \
getDefinedCustomFieldType(self._uri, work_item_type_id):
customs.append(CustomFieldType(suds_object=suds_custom))
return customs
[docs] def get_document_locations(self):
"""Gets the document locations (e.g. LiveDocuments) for a project.
Args:
None
Returns:
list of (string) document locations
References:
Tracker.getDocumentLocations
"""
self._verify_obj()
return self.session.tracker_client.service. \
getDocumentLocations(self.project_id)
[docs] def get_document_spaces(self):
"""Gets the Module/Document spaces for the project.
Args:
None
Returns:
list of (string) document spaces
References:
Tracker.getDocumentSpaces
"""
self._verify_obj()
return self.session.tracker_client.service. \
getDocumentSpaces(self.project_id)
[docs] def get_project_users(self):
"""Gets users of the project
Args:
None
Returns:
list of u.User objects
References:
Project.getProjectUsers
"""
self._verify_obj()
users = []
for suds_user in self.session.project_client.service. \
getProjectUsers(self.project_id):
users.append(User(suds_object=suds_user))
[docs] def get_test_steps_configuration(self):
"""method get_test_steps_configuration retrieves a list of the
Test Steps configuration for the project
Args:
None
Returns:
list of configuration of the Test Steps custom field.
References:
TestManagement.getTestStepsConfiguration
"""
self._verify_obj()
config_steps = self.session.test_management_client.service. \
getTestStepsConfiguration(self.project_id)
return config_steps[0]
[docs] def get_tests_configuration(self):
"""method get_tests_configuration retrieves the test management
configuration for the project
Args:
None
Returns:
TestsConfiguration object
References:
TestManagement.getTestsConfiguration
"""
self._verify_obj()
tests_config = self.session.test_management_client.service. \
getTestsConfiguration(self.project_id)
return TestsConfiguration(suds_object=tests_config)
[docs] def get_wiki_spaces(self):
"""Returns Wiki spaces from current project
Args:
None
Returns:
Array of string
References:
Tracker.getWikiSpaces
"""
self._verify_obj()
return self.session.tracker_client.service.getWikiSpaces(
self.project_id)