Beispiel #1
0
    def findPdmLinkDrawing(self, drawingNumber):
        """
        Find PDMLink drawing object by name.

        :param drawingNumber: (str) The full number of the PDMLink drawing
        :return: PDMLink Drawing
        :raises ExternalServiceError: Could occur during the PDM Link search
        :raises ObjectNotFound: The requested drawing was not found
        :raises InvalidArgument: The drawing name is not complete
        """
        def findNameInList():
            if self.__isDrawingListEmpty(drawingList) is False:
                for drawing in drawingList:
                    curDrawingNumber = drawing.properties[self.__getNumberIndex(drawing)].value
                    if curDrawingNumber.lower() == drawingNumber.lower():
                        return drawing
            return None

        # Getting a single PDM Link requires the full name with extension.
        PdmLinkDrawing.checkDrawingNumber(drawingNumber)
        drawingList = self.findPdmLinkDrawings(drawingNumber)

        # Find the requested drawing from results
        reqDrawing = findNameInList()

        # List did not contain requested drawing
        if not reqDrawing:
            # Try searching without extension
            drawingList = self.__searchWithoutExtension(drawingNumber)
            reqDrawing = findNameInList()
            if not reqDrawing:
                raise ObjectNotFound('PDMLink drawing %s could not be found.' % drawingNumber)

        return reqDrawing
 def findUserInfoByUsername(self, session, username):
     try:
         dbUserInfo = session.query(UserInfo).filter(
             UserInfo.username == username).one()
         return dbUserInfo
     except NoResultFound as ex:
         raise ObjectNotFound('User %s does not exist.' % (username))
 def getPropertyValueById(self, session, id):
     try:
         self.logger.debug('Retrieving property value id %s' % id)
         dbPropertyValue = self.findPropertyValueById(session, id)
         return dbPropertyValue
     except NoResultFound, ex:
         raise ObjectNotFound('Property value id %s does not exist.' % (id))
Beispiel #4
0
 def findPropertyValueById(self, session, id):
     try:
         dbPropertyValue = session.query(PropertyValue).filter(
             PropertyValue.id == id).one()
         return dbPropertyValue
     except NoResultFound, ex:
         raise ObjectNotFound('Property value id %s does not exist.' % (id))
Beispiel #5
0
    def getItemsWithPropertyTypeName(self,
                                     session,
                                     propertyTypeName,
                                     itemDomainName=None,
                                     itemDerivedFromItemId=None,
                                     propertyValueMatch=None):
        entityDisplayName = self._getEntityDisplayName(Item)
        try:
            query = session.query(Item)\
                .join(ItemElement.parentItem)\
                .join(ItemElementProperty)\
                .join(PropertyValue)\
                .join(PropertyType)\
                .filter(PropertyType.name == propertyTypeName)

            if itemDerivedFromItemId is not None:
                query = query.filter(
                    Item.derived_from_item_id == itemDerivedFromItemId)

            if propertyValueMatch is not None:
                query = query.filter(PropertyValue.value == propertyValueMatch)

            if itemDomainName is not None:
                query = query.join(Domain)
                query = query.filter(Domain.name == itemDomainName)

            dbItems = query.all()
            return dbItems

        except NoResultFound, ex:
            raise ObjectNotFound("No %ss with property type %s found." %
                                 (entityDisplayName, propertyTypeName))
 def findUserGroupByName(self, session, name):
     try:
         dbUserGroup = session.query(UserGroup).filter(
             UserGroup.name == name).one()
         return dbUserGroup
     except NoResultFound as ex:
         raise ObjectNotFound('User group %s does not exist.' % (name))
