X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/dba809feb44cd1c4d155f3e3254a1cca5323f95f..a2ddf506a8d76719f6e8a79e784b3f297128656e:/lib/wlrepo/__init__.py?ds=sidebyside diff --git a/lib/wlrepo/__init__.py b/lib/wlrepo/__init__.py old mode 100644 new mode 100755 index 7e878984..fc309dcd --- a/lib/wlrepo/__init__.py +++ b/lib/wlrepo/__init__.py @@ -14,11 +14,11 @@ class Library(object): """List all documents in the library.""" pass - def document_for_rev(self, rev): + def document_for_revision(self, rev): """Retrieve a document in the specified revision.""" pass - def document(self, docid, user=None): + def document(self, docid, user=None, rev='latest'): """Retrieve a document from a library.""" pass @@ -51,7 +51,7 @@ class Document(object): Should be called on the user version of document. If not, it doesn nothing.""" def data(self, entry): - """Returns the specified entry as a file-like object.""" + """Returns the specified entry as a unicode data.""" pass @property @@ -73,6 +73,12 @@ class Document(object): def parentof(self, other): return self._revision.parentof(other._revision) + def parent(self): + return self._library.document_for_revision(self._revision.parent()) + + def has_parent_from(self, other): + return self._revision.has_parent_from(other._revision) + def ancestorof(self, other): return self._revision.ancestorof(other._revision) @@ -105,13 +111,31 @@ class LibraryException(Exception): Exception.__init__(self, msg) self.cause = cause +class UpdateException(LibraryException): + pass + class RevisionNotFound(LibraryException): def __init__(self, rev): LibraryException.__init__(self, "Revision %r not found." % rev) - pass + +class RevisionMismatch(LibraryException): + def __init__(self, fdi, rev): + LibraryException.__init__(self, "No revision %r for document %r." % (rev, fdi)) + +class EntryNotFound(LibraryException): + def __init__(self, rev, entry, guesses=[]): + LibraryException.__init__(self, \ + u"Entry '%s' at revision %r not found. %s" % (entry, rev, \ + (u"Posible values:\n" + u',\n'.join(guesses)) if len(guesses) else u'') ) class DocumentAlreadyExists(LibraryException): pass # import backends to local namespace -from mercurial_backend.library import MercurialLibrary \ No newline at end of file + +def open_library(path, proto, *args, **kwargs): + if proto == 'hg': + import wlrepo.mercurial_backend.library + return wlrepo.mercurial_backend.library.MercurialLibrary(path, *args, **kwargs) + + raise NotImplemented() \ No newline at end of file