kopia lustrzana https://dev.funkwhale.audio/funkwhale/funkwhale
				
				
				
			Merge branch '351-empty-name' into 'develop'
Resolve "Ensure artists with empty names are not accepted" Closes #351 See merge request funkwhale/funkwhale!312merge-requests/315/head
						commit
						ce5502cab7
					
				| 
						 | 
				
			
			@ -3,12 +3,19 @@ def load(model, *args, **kwargs):
 | 
			
		|||
    return importer.load(*args, **kwargs)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
EXCLUDE_VALIDATION = {"Track": ["artist"]}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Importer(object):
 | 
			
		||||
    def __init__(self, model):
 | 
			
		||||
        self.model = model
 | 
			
		||||
 | 
			
		||||
    def load(self, cleaned_data, raw_data, import_hooks):
 | 
			
		||||
        mbid = cleaned_data.pop("mbid")
 | 
			
		||||
        # let's validate data, just in case
 | 
			
		||||
        instance = self.model(**cleaned_data)
 | 
			
		||||
        exclude = EXCLUDE_VALIDATION.get(self.model.__name__, [])
 | 
			
		||||
        instance.full_clean(exclude=["mbid", "uuid"] + exclude)
 | 
			
		||||
        m = self.model.objects.update_or_create(mbid=mbid, defaults=cleaned_data)[0]
 | 
			
		||||
        for hook in import_hooks:
 | 
			
		||||
            hook(m, cleaned_data, raw_data)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,10 +1,15 @@
 | 
			
		|||
import json
 | 
			
		||||
import os
 | 
			
		||||
import pytest
 | 
			
		||||
import uuid
 | 
			
		||||
 | 
			
		||||
from django import forms
 | 
			
		||||
from django.urls import reverse
 | 
			
		||||
 | 
			
		||||
from funkwhale_api.federation import actors
 | 
			
		||||
from funkwhale_api.federation import serializers as federation_serializers
 | 
			
		||||
from funkwhale_api.music import importers
 | 
			
		||||
from funkwhale_api.music import models
 | 
			
		||||
from funkwhale_api.music import tasks
 | 
			
		||||
 | 
			
		||||
DATA_DIR = os.path.dirname(os.path.abspath(__file__))
 | 
			
		||||
| 
						 | 
				
			
			@ -237,3 +242,9 @@ def test__do_import_in_place_mbid(factories, tmpfile):
 | 
			
		|||
    assert bool(tf.audio_file) is False
 | 
			
		||||
    assert tf.source == "file://{}".format(path)
 | 
			
		||||
    assert tf.mimetype == "audio/ogg"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_importer_cleans():
 | 
			
		||||
    importer = importers.Importer(models.Artist)
 | 
			
		||||
    with pytest.raises(forms.ValidationError):
 | 
			
		||||
        importer.load({"name": "", "mbid": uuid.uuid4()}, {}, [])
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -126,4 +126,4 @@ def test_can_filter_closed_invitations(factories):
 | 
			
		|||
    used = factories["users.User"](invited=True).invitation
 | 
			
		||||
 | 
			
		||||
    assert models.Invitation.objects.count() == 3
 | 
			
		||||
    assert list(models.Invitation.objects.open(False)) == [expired, used]
 | 
			
		||||
    assert list(models.Invitation.objects.order_by("id").open(False)) == [expired, used]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
Ensure we do not import artists with empty names (#351)
 | 
			
		||||
		Ładowanie…
	
		Reference in New Issue