示例#1
0
 def test_project_validate(self):
     wrong_url_hook = CodeDoubanHook(108, 'innotaurl', "100")
     wrong_project_id_hook = CodeDoubanHook(
         109, 'http://douaban.com', "noainteger")
     ok_hook = CodeDoubanHook(109, 'http://douaban.com', "101")
     assert wrong_url_hook.validate()
     assert wrong_project_id_hook.validate()
     assert not bool(ok_hook.validate())
示例#2
0
 def hooks(self):
     rs = store.execute(
         'select hook_id, url, project_id from codedouban_hooks '
         'where project_id=%s', self.id)
     hooks = [CodeDoubanHook(hook_id, url, project_id)
              for hook_id, url, project_id in rs]
     return hooks
示例#3
0
    def new(self, request):
        errors = ''
        project_name = self.proj_name
        user = request.user
        url = request.get_form_var('url')
        project = CodeDoubanProject.get_by_name(project_name)
        hooks = project.hooks
        if request.method == "POST":
            hook = CodeDoubanHook(0, url, project.id)
            exists_id = CodeDoubanHook.get_id_by_url(project.id, url)
            errors = hook.validate()
            if not project.is_owner(user):
                errors.append("You can't set hooks for this project")
            if exists_id is not None:
                errors.append("This hook url has exists")
            if not errors:
                CodeDoubanHook.add(hook.url, hook.project_id)
                return request.redirect('/%s/settings/hooks' % project_name)

        return st('settings/hooks.html', **locals())