mirror of
https://github.com/boostorg/website-v2.git
synced 2026-01-19 04:42:17 +00:00
- 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
46 lines
1.5 KiB
Python
Executable File
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()]
|