Source code for django_remote_submission.views

"""Provide default views for REST API."""
# -*- coding: utf-8 -*-
import django_filters

from rest_framework import viewsets
from rest_framework.permissions import IsAuthenticatedOrReadOnly
from rest_framework.pagination import PageNumberPagination
from django.views.generic import TemplateView

from .models import Server, Job, Log, Result
from .serializers import (
    ServerSerializer, JobSerializer, LogSerializer, ResultSerializer
)

from django_filters.rest_framework import DjangoFilterBackend
from django.db import models

class StandardPagination(PageNumberPagination):
    """Change the default page size."""

    page_size = 10

#
# View Sets
#


[docs]class ServerViewSet(viewsets.ModelViewSet): """Allow users to create, read, and update :class:`Server` instances.""" queryset = Server.objects.all() serializer_class = ServerSerializer permission_classes = (IsAuthenticatedOrReadOnly,) filter_backends = (DjangoFilterBackend,) filter_fields = ('title', 'hostname', 'port') pagination_class = StandardPagination
[docs]class JobViewSet(viewsets.ModelViewSet): """Allow users to create, read, and update :class:`Job` instances.""" queryset = Job.objects.all() serializer_class = JobSerializer permission_classes = (IsAuthenticatedOrReadOnly,) filter_backends = (DjangoFilterBackend,) filter_fields = ('title', 'program', 'status', 'owner', 'server') pagination_class = StandardPagination
[docs]class LogViewSet(viewsets.ModelViewSet): """Allow users to create, read, and update :class:`Log` instances.""" queryset = Log.objects.all() serializer_class = LogSerializer permission_classes = (IsAuthenticatedOrReadOnly,) filter_backends = (DjangoFilterBackend,) filter_fields = ('time', 'content', 'stream', 'job') pagination_class = StandardPagination
class ResultViewSet(viewsets.ModelViewSet): """Allow users to create, read, and update :class:`Result` instances.""" queryset = Result.objects.all() serializer_class = ResultSerializer permission_classes = (IsAuthenticatedOrReadOnly,) filter_backends = (DjangoFilterBackend,) filter_fields = ('remote_filename', 'job') # 'local_file', pagination_class = StandardPagination class Meta: filter_overrides = { models.FileField: { 'filter_class': django_filters.CharFilter, 'extra': lambda f: { 'lookup_expr': 'icontains', }, }, } # # Templates # class JobUserStatus(TemplateView): """Show status of all of user's jobs with live updates.""" template_name = "django_remote_submission/job-user-status.html"