Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion scidash/general/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@
from django.contrib.auth.admin import UserAdmin
from django.contrib.contenttypes.models import ContentType

from scidash.general.models import ScidashUser
from scidash.general.models import ScidashUser, Tag

# Register your models here.

admin.site.register(ScidashUser, UserAdmin)
admin.site.register(ContentType)
admin.site.register(Tag)
2 changes: 2 additions & 0 deletions scidash/main/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -240,3 +240,5 @@
)

CELERY_RESULT_BACKEND = 'django-db'

NO_IMPORT_TAG = 'unschedulable'
32 changes: 32 additions & 0 deletions scidash/sciunitmodels/api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,14 @@

from rest_framework import permissions, response, views, viewsets
from django.db.models import Q
from django.conf import settings as s
from django.contrib.contenttypes.models import ContentType

import scidash.sciunitmodels.helpers as hlp
from scidash.sciunitmodels.filters import ModelClassFilter, ModelInstanceFilter
from scidash.sciunitmodels.models import Capability, ModelClass, ModelInstance
from pygeppetto_gateway.interpreters.helpers import URLProcessor
from scidash.general.models import Tag
from scidash.sciunitmodels.serializers import (
CapabilitySerializer, ModelClassSerializer, ModelInstanceSerializer
)
Expand All @@ -36,6 +39,35 @@ class ModelInstanceViewSet(viewsets.ModelViewSet):
permission_classes = (permissions.IsAuthenticatedOrReadOnly, )
filter_class = ModelInstanceFilter

def filter_queryset(self, queryset):
model_instance_content_type = ContentType.objects.get_for_model(
ModelInstance
)

ModelInstance.objects.filter(model_class__import_path='').update(
status=ModelInstance.LOCKED
)

for instance in ModelInstance.objects.filter(
model_class__import_path=''
):
Tag.objects.get_or_create(
name=s.NO_IMPORT_TAG,
content_type=model_instance_content_type,
object_id=instance.pk
)

ModelInstance.objects.filter(
Q(score__isnull=True) & ~Q(model_class__import_path='')
).update(status=ModelInstance.AVAILABLE)

for instance in ModelInstance.objects.filter(
~Q(model_class__import_path='')
):
instance.tags.filter(name=s.NO_IMPORT_TAG).delete()

return queryset


class ModelParametersView(views.APIView):
def get(self, request):
Expand Down
31 changes: 31 additions & 0 deletions scidash/sciunittests/api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

from rest_framework import permissions, response, views, viewsets
from django.db.models import Q
from django.conf import settings as s
from django.contrib.contenttypes.models import ContentType

from scidash.general.models import Tag
from scidash.sciunittests.filters import (
Expand Down Expand Up @@ -31,6 +33,35 @@ class TestInstanceViewSet(viewsets.ModelViewSet):
permission_classes = (permissions.IsAuthenticatedOrReadOnly, )
filter_class = TestInstanceFilter

def filter_queryset(self, queryset):
test_instance_content_type = ContentType.objects.get_for_model(
TestInstance
)

TestInstance.objects.filter(test_class__import_path='').update(
status=TestInstance.LOCKED
)

for instance in TestInstance.objects.filter(
test_class__import_path=''
):
Tag.objects.get_or_create(
name=s.NO_IMPORT_TAG,
content_type=test_instance_content_type,
object_id=instance.pk
)

TestInstance.objects.filter(
Q(score__isnull=True) & ~Q(test_class__import_path='')
).update(status=TestInstance.AVAILABLE)

for instance in TestInstance.objects.filter(
~Q(test_class__import_path='')
):
instance.tags.filter(name=s.NO_IMPORT_TAG).delete()

return queryset


class TestSuiteViewSet(viewsets.ReadOnlyModelViewSet):
queryset = TestSuite.objects.all()
Expand Down
6 changes: 4 additions & 2 deletions scidash/sciunittests/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -178,8 +178,10 @@ class ScoreInstance(models.Model):
max_length=200, default='', null=True, blank=True
)
score_class = models.ForeignKey(ScoreClass, null=True, blank=True)
model_instance = models.ForeignKey(sciunitmodels.models.ModelInstance)
test_instance = models.ForeignKey(TestInstance)
model_instance = models.ForeignKey(
sciunitmodels.models.ModelInstance, related_name='score'
)
test_instance = models.ForeignKey(TestInstance, related_name='score')
score = models.FloatField(default=0, null=True, blank=True)
sort_key = models.FloatField(default=0)
prediction_numeric = models.FloatField(default=None, null=True, blank=True)
Expand Down