Example #1
0
    def test_collection_musicbrainz_error(self):
        formdata = "collectionid=55412ad8-1b15-44d5-8dc8-eeeeeeeeeeee&path=%2Fpath%2Fpath"
        data = QueryDict(formdata)
        f = forms.AddCollectionForm(data)

        response = requests.Response()
        response.status_code = 404
        mockerror = mock.Mock(
            side_effect=forms.compmusic.musicbrainz.requests.HTTPError(
                response=response))
        forms.compmusic.musicbrainz.get_collection_name = mockerror

        self.assertFalse(f.is_valid())
        self.assertTrue("__all__" in f.errors)
        errormsg = "Cannot find this collection on MusicBrainz"
        self.assertEqual(errormsg, f.errors["__all__"][0])

        response = requests.Response()
        response.status_code = 503
        mockerror = mock.Mock(
            side_effect=forms.compmusic.musicbrainz.requests.HTTPError(
                response=response))
        forms.compmusic.musicbrainz.get_collection_name = mockerror
        f = forms.AddCollectionForm(data)
        self.assertFalse(f.is_valid())
        self.assertTrue("__all__" in f.errors)
        errormsg = "Error connecting to MusicBrainz, try again shortly"
        self.assertEqual(errormsg, f.errors["__all__"][0])
Example #2
0
File: views.py Project: darad/dunya
def index(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']
            checkers = []
            for i in form.cleaned_data['checkers']:
                checkers.append(
                    get_object_or_404(models.CompletenessChecker, pk=int(i)))
            new_collection = models.Collection.objects.create(
                id=coll_id,
                name=coll_name,
                root_directory=path,
                do_import=do_import)
            new_collection.checkers.add(*checkers)
            docserver.models.Collection.objects.get_or_create(
                collectionid=coll_id,
                defaults={
                    "root_directory": path,
                    "name": coll_name
                })
            jobs.load_and_import_collection(new_collection.id)
            return HttpResponseRedirect(reverse('dashboard-home'))
    else:
        form = forms.AddCollectionForm()

    collections = models.Collection.objects.all()
    ret = {'form': form, 'collections': collections}
    return render(request, 'dashboard/index.html', ret)
Example #3
0
    def test_collection_musicbrainz_error(self):
        formdata = "collectionid=55412ad8-1b15-44d5-8dc8-eeeeeeeeeeee&path=%2Fpath%2Fpath"
        data = QueryDict(formdata)
        f = forms.AddCollectionForm(data)

        url = "http://example.com"
        code = 404
        msg = "Not found"
        hdrs = {}
        fp = StringIO.StringIO()
        mockerror = mock.Mock(
            side_effect=forms.compmusic.musicbrainz.urllib2.HTTPError(
                url, code, msg, hdrs, fp))
        forms.compmusic.musicbrainz.get_collection_name = mockerror

        self.assertFalse(f.is_valid())
        self.assertTrue("__all__" in f.errors)
        errormsg = "Cannot find this collection on MusicBrainz"
        self.assertEqual(errormsg, f.errors["__all__"][0])

        code = 503
        mockerror = mock.Mock(
            side_effect=forms.compmusic.musicbrainz.urllib2.HTTPError(
                url, code, msg, hdrs, fp))
        forms.compmusic.musicbrainz.get_collection_name = mockerror
        f = forms.AddCollectionForm(data)
        self.assertFalse(f.is_valid())
        self.assertTrue("__all__" in f.errors)
        errormsg = "Error connecting to MusicBrainz, try again shortly"
        self.assertEqual(errormsg, f.errors["__all__"][0])
Example #4
0
    def test_no_path(self):
        pathmock = mock.Mock(return_value=False)
        forms.os.path.exists = pathmock

        formdata = "collectionid=55412ad8-1b15-44d5-8dc8-9c3cb0cf9e5d&path=%2Fsome%2Fpath"
        data = QueryDict(formdata)
        f = forms.AddCollectionForm(data)

        self.assertFalse(f.is_valid())
        self.assertTrue("path" in f.errors)
        errormsg = "This path doesn't exist"
        self.assertEqual(errormsg, f.errors["path"][0])

        # Now the first path exists but the second doesn't

        pathmock = mock.Mock(side_effect=[True, False])
        forms.os.path.exists = pathmock

        formdata = "collectionid=55412ad8-1b15-44d5-8dc8-9c3cb0cf9e5d&path=%2Fsome%2Fpath"
        data = QueryDict(formdata)
        f = forms.AddCollectionForm(data)

        self.assertFalse(f.is_valid())
        errormsg = "Path doesn't contain inner 'audio'"
        self.assertEqual(errormsg, f.errors["path"][0])
Example #5
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']
            dashboard_root = os.path.join(path, models.Collection.AUDIO_DIR)
            new_collection = models.Collection.objects.create(
                id=coll_id, name=coll_name,
                root_directory=dashboard_root, 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(new_collection.id)
            return redirect('dashboard-home')
    else:
        form = forms.AddCollectionForm()
    ret = {'form': form}
    return render(request, 'dashboard/addcollection.html', ret)
Example #6
0
    def test_collection_bad_uuid(self):
        formdata = "collectionid=5xxxxxad8-1b15-44d5-8dc8-notauuid&path=%2Fsome%2Fpath"
        data = QueryDict(formdata)
        f = forms.AddCollectionForm(data)

        self.assertFalse(f.is_valid())
        self.assertTrue("collectionid" in f.errors)
        errormsg = "Collection ID needs to be a UUID"
        self.assertEqual(errormsg, f.errors["collectionid"][0])
Example #7
0
    def test_valid_form(self):
        formdata = "collectionid=55412ad8-1b15-44d5-8dc8-9c3cb0cf9e5d&path=%2Fsome%2Fpath"
        data = QueryDict(formdata)
        f = forms.AddCollectionForm(data)

        self.assertTrue(f.is_valid())
        self.assertEqual("My collection", f.cleaned_data["collectionname"])
        self.mockname.assert_called_once_with(
            "55412ad8-1b15-44d5-8dc8-9c3cb0cf9e5d")
        calls = [mock.call("/some/path"), mock.call("/some/path/audio")]
        self.pathmock.assert_has_calls(calls)
Example #8
0
    def test_collection_exists(self):
        models.Collection.objects.create(
            pk="55412ad8-1b15-44d5-8dc8-eeeeeeeeeeee", name="test collection")
        formdata = "collectionid=55412ad8-1b15-44d5-8dc8-eeeeeeeeeeee&path=%2Fsome%2Fpath"
        data = QueryDict(formdata)
        f = forms.AddCollectionForm(data)

        self.assertFalse(f.is_valid())
        self.assertTrue("collectionid" in f.errors)
        errormsg = "A collection with this ID already exists"
        self.assertEqual(errormsg, f.errors["collectionid"][0])