fixup! fixup! Refactor some trove admin bits, add some test coverage
diff --git a/Allura/allura/controllers/trovecategories.py b/Allura/allura/controllers/trovecategories.py
index 133638a..91450fd 100644
--- a/Allura/allura/controllers/trovecategories.py
+++ b/Allura/allura/controllers/trovecategories.py
@@ -39,7 +39,7 @@
 
 
 class TroveAdminException(Exception):
-    def __init__(self, flash_args, redir_params, upper):
+    def __init__(self, flash_args, redir_params='', upper=None):
         super(TroveAdminException, self).__init__()
 
         self.flash_args = flash_args
@@ -126,7 +126,7 @@
 
         newid = max(
             [el.trove_cat_id for el in M.TroveCategory.query.find()]) + 1
-        shortname = h.slugify(shortname or name)[1]
+        shortname = h.slugify(shortname or name, True)[1]
 
         if upper:
             trove_type = upper.fullpath.split(' :: ')[0]
diff --git a/Allura/allura/tests/functional/test_trovecategory.py b/Allura/allura/tests/functional/test_trovecategory.py
index ceeeaaa..2dc438f 100644
--- a/Allura/allura/tests/functional/test_trovecategory.py
+++ b/Allura/allura/tests/functional/test_trovecategory.py
@@ -179,3 +179,23 @@
         assert_equal(possible[0].fullname, 'New Child')
         assert_equal(possible[0].shortname, 'new-child')
         assert_equal(possible[0].trove_parent_id, 2)
+
+        # test slugify with periods. the relevant form becomes the third, after a child has been created above.
+        r = self.app.get('/categories/2')
+        form = r.forms[3]
+        form['categoryname'].value = "New Child.io"
+        form.submit()
+        possible = M.TroveCategory.query.find(dict(fullname='New Child.io')).all()
+        assert_equal(possible[0].shortname, 'new-child.io')
+
+    def test_create_child_bad_upper(self):
+        self.create_some_cats()
+        session(M.TroveCategory).flush()
+        r = self.app.get('/categories/2')
+
+        form = r.forms[2]
+        form['categoryname'].value = "New Child"
+        form['uppercategory_id'].value = "541561615"
+        r = form.submit().follow()
+
+        assert 'Invalid upper category' in r.text