Skip to content
Snippets Groups Projects
Verified Commit 5fee42f8 authored by Eliot Berriot's avatar Eliot Berriot
Browse files

Can now filter by import status on library tracks

parent 183bbe3a
No related branches found
No related tags found
No related merge requests found
...@@ -24,6 +24,7 @@ class LibraryFilter(django_filters.FilterSet): ...@@ -24,6 +24,7 @@ class LibraryFilter(django_filters.FilterSet):
class LibraryTrackFilter(django_filters.FilterSet): class LibraryTrackFilter(django_filters.FilterSet):
library = django_filters.CharFilter('library__uuid') library = django_filters.CharFilter('library__uuid')
imported = django_filters.CharFilter(method='filter_imported')
q = fields.SearchFilter(search_fields=[ q = fields.SearchFilter(search_fields=[
'artist_name', 'artist_name',
'title', 'title',
...@@ -31,6 +32,13 @@ class LibraryTrackFilter(django_filters.FilterSet): ...@@ -31,6 +32,13 @@ class LibraryTrackFilter(django_filters.FilterSet):
'library__actor__domain', 'library__actor__domain',
]) ])
def filter_imported(self, queryset, field_name, value):
if value.lower() in ['true', '1', 'yes']:
queryset = queryset.filter(local_track_file__isnull=False)
elif value.lower() in ['false', '0', 'no']:
queryset = queryset.filter(local_track_file__isnull=True)
return queryset
class Meta: class Meta:
model = models.LibraryTrack model = models.LibraryTrack
fields = { fields = {
......
<template> <template>
<div> <div>
<div class="ui inline form"> <div class="ui inline form">
<input type="text" v-model="search" placeholder="Search by title, artist, domain..." /> <div class="fields">
<div class="ui field">
<label>{{ $t('Search') }}</label>
<input type="text" v-model="search" placeholder="Search by title, artist, domain..." />
</div>
<div class="ui field">
<label>{{ $t('Import status') }}</label>
<select class="ui dropdown" v-model="importedFilter">
<option :value="null">{{ $t('Any') }}</option>
<option :value="true">{{ $t('Imported') }}</option>
<option :value="false">{{ $t('Not imported') }}</option>
</select>
</div>
</div>
</div> </div>
<table v-if="result" class="ui compact very basic single line unstackable table"> <table v-if="result" class="ui compact very basic single line unstackable table">
<thead> <thead>
...@@ -112,7 +125,8 @@ export default { ...@@ -112,7 +125,8 @@ export default {
search: '', search: '',
checked: {}, checked: {},
isImporting: false, isImporting: false,
importBatch: null importBatch: null,
importedFilter: null
} }
}, },
created () { created () {
...@@ -125,6 +139,9 @@ export default { ...@@ -125,6 +139,9 @@ export default {
'page_size': this.paginateBy, 'page_size': this.paginateBy,
'q': this.search 'q': this.search
}, this.filters) }, this.filters)
if (this.importedFilter !== null) {
params.imported = this.importedFilter
}
let self = this let self = this
self.isLoading = true self.isLoading = true
self.checked = [] self.checked = []
...@@ -181,6 +198,9 @@ export default { ...@@ -181,6 +198,9 @@ export default {
}, },
page () { page () {
this.fetchData() this.fetchData()
},
importedFilter () {
this.fetchData()
} }
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment