diff --git a/seminar/admin.py b/seminar/admin.py index 49bf80f3..d208bb18 100644 --- a/seminar/admin.py +++ b/seminar/admin.py @@ -31,26 +31,37 @@ class CisloForm(ModelForm): def clean(self): if self.cleaned_data.get('verejne_db') == False: return self.cleaned_data - cn = m.CisloNode.objects.get(cislo=self.instance) + # cn = m.CisloNode.objects.get(cislo=self.instance) + # errors = [] + # for ch in tl.all_children(cn): + # if isinstance(ch, m.TemaVCisleNode): + # if ch.tema.stav not in \ + # (m.Problem.STAV_ZADANY, m.Problem.STAV_VYRESENY): + # errors.append(ValidationError('Téma %(tema)s není zadané ani vyřešené', params={'tema':ch.tema})) + # + # if isinstance(ch, m.UlohaZadaniNode) or isinstance(ch, m.UlohaVzorakNode): + # if ch.uloha.stav not in \ + # (m.Problem.STAV_ZADANY, m.Problem.STAV_VYRESENY): + # errors.append(ValidationError('Úloha %(uloha)s není zadaná ani vyřešená', params={'uloha':ch.uloha})) + # if isinstance(ch, m.ReseniNode): + # for problem in ch.reseni.problem_set: + # if problem not in \ + # (m.Problem.STAV_ZADANY, m.Problem.STAV_VYRESENY): + # errors.append(ValidationError('Problém %s není zadaný ani vyřešený', code=problem)) + # if errors: + # errors.append(ValidationError(mark_safe('Pokud chceš učinit všechny problémy, co nejsou zadané ani vyřešené, zadanými a číslo zveřejnit, můžeš to udělat pomocí akce v seznamu čísel'))) + # raise ValidationError(errors) + errors = [] - for ch in tl.all_children(cn): - if isinstance(ch, m.TemaVCisleNode): - if ch.tema.stav not in \ - (m.Problem.STAV_ZADANY, m.Problem.STAV_VYRESENY): - errors.append(ValidationError('Téma %(tema)s není zadané ani vyřešené', params={'tema':ch.tema})) - - if isinstance(ch, m.UlohaZadaniNode) or isinstance(ch, m.UlohaVzorakNode): - if ch.uloha.stav not in \ - (m.Problem.STAV_ZADANY, m.Problem.STAV_VYRESENY): - errors.append(ValidationError('Úloha %(uloha)s není zadaná ani vyřešená', params={'uloha':ch.uloha})) - if isinstance(ch, m.ReseniNode): - for problem in ch.reseni.problem_set: - if problem not in \ - (m.Problem.STAV_ZADANY, m.Problem.STAV_VYRESENY): - errors.append(ValidationError('Problém %s není zadaný ani vyřešený', code=problem)) + for ch in m.Uloha.objects.filter(cislo_zadani=self.instance): + if ch.stav not in (m.Problem.STAV_ZADANY, m.Problem.STAV_VYRESENY): + errors.append( + ValidationError('Úloha %(uloha)s není zadaná ani vyřešená', params={'uloha': ch})) if errors: - errors.append(ValidationError(mark_safe('Pokud chceš učinit všechny problémy, co nejsou zadané ani vyřešené, zadanými a číslo zveřejnit, můžeš to udělat pomocí akce v seznamu čísel'))) + errors.append(ValidationError(mark_safe( + 'Pokud chceš učinit všechny problémy, co nejsou zadané ani vyřešené, zadanými a číslo zveřejnit, můžeš to udělat pomocí akce v seznamu čísel'))) raise ValidationError(errors) + return self.cleaned_data