def resolve_all_person_tags(self, info, **kwargs): user = info.context.user if kwargs.get('multi_filter'): if not kwargs.get('library_id'): raise GraphQLError('library_id not supplied!') filters = kwargs.get('multi_filter').split(' ') photos_list = filter_photos_queryset( filters, Photo.objects.filter(library__users__user=user), kwargs.get('library_id')) # Sort Person tags but keep "Unknown..." ones at the end return Tag.objects.filter( library__users__user=user, library__id=kwargs.get('library_id'), type='F', photo_tags__photo__in=photos_list).annotate(unknown_tag=Case( When(name__startswith='Unknown', then=Value(1)), default=Value(2), output_field=IntegerField(), )).order_by("-unknown_tag", Lower('name')).distinct() # Sort Person tags but keep "Unknown..." ones at the end return Tag.objects.filter( library__users__user=user, library__id=kwargs.get('library_id'), type='F', photo_tags__deleted=False).annotate(unknown_tag=Case( When(name__startswith='Unknown', then=Value(1)), default=Value(2), output_field=IntegerField(), )).order_by("-unknown_tag", Lower('name')).distinct()
def multi_filter_filter(self, queryset, name, value): if 'library_id:' not in value: raise GraphQLError('library_id not supplied!') filters = value.split(' ') filters = self.sanitize(filters) # filters = map(self.customize, filters) photos_list = filter_photos_queryset(filters, queryset) return photos_list
def resolve_all_generic_tags(self, info, **kwargs): user = info.context.user if kwargs.get('multi_filter'): if not kwargs.get('library_id'): raise GraphQLError('library_id not supplied!') filters = kwargs.get('multi_filter').split(' ') photos_list = filter_photos_queryset( filters, Photo.objects.filter(library__users__user=user), kwargs.get('library_id')) return Tag.objects.filter(library__users__user=user, library__id=kwargs.get('library_id'), type='G', photo_tags__photo__in=photos_list).distinct() return Tag.objects.filter(library__users__user=user, library__id=kwargs.get('library_id'), type='G')
def resolve_all_style_tags(self, info, **kwargs): user = info.context.user if kwargs.get('multi_filter'): filters = kwargs.get('multi_filter').split(' ') photos_list = filter_photos_queryset( filters, Photo.objects.filter(library__users__user=user), kwargs.get('library_id')) return Tag.objects.filter( library__users__user=user, library__id=kwargs.get('library_id'), type='S', photo_tags__photo__in=photos_list).distinct() return Tag.objects.filter(library__users__user=user, library__id=kwargs.get('library_id'), type='S')
def multi_filter_filter(self, queryset, name, value): filters = value.split(' ') filters = self.sanitize(filters) # filters = map(self.customize, filters) photos_list = filter_photos_queryset(filters, queryset) return photos_list