aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Elkins <melkins@tislabs.com>2012-02-07 14:20:19 +0000
committerMichael Elkins <melkins@tislabs.com>2012-02-07 14:20:19 +0000
commit8fb287710d11618fe638f7ff5ab0e00d1ede2989 (patch)
tree800003f541f4dc696e25029acf9810cbc51c6a19
parentde15ee76f0186d06ffad05bdc313315a4b21879b (diff)
make selection of parent in the user creation form optional, with the default being the current user
renamed ChildWizardForm to UserCreateForm renamed template for user creation form svn path=/branches/tk161/; revision=4306
-rw-r--r--rpkid/rpki/gui/app/forms.py6
-rw-r--r--rpkid/rpki/gui/app/templates/app/user_create_form.html (renamed from rpkid/rpki/gui/app/templates/app/child_wizard_form.html)0
-rw-r--r--rpkid/rpki/gui/app/urls.py1
-rw-r--r--rpkid/rpki/gui/app/views.py76
4 files changed, 30 insertions, 53 deletions
diff --git a/rpkid/rpki/gui/app/forms.py b/rpkid/rpki/gui/app/forms.py
index 2c20ee0f..a2940989 100644
--- a/rpkid/rpki/gui/app/forms.py
+++ b/rpkid/rpki/gui/app/forms.py
@@ -113,14 +113,16 @@ class ImportClientForm(forms.Form):
widget=forms.FileInput(attrs={'class': 'input-file'}))
-class ChildWizardForm(forms.Form):
+class UserCreateForm(forms.Form):
handle = forms.CharField(max_length=30, help_text='handle for new child')
email = forms.CharField(max_length=30,
help_text='email address for new user')
password = forms.CharField(widget=forms.PasswordInput)
password2 = forms.CharField(widget=forms.PasswordInput,
label='Confirm Password')
- parent = forms.ModelChoiceField(queryset=models.Conf.objects.all())
+ parent = forms.ModelChoiceField(required=False,
+ queryset=models.Conf.objects.all(),
+ help_text='optionally make a child of')
def clean_handle(self):
handle = self.cleaned_data.get('handle')
diff --git a/rpkid/rpki/gui/app/templates/app/child_wizard_form.html b/rpkid/rpki/gui/app/templates/app/user_create_form.html
index 1a07402f..1a07402f 100644
--- a/rpkid/rpki/gui/app/templates/app/child_wizard_form.html
+++ b/rpkid/rpki/gui/app/templates/app/user_create_form.html
diff --git a/rpkid/rpki/gui/app/urls.py b/rpkid/rpki/gui/app/urls.py
index 59f1ab2c..b9cdbaa0 100644
--- a/rpkid/rpki/gui/app/urls.py
+++ b/rpkid/rpki/gui/app/urls.py
@@ -36,7 +36,6 @@ urlpatterns = patterns('',
(r'^child/(?P<pk>\d+)/delete$', views.child_delete),
(r'^child/(?P<pk>\d+)/edit$', views.child_edit),
(r'^child/(?P<pk>\d+)/export$', views.child_response),
- (r'^child/(?P<pk>\d+)/destroy$', views.destroy_handle),
(r'^gbr/$', views.ghostbuster_list),
(r'^gbr/create$', views.ghostbuster_create),
(r'^gbr/(?P<pk>\d+)$', views.ghostbuster_view),
diff --git a/rpkid/rpki/gui/app/views.py b/rpkid/rpki/gui/app/views.py
index b6f02a4b..9813d8cc 100644
--- a/rpkid/rpki/gui/app/views.py
+++ b/rpkid/rpki/gui/app/views.py
@@ -434,7 +434,6 @@ def roa_create(request):
form = forms.ROARequest(request.POST, request.FILES)
if form.is_valid():
asn = form.cleaned_data.get('asn')
- conf = request.session['handle']
rng = form._as_resource_range() # FIXME calling "private" method
max_prefixlen = int(form.cleaned_data.get('max_prefixlen'))
@@ -582,7 +581,7 @@ def roa_delete(request, pk):
return render(request, 'app/roa_request_confirm_delete.html',
{'object': obj, 'routes': routes})
-
+
@handle_required
def ghostbuster_list(request):
"""
@@ -662,7 +661,7 @@ def ghostbuster_edit(request, pk):
def ghostbuster_create(request):
return _ghostbuster_edit(request)
-
+
@handle_required
def refresh(request):
"""
@@ -714,34 +713,7 @@ def child_delete(request, pk):
template_name='app/child_detail.html',
extra_context={'confirm_delete': True})
-
-@login_required
-def destroy_handle(request, handle):
- """
- Completely remove a hosted resource handle.
-
- """
- log = request.META['wsgi.errors']
-
- if not request.user.is_superuser:
- return http.HttpResponseForbidden()
-
- get_object_or_404(models.Conf, handle=handle)
-
- if request.method == 'POST':
- form = forms.GenericConfirmationForm(request.POST, request.FILES)
- if form.is_valid():
- glue.destroy_handle(log, handle)
- return render(request, 'app/generic_result.html',
- {'operation': 'Destroy ' + handle,
- 'result': 'Succeeded'})
- else:
- form = forms.GenericConfirmationForm()
-
- return render(request, 'app/destroy_handle_form.html',
- {'form': form, 'handle': handle})
-
-
+
def roa_match(rng):
"""
Return a list of tuples of matching routes and roas.
@@ -959,36 +931,40 @@ def user_create(request):
return http.HttpResponseForbidden()
if request.method == 'POST':
- form = forms.ChildWizardForm(request.POST, request.FILES)
+ form = forms.UserCreateForm(request.POST, request.FILES)
if form.is_valid():
handle = form.cleaned_data.get('handle')
pw = form.cleaned_data.get('password')
email = form.cleaned_data.get('email')
+ parent = form.cleaned_data.get('parent')
User.objects.create_user(handle, email, pw)
- # FIXME etree_wrapper should allow us to deal with file objects
- t = NamedTemporaryFile(delete=False)
- t.close()
-
zk_child = Zookeeper(handle=handle)
identity_xml = zk_child.initialize()
- identity_xml.save(t.name)
- parent = form.cleaned_data.get('parent')
- zk_parent = Zookeeper(handle=parent.handle)
- parent_response, _ = zk_parent.configure_child(t.name)
- parent_response.save(t.name)
- repo_req, _ = zk_child.configure_parent(t.name)
- repo_req.save(t.name)
- repo_resp, _ = zk_parent.configure_publication_client(t.name)
- repo_resp.save(t.name)
- zk_child.configure_repository(t.name)
- os.remove(t.name)
+ handles = [handle]
+ if parent:
+ # FIXME etree_wrapper should allow us to deal with file objects
+ t = NamedTemporaryFile(delete=False)
+ t.close()
+
+ identity_xml.save(t.name)
+ zk_parent = Zookeeper(handle=parent.handle)
+ parent_response, _ = zk_parent.configure_child(t.name)
+ parent_response.save(t.name)
+ repo_req, _ = zk_child.configure_parent(t.name)
+ repo_req.save(t.name)
+ repo_resp, _ = zk_parent.configure_publication_client(t.name)
+ repo_resp.save(t.name)
+ zk_child.configure_repository(t.name)
+ os.remove(t.name)
+ handles.append(parent.handle)
# force rpkid run for both parent and child
- zk_child.synchronize(parent.handle, handle)
+ zk_child.synchronize(*handles)
return http.HttpResponseRedirect(reverse(dashboard))
else:
- form = forms.ChildWizardForm()
+ conf = request.session['handle']
+ form = forms.UserCreateForm(initial={'parent': conf})
- return render(request, 'app/child_wizard_form.html', {'form': form})
+ return render(request, 'app/user_create_form.html', {'form': form})