Skip to content

Commit 6ecce64

Browse files
author
Juan Puerto
committed
feat: Add datetime_(last_job_launch/last_modified)
1 parent 73c9237 commit 6ecce64

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Generated by Django 5.1.3 on 2025-02-11 19:27
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('user_workspaces_server', '0017_sharedworkspacemapping_datetime_share_created'),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name='workspace',
15+
name='datetime_last_job_launch',
16+
field=models.DateTimeField(null=True),
17+
),
18+
migrations.AddField(
19+
model_name='workspace',
20+
name='datetime_last_modified',
21+
field=models.DateTimeField(null=True),
22+
),
23+
]

src/user_workspaces_server/models.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from django.contrib.auth.models import User
22
from django.db import models
33

4-
54
class Workspace(models.Model):
65
class Status(models.TextChoices):
76
IDLE = "idle"
@@ -15,6 +14,8 @@ class Status(models.TextChoices):
1514
file_path = models.CharField(max_length=64, default="")
1615
disk_space = models.BigIntegerField(default=0)
1716
datetime_created = models.DateTimeField()
17+
datetime_last_modified = models.DateTimeField(null=True)
18+
datetime_last_job_launch = models.DateTimeField(null=True)
1819
workspace_details = models.JSONField()
1920
status = models.CharField(max_length=64, default=Status.IDLE, choices=Status.choices)
2021
default_job_type = models.CharField(max_length=64, null=True)
@@ -34,6 +35,8 @@ def get_dict_fields():
3435
"description",
3536
"disk_space",
3637
"datetime_created",
38+
"datetime_last_modified",
39+
"datetime_last_job_launch",
3740
"workspace_details",
3841
"status",
3942
"default_job_type",

src/user_workspaces_server/views/workspace_view.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
logger = logging.getLogger(__name__)
2020

2121

22+
# TODO: Changes to guard for non-accepted shared workspaces
2223
class WorkspaceView(APIView):
2324
permission_classes = [IsAuthenticated]
2425

@@ -225,6 +226,7 @@ def put(self, request, workspace_id, put_type=None):
225226
}
226227
]
227228

229+
workspace.datetime_last_modified = datetime.now()
228230
workspace.save()
229231

230232
logger.info(workspace.workspace_details)
@@ -325,6 +327,7 @@ def put(self, request, workspace_id, put_type=None):
325327
)
326328

327329
workspace.status = models.Workspace.Status.ACTIVE
330+
workspace.datetime_last_job_launch = datetime.now()
328331
workspace.save()
329332

330333
return JsonResponse(
@@ -345,6 +348,9 @@ def put(self, request, workspace_id, put_type=None):
345348

346349
async_update_workspace(workspace.pk)
347350

351+
workspace.datetime_last_modified = datetime.now()
352+
workspace.save()
353+
348354
return JsonResponse({"message": "Successful upload.", "success": True})
349355
else:
350356
raise WorkspaceClientException("Invalid PUT type passed.")

0 commit comments

Comments
 (0)