update slice prefix in slice name field when site is changed slice create page
authorTony Mack <tmack@tux.cs.princeton.edu>
Tue, 2 Sep 2014 04:37:36 +0000 (00:37 -0400)
committerTony Mack <tmack@tux.cs.princeton.edu>
Tue, 2 Sep 2014 04:37:36 +0000 (00:37 -0400)
planetstack/core/admin.py
planetstack/templates/admin/core/slice/change_form.html

index 62aa96a..9e88581 100644 (file)
@@ -755,13 +755,19 @@ class SliceAdmin(PlanetStackBaseAdmin):
         for node in Node.objects.all():
             deployment_nodes.append( (node.deployment.id, node.id, node.name) )
 
+        sites = {}
+        for site in Site.objects.all():
+            sites[site.id] = site.login_base 
+        
         context["deployment_nodes"] = deployment_nodes
+        context["sites"] = sites
 
         return super(SliceAdmin, self).render_change_form(request, context, add, change, form_url, obj)
 
     def formfield_for_foreignkey(self, db_field, request, **kwargs):
         if db_field.name == 'site':
             kwargs['queryset'] = Site.select_by_user(request.user)
+            kwargs['widget'] = forms.Select(attrs={'onChange': "update_slice_name(this, $($(this).closest('div')[0]).find('.field-name input')[0].id)"}) 
 
         return super(SliceAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
 
index c94b580..e97364b 100644 (file)
@@ -8,6 +8,13 @@ deployment_nodes = [
 {% endfor %}
 ];
 
+sites = [
+{% for s in sites %}
+  [{{ s.0 }}, {{ s.1 }}],
+{% endfor %}
+];
+
 function update_nodes(deployment_select, node_select_id) {
     deployment_id = $(deployment_select).val();
     html = "<option value=''>---------</option>\n";
@@ -20,6 +27,15 @@ function update_nodes(deployment_select, node_select_id) {
     //console.log(html);
     $("#"+node_select_id).empty().append(html);
 }
+
+function update_slice_prefix(site_select, slice_name_id) {
+    site_id = $(site_select).val();
+    slice_prefix="";
+    if (site_id in sites) {
+        slice_prefix=sites[site_id]+"_";
+    }
+    $("#"+slice_name_id).val(slice_prefix); 
+}
 </script>
 
 {% endblock %}