def setUp(self): super(TestRestNbhdAddProject, self).setUp() # create some troves we'll need M.TroveCategory(fullname="Root", trove_cat_id=1, trove_parent_id=0) M.TroveCategory(fullname="License", trove_cat_id=2, trove_parent_id=1) M.TroveCategory(fullname="Apache License V2.0", fullpath="License :: Apache License V2.0", trove_cat_id=4, trove_parent_id=2) M.TroveCategory(fullname="Public Domain", fullpath="License :: Public Domain", trove_cat_id=5, trove_parent_id=2) p_nbhd = M.Neighborhood.query.get(url_prefix='/p/') p_nbhd.features['private_projects'] = False
def create_some_cats(self): root_parent = M.TroveCategory(fullname="Root", trove_cat_id=1, trove_parent_id=0) category_a = M.TroveCategory(fullname="CategoryA", trove_cat_id=2, trove_parent_id=1) category_b = M.TroveCategory(fullname="CategoryB", trove_cat_id=3, trove_parent_id=1) child_a = M.TroveCategory(fullname="ChildA", trove_cat_id=4, trove_parent_id=2) child_b = M.TroveCategory(fullname="ChildB", trove_cat_id=5, trove_parent_id=2)
def main(): M.TroveCategory(trove_cat_id=670, trove_parent_id=14, shortname="agpl", fullname="Affero GNU Public License", fullpath="License :: OSI-Approved Open Source :: Affero GNU Public License") ThreadLocalORMSession.flush_all() ThreadLocalORMSession.close_all()
def main(): M.TroveCategory( trove_cat_id=905, trove_parent_id=14, shortname='mpl20', fullname='Mozilla Public License 2.0 (MPL 2.0)', fullpath= 'License :: OSI-Approved Open Source :: Mozilla Public License 2.0 (MPL 2.0)' ) ThreadLocalORMSession.flush_all() ThreadLocalORMSession.close_all()
def test_trove_hierarchy(self): root_parent = M.TroveCategory(fullname="Root", trove_cat_id=1, trove_parent_id=0) category_a = M.TroveCategory(fullname="CategoryA", trove_cat_id=2, trove_parent_id=1) category_b = M.TroveCategory(fullname="CategoryB", trove_cat_id=3, trove_parent_id=1) child_a = M.TroveCategory(fullname="ChildA", trove_cat_id=4, trove_parent_id=2) child_b = M.TroveCategory(fullname="ChildB", trove_cat_id=5, trove_parent_id=2) session(M.TroveCategory).flush() r = self.app.get('/categories/browse') rendered_tree = r.html.find('div', { 'id': 'content_base' }).find('div').find('div').find('ul') expected = BeautifulSoup(""" <ul> <li>Root</li> <ul> <li>CategoryA</li> <ul> <li>ChildA</li> <li>ChildB</li> </ul> <li>CategoryB</li> </ul> </ul> """.strip()) assert str(expected) == str(rendered_tree)
def create(self, **kw): name = kw.get('categoryname') upper_id = int(kw.get('uppercategory_id', 0)) shortname = kw.get('shortname', None) upper = M.TroveCategory.query.get(trove_cat_id=upper_id) if upper_id == 0: path = name show_as_skill = True elif upper is None: flash('Invalid upper category.', "error") redirect('/categories') return else: path = upper.fullpath + " :: " + name show_as_skill = upper.show_as_skill newid = max( [el.trove_cat_id for el in M.TroveCategory.query.find()]) + 1 shortname = h.slugify(shortname or name)[1] if upper: trove_type = upper.fullpath.split(' :: ')[0] fullpath_re = re.compile(r'^{} :: '.format(re.escape(trove_type))) # e.g. scope within "Topic :: " else: # no parent, so making a top-level. Don't limit fullpath_re, so enforcing global uniqueness fullpath_re = re.compile(r'') oldcat = M.TroveCategory.query.get(shortname=shortname, fullpath=fullpath_re) if oldcat: flash('A category with shortname "%s" already exists (%s). Try a different, unique shortname' % (shortname, oldcat.fullpath), "error") redir_params = u'?categoryname={}&shortname={}'.format(name, shortname) else: M.TroveCategory( trove_cat_id=newid, trove_parent_id=upper_id, fullname=name, shortname=shortname, fullpath=path, show_as_skill=show_as_skill) flash('Category "%s" successfully created.' % name) redir_params = '' if upper: redirect(u'/categories/{}/{}'.format(upper.trove_cat_id, redir_params)) else: redirect(u'/categories/{}'.format(redir_params))
def create(self, **kw): require_authenticated() name = kw.get('categoryname') upper_id = int(kw.get('uppercategory_id', 0)) upper = M.TroveCategory.query.get(trove_cat_id=upper_id) if upper_id == 0: path = name show_as_skill = True elif upper is None: flash('Invalid upper category.', "error") redirect('/categories') return else: path = upper.fullpath + " :: " + name show_as_skill = upper.show_as_skill newid = max([el.trove_cat_id for el in M.TroveCategory.query.find()]) + 1 shortname = name.replace(" ", "_").lower() shortname = ''.join([(c if (c in digits or c in lowercase) else "_") for c in shortname]) oldcat = M.TroveCategory.query.get(shortname=shortname) if oldcat: flash('Category "%s" already exists.' % name, "error") else: category = M.TroveCategory(trove_cat_id=newid, trove_parent_id=upper_id, fullname=name, shortname=shortname, fullpath=path, show_as_skill=show_as_skill) if category: flash('Category "%s" successfully created.' % name) else: flash('An error occured while crearing the category.', "error") if upper: redirect('/categories/%s' % upper.shortname) else: redirect('/categories')
def create(self, **kw): name = kw.get('categoryname') upper_id = int(kw.get('uppercategory_id', 0)) shortname = kw.get('shortname', None) upper = M.TroveCategory.query.get(trove_cat_id=upper_id) if upper_id == 0: path = name show_as_skill = True elif upper is None: flash('Invalid upper category.', "error") redirect('/categories') return else: path = upper.fullpath + " :: " + name show_as_skill = upper.show_as_skill newid = max( [el.trove_cat_id for el in M.TroveCategory.query.find()]) + 1 shortname = h.slugify(shortname or name)[1] oldcat = M.TroveCategory.query.get(shortname=shortname) if oldcat: flash('Category "%s" with shortname "%s" already exists. Try a different, unique shortname' % (name, shortname), "error") else: category = M.TroveCategory( trove_cat_id=newid, trove_parent_id=upper_id, fullname=name, shortname=shortname, fullpath=path, show_as_skill=show_as_skill) if category: flash('Category "%s" successfully created.' % name) else: flash('An error occured while crearing the category.', "error") if upper: redirect(u'/categories/{}/?categoryname={}&shortname={}'.format(upper.trove_cat_id, name, shortname)) else: redirect(u'/categories/?categoryname={}&shortname={}'.format(name, shortname))
def create_trove_cat(cat_data): M.TroveCategory(trove_cat_id=cat_data[0], trove_parent_id=cat_data[1], shortname=cat_data[2], fullname=cat_data[3], fullpath=cat_data[4])
def main(): M.TroveCategory(trove_cat_id=862, trove_parent_id=14, shortname="lppl", fullname="LaTeX Project Public License", fullpath="License :: OSI-Approved Open Source :: LaTeX Project Public License") M.TroveCategory(trove_cat_id=655, trove_parent_id=432, shortname="win64", fullname="64-bit MS Windows", fullpath="Operating System :: Grouping and Descriptive Categories :: 64-bit MS Windows") M.TroveCategory(trove_cat_id=657, trove_parent_id=418, shortname="vista", fullname="Vista", fullpath="Operating System :: Modern (Vendor-Supported) Desktop Operating Systems :: Vista") M.TroveCategory(trove_cat_id=851, trove_parent_id=418, shortname="win7", fullname="Windows 7", fullpath="Operating System :: Modern (Vendor-Supported) Desktop Operating Systems :: Windows 7") M.TroveCategory(trove_cat_id=728, trove_parent_id=315, shortname="android", fullname="Android", fullpath="Operating System :: Handheld/Embedded Operating Systems :: Android") M.TroveCategory(trove_cat_id=780, trove_parent_id=315, shortname="ios", fullname="Apple iPhone", fullpath="Operating System :: Handheld/Embedded Operating Systems :: Apple iPhone") M.TroveCategory(trove_cat_id=863, trove_parent_id=534, shortname="architects", fullname="Architects", fullpath="Intended Audience :: by End-User Class :: Architects") M.TroveCategory(trove_cat_id=864, trove_parent_id=534, shortname="auditors", fullname="Auditors", fullpath="Intended Audience :: by End-User Class :: Auditors") M.TroveCategory(trove_cat_id=865, trove_parent_id=534, shortname="testers", fullname="Testers", fullpath="Intended Audience :: by End-User Class :: Testers") M.TroveCategory(trove_cat_id=866, trove_parent_id=534, shortname="secpros", fullname="Security Professionals", fullpath="Intended Audience :: by End-User Class :: Security Professionals") M.TroveCategory(trove_cat_id=867, trove_parent_id=535, shortname="secindustry", fullname="Security", fullpath="Intended Audience :: by Industry or Sector :: Security") ThreadLocalORMSession.flush_all() ThreadLocalORMSession.close_all()