Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
    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)
Пример #4
0
def test_get_file_type_error(b64_capa_error):
    assert utils.get_file_type(b64_capa_error) is False
Пример #5
0
def test_get_file_type_jpg(b64_capa_jpg):
    assert utils.get_file_type(b64_capa_jpg) == '.jpg'
Пример #6
0
def test_get_file_type_without_options(b64_arquivo):
    assert utils.get_file_type(b64_arquivo, musica=False,
                               imagen=False) is False
Пример #7
0
def test_get_file_type_png_with_mp3(b64_arquivo):
    assert utils.get_file_type(b64_arquivo) is False
Пример #8
0
def test_get_file_type_png(b64_capa):
    assert utils.get_file_type(b64_capa) == '.png'
Пример #9
0
def test_get_file_type_mp3_with_pgn(b64_capa):
    assert utils.get_file_type(b64_capa, musica=True) is False
Пример #10
0
def test_get_file_type_mp3_error(b64_arquivo_wav):
    assert utils.get_file_type(b64_arquivo_wav, musica=True) is False
Пример #11
0
def test_get_file_type_mp3(b64_arquivo):
    assert utils.get_file_type(b64_arquivo, musica=True) == '.mp3'
Пример #12
0
    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)