diff --git a/projects/forms.py b/projects/forms.py index 28a756fb6..07248a945 100644 --- a/projects/forms.py +++ b/projects/forms.py @@ -3,6 +3,18 @@ from django import forms from projects.models import Project, File, Conf +class CreateProjectForm(forms.ModelForm): + class Meta: + model = Project + exclude = ('user', 'slug', 'repo', 'docs_directory',) + + +class ImportProjectForm(forms.ModelForm): + class Meta: + model = Project + exclude = ('user', 'slug', 'version',) + + class ProjectForm(forms.ModelForm): class Meta: model = Project diff --git a/projects/models.py b/projects/models.py index d629f6b3e..6fadb31bf 100644 --- a/projects/models.py +++ b/projects/models.py @@ -81,6 +81,10 @@ class Project(models.Model): conf_py.write(self.get_rendered_conf()) conf_py.close() + @property + def is_imported(self): + return bool(self.repo) + class Conf(models.Model): project = models.OneToOneField(Project, related_name='conf') diff --git a/projects/templates/projects/project_import.html b/projects/templates/projects/project_import.html new file mode 100644 index 000000000..e93366421 --- /dev/null +++ b/projects/templates/projects/project_import.html @@ -0,0 +1,10 @@ +{% extends "projects/base_project.html" %} + +{% block title %}Import an existing project{% endblock %} + +{% block content %} +
{% csrf_token %} + {{ form.as_p }} +

+
+{% endblock %} diff --git a/projects/views/private.py b/projects/views/private.py index fcba69987..749bc9221 100644 --- a/projects/views/private.py +++ b/projects/views/private.py @@ -8,7 +8,7 @@ from django.shortcuts import get_object_or_404, render_to_response, redirect from django.template import RequestContext from django.views.generic.list_detail import object_list -from projects.forms import FileForm, ProjectForm, ConfForm +from projects.forms import FileForm, CreateProjectForm, ImportProjectForm, ConfForm from projects.models import Project @@ -58,7 +58,7 @@ def project_create(request): """ A form for creating a brand new project? """ - form = ProjectForm(request.POST or None) + form = CreateProjectForm(request.POST or None) if request.method == 'POST' and form.is_valid(): form.instance.user = request.user @@ -76,7 +76,12 @@ def project_create(request): def project_edit(request, project_slug): project = get_object_or_404(request.user.projects.all(), slug=project_slug) - form = ProjectForm(instance=project, data=request.POST or None) + if project.is_imported: + form_class = ImportProjectForm + else: + form_class = CreateProjectForm + + form = form_class(instance=project, data=request.POST or None) if request.method == 'POST' and form.is_valid(): form.save() @@ -109,7 +114,19 @@ def project_import(request): """ I guess a form here for configuring your import? """ - pass + form = ImportProjectForm(request.POST or None) + + if request.method == 'POST' and form.is_valid(): + form.instance.user = request.user + project = form.save() + project_manage = reverse('projects_manage', args=[project.slug]) + return HttpResponseRedirect(project_manage) + + return render_to_response( + 'projects/project_import.html', + {'form': form}, + context_instance=RequestContext(request) + ) @login_required def file_add(request, project_slug):