def collection(request, uuid): c = get_object_or_404( models.Collection.objects.prefetch_related('collectionstate_set'), collectionid=uuid) forcescan = request.GET.get("forcescan") if forcescan is not None: jobs.force_load_and_import_collection(str(c.collectionid)) return redirect('dashboard-collection', uuid) order = request.GET.get("order") releases = models.MusicbrainzRelease.objects.filter(collection=c) \ .prefetch_related('musicbrainzreleasestate_set') \ .prefetch_related('collectiondirectory_set') \ .prefetch_related('collectiondirectory_set__collectionfile_set') if order == "date": def sortkey(rel): return rel.get_current_state().state_date elif order == "unmatched": def sortkey(rel): return False if rel.matched_paths( ) else True, rel.get_current_state().state_date elif order == "ignored": def sortkey(rel): return rel.ignore else: def sortkey(rel): return rel.id releases = sorted(releases, key=sortkey, reverse=True) numtotal = len(releases) numfinished = 0 nummatched = 0 for r in releases: if r.all_files(): nummatched += 1 if r.get_current_state().state == 'f': numfinished += 1 folders = models.CollectionDirectory.objects.filter( collection=c, musicbrainzrelease__isnull=True) log = models.CollectionLogMessage.objects.filter( collection=c).order_by('-datetime') ret = { "collection": c, "log_messages": log, "releases": releases, "folders": folders, "numtotal": numtotal, "numfinished": numfinished, "nummatched": nummatched } return render(request, 'dashboard/collection.html', ret)
def addcollection(request): if request.method == 'POST': form = forms.AddCollectionForm(request.POST) if form.is_valid(): # Import collection id coll_id = form.cleaned_data['collectionid'] path = form.cleaned_data['path'] coll_name = form.cleaned_data['collectionname'] do_import = form.cleaned_data['do_import'] new_collection = models.Collection.objects.create( collectionid=coll_id, name=coll_name, root_directory=path, do_import=do_import) docserver_coll, created = docserver.models.Collection.objects.get_or_create( collectionid=coll_id, defaults={ "root_directory": path, "name": coll_name }) if not created: docserver_coll.root_directory = path docserver_coll.name = coll_name docserver_coll.save() data_coll, created = data.models.Collection.objects.get_or_create( collectionid=coll_id, defaults={"name": coll_name}) if not created: data_coll.name = coll_name data_coll.save() jobs.force_load_and_import_collection( str(new_collection.collectionid)) return redirect('dashboard-home') else: form = forms.AddCollectionForm() ret = {'form': form} return render(request, 'dashboard/addcollection.html', ret)