This commit is contained in:
2018-12-27 02:03:40 +04:00
commit 48b4c9bbfe
33 changed files with 743 additions and 0 deletions

39
web/models.py Normal file
View File

@@ -0,0 +1,39 @@
from django.core.exceptions import ValidationError
from django.db import models
class User(models.Model):
name = models.TextField()
email = models.TextField()
def __str__(self):
return f'{self.name}'
class Activity(models.Model):
type = models.TextField()
def __str__(self):
return f'{self.type}'
class ActivityLog(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
activity = models.ForeignKey(Activity, on_delete=models.CASCADE)
start_time = models.DateTimeField()
end_time = models.DateTimeField()
logged_at = models.DateTimeField(auto_now_add=True)
def clean(self):
if self.start_time >= self.end_time:
raise ValidationError(f'Illegal times: {self}')
for other_activity in ActivityLog.objects.filter(user=self.user).exclude(id=self.id):
l = max(self.start_time, other_activity.start_time)
r = min(self.end_time, other_activity.end_time)
if r > l:
raise ValidationError(f'Intersects with another activity: \n{self}\n{other_activity}\n{l}, {r}')
def __str__(self):
return f'ActivityLog[{self.user}, {self.activity}] {self.start_time}-{self.end_time} ({self.end_time - self.start_time})'