def test_empty(self, c): App = Mock() App.default_mount_point = 'wiki' c.project.app_instance.side_effect = lambda mp: None if mp != 'wiki' else True val = v.MountPointValidator(App) self.assertEqual('wiki-0', val.to_python('')) self.assertEqual('wiki-0', val.to_python(None))
def test_relaxed_mount_points(self, c): App = Mock() App.relaxed_mount_points = True App.validate_mount_point.return_value = True c.project.app_instance.return_value = None val = v.MountPointValidator(App) self.assertEqual('Mymount', val.to_python('Mymount'))
def install_app(self, ep_name, mount_point=None, mount_label=None, ordinal=None, **override_options): App = g.entry_points['tool'][ep_name] with h.push_config(c, project=self): try: mount_point = v.MountPointValidator(App).to_python(mount_point) except fe.Invalid as e: raise exceptions.ToolError(str(e)) if ordinal is None: ordinal = int( self.ordered_mounts(include_hidden=True)[-1]['ordinal']) + 1 options = App.default_options() options['mount_point'] = mount_point options[ 'mount_label'] = mount_label or App.default_mount_label or mount_point options['ordinal'] = int(ordinal) options.update(override_options) cfg = AppConfig(project_id=self._id, tool_name=ep_name.lower(), options=options) app = App(self, cfg) with h.push_config(c, project=self, app=app): session(cfg).flush() app.install(self) return app
def test_reserved(self, c): App = Mock() App.relaxed_mount_points = False App.validate_mount_point.return_value = True c.project.app_instance.return_value = False val = v.MountPointValidator(App) with self.assertRaises(fe.Invalid): val.to_python('feed')
def _to_python(self, value, state): value = super(self.__class__, self)._to_python(value, state) gc_project_name = value['gc_project_name'] mount_point = value['mount_point'] try: repo_type = GoogleCodeProjectExtractor( gc_project_name).get_repo_type() except urllib2.HTTPError as e: if e.code == 404: msg = 'No such project' else: msg = str(e) msg = 'gc_project_name:' + msg raise fe.Invalid(msg, value, state) except Exception: raise tool_class = REPO_APPS[repo_type] try: value['mount_point'] = v.MountPointValidator(tool_class).to_python( mount_point) except fe.Invalid as e: raise fe.Invalid('mount_point:' + str(e), value, state) return value
def __init__(self, tool_class): super(ToolImportForm, self).__init__() self.add_field('mount_point', v.MountPointValidator(tool_class))