Skip to content

Commit 16144cd

Browse files
Add models and serializers for OctoFit collections
1 parent a94f20c commit 16144cd

File tree

2 files changed

+71
-0
lines changed

2 files changed

+71
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
from djongo import models
2+
3+
class Team(models.Model):
4+
name = models.CharField(max_length=100, unique=True)
5+
class Meta:
6+
db_table = 'teams'
7+
def __str__(self):
8+
return self.name
9+
10+
class User(models.Model):
11+
name = models.CharField(max_length=100)
12+
email = models.EmailField(unique=True)
13+
team = models.ForeignKey(Team, on_delete=models.CASCADE, related_name='members')
14+
class Meta:
15+
db_table = 'users'
16+
def __str__(self):
17+
return self.name
18+
19+
class Activity(models.Model):
20+
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='activities')
21+
type = models.CharField(max_length=50)
22+
duration = models.IntegerField() # minutes
23+
timestamp = models.DateTimeField(auto_now_add=True)
24+
class Meta:
25+
db_table = 'activities'
26+
def __str__(self):
27+
return f"{self.type} - {self.user.name}"
28+
29+
class Workout(models.Model):
30+
name = models.CharField(max_length=100)
31+
description = models.TextField()
32+
suggested_for = models.ManyToManyField(User, related_name='suggested_workouts')
33+
class Meta:
34+
db_table = 'workouts'
35+
def __str__(self):
36+
return self.name
37+
38+
class Leaderboard(models.Model):
39+
team = models.ForeignKey(Team, on_delete=models.CASCADE, related_name='leaderboard')
40+
points = models.IntegerField(default=0)
41+
class Meta:
42+
db_table = 'leaderboard'
43+
def __str__(self):
44+
return f"{self.team.name}: {self.points} pts"
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from rest_framework import serializers
2+
from .models import User, Team, Activity, Workout, Leaderboard
3+
4+
class TeamSerializer(serializers.ModelSerializer):
5+
class Meta:
6+
model = Team
7+
fields = '__all__'
8+
9+
class UserSerializer(serializers.ModelSerializer):
10+
class Meta:
11+
model = User
12+
fields = '__all__'
13+
14+
class ActivitySerializer(serializers.ModelSerializer):
15+
class Meta:
16+
model = Activity
17+
fields = '__all__'
18+
19+
class WorkoutSerializer(serializers.ModelSerializer):
20+
class Meta:
21+
model = Workout
22+
fields = '__all__'
23+
24+
class LeaderboardSerializer(serializers.ModelSerializer):
25+
class Meta:
26+
model = Leaderboard
27+
fields = '__all__'

0 commit comments

Comments
 (0)