Coverage for website/partners/views.py: 35.00%

20 statements  

« prev     ^ index     » next       coverage.py v7.6.7, created at 2025-08-14 10:31 +0000

1from random import random 

2 

3from django.shortcuts import get_object_or_404, render 

4 

5from partners.models import Partner, Vacancy, VacancyCategory 

6from utils.media.services import fetch_thumbnails 

7 

8 

9def index(request): 

10 """View to show overview page of partners.""" 

11 partners = Partner.objects.filter( 

12 is_active=True, is_main_partner=False, is_local_partner=False 

13 ) 

14 main_partner = Partner.objects.filter(is_main_partner=True).first() 

15 local_partners = Partner.objects.filter(is_local_partner=True) 

16 

17 fetch_thumbnails([p.logo for p in partners]) 

18 

19 context = { 

20 "main_partner": main_partner, 

21 "local_partners": local_partners, 

22 "partners": sorted(partners, key=lambda x: random()), 

23 } 

24 return render(request, "partners/index.html", context) 

25 

26 

27def partner(request, slug): 

28 """View to show partner page.""" 

29 obj = get_object_or_404(Partner, slug=slug, is_active=True) 

30 context = { 

31 "partner": obj, 

32 "vacancies": Vacancy.objects.filter(partner=obj), 

33 } 

34 return render(request, "partners/partner.html", context) 

35 

36 

37def vacancies(request): 

38 """View to show vacancies.""" 

39 vacancies = list( 

40 Vacancy.objects.order_by("?") 

41 .select_related("partner") 

42 .prefetch_related("categories") 

43 ) 

44 fetch_thumbnails([v.get_company_logo() for v in vacancies]) 

45 context = { 

46 "vacancies": vacancies, 

47 "categories": list(VacancyCategory.objects.all()), 

48 } 

49 

50 return render(request, "partners/vacancies.html", context)