Esempio n. 1
0
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)
Esempio n. 2
0
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)