~loggerhead-team/loggerhead/trunk-rich

« back to all changes in this revision

Viewing changes to loggerhead/controllers/inventory_ui.py

  • Committer: Martin Albisetti
  • Date: 2008-07-29 20:42:35 UTC
  • mto: This revision was merged to the branch mainline in revision 188.
  • Revision ID: argentina@gmail.com-20080729204235-nhhd02ll6vegonqp
Ignore build/

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18
18
#
19
19
 
20
 
import datetime
21
20
import logging
22
 
import os
23
21
import posixpath
24
 
import textwrap
25
 
import time
26
22
 
27
 
import turbogears
28
 
from cherrypy import InternalError, session
 
23
from paste.httpexceptions import HTTPServerError
29
24
 
30
25
from loggerhead import util
 
26
from loggerhead.controllers import TemplatedBranchView
31
27
 
32
28
 
33
29
log = logging.getLogger("loggerhead.controllers")
38
34
    path = posixpath.dirname(path)
39
35
    return path
40
36
 
41
 
        
42
 
class InventoryUI (object):
43
 
 
44
 
    def __init__(self, branch):
45
 
        # BranchView object
46
 
        self._branch = branch
47
 
        self.log = branch.log
48
 
 
49
 
    @util.strip_whitespace
50
 
    @turbogears.expose(html='loggerhead.templates.inventory')
51
 
    def default(self, *args, **kw):
52
 
        z = time.time()
53
 
        h = self._branch.get_history()
54
 
        util.set_context(kw)
55
 
 
56
 
        h._branch.lock_read()
 
37
 
 
38
class InventoryUI(TemplatedBranchView):
 
39
 
 
40
    template_path = 'loggerhead.templates.inventory'
 
41
 
 
42
    def get_values(self, h, args, kw, headers):
 
43
        if len(args) > 0:
 
44
            revid = h.fix_revid(args[0])
 
45
        else:
 
46
            revid = h.last_revid
 
47
 
57
48
        try:
58
 
            if len(args) > 0:
59
 
                revid = h.fix_revid(args[0])
60
 
            else:
61
 
                revid = h.last_revid
62
 
 
63
 
            try:
64
 
                inv = h.get_inventory(revid)
65
 
            except:
66
 
                self.log.exception('Exception fetching changes')
67
 
                raise InternalError('Could not fetch changes')
68
 
 
69
 
            file_id = kw.get('file_id', inv.root.file_id)
70
 
            sort_type = kw.get('sort', None)
71
 
 
72
 
            # no navbar for revisions
73
 
            navigation = util.Container()
74
 
 
75
 
            change = h.get_changes([ revid ])[0]
76
 
            # add parent & merge-point branch-nick info, in case it's useful
77
 
            h.get_branch_nicks([ change ])
78
 
 
79
 
            path = inv.id2path(file_id)
80
 
            if not path.startswith('/'):
81
 
                path = '/' + path
82
 
            idpath = inv.get_idpath(file_id)
83
 
            if len(idpath) > 1:
84
 
                updir = dirname(path)
85
 
                updir_file_id = idpath[-2]
86
 
            else:
87
 
                updir = None
88
 
                updir_file_id = None
89
 
            if updir == '/':
90
 
                updir_file_id = None
91
 
 
92
 
            vals = {
93
 
                'branch': self._branch,
94
 
                'util': util,
95
 
                'revid': revid,
96
 
                'change': change,
97
 
                'file_id': file_id,
98
 
                'path': path,
99
 
                'updir': updir,
100
 
                'updir_file_id': updir_file_id,
101
 
                'filelist': h.get_filelist(inv, file_id, sort_type),
102
 
                'history': h,
103
 
                'posixpath': posixpath,
104
 
                'navigation': navigation,
105
 
            }
106
 
            h.flush_cache()
107
 
            self.log.info('/inventory %r: %r secs' % (revid, time.time() - z))
108
 
            return vals
109
 
        finally:
110
 
            h._branch.unlock()
 
49
            inv = h.get_inventory(revid)
 
50
        except:
 
51
            self.log.exception('Exception fetching changes')
 
52
            raise HTTPServerError('Could not fetch changes')
 
53
 
 
54
        file_id = kw.get('file_id', inv.root.file_id)
 
55
        start_revid = kw.get('start_revid', None)
 
56
        sort_type = kw.get('sort', None)
 
57
 
 
58
        # no navbar for revisions
 
59
        navigation = util.Container()
 
60
 
 
61
        change = h.get_changes([ revid ])[0]
 
62
        # add parent & merge-point branch-nick info, in case it's useful
 
63
        h.get_branch_nicks([ change ])
 
64
 
 
65
        path = inv.id2path(file_id)
 
66
        if not path.startswith('/'):
 
67
            path = '/' + path
 
68
        idpath = inv.get_idpath(file_id)
 
69
        if len(idpath) > 1:
 
70
            updir = dirname(path)
 
71
            updir_file_id = idpath[-2]
 
72
        else:
 
73
            updir = None
 
74
            updir_file_id = None
 
75
        if updir == '/':
 
76
            updir_file_id = None
 
77
 
 
78
        return {
 
79
            'branch': self._branch,
 
80
            'util': util,
 
81
            'revid': revid,
 
82
            'change': change,
 
83
            'file_id': file_id,
 
84
            'path': path,
 
85
            'updir': updir,
 
86
            'updir_file_id': updir_file_id,
 
87
            'filelist': h.get_filelist(inv, file_id, sort_type),
 
88
            'history': h,
 
89
            'posixpath': posixpath,
 
90
            'navigation': navigation,
 
91
            'url': self._branch.context_url,
 
92
            'start_revid': start_revid,
 
93
            'fileview_active': True,
 
94
        }