class TeamForm(forms.ModelForm): class Meta: model = Team fields = ["name", "description"] def __init__(self, user, *args, **kwargs): self.user = user super().__init__(*args, **kwargs) self.load_snake_data() def clean(self): cleaned_data = super().clean() return cleaned_data def load_snake_data(self): if self.instance and self.instance.snake_id: self.snake = self.instance.snake self.initial["snake_url"] = self.instance.snake.url else: self.snake = Snake() def save(self, *args, **kwargs): self.snake.name = self.cleaned_data["name"] self.snake.save() team = super().save(commit=False) team.snake = self.snake team.save() TeamMember.objects.get_or_create(user=self.user, team=team) return team
def basic(self, n=1, commit=False, user=None): if n > 1: return [self.basic(commit=commit, user=user) for _ in range(n)] snake = Snake(name="test", url="http://foo.bar") if user: UserSnake.objects.create(user=user, snake=snake) if commit: snake.save() return snake
class TeamForm(forms.ModelForm): snake_url = forms.CharField( max_length=255, label='URL', help_text= 'Be sure to add a <strong>valid</strong> Snake URL here before \ the tournament starts, otherwise you may not be able to compete!', required=False, widget=forms.URLInput()) class Meta: model = Team fields = ['name', 'description'] def __init__(self, user, *args, **kwargs): self.user = user super().__init__(*args, **kwargs) self.load_snake_data() def clean(self): cleaned_data = super().clean() if cleaned_data.get('snake_url') and not is_valid_url( cleaned_data.get('snake_url')): raise ValidationError('Snake requires a valid URL') return cleaned_data def load_snake_data(self): if self.instance and self.instance.snake_id: self.snake = self.instance.snake self.initial['snake_url'] = self.instance.snake.url else: self.snake = Snake() def save(self, *args, **kwargs): self.snake.url = self.cleaned_data['snake_url'] self.snake.name = self.cleaned_data['name'] self.snake.save() team = super().save(commit=False) team.snake = self.snake team.save() TeamMember.objects.get_or_create( user=self.user, team=team, ) return team
def load_snake_data(self): if self.instance and self.instance.snake_id: self.snake = self.instance.snake self.initial['snake_url'] = self.instance.snake.url else: self.snake = Snake()