from django.conf import settings from django.core.paginator import Paginator from django.shortcuts import render from django_downloadview import ObjectDownloadView from guardian.shortcuts import get_objects_for_user from .models import Contract, ContractFile class ContractFileDownloadView(ObjectDownloadView): model = ContractFile file_field = "file" attachment = False def get_queryset(self, *args, **kwargs): queryset = super().get_queryset(*args, **kwargs) if not self.current_user.has_perm("contracts.view_confidential"): queryset = queryset.filter(is_public=True) return queryset def get(self, request, *args, **kwargs): self.current_user = request.user return super().get(request, *args, **kwargs) def index(request): filter = { "is_approved": True } if not request.user.has_perm("contracts.view_confidential"): filter["is_public"] = True contracts = ( get_objects_for_user(request.user, "contracts.view_contract") .filter(**filter) .order_by("valid_start_date") .all() ) paginator = Paginator(contracts, 25) page = paginator.get_page(request.GET.get("page")) return render( request, "contracts/index.html", { "site_url": settings.SITE_URL, "user": request.user, "title": "Seznam smluv", "description": "Description", "paginator": paginator, "page": page, }, ) def view_contract(request, id: int): filter = { "is_approved": True } if not request.user.has_perm("contracts.view_confidential"): filter["is_public"] = True contract = ( get_objects_for_user(request.user, "contracts.view_contract") .filter(**filter) .get(id=id) ) return render( request, "contracts/view_contract.html", { "site_url": settings.SITE_URL, "user": request.user, "title": contract.name, "description": contract.summary, "contract": contract, }, )