Beispiel #7
0
    def __findRelatedDrawings(self, drawingNumberBase):
        """
        See getRelatedDrawingSearchResults
        """
        if drawingNumberBase is None:
            raise InvalidRequest(
                'drawingNumber or drawing number base must be provided')

        # Check if something with extension was given
        splitPattern = drawingNumberBase.split('.')
        if splitPattern.__len__() > 1:
            # raises InvalidArgument
            PdmLinkDrawing.checkDrawingNumber(drawingNumberBase)
            drawingNumberBase = splitPattern[0]

        searchPattern = drawingNumberBase + '.???'

        searchResults = self.getDrawingSearchResults(searchPattern)

        relatedDrawings = []

        for searchResult in searchResults:
            if searchResult['number'].split(
                    '.')[0].lower() == drawingNumberBase.lower():
                relatedDrawings.append(searchResult)

        if relatedDrawings.__len__() == 0:
            raise ObjectNotFound("Related PDMLink drawings for '" +
                                 drawingNumberBase + "' could not be found")

        return relatedDrawings
 def findUserGroupById(self, session, id):
     try:
         dbUserGroup = session.query(UserGroup).filter(
             UserGroup.id == id).one()
         return dbUserGroup
     except NoResultFound as ex:
         raise ObjectNotFound('User group id %s does not exist.' % (id))
 def findUserInfoById(self, session, id):
     try:
         dbUserInfo = session.query(UserInfo).filter(
             UserInfo.id == id).one()
         return dbUserInfo
     except NoResultFound as ex:
         raise ObjectNotFound('User id %s does not exist.' % (id))
 def getUserGroupById(self, session, id):
     try:
         self.logger.debug('Retrieving user group id %s' % id)
         dbUserGroup = session.query(UserGroup).filter(
             UserGroup.id == id).one()
         return dbUserGroup
     except NoResultFound as ex:
         raise ObjectNotFound('User group id %s does not exist.' % (id))
Beispiel #11
0
 def findPropertyValuesByPropertyTypeId(self, session, propertyTypeId):
     try:
         dbPropertyValueList = session.query(PropertyValue).filter(
             PropertyValue.property_type_id == propertyTypeId).all()
         return dbPropertyValueList
     except NoResultFound, ex:
         raise ObjectNotFound(
             'Property value(s) with property type id %s do(es) not exists'
             % (propertyTypeId))
Beispiel #12
0
 def _findDbObjById(self, session, entityDbObject, id):
     entityDisplayName = self._getEntityDisplayName(entityDbObject)
     try:
         dbObj = session.query(entityDbObject).filter(
             entityDbObject.id == id).one()
         return dbObj
     except NoResultFound as ex:
         raise ObjectNotFound('No %s with id %s exists.' %
                              (entityDisplayName, id))
Beispiel #13
0
 def _findDbObjByName(self, session, entityDbObject, name):
     entityDisplayName = self._getEntityDisplayName(entityDbObject)
     try:
         dbObj = session.query(entityDbObject).filter(
             entityDbObject.name == name).one()
         return dbObj
     except NoResultFound as ex:
         raise ObjectNotFound('No %s with name %s exist.' %
                              (entityDisplayName, name))
Beispiel #14
0
 def getItemStatus(self, session, itemId):
     selfElement = self.getSelfElementByItemId(session, itemId)
     selfElementId = selfElement.id
     propertyValueList = self.propertyValueHandler.getPropertyValueListForItemElementId \
         (session, selfElementId, self.ITEM_STATUS_PROPERTY_TYPE_NAME)
     if (propertyValueList.__len__() == 0):
         raise ObjectNotFound("Item does not yet have a status")
     else:
         return propertyValueList[0]
Beispiel #15
0
    def getItemByQrId(self, session, qrId):
        entityDisplayName = self._getEntityDisplayName(Item)

        try:
            dbItem = session.query(Item).filter(Item.qr_id == qrId).one()
            return dbItem
        except NoResultFound, ex:
            raise ObjectNotFound('No %s with QR-Id: %s found.' %
                                 (entityDisplayName, qrId))
Beispiel #16
0
    def getItemElementsByItemId(self, session, itemId):
        entityDisplayName = self._getEntityDisplayName(ItemCategory)

        try:
            dbItemElements = session.query(ItemElement).filter(
                ItemElement.parent_item_id == itemId).all()
            return dbItemElements
        except NoResultFound, ex:
            raise ObjectNotFound('No %s with item id: %s found.' %
                                 (entityDisplayName, itemId))
