Skip to content

Commit d4fe648

Browse files
authored
Merge pull request #754 from cortex-lab/dev
Dev
2 parents 25427b0 + 6357e7a commit d4fe648

File tree

6 files changed

+66
-5
lines changed

6 files changed

+66
-5
lines changed

alyx/alyx/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
__version__ = '1.3.0'
1+
__version__ = '1.4.0'
22
VERSION = __version__ # synonym
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Generated by Django 4.0.6 on 2022-09-13 16:06
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('data', '0012_alter_datasettype_filename_pattern_and_more'),
11+
('jobs', '0007_remove_task_unique_task_name_per_session_and_more'),
12+
]
13+
14+
operations = [
15+
migrations.AddField(
16+
model_name='task',
17+
name='data_repository',
18+
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tasks', to='data.datarepository'),
19+
),
20+
]

alyx/jobs/models.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ class Task(models.Model):
4848
symmetrical=False)
4949
datetime = models.DateTimeField(auto_now=True)
5050
arguments = models.JSONField(blank=True, null=True, help_text="dictionary of input arguments")
51+
data_repository = models.ForeignKey('data.DataRepository', null=True, blank=True,
52+
related_name='tasks', on_delete=models.CASCADE)
5153

5254
def __str__(self):
5355
return self.name + ' ' + str(self.session) + ' ' + self.get_status_display()

alyx/jobs/serializers.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from rest_framework import serializers
22
from actions.models import Session
33
from jobs.models import Task
4+
from data.models import DataRepository
45
from alyx.base import BaseSerializerEnumField
56

67

@@ -13,6 +14,10 @@ class TaskSerializer(serializers.ModelSerializer):
1314
read_only=False, required=False, slug_field='id', many=False,
1415
queryset=Session.objects.all()
1516
)
17+
data_repository = serializers.SlugRelatedField(
18+
read_only=False, required=False, slug_field='name', many=False,
19+
queryset=DataRepository.objects.all()
20+
)
1621
status = BaseSerializerEnumField(required=False)
1722

1823
class Meta:

alyx/jobs/tests.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from django.contrib.auth import get_user_model
2+
from django.urls import reverse
3+
from django.core.management import call_command
4+
5+
from actions.models import Session
6+
from alyx.base import BaseTests
7+
from data.models import DataRepository
8+
9+
10+
class APISubjectsTests(BaseTests):
11+
12+
def setUp(self):
13+
call_command('loaddata', 'experiments/fixtures/experiments.probemodel.json', verbosity=0)
14+
call_command('loaddata', 'experiments/fixtures/experiments.brainregion.json', verbosity=0)
15+
self.superuser = get_user_model().objects.create_superuser('test', 'test', 'test')
16+
self.client.login(username='test', password='test')
17+
self.session = Session.objects.first()
18+
self.session.task_protocol = 'ephys'
19+
self.session.save()
20+
self.dict_insertion = {'session': str(self.session.id),
21+
'name': 'probe_00',
22+
'model': '3A'}
23+
self.data_repository = DataRepository.objects.create(name='myrepo')
24+
25+
def test_brain_regions_rest_filter(self):
26+
# test the custom filters get_descendants and get_ancestors
27+
task_dict = {'executable': 'exec', 'priority': 90,
28+
'io_charge': 40, 'gpu': 0, 'cpu': 1,
29+
'ram': 40, 'module': 'mod', 'parents': [],
30+
'level': 0, 'time_out_sec': 2, 'session': self.session.id,
31+
'status': 'Waiting', 'log': None, 'name': 'mytask', 'graph': 'mygraph',
32+
'arguments': {'titi': 'toto', 'tata': 'tutu'}, 'data_repository': 'myrepo'}
33+
rep = self.post(reverse('tasks-list'), task_dict)
34+
self.assertEqual(rep.status_code, 201)

requirements_frozen.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
asgiref==3.5.2
22
backports.zoneinfo==0.2.1
3-
boto3==1.24.66
4-
botocore==1.27.66
5-
certifi==2022.6.15
3+
boto3==1.24.71
4+
botocore==1.27.71
5+
certifi==2022.6.15.1
66
cffi==1.15.1
77
charset-normalizer==2.1.1
88
click==8.1.3
@@ -49,7 +49,7 @@ MarkupSafe==2.1.1
4949
matplotlib==3.5.3
5050
mccabe==0.7.0
5151
numba==0.56.2
52-
numpy==1.23.2
52+
numpy==1.23.3
5353
ONE-api==1.14.0
5454
packaging==21.3
5555
pandas==1.4.4

0 commit comments

Comments
 (0)