This repository has been archived on 2025-03-03. You can view files and clone it, but cannot push or open issues or pull requests.
facturio/subjects/views.py

90 lines
2.8 KiB
Python
Raw Normal View History

from ares_util.ares import call_ares
2024-02-03 21:54:05 +01:00
from django.contrib.auth.decorators import login_required
2024-02-03 22:07:20 +01:00
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
2023-12-19 13:49:34 +01:00
2024-02-03 22:07:20 +01:00
from . import forms
from . import models
2023-12-19 14:39:59 +01:00
def build_address(street: str, zip_code: int | str, city: str, city_part: str) -> str:
2024-02-03 22:07:20 +01:00
return f'{street}, {zip_code}, {city} - {city_part}'
2023-12-19 14:39:59 +01:00
2024-02-03 21:54:05 +01:00
@login_required
def main_page(req: HttpRequest) -> HttpResponse:
2024-08-16 22:12:49 +02:00
if req.method == 'POST':
select_subject_form = forms.SelectSubjectForm(
data=req.POST, instance=req.user, current_user=req.user,
)
if select_subject_form.is_valid():
select_subject_form.save()
return redirect(reverse('subjects:list'))
elif req.method == 'GET':
subjects = models.Subject.objects.exclude(
id=req.user.supplier.id if req.user.supplier else None,
)
select_subject_form = forms.SelectSubjectForm(
instance=req.user, current_user=req.user,
)
return render(
req,
'subjects/index.html',
dict(subjects=subjects, form=select_subject_form),
)
return HttpResponse(status=405)
2023-12-19 14:39:59 +01:00
2024-02-03 21:54:05 +01:00
@login_required
def create_subject(req: HttpRequest) -> HttpResponse:
2024-02-03 22:07:20 +01:00
if req.method == 'POST':
form = forms.CreateSubjectForm(data=req.POST)
2023-12-19 14:39:59 +01:00
if not form.is_valid():
2024-02-03 22:07:20 +01:00
return render(req, 'subjects/create.html', dict(form=form))
2023-12-19 14:39:59 +01:00
2024-02-03 22:07:20 +01:00
ares_data = call_ares(form.cleaned_data.get('cin'))
2023-12-19 14:39:59 +01:00
2024-02-03 22:07:20 +01:00
ares_address_data = ares_data['address']
ares_legal_data = ares_data['legal']
2024-08-16 22:12:49 +02:00
subject = models.Subject.objects.create(
id=ares_legal_data['company_id'], vat_id=ares_legal_data['company_vat_id'],
)
models.SubjectData.objects.create(
subject=subject,
2024-02-03 22:07:20 +01:00
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'],
)
2024-02-03 22:07:20 +01:00
return redirect(reverse('subjects:list'))
2024-02-03 22:07:20 +01:00
elif req.method == 'GET':
form = forms.CreateSubjectForm()
2024-02-03 22:07:20 +01:00
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)
2024-02-03 22:07:20 +01:00
return redirect(reverse('subjects:list'))
2024-02-03 21:54:05 +01:00
@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)
2024-02-03 22:07:20 +01:00
return redirect(reverse('subjects:list'))