Пример #1
0
    def getTagGroup(self, tagGroupKey, isKey=True):
        metadata = WebServiceObject()
        
        try:
            if isKey:
                group = TagGroup.objects.get(pk__exact=tagGroupKey)
            else:
                group = tagGroupKey
        except (ObjectDoesNotExist, ValueError):
            raise Errors.INVALID_TAG_GROUP_KEY
                
        # initialize tagging APIs
        tagGroupAPI = TagGroupAPI(self.user, self.fields)
        tagAPI = TagAPI(user=self.user, unlimited=True)
        geneLinkAPI = GeneLinkAPI(user=self.user, unlimited=True)
        
        group = tagGroupAPI.getTagGroup(group, isKey=False).getObject()

        tags = tagAPI.getTagsByTagGroup(group['id']).getObject()
        for tag in tags:
            geneLinks = geneLinkAPI.getGeneLinksByTag(tag['id']).getObject()
            tag['geneLinks'] = geneLinks
        group['tags'] = tags
            
        metadata.setObject(group)
    
        return metadata
Пример #2
0
    def getImageMetadataByOrganism(self, organismId):
        metadata = WebServiceObject()
        
        if self.user and self.user.is_authenticated():
            allowedImages = Picture.objects.filter(isPrivate=False) | Picture.objects.filter(user__exact=self.user, isPrivate=True) 
        else:
            allowedImages = Picture.objects.filter(isPrivate=False)
        
        defTags = []    
        
        if self.unlimited:
            for orgId in organismId:
                defTags.append(PictureDefinitionTag.objects.filter(organism__exact=orgId, picture__in=allowedImages)[self.offset:])
        else:
            for orgId in organismId:
                defTags.append(PictureDefinitionTag.objects.filter(organism__exact=orgId, picture__in=allowedImages)[self.offset:self.offset + self.limit])   

        closedSet = {}
        imageMetadata = {}
        imageFields = set(['id' , 'url', 'uploadDate', 'description', 'uploadedBy'])
        if self.fields:
            newImageFields = imageFields.intersection(set(self.fields))
            if newImageFields:
                imageFields = newImageFields
        imageMetadataAPI = ImageMetadataAPI(self.user, imageFields)
        
        for orgTags in defTags:
            for tag in orgTags:
                if not closedSet.has_key(tag.picture.pk):
                    closedSet[tag.picture.pk] = imageMetadataAPI.getImageMetadata(tag.picture, False).getObject()
                if imageMetadata.has_key(tag.organism.pk):
                    imageMetadata[tag.organism.pk]['images'].append(closedSet[tag.picture.pk])
                else:
                    imageMetadata[tag.organism.pk] = {
                        'images' : [closedSet[tag.picture.pk]],
                        'organism' : {
                            'id' : tag.organism.pk,
                            'commonName' : tag.organism.common_name,
                            'abbreviation' : tag.organism.abbreviation,
                            'genus' : tag.organism.genus,
                            'species' : tag.organism.species      
                        }
                    }
                    
        if len(imageMetadata) != len(organismId):
            for orgId in organismId:
                if not imageMetadata.has_key(orgId):
                    imageMetadata[orgId] = []
        
        metadata.setObject(LimitDict(self.fields, imageMetadata))
        
        return metadata
Пример #3
0
    def getImageMetadataByOrganism(self, organismId):
        metadata = WebServiceObject()

        if self.user and self.user.is_authenticated():
            allowedImages = Picture.objects.filter(
                isPrivate=False) | Picture.objects.filter(
                    user__exact=self.user, isPrivate=True)
        else:
            allowedImages = Picture.objects.filter(isPrivate=False)

        defTags = []

        if self.unlimited:
            for orgId in organismId:
                defTags.append(
                    PictureDefinitionTag.objects.filter(
                        organism__exact=orgId,
                        picture__in=allowedImages)[self.offset:])
        else:
            for orgId in organismId:
                defTags.append(
                    PictureDefinitionTag.objects.filter(
                        organism__exact=orgId,
                        picture__in=allowedImages)[self.offset:self.offset +
                                                   self.limit])

        closedSet = {}
        imageMetadata = {}
        imageFields = set(
            ['id', 'url', 'uploadDate', 'description', 'uploadedBy'])
        if self.fields:
            newImageFields = imageFields.intersection(set(self.fields))
            if newImageFields:
                imageFields = newImageFields
        imageMetadataAPI = ImageMetadataAPI(self.user, imageFields)

        for orgTags in defTags:
            for tag in orgTags:
                if not closedSet.has_key(tag.picture.pk):
                    closedSet[
                        tag.picture.pk] = imageMetadataAPI.getImageMetadata(
                            tag.picture, False).getObject()
                if imageMetadata.has_key(tag.organism.pk):
                    imageMetadata[tag.organism.pk]['images'].append(
                        closedSet[tag.picture.pk])
                else:
                    imageMetadata[tag.organism.pk] = {
                        'images': [closedSet[tag.picture.pk]],
                        'organism': {
                            'id': tag.organism.pk,
                            'commonName': tag.organism.common_name,
                            'abbreviation': tag.organism.abbreviation,
                            'genus': tag.organism.genus,
                            'species': tag.organism.species
                        }
                    }

        if len(imageMetadata) != len(organismId):
            for orgId in organismId:
                if not imageMetadata.has_key(orgId):
                    imageMetadata[orgId] = []

        metadata.setObject(LimitDict(self.fields, imageMetadata))

        return metadata