diff options
Diffstat (limited to 'src/lib/Server')
-rw-r--r-- | src/lib/Server/Metadata.py | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/lib/Server/Metadata.py b/src/lib/Server/Metadata.py index 31769e40e..5346dd5cf 100644 --- a/src/lib/Server/Metadata.py +++ b/src/lib/Server/Metadata.py @@ -104,8 +104,21 @@ class MetadataStore(SingleXMLFileBacked): if k[:8] == 'default_': self.defaults[k[8:]] = v - def FetchMetadata(self,client): - if self.clients.has_key(client): + def FetchMetadata(self,client, image=None, profile=None): + if ((image != None) and (profile != None)): + # Client asserted profile/image + self.clients[client] = (image,profile) + f = filter(lambda x:x.attrib['name'] == client, self.element.findall("Client")) + if len(f) == 0: + # non-existent client + SubElement(self.element, "Client", name=client, image=image, profile=profile) + self.WriteBack() + elif len(f) == 1: + # already existing client + f[0].attrib['profile'] = profile + f[0].attrib['image'] = image + self.WriteBack() + elif self.clients.has_key(client): (image,profile) = self.clients[client] else: # default profile stuff goes here |