コード例 #1
0
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)
コード例 #2
0
    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
コード例 #3
0
    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)
コード例 #4
0
    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
コード例 #5
0
    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)
コード例 #6
0
ファイル: logTest.py プロジェクト: ndlib/hesburgh_utilities
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")