Ejemplo n.º 1
0
    def done(self, form_list, **kwargs):
        """Save form data as object instance

        Don't save form data directly, instead bypass documentation building and
        other side effects for now, by signalling a save without commit. Then,
        finish by added the members to the project and saving.
        """
        form_data = self.get_all_cleaned_data()
        extra_fields = ProjectExtraForm.Meta.fields
        # expect the first form
        basics_form = form_list[0]
        # Save the basics form to create the project instance, then alter
        # attributes directly from other forms
        project = basics_form.save()
        tags = form_data.pop('tags', [])
        for tag in tags:
            project.tags.add(tag)
        for field, value in form_data.items():
            if field in extra_fields:
                setattr(project, field, value)
        basic_only = True
        project.save()
        project_import.send(sender=project, request=self.request)
        trigger_build(project, basic=basic_only)
        return HttpResponseRedirect(reverse('projects_detail',
                                            args=[project.slug]))
Ejemplo n.º 2
0
    def done(self, form_list, **kwargs):
        """
        Save form data as object instance.

        Don't save form data directly, instead bypass documentation building and
        other side effects for now, by signalling a save without commit. Then,
        finish by added the members to the project and saving.
        """
        form_data = self.get_all_cleaned_data()
        extra_fields = ProjectExtraForm.Meta.fields
        # expect the first form; manually wrap in a list in case it's a
        # View Object, as it is in Python 3.
        basics_form = list(form_list)[0]
        # Save the basics form to create the project instance, then alter
        # attributes directly from other forms
        project = basics_form.save()
        tags = form_data.pop('tags', [])
        for tag in tags:
            project.tags.add(tag)
        for field, value in list(form_data.items()):
            if field in extra_fields:
                setattr(project, field, value)
        project.save()

        # TODO: this signal could be removed, or used for sync task
        project_import.send(sender=project, request=self.request)

        self.trigger_initial_build(project)
        return HttpResponseRedirect(
            reverse('projects_detail', args=[project.slug]))
Ejemplo n.º 3
0
    def finish_import_project(self, request, project, tags=None):
        """
        Perform last steps to import a project into Read the Docs.

        - Add the user from request as maintainer
        - Set all the tags to the project
        - Send Django Signal
        - Trigger initial build

        It requires the Project was already saved into the DB.

        :param request: Django Request object
        :param project: Project instance just imported (already saved)
        :param tags: tags to add to the project
        """
        if not tags:
            tags = []

        project.users.add(request.user)
        for tag in tags:
            project.tags.add(tag)

        # TODO: this signal could be removed, or used for sync task
        project_import.send(sender=project, request=request)

        self.trigger_initial_build(project, request.user)
Ejemplo n.º 4
0
    def done(self, form_list, **kwargs):
        """Save form data as object instance

        Don't save form data directly, instead bypass documentation building and
        other side effects for now, by signalling a save without commit. Then,
        finish by added the members to the project and saving.
        """
        form_data = self.get_all_cleaned_data()
        extra_fields = ProjectExtraForm.Meta.fields
        # expect the first form
        basics_form = form_list[0]
        # Save the basics form to create the project instance, then alter
        # attributes directly from other forms
        project = basics_form.save()
        tags = form_data.pop('tags', [])
        for tag in tags:
            project.tags.add(tag)
        for field, value in form_data.items():
            if field in extra_fields:
                setattr(project, field, value)
        basic_only = True
        project.save()
        project_import.send(sender=project, request=self.request)
        trigger_build(project, basic=basic_only)
        return HttpResponseRedirect(
            reverse('projects_detail', args=[project.slug]))
Ejemplo n.º 5
0
def project_resync_webhook(request, project_slug):
    """
    Resync a project webhook.

    The signal will add a success/failure message on the request.
    """
    project = get_object_or_404(Project.objects.for_admin_user(request.user),
                                slug=project_slug)
    if request.method == 'POST':
        project_import.send(sender=project, request=request)
        return HttpResponseRedirect(
            reverse('projects_detail', args=[project.slug]))

    return render_to_response('projects/project_resync_webhook.html',
                              {'project': project},
                              context_instance=RequestContext(request))
Ejemplo n.º 6
0
def project_resync_webhook(request, project_slug):
    """
    Resync a project webhook.

    The signal will add a success/failure message on the request.
    """
    project = get_object_or_404(Project.objects.for_admin_user(request.user),
                                slug=project_slug)
    if request.method == 'POST':
        project_import.send(sender=project, request=request)
        return HttpResponseRedirect(reverse('projects_detail',
                                            args=[project.slug]))

    return render_to_response(
        'projects/project_resync_webhook.html',
        {'project': project},
        context_instance=RequestContext(request)
    )
Ejemplo n.º 7
0
    def done(self, form_list, **kwargs):
        """Save form data as object instance

        Don't save form data directly, instead bypass documentation building and
        other side effects for now, by signalling a save without commit. Then,
        finish by added the members to the project and saving.
        """
        # expect the first form
        basics_form = form_list[0]
        # Save the basics form to create the project instance, then alter
        # attributes directly from other forms
        project = basics_form.save()
        for form in form_list[1:]:
            for (field, value) in form.cleaned_data.items():
                setattr(project, field, value)
        basic_only = True
        project.save()
        project_import.send(sender=project, request=self.request)
        trigger_build(project, basic=basic_only)
        return HttpResponseRedirect(reverse("projects_detail", args=[project.slug]))
Ejemplo n.º 8
0
    def done(self, form_list, **kwargs):
        '''Save form data as object instance

        Don't save form data directly, instead bypass documentation building and
        other side effects for now, by signalling a save without commit. Then,
        finish by added the members to the project and saving.
        '''
        # expect the first form
        basics_form = form_list[0]
        # Save the basics form to create the project instance, then alter
        # attributes directly from other forms
        project = basics_form.save()
        for form in form_list[1:]:
            for (field, value) in form.cleaned_data.items():
                setattr(project, field, value)
        basic_only = True
        project.save()
        project_import.send(sender=project, request=self.request)
        trigger_build(project, basic=basic_only)
        return HttpResponseRedirect(reverse('projects_detail',
                                            args=[project.slug]))