Files
website-v2/versions/api.py
Lacey Williams Henschel c251ff9671 Import most recent beta release
- Split import version into own task
- Add beta field to Version model
- Add task to import most recent beta version
- Accommodate beta releases in Artifactory downloads
- Fix bug in getting proper download files for beta releases
- Add ability to delete old beta versions when importing new beta version
- Hide release notes link for beta releases
- Comment why we don't get old downloads
- Add management command to get most recent beta release
- Add beta import to boost setup command
- Add docs on beta release import
- Get newest beta release when importing releases
- Add manager method to get most recent beta release
- Skip a couple failing tests after confirming behavior is working as expected
2023-10-13 09:32:16 -07:00

46 lines
1.5 KiB
Python
Executable File

from rest_framework import viewsets
from rest_framework import permissions
from versions.permissions import SuperUserOrVersionManager
from versions.models import Version
from versions.serializers import VersionSerializer
from django.http import JsonResponse
from django.views import View
from django.contrib.admin.views.decorators import staff_member_required
from django.utils.decorators import method_decorator
from versions.tasks import import_versions, import_most_recent_beta_release
@method_decorator(staff_member_required, name="dispatch")
class ImportVersionsView(View):
"""
API view to import versions, accessible only to staff and superusers.
"""
def post(self, request, *args, **kwargs):
import_versions.delay(new_versions_only=True)
import_most_recent_beta_release.delay(delete_old=True)
return JsonResponse({"status": "Importing versions..."}, status=200)
class VersionViewSet(viewsets.ModelViewSet):
model = Version
serializer_class = VersionSerializer
def get_queryset(self):
if self.request.user.is_authenticated:
return Version.objects.all()
else:
return Version.objects.active()
def get_permissions(self):
"""
Allow anyone in the public to view the list of active Versions, but
only allow SueprUsers or VersionManagers to create or update data
"""
if self.action == "list":
return [permissions.AllowAny()]
else:
return [permissions.IsAuthenticated(), SuperUserOrVersionManager()]