from ares_util.ares import call_ares from django.contrib.auth.decorators import login_required from django.http import HttpRequest from django.http import HttpResponse from django.shortcuts import redirect from django.shortcuts import render from django.urls import reverse from . import forms from . import models 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'))