4 from model
import Model
7 return commands
.getoutput('git config --get "%s"' % key
)
11 Model
.__init
__ (self
, {
16 'name': get_config('user.name'),
17 'email': get_config('user.email'),
20 class GitRepoBrowserModel (Model
):
21 def __init__ (self
, branch
=''):
22 Model
.__init
__ (self
, {
26 # These are parallel lists
31 # All items below here are re-calculated in
34 'directory_entries': {},
36 # These are also parallel lists
42 def setup_items (self
):
43 '''This scans over self.(files, sha1s, types) to generate
44 directories, directory_entries, itmes, item_sha1s,
51 self
.directory_entries
= {}
53 if self
.directory
: self
.directories
.append ('..')
55 dir_entries
= self
.directory_entries
56 dir_regex
= re
.compile ('([^/]+)/')
60 for idx
, file in enumerate (self
.files
):
62 orig_file
= str (file)
63 if not orig_file
.startswith (self
.directory
): continue
64 file = file[ len (self
.directory
): ]
66 if file.count (os
.sep
):
67 # This is a directory...
68 match
= dir_regex
.match (file)
69 if not match
: continue
71 dirent
= match
.group (1) + '/'
72 if dirent
not in self
.directory_entries
:
73 self
.directory_entries
[dirent
] = []
75 if dirent
not in dirs_seen
:
76 dirs_seen
[dirent
] = True
77 self
.directories
.append (dirent
)
79 entry
= file.replace (dirent
, '')
80 entry_match
= dir_regex
.match (entry
)
82 subdir
= entry_match
.group (1) + '/'
83 if subdir
in subdirs_seen
: continue
84 subdirs_seen
[subdir
] = True
85 dir_entries
[dirent
].append (subdir
)
87 dir_entries
[dirent
].append (entry
)
89 self
.item_names
.append (file)
90 self
.item_sha1s
.append (self
.sha1s
[idx
])
91 self
.item_types
.append (self
.types
[idx
])