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
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
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