from ares_util.ares import call_ares from django.contrib.auth.decorators import login_required from django.http import HttpRequest, HttpResponse from django.shortcuts import render, redirect from django.urls import reverse from . import models, forms def build_address(street: str, zip_code: int | str, city: str, city_part: str) -> str: return f"{street}, {zip_code}, {city} - {city_part}" @login_required def main_page(req: HttpRequest) -> HttpResponse: subjects = models.Subject.objects.all() return render(req, "subjects/index.html", dict(subjects=subjects)) @login_required def create_subject(req: HttpRequest) -> HttpResponse: if req.method == "POST": form = forms.CreateSubjectForm(data=req.POST) if not form.is_valid(): return render(req, "subjects/create.html", dict(form=form)) ares_data = call_ares(form.cleaned_data.get("cin")) ares_address_data = ares_data["address"] ares_legal_data = ares_data["legal"] models.Subject.objects.create( id=ares_legal_data["company_id"], vat_id=ares_legal_data["company_vat_id"], name=ares_legal_data["company_name"], street=ares_address_data["street"], zip_code=ares_address_data["zip_code"], city=ares_address_data["city"], city_part=ares_address_data["city_part"], ) return redirect(reverse("subjects:list")) elif req.method == "GET": form = forms.CreateSubjectForm() return render(req, "subjects/create.html", dict(form=form)) return HttpResponse(status=405) @login_required def link_subject(request: HttpRequest, subject_id: int) -> HttpResponse: subject = models.Subject.objects.get(pk=subject_id) subject.user_set.add(request.user) return redirect(reverse("subjects:list")) @login_required def unlink_subject(request: HttpRequest, subject_id: int) -> HttpResponse: subject = models.Subject.objects.get(pk=subject_id) subject.user_set.remove(request.user) return redirect(reverse("subjects:list"))