예제 #1
0
 def update(self, id_, data):
     """Update a record identified by `id_` with `data`."""
     # OERPLib credentials
     oerplib.tools.session.save(id_,
                                data['oerplib'],
                                rc_file=db.OERPLIB_FILE)
     del data['oerplib']
     # Application specific data
     new_gid = data.pop('group_id')
     db_data = db.read()
     for gid, gdata in db_data.iteritems():
         if id_ in gdata['servers']:
             # If the server group has not changed, update it in place
             if gid == new_gid:
                 gdata['servers'][id_].update(data)
             # Otherwise, remove the server from its old group, and add it
             # to the new one
             else:
                 gdata['servers'].pop(id_)
                 db_data[new_gid]['servers'][id_] = data
             break
     # Update the data
     db.write(db_data)
     self.updated.emit('server', id_)
     # Signal if the group has changed
     if gid != new_gid:
         self.group_changed.emit('server', id_, gid, new_gid)
예제 #2
0
 def delete(self, id_):
     """Delete a record identified by `id_`."""
     db_data = db.read()
     for gdata in db_data.itervalues():
         for sdata in gdata['servers'].itervalues():
             if id_ in sdata.get('dependencies', {}):
                 del sdata['dependencies'][id_]
                 db.write(db_data)
                 self.deleted.emit('dependency', id_)
                 return
예제 #3
0
 def delete(self, id_):
     """Delete a record identified by `id_`."""
     # OERPLib credentials
     oerplib.tools.session.remove(id_, rc_file=db.OERPLIB_FILE)
     # Application specific data
     db_data = db.read()
     for gdata in db_data.itervalues():
         if id_ in gdata['servers']:
             del gdata['servers'][id_]
             db.write(db_data)
             self.deleted.emit('server', id_)
             break
예제 #4
0
 def update(self, id_, data):
     """Update a record identified by `id_` with `data`."""
     data_copy = data.copy()
     data_copy.pop('server_id')
     db_data = db.read()
     for gdata in db_data.itervalues():
         for sdata in gdata['servers'].itervalues():
             if id_ in sdata.get('dependencies', {}):
                 sdata['dependencies'][id_].update(data_copy)
                 db.write(db_data)
                 self.updated.emit('dependency', id_, data)
                 return
예제 #5
0
 def create(self, data):
     """Create a new record from `data` and return its ID."""
     id_ = uuid.uuid4().hex
     db_data = db.read()
     data_copy = data.copy()
     sid = data_copy.pop('server_id')
     gid = Controller['server'].read(sid)['group_id']
     if 'dependencies' not in db_data[gid]['servers'][sid]:
         db_data[gid]['servers'][sid]['dependencies'] = {}
     db_data[gid]['servers'][sid]['dependencies'][id_] = data_copy
     db.write(db_data)
     self.created.emit('dependency', id_, data)
     return id_
예제 #6
0
 def create(self, data):
     """Create a new record from `data` and return its ID."""
     id_ = uuid.uuid4().hex
     # OERPLib credentials
     oerplib.tools.session.save(id_,
                                data['oerplib'],
                                rc_file=db.OERPLIB_FILE)
     del data['oerplib']
     # Application specific data
     db_data = db.read()
     gid = data['group_id']
     db_data[gid]['servers'][id_] = data
     db.write(db_data)
     self.created.emit('server', id_)
     return id_