コード例 #1
0
ファイル: views.py プロジェクト: Edinunzio/raspberryio
def project_step_create_edit(request, project_slug, project_step_number=None):
    user = request.user
    project = get_object_or_404(Project, slug=project_slug)
    if not project.is_editable(request):
        return HttpResponseForbidden('You are not the owner of this project.')
    if 'add' in request.path and project.steps.count() >= 20:
        messages.add_message(request, messages.WARNING,
                    'This project already contains 20 steps.')
        return redirect('project-detail', project.slug)
    if project_step_number is not None:
        project_step = get_object_or_404(
            ProjectStep, project=project, _order=project_step_number
        )
    else:
        project_step = ProjectStep(project=project)
    project_step_form = ProjectStepForm(
        request.POST or None, instance=project_step
    )
    if project_step_form.is_valid():
        project_step_form.save()
        if project.is_published():
            action.send(user, verb='updated', action_object=project_step, target=project)
        # User clicked "save and add another"
        if 'save-add' in request.POST:
            redirect_args = ('project-step-create-edit', project.slug)
        # User clicked "save" (catch anything else)
        else:
            redirect_args = (project,)
        return redirect(*redirect_args)
    return render(request, 'project/project_step_create_edit.html', {
        'project': project,
        'project_step': project_step,
        'project_step_form': project_step_form,
    })
コード例 #2
0
ファイル: test_forms.py プロジェクト: digimatronics/raspberry
 def test_placeholder_labels(self):
     request = self.request_factory.get('/')
     form = ProjectStepForm()
     # first assert that label is shown
     self.assertEqual(form.fields['title'].label, 'Title')
     form.Meta.remove_labels = True
     form = ProjectStepForm(request.GET, instance=self.project)
     # now assert that Meta attribute removes it
     self.assertEqual(form.fields['title'].label, '')
コード例 #3
0
ファイル: test_forms.py プロジェクト: digimatronics/raspberry
 def test_bad_video_url(self):
     post_data = {
         'title': self.get_random_string(),
         'content': self.get_random_string(),
         'video': 'http://example.com/badurl',
     }
     request = self.request_factory.post('/', post_data)
     form = ProjectStepForm(request.POST, instance=self.project_step)
     self.assertFalse(form.is_valid())
コード例 #4
0
ファイル: test_forms.py プロジェクト: digimatronics/raspberry
 def test_images_empty(self):
     post_data = {
         'title': self.get_random_string(),
         'content': self.get_random_string(),
         'images': []
     }
     request = self.request_factory.post('/', post_data)
     form = ProjectStepForm(request.POST, instance=self.project_step)
     if form.is_valid():
         project_step = form.save()
         self.assertEqual(project_step.gallery.count(), 0)
     else:
         self.fail('Form should be valid')
コード例 #5
0
ファイル: test_forms.py プロジェクト: Edinunzio/raspberryio
 def test_images_empty(self):
     post_data = {
         'title': self.get_random_string(),
         'content': self.get_random_string(),
         'images': []
     }
     request = self.request_factory.post('/', post_data)
     form = ProjectStepForm(request.POST, instance=self.project_step)
     if form.is_valid():
         project_step = form.save()
         self.assertEqual(project_step.gallery.count(), 0)
     else:
         self.fail('Form should be valid')
コード例 #6
0
ファイル: test_forms.py プロジェクト: digimatronics/raspberry
 def test_images_valid(self):
     project_image = self.create_project_image()
     post_data = {
         'title': self.get_random_string(),
         'content': self.get_random_string(),
         'images': [str(project_image.id)]
     }
     request = self.request_factory.post('/', post_data)
     form = ProjectStepForm(request.POST, instance=self.project_step)
     if form.is_valid():
         project_step = form.save()
         self.assertEqual(list(project_step.gallery.all()), [project_image])
     else:
         self.fail('Form should be valid')
