~loggerhead-team/loggerhead/trunk-rich

« back to all changes in this revision

Viewing changes to loggerhead/controllers/changelog_ui.py

Merged from trunk, resolved billions of conflicts

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
#
2
 
# Copyright (C) 2008, 2009 Canonical Ltd.
3
2
# Copyright (C) 2006  Robey Pointer <robey@lag.net>
4
3
# Copyright (C) 2006  Goffredo Baroncelli <kreijack@inwind.it>
5
4
#
18
17
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19
18
#
20
19
 
21
 
import urllib
22
 
 
23
 
import simplejson
24
 
 
25
20
from paste.httpexceptions import HTTPServerError
26
21
 
27
22
from loggerhead import util
32
27
 
33
28
    template_path = 'loggerhead.templates.changelog'
34
29
 
35
 
    def get_values(self, path, kwargs, headers):
36
 
        history = self._history
37
 
        revid = self.get_revid()
38
 
        filter_file_id = kwargs.get('filter_file_id', None)
39
 
        query = kwargs.get('q', None)
40
 
        start_revid = history.fix_revid(kwargs.get('start_revid', None))
 
30
    def get_values(self, h, args, kw, headers):
 
31
        if args:
 
32
            revid = h.fix_revid(args[0])
 
33
        else:
 
34
            revid = None
 
35
 
 
36
        filter_file_id = kw.get('filter_file_id', None)
 
37
        query = kw.get('q', None)
 
38
        start_revid = h.fix_revid(kw.get('start_revid', None))
41
39
        orig_start_revid = start_revid
42
40
        pagesize = 20#int(config.get('pagesize', '20'))
43
41
        search_failed = False
44
42
 
45
 
        if filter_file_id is None and path is not None:
46
 
            filter_file_id = history.get_file_id(revid, path)
47
 
 
48
43
        try:
49
 
            revid, start_revid, revid_list = history.get_view(
 
44
            revid, start_revid, revid_list = h.get_view(
50
45
                revid, start_revid, filter_file_id, query)
51
 
            util.set_context(kwargs)
 
46
            util.set_context(kw)
52
47
 
53
48
            if (query is not None) and (len(revid_list) == 0):
54
49
                search_failed = True
62
57
                    i = None
63
58
                scan_list = revid_list[i:]
64
59
            change_list = scan_list[:pagesize]
65
 
            changes = list(history.get_changes(change_list))
66
 
            data = {}
67
 
            for i, c in enumerate(changes):
68
 
                c.index = i
69
 
                data[str(i)] = urllib.quote(urllib.quote(c.revid, safe=''))
 
60
            changes = list(h.get_changes(change_list))
 
61
            h.add_changes(changes)
70
62
        except:
71
63
            self.log.exception('Exception fetching changes')
72
64
            raise HTTPServerError('Could not fetch changes')
74
66
        navigation = util.Container(
75
67
            pagesize=pagesize, revid=revid, start_revid=start_revid,
76
68
            revid_list=revid_list, filter_file_id=filter_file_id,
77
 
            scan_url='/changes', branch=self._branch, feed=True, history=history)
 
69
            scan_url='/changes', branch=self._branch, feed=True, history=h)
78
70
        if query is not None:
79
71
            navigation.query = query
80
72
        util.fill_in_navigation(navigation)
81
73
 
82
 
        # Directory Breadcrumbs
83
 
        directory_breadcrumbs = (
84
 
            util.directory_breadcrumbs(
85
 
                self._branch.friendly_name,
86
 
                self._branch.is_root,
87
 
                'changes'))
88
 
 
89
 
        show_tag_col = False
90
 
        for change in changes:
91
 
            if change.tags is not None:
92
 
                show_tag_col = True
93
 
                break
 
74
        # add parent & merge-point branch-nick info, in case it's useful
 
75
        h.get_branch_nicks(changes)
 
76
 
 
77
        # does every change on this page have the same committer?  if so,
 
78
        # tell the template to show committer info in the "details block"
 
79
        # instead of on each line.
 
80
        all_same_author = True
 
81
 
 
82
        if changes:
 
83
            author = changes[0].author
 
84
            for e in changes[1:]:
 
85
                if e.author != author:
 
86
                    all_same_author = False
 
87
                    break
94
88
 
95
89
        return {
96
90
            'branch': self._branch,
97
91
            'changes': changes,
98
 
            'show_tag_col': show_tag_col,
99
 
            'data': simplejson.dumps(data),
100
92
            'util': util,
101
 
            'history': history,
 
93
            'history': h,
102
94
            'revid': revid,
103
95
            'navigation': navigation,
104
96
            'filter_file_id': filter_file_id,
105
97
            'start_revid': start_revid,
106
 
            'viewing_from': (orig_start_revid is not None) and
107
 
                            (orig_start_revid != history.last_revid),
 
98
            'viewing_from': (orig_start_revid is not None) and (orig_start_revid != h.last_revid),
108
99
            'query': query,
109
100
            'search_failed': search_failed,
 
101
            'all_same_author': all_same_author,
110
102
            'url': self._branch.context_url,
111
 
            'directory_breadcrumbs': directory_breadcrumbs,
112
103
        }