def printSpace(space): heslog.addContext(space=space.spaceId) heslog.info("ContentTypes") print json.dumps(toSpace.allContentTypes(), indent=2) heslog.info("Assets") print json.dumps(toSpace.allAssets(), indent=2) heslog.info("Entries") print json.dumps(toSpace.allEntries(), indent=2)
def _createOrUpdate(self, objectType, data, extraHeaders, defaultId=None, currentEntry=None, shouldPublish=False): action = "create" if currentEntry is not None: action = "update" heslog.info("Attempting to %s object" % action) headers = extraHeaders or {} url = self.baseUrl + ("/%s" % objectType) if currentEntry is not None: objId = currentEntry.get("id", defaultId) else: objId = defaultId heslog.addContext(objId=objId) verb = "PUT" if objId is None: verb = "POST" else: url += "/%s" % objId if currentEntry is not None: headers.update( {"X-Contentful-Version": currentEntry.get("version", 1)}) headers.update(self.postHeaders) response = requests.request(verb, url, data=json.dumps(data), headers=headers) responseObj = json.loads(response.text) if self._checkSys(responseObj) is None: heslog.info("Failed to %s object" % action) return None sys = responseObj.get("sys", None) heslog.info("%sd Object %s" % (action, sys.get("id"))) if shouldPublish: publishSys = self._publish(objectType, sys) if publishSys is not None: return publishSys return sys
def createContentType(self, obj, shouldPublish=False): name = obj.get("name") heslog.addContext(name=name) data = { "name": name, "displayField": obj.get("displayField"), "description": obj.get("description"), "fields": obj.get("fields", []), } defaultId = obj.get("sys", {}).get("id") constraints = {"name": name} currentEntry = self.getCurrentObject(TYPE_CONTENT_TYPE, constraints) return self._createOrUpdate(TYPE_CONTENT_TYPE, data, {}, defaultId, currentEntry, shouldPublish)
def _delete(self, objectType, entry): heslog.info("Deleting Object") if entry is None: heslog.error("No Entry") return False objId = entry.get("id") version = entry.get("version", 1) version = str(version) heslog.addContext(objId=objId) headers = {"X-Contentful-Version": version} url = self.baseUrl + ("/%s/%s" % (objectType, objId)) headers.update(self.postHeaders) response = requests.delete(url, headers=headers) if response.text: responseObj = json.loads(response.text) return self._checkSys(responseObj) return True
def createEntry(self, item, shouldPublish=False): contentType = item.get("sys", {}).get("contentType", {}).get("sys", {}).get("id") if contentType is None: heslog.error("item has no specified contentType %s" % item) return None heslog.addContext(contentType=contentType) headers = {'x-contentful-content-type': contentType} data = {"fields": item.get("fields", {})} # we're have to know what the unique field(s) are for each content type to do this search correctly constraints = { "fields.url": item.get("fields", {}).get("url", {}).get(LOC_US) } constraints["content_type"] = contentType currentEntry = self.getCurrentObject(TYPE_ENTRY, constraints) return self._createOrUpdate(TYPE_ENTRY, data, headers, None, currentEntry, shouldPublish)
from hesburgh import heslog, hesutil, hestest import json hestest.init(__file__, "testdata") print json.dumps(hestest.get("hbeachey"), indent=2) message = "message" heslog.setContext({"foo": "bar"}) heslog.debug(message, this="that", context="test") heslog.addContext(baz="foo") heslog.addContext({"test": "this"}) heslog.verbose(message) heslog.info(message) heslog.removeContext("baz") heslog.warn(message) heslog.error(message) heslog.setContext({"bar": "baz"}) heslog.info("Setting levels to debug and error") heslog.setLevels(heslog.LEVEL_DEBUG, heslog.LEVEL_ERROR) heslog.debug(message) heslog.verbose(message) # should not print heslog.info(message) # should not print heslog.warn(message) # should not print heslog.error(message) heslog.setContext() ### print types test heslog.debug("Setting all levels")