from django.shortcuts import render, get_object_or_404
from django.db import connection
from projeto.models import Projeto 
from django.contrib.auth.decorators import login_required 


@login_required
def editor_layout(request, projeto_id):
    if request.user.is_authenticated and request.user.tenant:
        connection.set_schema(request.user.tenant.schema_name)
        projeto = get_object_or_404(Projeto, id=projeto_id)
        return render(request, 'cadgraph/editor.html', {
            'projeto': projeto
        })
    else:
        return render(request, 'cadgraph/erro_permissao.html', status=403)




import os
import tempfile
import traceback
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from .utils.conversor_svg import dxf_to_svg_string

import os
import traceback
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from .utils.conversor_svg import dxf_to_svg_string

UPLOAD_DIR = '/var/www/html/cagpublico_m/cag/cadgraph/arquivo_teste_conversao'

@csrf_exempt
def converter_dxf(request):
    if request.method == 'POST' and 'dxf' in request.FILES:
        try:
            uploaded_file = request.FILES['dxf']
            filename = uploaded_file.name

            # Garante que o diretório existe
            os.makedirs(UPLOAD_DIR, exist_ok=True)

            # Caminho onde o DXF será salvo
            dxf_path = os.path.join(UPLOAD_DIR, filename)

            # Salva o arquivo .dxf no caminho fixo
            with open(dxf_path, 'wb+') as f:
                for chunk in uploaded_file.chunks():
                    f.write(chunk)

            # Converte o DXF salvo para SVG
            svg_output = dxf_to_svg_string(dxf_path)
            return HttpResponse(svg_output, content_type="image/svg+xml")

        except Exception as e:
            return HttpResponse(
                f"<pre>Erro ao converter: {traceback.format_exc()}</pre>",
                content_type="text/html",
                status=500
            )

    return HttpResponse("Requisição inválida", status=400)

