39 lines
1,018 B
Python
39 lines
1,018 B
Python
|
from django.db import models
|
||
|
from django.utils.text import slugify
|
||
|
|
||
|
from utils.models import CampRelatedModel
|
||
|
|
||
|
|
||
|
class Team(CampRelatedModel):
|
||
|
|
||
|
class Meta:
|
||
|
ordering = ['name']
|
||
|
unique_together = ('slug', 'camp')
|
||
|
|
||
|
name = models.CharField(max_length=255)
|
||
|
slug = models.SlugField(max_length=255, blank=True)
|
||
|
camp = models.ForeignKey('camps.Camp')
|
||
|
description = models.TextField()
|
||
|
members = models.ManyToManyField('auth.User', through='teams.TeamMember')
|
||
|
|
||
|
def __str__(self):
|
||
|
return '{} ({})'.format(self.name, self.camp)
|
||
|
|
||
|
def save(self, **kwargs):
|
||
|
if (
|
||
|
not self.pk or
|
||
|
not self.slug
|
||
|
):
|
||
|
slug = slugify(self.name)
|
||
|
self.slug = slug
|
||
|
|
||
|
super().save(**kwargs)
|
||
|
|
||
|
class TeamMember(models.Model):
|
||
|
user = models.ForeignKey('auth.User')
|
||
|
team = models.ForeignKey('teams.Team')
|
||
|
leader = models.BooleanField(default=False)
|
||
|
|
||
|
def __str__(self):
|
||
|
return '{} ({})'.format(self.user, self.team)
|