Skip to content

Commit ad8c682

Browse files
danfrankjmatthewwardrop
authored andcommitted
Fix extracting revisions and uris from repositories, which fixes a problem with automatic reindexing. (#130)
1 parent 42f6247 commit ad8c682

File tree

3 files changed

+27
-22
lines changed

3 files changed

+27
-22
lines changed

knowledge_repo/app/index.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ def update_index_required():
5151

5252
seconds = seconds_since_index()
5353
seconds_check = seconds_since_index_check()
54+
5455
if is_indexing() or (seconds is not None) and (seconds < 5 * 60) and (seconds_check < 5 * 60):
5556
return False
5657
try:

knowledge_repo/repositories/dbrepository.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ def session_end(self):
6464

6565
@property
6666
def revision(self):
67-
return self.session.query(func.max(self.PostRef.created_at))
67+
return self.session.query(func.max(self.PostRef.created_at)).first()[0]
6868

6969
def update(self):
7070
pass

knowledge_repo/repository.py

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -97,18 +97,22 @@ def uris(self):
9797
# {<mountpoint>: <KnowledgeRepositoryInstance>}
9898
if isinstance(self.uri, str):
9999
return {'': self.uri}
100+
100101
elif isinstance(self.uri, dict):
101102
uri_dict = {}
102103

103-
def add_uris(uri_dict, uris, parent=''):
104-
assert isinstance(uris, dict)
105-
for mountpoint, uri in uris.items():
106-
if isinstance(uri, (str, KnowledgeRepository)):
107-
uri_dict[posixpath.join(parent, mountpoint)] = uri if isinstance(uri, str) else uri.uri
108-
elif isinstance(uri, dict):
109-
add_uris(uri_dict, uri, parent=posixpath.join(parent, mountpoint))
110-
else:
111-
raise ValueError("Unrecognised uri: {}".format(uri))
104+
def add_uris(uri_dict, uri, parent=''):
105+
if isinstance(uri, str):
106+
uri_dict[parent] = uri
107+
elif isinstance(uri, dict):
108+
for mountpoint, u in uri.items():
109+
add_uris(uri_dict, u, parent=posixpath.join(parent, mountpoint))
110+
elif isinstance(uri, KnowledgeRepository):
111+
for mountpoint, u in uri.uris.items():
112+
uri_dict[posixpath.join(parent, mountpoint)] = u
113+
else:
114+
raise ValueError("Unrecognised uri: {}".format(uri))
115+
112116
add_uris(uri_dict, self.uri)
113117
return uri_dict
114118

@@ -125,18 +129,18 @@ def revisions(self):
125129
elif isinstance(self.uri, dict):
126130
revision_dict = {}
127131

128-
def add_revisions(revision_dict, uris):
129-
assert isinstance(uris, dict)
130-
for mountpoint, uri in uris.items():
131-
if isinstance(uri, str):
132-
revision_dict[uri] = KnowledgeRepository.for_uri(uri).revision
133-
elif isinstance(uri, KnowledgeRepository):
134-
revision_dict[uri] = uri.revision
135-
elif isinstance(uri, dict):
136-
add_revisions(revision_dict, uri)
137-
else:
138-
raise ValueError("Unrecognised uri: {}".format(uri))
139-
add_revisions(revision_dict, self.uri)
132+
def add_revisions(revision_dict, uri):
133+
if isinstance(uri, str):
134+
revision_dict[uri] = KnowledgeRepository.for_uri(uri).revision
135+
elif isinstance(uri, dict):
136+
for u in uri.values():
137+
add_revisions(revision_dict, u)
138+
elif isinstance(uri, KnowledgeRepository):
139+
revision_dict.update(uri.revisions)
140+
else:
141+
raise ValueError("Unrecognised uri: {}".format(uri))
142+
143+
add_revisions(revision_dict, self.uris)
140144
return revision_dict
141145

142146
raise ValueError("Unrecognised KnowledgeRepository.uri: {}".format(self.uri))

0 commit comments

Comments
 (0)