Verified Commit 5fee42f8 authored by Eliot Berriot's avatar Eliot Berriot
Browse files

Can now filter by import status on library tracks

parent 183bbe3a
...@@ -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()
} }
} }
} }
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment