def test_list_only_owner_projects(self): form = TranslationForm( {'project': self.project_b_en.slug}, parent=self.project_a_es, user=self.user_a, ) self.assertTrue(form.is_valid()) expected_projects = [ self.project_b_en, self.project_c_br, self.project_d_ar, self.project_e_en, self.project_s_fr, ] self.assertEqual( {proj_slug for proj_slug, _ in form.fields['project'].choices}, {project.slug for project in expected_projects} ) form = TranslationForm( {'project': self.project_g_ga.slug}, parent=self.project_f_ar, user=self.user_b, ) self.assertTrue(form.is_valid()) expected_projects = [ self.project_g_ga, self.project_s_fr, ] self.assertEqual( {proj_slug for proj_slug, _ in form.fields['project'].choices}, {project.slug for project in expected_projects} )
def test_list_only_owner_projects(self): form = TranslationForm( {'project': self.project_b_en.slug}, parent=self.project_a_es, user=self.user_a, ) self.assertTrue(form.is_valid()) expected_projects = [ self.project_b_en, self.project_c_br, self.project_d_ar, self.project_e_en, self.project_s_fr, ] self.assertEqual( {proj_slug for proj_slug, _ in form.fields['project'].choices}, {project.slug for project in expected_projects}, ) form = TranslationForm( {'project': self.project_g_ga.slug}, parent=self.project_f_ar, user=self.user_b, ) self.assertTrue(form.is_valid()) expected_projects = [ self.project_g_ga, self.project_s_fr, ] self.assertEqual( {proj_slug for proj_slug, _ in form.fields['project'].choices}, {project.slug for project in expected_projects}, )
def project_translations(request, project_slug): """Project translations view and form view.""" project = get_object_or_404( Project.objects.for_admin_user(request.user), slug=project_slug) form = TranslationForm( data=request.POST or None, parent=project, user=request.user, ) if request.method == 'POST' and form.is_valid(): form.save() project_dashboard = reverse( 'projects_translations', args=[project.slug], ) return HttpResponseRedirect(project_dashboard) lang_projects = project.translations.all() return render( request, 'projects/project_translations.html', { 'form': form, 'project': project, 'lang_projects': lang_projects, }, )
def project_translations(request, project_slug): """Project translations view and form view.""" project = get_object_or_404( Project.objects.for_admin_user(request.user), slug=project_slug) form = TranslationForm(data=request.POST or None, parent=project) if request.method == 'POST' and form.is_valid(): form.save() project_dashboard = reverse( 'projects_translations', args=[project.slug], ) return HttpResponseRedirect(project_dashboard) lang_projects = project.translations.all() return render( request, 'projects/project_translations.html', { 'form': form, 'project': project, 'lang_projects': lang_projects, }, )
def test_user_cant_add_project_with_same_lang(self): form = TranslationForm( {'project': self.project_b_en.slug}, parent=self.project_e_en, user=self.user_a, ) self.assertFalse(form.is_valid()) self.assertIn( 'Both projects can not have the same language (English).', ''.join(form.errors['project']))
def test_no_nesting_translation(self): self.project_a_es.translations.add(self.project_b_en) self.project_a_es.save() form = TranslationForm( {'project': self.project_b_en.slug}, parent=self.project_c_br, user=self.user_a, ) self.assertFalse(form.is_valid()) self.assertIn('Select a valid choice', ''.join(form.errors['project']))
def test_user_cant_add_project_with_same_lang(self): form = TranslationForm( {'project': self.project_b_en.slug}, parent=self.project_e_en, user=self.user_a, ) self.assertFalse(form.is_valid()) self.assertIn( 'Both projects can not have the same language (English).', ''.join(form.errors['project']), )
def test_user_cant_add_other_user_project(self): form = TranslationForm( {'project': self.project_f_ar.slug}, parent=self.project_b_en, user=self.user_a, ) self.assertFalse(form.is_valid()) self.assertIn('Select a valid choice', ''.join(form.errors['project'])) self.assertNotIn( self.project_f_ar, [proj_slug for proj_slug, _ in form.fields['project'].choices])
def test_user_cant_add_project_with_same_lang_of_other_translation(self): self.project_a_es.translations.add(self.project_b_en) self.project_a_es.save() form = TranslationForm( {'project': self.project_e_en.slug}, parent=self.project_a_es, user=self.user_a, ) self.assertFalse(form.is_valid()) self.assertIn('This project already has a translation for English.', ''.join(form.errors['project']))
def test_no_nesting_translation_case_2(self): self.project_a_es.translations.add(self.project_b_en) self.project_a_es.save() form = TranslationForm( {'project': self.project_a_es.slug}, parent=self.project_c_br, user=self.user_a, ) self.assertFalse(form.is_valid()) self.assertIn('A project with existing translations can not', ''.join(form.errors['project']))
def test_not_already_translation(self): self.project_a_es.translations.add(self.project_b_en) self.project_a_es.save() form = TranslationForm( {'project': self.project_c_br.slug}, parent=self.project_b_en, user=self.user_a, ) self.assertFalse(form.is_valid()) self.assertIn('is already a translation', ''.join(form.errors['project']))
def test_not_already_translation(self): self.project_a_es.translations.add(self.project_b_en) self.project_a_es.save() form = TranslationForm( {'project': self.project_c_br.slug}, parent=self.project_b_en, user=self.user_a, ) self.assertFalse(form.is_valid()) self.assertIn( 'is already a translation', ''.join(form.errors['project']), )
def test_no_nesting_translation_case_2(self): self.project_a_es.translations.add(self.project_b_en) self.project_a_es.save() form = TranslationForm( {'project': self.project_a_es.slug}, parent=self.project_c_br, user=self.user_a, ) self.assertFalse(form.is_valid()) self.assertIn( 'A project with existing translations can not', ''.join(form.errors['project']), )
def test_no_nesting_translation(self): self.project_a_es.translations.add(self.project_b_en) self.project_a_es.save() form = TranslationForm( {'project': self.project_b_en.slug}, parent=self.project_c_br, user=self.user_a, ) self.assertFalse(form.is_valid()) self.assertIn( 'Select a valid choice', ''.join(form.errors['project']), )
def test_user_cant_add_project_with_same_lang_of_other_translation(self): self.project_a_es.translations.add(self.project_b_en) self.project_a_es.save() form = TranslationForm( {'project': self.project_e_en.slug}, parent=self.project_a_es, user=self.user_a, ) self.assertFalse(form.is_valid()) self.assertIn( 'This project already has a translation for English.', ''.join(form.errors['project']), )
def test_user_cant_add_other_user_project(self): form = TranslationForm( {'project': self.project_f_ar.slug}, parent=self.project_b_en, user=self.user_a, ) self.assertFalse(form.is_valid()) self.assertIn( 'Select a valid choice', ''.join(form.errors['project']), ) self.assertNotIn( self.project_f_ar, [proj_slug for proj_slug, _ in form.fields['project'].choices], )
def project_translations(request, project_slug): project = get_object_or_404(Project.objects.for_admin_user(request.user), slug=project_slug) form = TranslationForm(data=request.POST or None, parent=project) if request.method == "POST" and form.is_valid(): form.save() project_dashboard = reverse("projects_translations", args=[project.slug]) return HttpResponseRedirect(project_dashboard) lang_projects = project.translations.all() return render_to_response( "projects/project_translations.html", {"form": form, "project": project, "lang_projects": lang_projects}, context_instance=RequestContext(request), )
def project_translations(request, project_slug): project = get_object_or_404(Project.objects.for_admin_user(request.user), slug=project_slug) form = TranslationForm(data=request.POST or None, parent=project) if request.method == 'POST' and form.is_valid(): form.save() project_dashboard = reverse('projects_translations', args=[project.slug]) return HttpResponseRedirect(project_dashboard) lang_projects = project.translations.all() return render_to_response( 'projects/project_translations.html', {'form': form, 'project': project, 'lang_projects': lang_projects}, context_instance=RequestContext(request) )
def test_excludes_existing_translations(self): self.project_a_es.translations.add(self.project_b_en) self.project_a_es.translations.add(self.project_c_br) self.project_a_es.save() form = TranslationForm( {'project': self.project_d_ar.slug}, parent=self.project_a_es, user=self.user_a, ) self.assertTrue(form.is_valid()) expected_projects = [ self.project_d_ar, self.project_e_en, self.project_s_fr, ] self.assertEqual( {proj_slug for proj_slug, _ in form.fields['project'].choices}, {project.slug for project in expected_projects} )
def test_excludes_existing_translations(self): self.project_a_es.translations.add(self.project_b_en) self.project_a_es.translations.add(self.project_c_br) self.project_a_es.save() form = TranslationForm( {'project': self.project_d_ar.slug}, parent=self.project_a_es, user=self.user_a, ) self.assertTrue(form.is_valid()) expected_projects = [ self.project_d_ar, self.project_e_en, self.project_s_fr, ] self.assertEqual( {proj_slug for proj_slug, _ in form.fields['project'].choices}, {project.slug for project in expected_projects}, )