Source code for devilry.apps.core.models.model_utils

"""
.. attribute:: pathsep

    Path separator used by node-paths. The value is ``'.'``, and it must not
    be changed.
"""

pathsep = '.' # path separator for Node-paths

[docs]def splitpath(path, expected_len=0): """ Split the path on :attr:`pathsep` and return the resulting list. Example: >>> splitpath('uio.ifi.matnat') ['uio', 'ifi', 'matnat'] >>> splitpath('uio.ifi.matnat', expected_len=2) Traceback (most recent call last): ... ValueError: Path must have exactly 2 parts :param expected_len: Expected length of the resulting list. If the resulting list is not exactly the given length, ``ValueError`` is raised. If ``expected_len`` is 0 (default), no checking is done. """ p = path.split(pathsep) if expected_len and len(p) != expected_len: raise ValueError('Path must have exactly %d parts' % expected_len) return p
class EtagMismatchException(Exception): def __init__(self, etag): self.etag = etag class Etag(object): """ This class adds a method to update the object with an etag, making sure it is up to date before saving. """ def etag_update(self, etag): if self.etag != etag: raise EtagMismatchException(self.etag) super(self.__class__, self).save()