Example #1
0
    def _load_data_from_json(self,
                             fhand,
                             clean=False,
                             merge=True,
                             pop_schema=True):
        """FIX: check for overwrite??
        """
        self._log.debug("_load_data_from_json(): {}\n\t{}".format(
            self.name(), fhand))
        # Store the filename this was loaded from
        self.filename = fhand
        with open(fhand, 'r') as jfil:
            data = json.load(jfil, object_pairs_hook=OrderedDict)
            name = list(data.keys())
            if len(name) != 1:
                raise ValueError("json file '{}' has multiple keys: {}".format(
                    fhand, list(name)))
            name = name[0]
            # Remove the outmost dict level
            data = data[name]
            self._log.debug("Name: {}".format(name))

            # Convert the OrderedDict data from json into class structure i.e.
            # `Sources` will be extracted and created from the dict Everything
            # that remains afterwards should be okay to just store to this
            # `Entry`
            self._convert_odict_to_classes(data,
                                           clean=clean,
                                           merge=merge,
                                           pop_schema=pop_schema)
            if len(data):
                err_str = ("Remaining entries in `data` after "
                           "`_convert_odict_to_classes`.")
                err_str += "\n{}".format(dict_to_pretty_string(data))
                self._log.error(err_str)
                raise RuntimeError(err_str)

        # If object doesnt have a name yet, but json does, store it
        self_name = self[ENTRY.NAME]
        if len(self_name) == 0:
            self[ENTRY.NAME] = name
        # Warn if there is a name mismatch
        elif self_name.lower().strip() != name.lower().strip():
            self._log.warning("Object name '{}' does not match name in json:"
                              "'{}'".format(self_name, name))

        self.check()
        return
Example #2
0
    def _load_data_from_json(self, fhand, clean=False, merge=True):
        """FIX: check for overwrite??
        """
        self._log.debug("_load_data_from_json(): {}\n\t{}".format(
            self.name(), fhand))
        # Store the filename this was loaded from
        self.filename = fhand
        with open(fhand, 'r') as jfil:
            data = json.load(jfil, object_pairs_hook=OrderedDict)
            name = list(data.keys())
            if len(name) != 1:
                raise ValueError("json file '{}' has multiple keys: {}".format(
                    fhand, list(name)))
            name = name[0]
            # Remove the outmost dict level
            data = data[name]
            self._log.debug("Name: {}".format(name))

            # Convert the OrderedDict data from json into class structure i.e.
            # `Sources` will be extracted and created from the dict Everything
            # that remains afterwards should be okay to just store to this
            # `Entry`
            self._convert_odict_to_classes(data, clean=clean, merge=merge)
            if len(data):
                err_str = ("Remaining entries in `data` after "
                           "`_convert_odict_to_classes`.")
                err_str += "\n{}".format(dict_to_pretty_string(data))
                self._log.error(err_str)
                raise RuntimeError(err_str)

        # If object doesnt have a name yet, but json does, store it
        self_name = self[ENTRY.NAME]
        if len(self_name) == 0:
            self[ENTRY.NAME] = name
        # Warn if there is a name mismatch
        elif self_name.lower().strip() != name.lower().strip():
            self._log.warning("Object name '{}' does not match name in json:"
                              "'{}'".format(self_name, name))

        self.check()
        return
Example #3
0
 def __repr__(self):
     """Return JSON representation of self
     """
     jsonstring = dict_to_pretty_string({self[ENTRY.NAME]: self})
     return jsonstring
Example #4
0
 def __repr__(self):
     """Return JSON representation of self."""
     jsonstring = dict_to_pretty_string({ENTRY.NAME: self})
     return jsonstring