Warning
This document is for an old release of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.
Source code for galaxy.webapps.tool_shed.controllers.hg
import logging
from mercurial.hgweb.hgwebdir_mod import hgwebdir
from mercurial.hgweb.request import wsgiapplication
from galaxy import web
from galaxy.web.base.controller import BaseUIController
from tool_shed.util.repository_util import get_repository_by_name_and_owner
log = logging.getLogger(__name__)
[docs]class HgController(BaseUIController):
[docs]    @web.expose
    def handle_request(self, trans, **kwd):
        # The os command that results in this method being called will look something like:
        # hg clone http://test@127.0.0.1:9009/repos/test/convert_characters1
        hgweb_config = trans.app.hgweb_config_manager.hgweb_config
        cmd = kwd.get('cmd', None)
        def make_web_app():
            hgwebapp = hgwebdir(hgweb_config)
            return hgwebapp
        wsgi_app = wsgiapplication(make_web_app)
        if cmd == 'getbundle':
            path_info = kwd.get('path_info', None)
            if path_info:
                owner, name = path_info.split('/')
                repository = get_repository_by_name_and_owner(trans.app, name, owner)
                if repository:
                    times_downloaded = repository.times_downloaded
                    times_downloaded += 1
                    repository.times_downloaded = times_downloaded
                    trans.sa_session.add(repository)
                    trans.sa_session.flush()
        return wsgi_app