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')
Exemple #5
0
    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
Exemple #6
0
 def __init__(self, tool_class):
     super(ToolImportForm, self).__init__()
     self.add_field('mount_point', v.MountPointValidator(tool_class))