def create(self, request, *args, **kwargs): erros = [] nome = request.data.get('nome', None) genero_id = request.data.get('genero_id', None) imagem = request.data.get('imagem', None) if imagem: tipo = get_file_type(imagem) if tipo: if tipo == '.jpg': imagem = imagem[23:] elif tipo == '.png': imagem = imagem[22:] imagem = ContentFile(decode_file(imagem), (nome + tipo)) if genero_id: banda = models.Banda(nome=nome, genero_id=genero_id, imagem=imagem) try: banda.save() except IntegrityError: erros.append('Já existe uma banda com esse nome') else: response = json.dumps({ 'genero': { 'id': banda.id, 'nome': banda.nome, 'imagem': banda.imagem.path } }) return JsonResponse(response, safe=False, status=201) else: erros.append('O campo genero é obrigátorio') else: erros.append('Tipo de arquivo inválido') else: if genero_id: banda = models.Banda(nome=nome, genero_id=genero_id) try: banda.save() except IntegrityError: erros.append('Já existe uma banda com esse nome') else: response = json.dumps({ 'genero': { 'id': banda.id, 'nome': banda.nome, 'genero_id': genero_id } }) return JsonResponse(response, safe=False, status=201) else: erros.append('O campo genero é obrigátorio') return JsonResponse(json.dumps({'erros': erros}), safe=False, status=400)
def create(self, request, *args, **kwargs): erros = [] nome = request.data.get('nome', None) album = request.data.get('album', None) ordem = request.data.get('ordem', None) if not ordem: erros.append('O campo ordem é obrigatório') if not album: erros.append('O campo ordem é obrigatório') arquivo = request.data.get('arquivo', None) if arquivo: tipo = get_file_type(arquivo, musica=True) try: existe = models.Musica.objects.get(ordem=ordem, album_id=album) except models.Musica.DoesNotExist: existe = False except ValueError: existe = False if not existe and tipo: arquivo = ContentFile(decode_file(arquivo), (nome + tipo)) try: musica = models.Musica(nome=nome, album_id=album, ordem=ordem, arquivo=arquivo) musica.save() except Exception: pass else: response = json.dumps({ 'musica': { 'id': musica.id, 'nome': musica.nome, 'ordem': musica.ordem, 'tipo': musica.arquivo_tipo, 'arquivo': musica.arquivo.path } }) return JsonResponse(response, safe=False, status=201) else: if existe: erros.append('Já existe uma música com essa ordem') if not tipo: erros.append('Tipo de arquivo inválido') else: erros.append('O arquivo de música é obrigatório') response = json.dumps({'erros': erros}) return JsonResponse(response, safe=False, status=400)
def create(self, request, *args, **kwargs): erros = [] descricao = request.data['descricao'] try: imagem = request.data['imagem'] tipo = get_file_type(imagem) except KeyError: genero = models.Genero(descricao=descricao) try: genero.save() except IntegrityError: erros.append('Já existe um genero com essa descrição') else: response = json.dumps({ 'genero': { 'id': genero.id, 'descricao': genero.descricao } }) return JsonResponse(response, safe=False, status=201) else: if tipo: if tipo == '.jpg': imagem = imagem[23:] elif tipo == '.png': imagem = imagem[22:] imagem = ContentFile(decode_file(imagem), (descricao + tipo)) genero = models.Genero(descricao=descricao, imagem=imagem) try: genero.save() except IntegrityError: erros.append('Já existe um genero com essa descrição') else: response = json.dumps({ 'genero': { 'id': genero.id, 'descricao': genero.descricao, 'imagem': genero.imagem.path } }) return JsonResponse(response, safe=False, status=201) else: erros.append('Tipo de arquivo inválido') return JsonResponse(json.dumps({'erros': erros}), safe=False, status=400)
def test_get_file_type_error(b64_capa_error): assert utils.get_file_type(b64_capa_error) is False
def test_get_file_type_jpg(b64_capa_jpg): assert utils.get_file_type(b64_capa_jpg) == '.jpg'
def test_get_file_type_without_options(b64_arquivo): assert utils.get_file_type(b64_arquivo, musica=False, imagen=False) is False
def test_get_file_type_png_with_mp3(b64_arquivo): assert utils.get_file_type(b64_arquivo) is False
def test_get_file_type_png(b64_capa): assert utils.get_file_type(b64_capa) == '.png'
def test_get_file_type_mp3_with_pgn(b64_capa): assert utils.get_file_type(b64_capa, musica=True) is False
def test_get_file_type_mp3_error(b64_arquivo_wav): assert utils.get_file_type(b64_arquivo_wav, musica=True) is False
def test_get_file_type_mp3(b64_arquivo): assert utils.get_file_type(b64_arquivo, musica=True) == '.mp3'
def create(self, request, *args, **kwargs): erros = [] nome = request.data.get('nome', None) banda_id = request.data.get('banda_id', None) data_lancamento = request.data.get('data_lancamento', None) imagem = request.data.get('capa', None) if not data_lancamento: erros.append('O campo data de lançamento é obrigatório') if imagem: tipo = get_file_type(imagem) if tipo: if tipo == '.jpg': imagem = imagem[23:] elif tipo == '.png': imagem = imagem[22:] imagem = ContentFile(decode_file(imagem), (nome + tipo)) if banda_id: album = models.Album(nome=nome, banda_id=banda_id, data_lancamento=data_lancamento, capa=imagem) try: album.save() except IntegrityError: erros.append('Já existe um album com esse nome') else: response = json.dumps({ 'album': { 'id': album.id, 'nome': album.nome, 'banda_id': album.banda.id, 'data_lancamento': album.data_lancamento, 'capa': album.capa.path } }) return JsonResponse(response, safe=False, status=201) else: erros.append('O campo banda é obrigátorio') else: erros.append('Tipo de arquivo inválido') else: if nome and banda_id: album = models.Album(nome=nome, banda_id=banda_id, data_lancamento=data_lancamento) try: album.save() except IntegrityError: erros.append('Já existe um album com esse nome') else: response = json.dumps({ 'album': { 'id': album.id, 'nome': album.nome, 'banda_id': album.banda.id, 'data_lancamento': album.data_lancamento } }) return JsonResponse(response, safe=False, status=201) else: if not nome: erros.append('O campo nome é obrigátorio') if not banda_id: erros.append('O campo banda é obrigátorio') return JsonResponse(json.dumps({'erros': erros}), safe=False, status=400)