changes up to parent... [git-p4: depot-paths = "//depot/": change = 768]replace/4e84fdb41ea781c7a8f872baa423e8b3be4045a7
| @@ -69,19 +69,12 @@ class ContentDirectoryControl(UPnPPublisher, dict): | |||||
| fakeparent = '-1' | fakeparent = '-1' | ||||
| self.nextID = 0 | self.nextID = 0 | ||||
| self.children = { fakeparent: []} | self.children = { fakeparent: []} | ||||
| self.needupdate = False | |||||
| self.updateId = 0 | |||||
| self[fakeparent] = Container(None, None, '-1', 'fake') | self[fakeparent] = Container(None, None, '-1', 'fake') | ||||
| root = self.addContainer(fakeparent, title) | root = self.addContainer(fakeparent, title) | ||||
| assert root == '0' | assert root == '0' | ||||
| del self[fakeparent] | del self[fakeparent] | ||||
| del self.children[fakeparent] | del self.children[fakeparent] | ||||
| def doupdate(self): | |||||
| if self.needupdate: | |||||
| self.needupdate += 1 | |||||
| self.needupdate = False | |||||
| # Required actions | # Required actions | ||||
| def soap_GetSearchCapabilities(self, *args, **kwargs): | def soap_GetSearchCapabilities(self, *args, **kwargs): | ||||
| @@ -101,8 +94,7 @@ class ContentDirectoryControl(UPnPPublisher, dict): | |||||
| """Required: Return the current value of state variable SystemUpdateID.""" | """Required: Return the current value of state variable SystemUpdateID.""" | ||||
| log.msg('GetSystemUpdateID()') | log.msg('GetSystemUpdateID()') | ||||
| self.needupdate = True | |||||
| return { 'SystemUpdateIdResponse': { 'Id': self.updateId }} | |||||
| return { 'SystemUpdateIdResponse': { 'Id': self['0'].updateID }} | |||||
| BrowseFlags = ('BrowseMetaData', 'BrowseDirectChildren') | BrowseFlags = ('BrowseMetaData', 'BrowseDirectChildren') | ||||
| @@ -140,7 +132,7 @@ class ContentDirectoryControl(UPnPPublisher, dict): | |||||
| result = {'BrowseResponse': {'Result': didl.toString() , | result = {'BrowseResponse': {'Result': didl.toString() , | ||||
| 'NumberReturned': didl.numItems(), | 'NumberReturned': didl.numItems(), | ||||
| 'TotalMatches': didl.numItems(), | 'TotalMatches': didl.numItems(), | ||||
| 'UpdateID': 0}} | |||||
| 'UpdateID': self[ObjectID].updateID }} | |||||
| except: | except: | ||||
| traceback.print_exc(file=log.logfile) | traceback.print_exc(file=log.logfile) | ||||
| @@ -86,6 +86,10 @@ class Item(Object): | |||||
| elementName = 'item' | elementName = 'item' | ||||
| refID = None | refID = None | ||||
| def doUpdate(self): | |||||
| # Update parent container | |||||
| self.cd[self.parentID].doUpdate() | |||||
| def toElement(self): | def toElement(self): | ||||
| root = Object.toElement(self) | root = Object.toElement(self) | ||||
| @@ -217,11 +221,15 @@ class Container(Object, list): | |||||
| createClass = None | createClass = None | ||||
| searchClass = None | searchClass = None | ||||
| searchable = None | searchable = None | ||||
| updateID = 0 | |||||
| def __init__(self, cd, id, parentID, title, restricted = 0, creator = None): | def __init__(self, cd, id, parentID, title, restricted = 0, creator = None): | ||||
| Object.__init__(self, cd, id, parentID, title, restricted, creator) | Object.__init__(self, cd, id, parentID, title, restricted, creator) | ||||
| list.__init__(self) | list.__init__(self) | ||||
| def doUpdate(self): | |||||
| self.updateID = (self.updateID + 1) % (1l << 32) | |||||
| def toElement(self): | def toElement(self): | ||||
| root = Object.toElement(self) | root = Object.toElement(self) | ||||
| @@ -62,6 +62,7 @@ class FSItem(FSObject, Item): | |||||
| def doUpdate(self): | def doUpdate(self): | ||||
| self.res = Resource(self.url, 'http-get:*:%s:*' % self.mimetype) | self.res = Resource(self.url, 'http-get:*:%s:*' % self.mimetype) | ||||
| self.res.size = os.path.getsize(self.FSpath) | self.res.size = os.path.getsize(self.FSpath) | ||||
| Item.doUpdate(self) | |||||
| class FSVideoItem(FSItem, VideoItem): | class FSVideoItem(FSItem, VideoItem): | ||||
| pass | pass | ||||
| @@ -151,3 +152,5 @@ class FSDirectory(FSObject, StorageFolder): | |||||
| log.msg('doUpdate: %s, sorting: %s' % (self.title, list.__str__(self))) | log.msg('doUpdate: %s, sorting: %s' % (self.title, list.__str__(self))) | ||||
| self.sort(lambda x, y: cmp(x.title, y.title)) | self.sort(lambda x, y: cmp(x.title, y.title)) | ||||
| log.msg('sorted') | log.msg('sorted') | ||||
| StorageFolder.doUpdate(self) | |||||