Skip to content

Commit

Permalink
#79 backend: add area model and routes
Browse files Browse the repository at this point in the history
  • Loading branch information
Toni000 committed Mar 25, 2024
1 parent 63290e7 commit 5a531d3
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 5 deletions.
4 changes: 2 additions & 2 deletions backend/dps_training_k/game/consumers/abstract_consumer.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ class ClosureCodes:
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.exercise_code = ""
self.exercise = None
self.REQUESTS_MAP = {}
self.user = None

Expand Down Expand Up @@ -152,8 +153,7 @@ def authenticate(self, token):
self.close(code=self.ClosureCodes.NOT_AUTHENTICATED)
return False

def _send_exercise(self):
exercise = Exercise.createExercise()
def _send_exercise(self, exercise):
patient = Patient.objects.create(
name="Max Mustermann", exercise=exercise, patientCode=123456
)
Expand Down
25 changes: 22 additions & 3 deletions backend/dps_training_k/game/consumers/trainer_consumer.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from .abstract_consumer import AbstractConsumer
from game.models import Exercise, Patient
from django.conf import settings
from game.models import Exercise
from game.models import Area


class TrainerConsumer(AbstractConsumer):
Expand All @@ -12,6 +12,8 @@ class TrainerIncomingMessageTypes:
EXERCISE_STOP = "exercise-stop"
EXERCISE_PAUSE = "exercise-pause"
EXERCISE_RESUME = "exercise-resume"
AREA_ADD = "area-add"
AREA_DELETE = "area-delete"

class TrainerOutgoingMessageTypes:
RESPONSE = "response"
Expand All @@ -21,10 +23,13 @@ class TrainerOutgoingMessageTypes:
EXERCISE_STOPED = "exercise-stop"
EXERCISE_PAUSED = "exercise-pause"
EXERCISE_RESUMED = "exercise-resume"
AREA_ADD = "area-add"
AREA_DELETE = "area-delete"

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.exercise_code = None
self.exercise = None
self.REQUESTS_MAP = {
self.TrainerIncomingMessageTypes.EXAMPLE: (
self.handle_example,
Expand All @@ -48,6 +53,11 @@ def __init__(self, *args, **kwargs):
self.TrainerIncomingMessageTypes.EXERCISE_RESUME: (
self.handle_resume_exercise,
),
self.TrainerIncomingMessageTypes.AREA_ADD: (self.handle_add_area,),
self.TrainerIncomingMessageTypes.AREA_DELETE: (
self.handle_delete_area,
"areaName",
),
}

def connect(self):
Expand All @@ -61,7 +71,8 @@ def handle_example(self, exercise_code):
)

def handle_create_exercise(self):
self._send_exercise()
self.exercise = Exercise.createExercise()
self._send_exercise(self.exercise)

def handle_test_passthrough(self):
self.send_event(
Expand Down Expand Up @@ -90,3 +101,11 @@ def handle_pause_exercise(self):

def handle_resume_exercise(self):
pass

def handle_add_area(self):
Area.create_area(name="Bereich", exercise=self.exercise, isPaused=False)
# TODO: send update to all subscribers

def handle_delete_area(self, areaName):
Area.objects.filter(name=areaName).delete()
# TODO: send update to all subscribers
23 changes: 23 additions & 0 deletions backend/dps_training_k/game/migrations/0005_area.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Generated by Django 5.0.1 on 2024-03-25 10:18

import django.db.models.deletion
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('game', '0004_remove_scheduledevent_owner_owner_event'),
]

operations = [
migrations.CreateModel(
name='Area',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=30, unique=True)),
('isPaused', models.BooleanField()),
('exerciseId', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='game.exercise')),
],
),
]
1 change: 1 addition & 0 deletions backend/dps_training_k/game/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@
from .patient_state import PatientState
from .user import User
from .scheduled_event import ScheduledEvent
from .area import Area
20 changes: 20 additions & 0 deletions backend/dps_training_k/game/models/area.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
from django.db import models


class Area(models.Model):
name = models.CharField(unique=True, max_length=30)
exerciseId = models.ForeignKey("Exercise", on_delete=models.CASCADE)
isPaused = models.BooleanField()
# labID = models.ForeignKey("Lab")

@classmethod
def create_area(cls, name, exercise, isPaused = False):
unique_name = name
number = 1

# Loop until a unique name is found
while cls.objects.filter(name=unique_name).exists():
unique_name = f"{name}{number}"
number += 1

return cls.objects.create(name=unique_name, exerciseId=exercise, isPaused=isPaused)

0 comments on commit 5a531d3

Please sign in to comment.