Beispiel #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())
Beispiel #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
Beispiel #3
0
 def test_add_hook(self):
     url = "http://this.is.a.url"
     prj = self._prj()
     hook = CodeDoubanHook.add(url, prj.id)
     hooked_project = CodeDoubanProject.get(hook.project_id)
     assert hooked_project
     assert hook.__dict__ == hooked_project.hooks[0].__dict__
Beispiel #4
0
 def test_destroy_hook(self):
     url = "http://this.is.other.url"
     prj = self._prj()
     hook = CodeDoubanHook.add(url, prj.id)
     hooked_project = CodeDoubanProject.get(hook.project_id)
     assert len(hooked_project.hooks) == 1
     hooked_project = CodeDoubanProject.get(hook.project_id)
     hook.destroy()
     assert len(hooked_project.hooks) == 0
Beispiel #5
0
    def telchar(self, request):
        proj_id = self.proj_id
        user = request.user
        project = CodeDoubanProject.get(proj_id)
        url = TELCHAR_URL

        if project.is_owner(user):
            is_disable = request.get_form_var('close', '')
            if is_disable:
                hook = CodeDoubanHook.get_by_url(url)
                if hook:
                    hook.destroy()
                status = 0
            else:
                CodeDoubanHook.add(url, proj_id)
                status = 1
            return {'r': 0, 'status': status}
        return {'r': 1}
Beispiel #6
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())