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]))
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]))
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)
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]))
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))
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) )
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]))
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]))