|
@@ -2,6 +2,7 @@ from django.contrib.auth import get_user_model
|
|
|
from django.core.validators import MaxValueValidator, MinValueValidator
|
|
|
from django.db import models
|
|
|
from django.db.models.deletion import CASCADE, DO_NOTHING
|
|
|
+from django.utils import timezone
|
|
|
from django_extensions.db.models import TimeStampedModel
|
|
|
from games.models import Game
|
|
|
|
|
@@ -9,8 +10,10 @@ User = get_user_model()
|
|
|
|
|
|
|
|
|
class UserGameProgress(TimeStampedModel):
|
|
|
- user = models.OneToOneField(User, on_delete=models.CASCADE)
|
|
|
+ user = models.ForeignKey(User, on_delete=models.CASCADE)
|
|
|
game = models.ForeignKey(Game, on_delete=DO_NOTHING)
|
|
|
+ started_ts = models.DateTimeField(default=timezone.now, blank=True)
|
|
|
+ finished_ts = models.DateTimeField(blank=True, null=True)
|
|
|
percent = models.IntegerField(
|
|
|
default=0,
|
|
|
validators=[MaxValueValidator(100), MinValueValidator(0)],
|
|
@@ -18,11 +21,11 @@ class UserGameProgress(TimeStampedModel):
|
|
|
)
|
|
|
|
|
|
def __str__(self):
|
|
|
- return f"Progress in {self.game} for {self.user} {self.percent}"
|
|
|
+ return f"Progress in {self.game} for {self.user} ({self.percent}%)"
|
|
|
|
|
|
|
|
|
class UserProfile(models.Model):
|
|
|
- user = models.OneToOneField(User, on_delete=CASCADE)
|
|
|
+ user = models.OneToOneField(User, on_delete=CASCADE, related_name="profile")
|
|
|
favorite_games = models.ManyToManyField(Game, related_name="favorite_games")
|
|
|
|
|
|
def __str__(self):
|