Beispiel #17
0
 def getAllowedEntityTypeDomain(self, session, domain_id):
     try:
         query = session.query(AllowedEntityTypeDomain).filter(
             AllowedEntityTypeDomain.domain_id == domain_id)
         dbAllowedEntityTypeDomain = query.all()
         return dbAllowedEntityTypeDomain
     except NoResultFound, ex:
         entityDisplayName = self._getEntityDisplayName()
         raise ObjectNotFound("No %s with domain id: %s was found." %
                              (entityDisplayName, domain_id))
Beispiel #18
0
    def getItemTypeByName(self, session, name, domainId):
        entityDisplayName = self._getEntityDisplayName(ItemType)

        try:
            dbItem = session.query(ItemType).filter(ItemType.name==name)\
                .filter(ItemType.domain_id == domainId).one()
            return dbItem
        except NoResultFound, ex:
            raise ObjectNotFound('No %s with name: %s, domain id: %s exists.' %
                                 (entityDisplayName, name, domainId))
Beispiel #19
0
 def getSelfElementByItemId(self, session, itemId):
     entityDisplayName = self._getEntityDisplayName(ItemElement)
     try:
         dbItemElement = session.query(ItemElement)\
             .filter(ItemElement.parent_item_id==itemId)\
             .filter(ItemElement.name==None)\
             .filter(ItemElement.derived_from_item_element_id==None).one()
         return dbItemElement
     except NoResultFound, ex:
         raise ObjectNotFound('No self %s with item id %s exists.' %
                              (entityDisplayName, itemId))
Beispiel #20
0
 def __getItemElementPropertyFromPropertyValueId(self, session,
                                                 propertyValueId):
     entityDisplayName = self._getEntityDisplayName(ItemElementProperty)
     try:
         query = session.query(ItemElementProperty).filter(
             ItemElementProperty.property_value_id == propertyValueId)
         dbItemElementProperty = query.one()
         return dbItemElementProperty
     except NoResultFound, ex:
         raise ObjectNotFound("No %s for property value with id %s found." %
                              (entityDisplayName, propertyValueId))
Beispiel #21
0
    def getItemsDerivedFromItem(self, session, derivedItemId):
        entityDisplayName = self._getEntityDisplayName(Item)

        try:
            query = session.query(Item).join(Domain)
            query = query.filter(Item.derived_from_item_id == derivedItemId)

            dbItems = query.all()
            return dbItems
        except NoResultFound, ex:
            raise ObjectNotFound("No %ss derived from item id %s found." %
                                 (entityDisplayName, derivedItemId))
Beispiel #22
0
    def getItemsOfDomain(self, session, domainName):
        entityDisplayName = self._getEntityDisplayName(Item)
        try:
            query = session.query(Item).join(Domain)
            query = query.filter(Domain.name == domainName)

            dbItems = query.all()
            return dbItems

        except NoResultFound, ex:
            raise ObjectNotFound("No %ss with domain %s found." %
                                 (entityDisplayName, domainName))
 def getUserInfoWithPasswordByUsername(self, session, username):
     try:
         self.logger.debug('Retrieving user %s (with password)' % username)
         dbUserInfo = session.query(UserInfo).filter(
             UserInfo.username == username).one()
         dbUserGroups = session.query(UserGroup).join(UserUserGroup).filter(
             and_(UserUserGroup.user_id == dbUserInfo.id,
                  UserUserGroup.user_group_id == UserGroup.id)).all()
         dbUserInfo.userGroupList = dbUserGroups
         return dbUserInfo
     except NoResultFound as ex:
         raise ObjectNotFound('Username %s does not exist.' % (username))
