2023-12-21 00:39:13 +01:00
|
|
|
from ares_util.ares import call_ares
|
2024-02-03 21:54:05 +01:00
|
|
|
from django.contrib.auth.decorators import login_required
|
2023-12-19 14:39:59 +01:00
|
|
|
from django.http import HttpRequest, HttpResponse
|
2023-12-21 00:39:13 +01:00
|
|
|
from django.shortcuts import render, redirect
|
|
|
|
from django.urls import reverse
|
2023-12-19 13:49:34 +01:00
|
|
|
|
2023-12-21 00:39:13 +01:00
|
|
|
from . import models, forms
|
2023-12-19 14:39:59 +01:00
|
|
|
|
|
|
|
|
|
|
|
def build_address(street: str, zip_code: int | str, city: str, city_part: str) -> str:
|
|
|
|
return f"{street}, {zip_code}, {city} - {city_part}"
|
|
|
|
|
|
|
|
|
2024-02-03 21:54:05 +01:00
|
|
|
@login_required
|
2023-12-21 00:39:13 +01:00
|
|
|
def main_page(req: HttpRequest) -> HttpResponse:
|
|
|
|
subjects = models.Subject.objects.all()
|
|
|
|
return render(req, "subjects/index.html", dict(subjects=subjects))
|
2023-12-19 14:39:59 +01:00
|
|
|
|
|
|
|
|
2024-02-03 21:54:05 +01:00
|
|
|
@login_required
|
2023-12-21 00:39:13 +01:00
|
|
|
def create_subject(req: HttpRequest) -> HttpResponse:
|
|
|
|
if req.method == "POST":
|
|
|
|
form = forms.CreateSubjectForm(data=req.POST)
|
2023-12-19 14:39:59 +01:00
|
|
|
|
2023-12-21 00:39:13 +01:00
|
|
|
if not form.is_valid():
|
|
|
|
return render(req, "subjects/create.html", dict(form=form))
|
2023-12-19 14:39:59 +01:00
|
|
|
|
2023-12-21 00:39:13 +01:00
|
|
|
ares_data = call_ares(form.cleaned_data.get("cin"))
|
2023-12-19 14:39:59 +01:00
|
|
|
|
2023-12-21 00:39:13 +01:00
|
|
|
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)
|
2024-02-03 21:54:05 +01:00
|
|
|
|
|
|
|
|
|
|
|
@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"))
|