from django.db import models
+from django.contrib.auth.models import User
class Area(models.Model):
name = models.CharField(max_length=64)
- notes = models.TextField()
+ notes = models.TextField(blank=True, null=True)
+
+ def __str__(self):
+ return self.name
class Crag(models.Model):
area = models.ForeignKey(
related_name='crags',
)
name = models.CharField(max_length=64)
- notes = models.TextField()
+ notes = models.TextField(blank=True, null=True)
+
+ def __str__(self):
+ return self.name
class Route(models.Model):
area = models.ForeignKey(
related_name='routes',
)
name = models.CharField(max_length=64)
- notes = models.TextField()
+ notes = models.TextField(blank=True, null=True)
+
+ def __str__(self):
+ return self.name
ROUTE_DIFFICULTY_CHOICES = (
('5.0', '5.0'),
name = models.CharField(max_length=64, null=True)
difficulty = models.CharField(max_length=5, choices=ROUTE_DIFFICULTY_CHOICES)
safety = models.CharField(max_length=4, choices=SAFETY_CHOICES)
- notes = models.TextField()
+ notes = models.TextField(blank=True, null=True)
+
+ def __str__(self):
+ if self.name:
+ return '{} ({})'.format(self.name, self.difficulty)
+ return 'Pitch ({})'.format(self.difficulty)
class Cluster(models.Model):
area = models.ForeignKey(
related_name='clusters',
)
name = models.CharField(max_length=64)
- notes = models.TextField()
+ notes = models.TextField(blank=True, null=True)
+
+ def __str__(self):
+ return self.name
class Boulder(models.Model):
cluster = models.ForeignKey(
related_name='boulders',
)
name = models.CharField(max_length=64)
- notes = models.TextField()
+ notes = models.TextField(blank=True, null=True)
+
+ def __str__(self):
+ return self.name
BOULDER_DIFFICULTY_CHOICES = (
('V0', 'V0'),
name = models.CharField(max_length=64)
difficulty = models.CharField(max_length=3, choices=BOULDER_DIFFICULTY_CHOICES)
safety = models.CharField(max_length=4, choices=SAFETY_CHOICES)
- notes = models.TextField()
+ notes = models.TextField(blank=True, null=True)
+
+ def __str__(self):
+ return '{} ({})'.format(self.name, self.difficulty)
+
+class RouteTodo(models.Model):
+ user = models.ForeignKey(User, on_delete=models.CASCADE)
+ route = models.ForeignKey(Route, on_delete=models.CASCADE)
+
+class ProblemTodo(models.Model):
+ user = models.ForeignKey(User, on_delete=models.CASCADE)
+ problem = models.ForeignKey(Problem, on_delete=models.CASCADE)
+
+class RouteTick(models.Model):
+ user = models.ForeignKey(User, on_delete=models.CASCADE)
+ route = models.ForeignKey(Route, on_delete=models.CASCADE)
+ timestamp = models.DateTimeField()
+ notes = models.TextField(blank=True, null=True)
+
+class ProblemTick(models.Model):
+ user = models.ForeignKey(User, on_delete=models.CASCADE)
+ problem = models.ForeignKey(Problem, on_delete=models.CASCADE)
+ timestamp = models.DateTimeField()
+ notes = models.TextField(blank=True, null=True)