Beispiel #24
0
    def getItemsOfDomainWithoutParents(self, session, domainName):
        entityDisplayName = self._getEntityDisplayName(Item)
        try:
            query = session.query(Item).join(Domain)
            query = query.filter(Domain.name == domainName)
            query = query.filter(~exists().where(
                ItemElement.contained_item_id1 == Item.id))

            dbItems = query.all()
            return dbItems

        except NoResultFound, ex:
            raise ObjectNotFound("No %ss with domain %s found." %
                                 (entityDisplayName, domainName))
 def getUserInfoById(self, session, id):
     try:
         self.logger.debug('Retrieving user id %s' % id)
         dbUserInfo = session.query(UserInfo).filter(
             UserInfo.id == id).one()
         dbUserGroups = session.query(UserGroup).join(UserUserGroup).filter(
             and_(UserUserGroup.user_id == dbUserInfo.id,
                  UserUserGroup.user_group_id == UserGroup.id)).all()
         dbUserInfo.userGroupList = dbUserGroups
         # Remove password
         del dbUserInfo.password
         return dbUserInfo
     except NoResultFound as ex:
         raise ObjectNotFound('User id %s does not exist.' % (id))
    def getPropertyValueListForItemElementId(self, session, itemElementId, propertyTypeName = None):
        entityDisplayName = self._getEntityDisplayName(PropertyValue)
        try:
            query = session.query(PropertyValue)\
                .join(ItemElementProperty)

            if propertyTypeName is not None:
                query = query.join(PropertyType).filter(PropertyType.name == propertyTypeName)

            query = query.filter(ItemElementProperty.item_element_id == itemElementId)

            dbPropertyValues = query.all()
            return dbPropertyValues
        except NoResultFound, ex:
            raise ObjectNotFound('No %s for item with id %s found.' % (entityDisplayName, id))
Beispiel #27
0
    def getDrawingImage(self, ufid):
        """
        Get a one time use authenticated link to a drawing image.

        :param ufid: (str) UFID of a particular revision of a PDMLink drawing.
        :return: CDBObject of type Image
        :raises: ObjectNotFound: if an image cannot be retrieved for a particular revision.
        """
        self.__createWindchillClients()
        listContentResults = self.windchillWs.service.ListContent(ufid)
        if len(listContentResults) > 2:
            for attrib in listContentResults[2]['properties']:
                if attrib.name == 'urlLocation':
                    return Image({'imageUrl': attrib.value})
        else:
            raise ObjectNotFound('Image for the requested ufid was not found.')
Beispiel #28
0
    def getItemByUniqueAttributes(self, session, domainId, name,
                                  itemIdentifier1, itemIdentifier2,
                                  derivedFromItemId):
        entityDisplayName = self._getEntityDisplayName(Item)

        try:
            dbItem = session.query(Item).filter(Item.domain_id==domainId)\
                .filter(Item.name==name)\
                .filter(Item.item_identifier1==itemIdentifier1)\
                .filter(Item.item_identifier2==itemIdentifier2)\
                .filter(Item.derived_from_item_id==derivedFromItemId).one()
            return dbItem
        except NoResultFound, ex:
            raise ObjectNotFound(
                'No %s with name: %s, item identifier 1: %s, item identifier 2: %s in domain id %s exists.'
                % (entityDisplayName, name, itemIdentifier1, itemIdentifier1,
                   domainId))
Beispiel #29
0
    def getPropertyValueMetadataByKey(self, session, propertyValueId,
                                      metadataKey):
        self.logger.debug(
            'Retrieving metadata for property value id %s with key %s' %
            (propertyValueId, metadataKey))

        query = session.query(PropertyMetadata)
        query = query.filter(
            PropertyMetadata.property_value_id == propertyValueId)
        query = query.filter(PropertyMetadata.metadata_key == metadataKey)

        try:
            dbPropertyMetadata = query.one()
            return dbPropertyMetadata
        except NoResultFound, ex:
            raise ObjectNotFound(
                'Metadata for property value id %s with key %s do(es) not exists'
                % (propertyValueId, metadataKey))
Beispiel #30
0
    def getLogEntriesForItemElementId(self,
                                      session,
                                      itemElementId,
                                      logLevelName=None):
        entityDisplayName = self._getEntityDisplayName(Log)

        try:
            query = session.query(Log).join(ItemElementLog)

            if logLevelName is not None:
                query = query.join(SystemLog).join(LogLevel).filter(
                    LogLevel.name == logLevelName)

            query = query.filter(
                ItemElementLog.item_element_id == itemElementId)

            dbLogs = query.all()
            return dbLogs
        except NoResultFound, ex:
            raise ObjectNotFound('No %s with item element id: %s found.' %
                                 (entityDisplayName, itemElementId))