11
11
from paste import httpexceptions
13
13
from loggerhead.apps import static_app
14
from loggerhead.controllers.annotate_ui import AnnotateUI
15
from loggerhead.controllers.atom_ui import AtomUI
14
16
from loggerhead.controllers.changelog_ui import ChangeLogUI
17
from loggerhead.controllers.diff_ui import DiffUI
18
from loggerhead.controllers.download_ui import DownloadUI
19
from loggerhead.controllers.filediff_ui import FileDiffUI
15
20
from loggerhead.controllers.inventory_ui import InventoryUI
16
from loggerhead.controllers.annotate_ui import AnnotateUI
17
21
from loggerhead.controllers.revision_ui import RevisionUI
18
from loggerhead.controllers.atom_ui import AtomUI
19
from loggerhead.controllers.download_ui import DownloadUI
22
from loggerhead.controllers.revlog_ui import RevLogUI
20
23
from loggerhead.controllers.search_ui import SearchUI
21
from loggerhead.controllers.diff_ui import DiffUI
22
24
from loggerhead.history import History
23
25
from loggerhead import util
26
30
class BranchWSGIApp(object):
28
32
def __init__(self, branch, friendly_name=None, config={},
29
graph_cache=None, branch_link=None, is_root=False):
33
graph_cache=None, branch_link=None, is_root=False,
30
35
self.branch = branch
31
36
self._config = config
32
37
self.friendly_name = friendly_name
36
41
graph_cache = bzrlib.lru_cache.LRUCache()
37
42
self.graph_cache = graph_cache
38
43
self.is_root = is_root
44
self.served_url = served_url
40
46
def get_history(self):
41
47
_history = History(self.branch, self.graph_cache)
64
70
return request.construct_url(
65
71
self._environ, script_name=self._url_base,
66
path_info='/'.join(args),
72
path_info=unicode('/'.join(args)).encode('utf-8'),
69
75
def context_url(self, *args, **kw):
98
106
if self._static_url_base is None:
99
107
self._static_url_base = self._url_base
100
108
self._environ = environ
109
if self.served_url is _DEFAULT:
110
self.served_url = self.url([])
101
111
path = request.path_info_pop(environ)
103
113
raise httpexceptions.HTTPMovedPermanently(
110
120
self.branch.lock_read()
113
c = cls(self, self.get_history())
123
c = cls(self, self.get_history)
114
124
return c(environ, start_response)
116
126
environ['exc_info'] = sys.exc_info()