コード例 #7
0
ファイル: test_forms.py プロジェクト: Edinunzio/raspberryio
 def test_images_valid(self):
     project_image = self.create_project_image()
     post_data = {
         'title': self.get_random_string(),
         'content': self.get_random_string(),
         'images': [str(project_image.id)]
     }
     request = self.request_factory.post('/', post_data)
     form = ProjectStepForm(request.POST, instance=self.project_step)
     if form.is_valid():
         project_step = form.save()
         self.assertEqual(list(project_step.gallery.all()), [project_image])
     else:
         self.fail('Form should be valid')
コード例 #8
0
ファイル: test_forms.py プロジェクト: digimatronics/raspberry
 def test_multiple_images_valid(self):
     project_image1 = self.create_project_image()
     project_image2 = self.create_project_image()
     project_images = (project_image1, project_image2)
     post_data = {
         'title': self.get_random_string(),
         'content': self.get_random_string(),
         'images': ','.join([str(image.id) for image in project_images])
     }
     request = self.request_factory.post('/', post_data)
     form = ProjectStepForm(request.POST, instance=self.project_step)
     if form.is_valid():
         project_step = form.save()
         self.assertEqual(tuple(project_step.gallery.all()), project_images)
     else:
         self.fail('Form should be valid')
コード例 #9
0
ファイル: test_forms.py プロジェクト: Edinunzio/raspberryio
 def test_multiple_images_valid(self):
     project_image1 = self.create_project_image()
     project_image2 = self.create_project_image()
     project_images = (project_image1, project_image2)
     post_data = {
         'title': self.get_random_string(),
         'content': self.get_random_string(),
         'images': ','.join([str(image.id) for image in project_images])
     }
     request = self.request_factory.post('/', post_data)
     form = ProjectStepForm(request.POST, instance=self.project_step)
     if form.is_valid():
         project_step = form.save()
         self.assertEqual(tuple(project_step.gallery.all()), project_images)
     else:
         self.fail('Form should be valid')
コード例 #10
0
def project_step_create_edit(request, project_slug, project_step_number=None):
    user = request.user
    project = get_object_or_404(Project, slug=project_slug)
    if not project.is_editable(request):
        return HttpResponseForbidden('You are not the owner of this project.')
    if 'add' in request.path and project.steps.count() >= 20:
        messages.add_message(request, messages.WARNING,
                             'This project already contains 20 steps.')
        return redirect('project-detail', project.slug)
    if project_step_number is not None:
        project_step = get_object_or_404(ProjectStep,
                                         project=project,
                                         _order=project_step_number)
    else:
        project_step = ProjectStep(project=project)
    project_step_form = ProjectStepForm(request.POST or None,
                                        instance=project_step)
    if project_step_form.is_valid():
        project_step_form.save()
        if project.is_published():
            action.send(user,
                        verb='updated',
                        action_object=project_step,
                        target=project)
        # User clicked "save and add another"
        if 'save-add' in request.POST:
            redirect_args = ('project-step-create-edit', project.slug)
        # User clicked "save" (catch anything else)
        else:
            redirect_args = (project, )
        return redirect(*redirect_args)
    return render(
        request, 'project/project_step_create_edit.html', {
            'project': project,
            'project_step': project_step,
            'project_step_form': project_step_form,
        })
コード例 #11
0
ファイル: test_forms.py プロジェクト: digimatronics/raspberry
 def test_no_content(self):
     request = self.request_factory.post('/', {})
     form = ProjectStepForm(request.POST, instance=self.project_step)
     self.assertFalse(form.is_valid())
     self.assertEqual(form.errors['content'], ['This field is required.'])
コード例 #12
0
ファイル: test_forms.py プロジェクト: Edinunzio/raspberryio
 def test_no_content(self):
     request = self.request_factory.post('/', {})
     form = ProjectStepForm(request.POST, instance=self.project_step)
     self.assertFalse(form.is_valid())
     self.assertEqual(form.errors['content'], ['This field is required.'])