<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[14513] CalendarServer/trunk/txdav</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.calendarserver.org//changeset/14513">14513</a></dd>
<dt>Author</dt> <dd>wsanchez@apple.com</dd>
<dt>Date</dt> <dd>2015-03-05 13:08:20 -0800 (Thu, 05 Mar 2015)</dd>
</dl>
<h3>Log Message</h3>
<pre>lint</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#CalendarServertrunktxdavbasedatastoresubpostgrespy">CalendarServer/trunk/txdav/base/datastore/subpostgres.py</a></li>
<li><a href="#CalendarServertrunktxdavcommondatastorepoddingstore_apipy">CalendarServer/trunk/txdav/common/datastore/podding/store_api.py</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="CalendarServertrunktxdavbasedatastoresubpostgrespy"></a>
<div class="modfile"><h4>Modified: CalendarServer/trunk/txdav/base/datastore/subpostgres.py (14512 => 14513)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/txdav/base/datastore/subpostgres.py        2015-03-05 20:20:10 UTC (rev 14512)
+++ CalendarServer/trunk/txdav/base/datastore/subpostgres.py        2015-03-05 21:08:20 UTC (rev 14513)
</span><span class="lines">@@ -26,7 +26,7 @@
</span><span class="cx"> from hashlib import md5
</span><span class="cx"> from pipes import quote as shell_quote
</span><span class="cx">
</span><del>-import pgdb as postgres
</del><ins>+import pg8000 as postgres
</ins><span class="cx">
</span><span class="cx"> from twisted.python.procutils import which
</span><span class="cx"> from twisted.internet.protocol import ProcessProtocol
</span></span></pre></div>
<a id="CalendarServertrunktxdavcommondatastorepoddingstore_apipy"></a>
<div class="modfile"><h4>Modified: CalendarServer/trunk/txdav/common/datastore/podding/store_api.py (14512 => 14513)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/txdav/common/datastore/podding/store_api.py        2015-03-05 20:20:10 UTC (rev 14512)
+++ CalendarServer/trunk/txdav/common/datastore/podding/store_api.py        2015-03-05 21:08:20 UTC (rev 14513)
</span><span class="lines">@@ -34,13 +34,17 @@
</span><span class="cx"> @inlineCallbacks
</span><span class="cx"> def _getRequestForStoreObject(self, action, storeObject, classMethod):
</span><span class="cx"> """
</span><del>- Create the JSON data needed to identify the remote resource by type and ids, along with any parent resources.
</del><ins>+ Create the JSON data needed to identify the remote resource by type and
+ ids, along with any parent resources.
</ins><span class="cx">
</span><span class="cx"> @param action: the conduit action name
</span><span class="cx"> @type action: L{str}
</span><ins>+
</ins><span class="cx"> @param storeObject: the store object that is being operated on
</span><span class="cx"> @type storeObject: L{object}
</span><del>- @param classMethod: indicates whether the method being called is a classmethod
</del><ins>+
+ @param classMethod: indicates whether the method being called is a
+ classmethod
</ins><span class="cx"> @type classMethod: L{bool}
</span><span class="cx">
</span><span class="cx"> @return: the transaction in use, the JSON dict to send in the request,
</span><span class="lines">@@ -48,7 +52,10 @@
</span><span class="cx"> @rtype: L{tuple} of (L{CommonStoreTransaction}, L{dict}, L{str})
</span><span class="cx"> """
</span><span class="cx">
</span><del>- from txdav.common.datastore.sql import CommonObjectResource, CommonHomeChild, CommonHome
</del><ins>+ from txdav.common.datastore.sql import (
+ CommonObjectResource, CommonHomeChild, CommonHome
+ )
+
</ins><span class="cx"> result = {
</span><span class="cx"> "action": action,
</span><span class="cx"> }
</span><span class="lines">@@ -59,6 +66,7 @@
</span><span class="cx"> viewer_home = None
</span><span class="cx"> home_child = None
</span><span class="cx"> object_resource = None
</span><ins>+
</ins><span class="cx"> if isinstance(storeObject, CommonObjectResource):
</span><span class="cx"> owner_home = storeObject.ownerHome()
</span><span class="cx"> viewer_home = storeObject.viewerHome()
</span><span class="lines">@@ -86,9 +94,10 @@
</span><span class="cx"> if object_resource:
</span><span class="cx"> result["objectResourceID"] = object_resource.id()
</span><span class="cx">
</span><del>- # Note that the owner_home is always the ownerHome() because in the sharing case
- # a viewer is accessing the owner's data on another pod.
- recipient = yield self.store.directoryService().recordWithUID(owner_home.uid())
</del><ins>+ # Note that the owner_home is always the ownerHome() because in the
+ # sharing case a viewer is accessing the owner's data on another pod.
+ directory = self.store.directoryService()
+ recipient = yield directory.recordWithUID(owner_home.uid())
</ins><span class="cx">
</span><span class="cx"> returnValue((txn, result, recipient.server(),))
</span><span class="cx">
</span><span class="lines">@@ -103,7 +112,9 @@
</span><span class="cx"> classObject = None
</span><span class="cx">
</span><span class="cx"> if "homeUID" in request:
</span><del>- home = yield txn.homeWithUID(request["homeType"], request["homeUID"])
</del><ins>+ home = yield txn.homeWithUID(
+ request["homeType"], request["homeUID"]
+ )
</ins><span class="cx"> if home is None:
</span><span class="cx"> raise FailedCrossPodRequestError("Invalid owner UID specified")
</span><span class="cx"> home._internalRequest = False
</span><span class="lines">@@ -114,22 +125,30 @@
</span><span class="cx"> if "homeChildID" in request:
</span><span class="cx"> homeChild = yield home.childWithID(request["homeChildID"])
</span><span class="cx"> if homeChild is None:
</span><del>- raise FailedCrossPodRequestError("Invalid home child specified")
</del><ins>+ raise FailedCrossPodRequestError(
+ "Invalid home child specified"
+ )
</ins><span class="cx"> returnObject = homeChild
</span><span class="cx"> if request.get("classMethod", False):
</span><span class="cx"> classObject = homeChild._objectResourceClass
</span><span class="cx"> elif "homeChildSharedID" in request:
</span><span class="cx"> homeChild = yield home.childWithName(request["homeChildSharedID"])
</span><span class="cx"> if homeChild is None:
</span><del>- raise FailedCrossPodRequestError("Invalid home child specified")
</del><ins>+ raise FailedCrossPodRequestError(
+ "Invalid home child specified"
+ )
</ins><span class="cx"> returnObject = homeChild
</span><span class="cx"> if request.get("classMethod", False):
</span><span class="cx"> classObject = homeChild._objectResourceClass
</span><span class="cx">
</span><span class="cx"> if "objectResourceID" in request:
</span><del>- objectResource = yield homeChild.objectResourceWithID(request["objectResourceID"])
</del><ins>+ objectResource = yield homeChild.objectResourceWithID(
+ request["objectResourceID"]
+ )
</ins><span class="cx"> if objectResource is None:
</span><del>- raise FailedCrossPodRequestError("Invalid object resource specified")
</del><ins>+ raise FailedCrossPodRequestError(
+ "Invalid object resource specified"
+ )
</ins><span class="cx"> returnObject = objectResource
</span><span class="cx">
</span><span class="cx"> returnValue((returnObject, classObject,))
</span><span class="lines">@@ -156,7 +175,8 @@
</span><span class="cx"> @inlineCallbacks
</span><span class="cx"> def recv_home_resource_id(self, txn, request):
</span><span class="cx"> """
</span><del>- Process an addAttachment cross-pod request. Request arguments as per L{send_add_attachment}.
</del><ins>+ Process an addAttachment cross-pod request.
+ Request arguments as per L{send_add_attachment}.
</ins><span class="cx">
</span><span class="cx"> @param request: request arguments
</span><span class="cx"> @type request: C{dict}
</span><span class="lines">@@ -180,12 +200,18 @@
</span><span class="cx"> event_details,
</span><span class="cx"> ):
</span><span class="cx"> """
</span><del>- Request free busy information for a shared calendar collection hosted on a different pod. See
- L{txdav.caldav.datastore.scheduling.freebusy} for the base free busy lookup behavior.
</del><ins>+ Request free busy information for a shared calendar collection hosted
+ on a different pod.
+ See L{txdav.caldav.datastore.scheduling.freebusy} for the base free
+ busy lookup behavior.
</ins><span class="cx"> """
</span><del>- txn, request, server = yield self._getRequestForStoreObject("freebusy", calresource, False)
</del><ins>+ txn, request, server = yield self._getRequestForStoreObject(
+ "freebusy", calresource, False
+ )
</ins><span class="cx">
</span><del>- request["timerange"] = [timerange.start.getText(), timerange.end.getText()]
</del><ins>+ request["timerange"] = [
+ timerange.start.getText(), timerange.end.getText()
+ ]
</ins><span class="cx"> request["matchtotal"] = matchtotal
</span><span class="cx"> request["excludeuid"] = excludeuid
</span><span class="cx"> request["organizer"] = organizer
</span><span class="lines">@@ -201,20 +227,26 @@
</span><span class="cx"> @inlineCallbacks
</span><span class="cx"> def recv_freebusy(self, txn, request):
</span><span class="cx"> """
</span><del>- Process a freebusy cross-pod request. Message arguments as per L{send_freebusy}.
</del><ins>+ Process a freebusy cross-pod request.
+ Message arguments as per L{send_freebusy}.
</ins><span class="cx">
</span><span class="cx"> @param request: request arguments
</span><span class="cx"> @type request: C{dict}
</span><span class="cx"> """
</span><span class="cx">
</span><span class="cx"> # Operate on the L{CommonHomeChild}
</span><del>- calresource, _ignore = yield self._getStoreObjectForRequest(txn, request)
</del><ins>+ calresource, _ignore = yield self._getStoreObjectForRequest(
+ txn, request
+ )
</ins><span class="cx">
</span><span class="cx"> fbinfo = [[], [], []]
</span><span class="cx"> matchtotal = yield generateFreeBusyInfo(
</span><span class="cx"> calresource,
</span><span class="cx"> fbinfo,
</span><del>- TimeRange(start=request["timerange"][0], end=request["timerange"][1]),
</del><ins>+ TimeRange(
+ start=request["timerange"][0],
+ end=request["timerange"][1],
+ ),
</ins><span class="cx"> request["matchtotal"],
</span><span class="cx"> request["excludeuid"],
</span><span class="cx"> request["organizer"],
</span><span class="lines">@@ -237,29 +269,42 @@
</span><span class="cx">
</span><span class="cx">
</span><span class="cx"> #
</span><del>- # We can simplify code generation for simple calls by dynamically generating the appropriate class methods.
</del><ins>+ # We can simplify code generation for simple calls by dynamically
+ # generating the appropriate class methods.
</ins><span class="cx"> #
</span><span class="cx">
</span><span class="cx"> @inlineCallbacks
</span><del>- def _simple_object_send(self, actionName, storeObject, classMethod=False, transform=None, args=None, kwargs=None):
</del><ins>+ def _simple_object_send(
+ self, actionName, storeObject,
+ classMethod=False, transform=None, args=None, kwargs=None
+ ):
</ins><span class="cx"> """
</span><span class="cx"> A simple send operation that returns a value.
</span><span class="cx">
</span><span class="cx"> @param actionName: name of the action.
</span><span class="cx"> @type actionName: C{str}
</span><ins>+
</ins><span class="cx"> @param shareeView: sharee resource being operated on.
</span><span class="cx"> @type shareeView: L{CommonHomeChildExternal}
</span><del>- @param objectResource: the resource being operated on, or C{None} for classmethod.
</del><ins>+
+ @param objectResource: the resource being operated on, or C{None} for
+ classmethod.
</ins><span class="cx"> @type objectResource: L{CommonObjectResourceExternal}
</span><del>- @param transform: a function used to convert the JSON response into return values.
</del><ins>+
+ @param transform: a function used to convert the JSON response into
+ return values.
</ins><span class="cx"> @type transform: C{callable}
</span><ins>+
</ins><span class="cx"> @param args: list of optional arguments.
</span><span class="cx"> @type args: C{list}
</span><ins>+
</ins><span class="cx"> @param kwargs: optional keyword arguments.
</span><span class="cx"> @type kwargs: C{dict}
</span><span class="cx"> """
</span><span class="cx">
</span><del>- txn, request, server = yield self._getRequestForStoreObject(actionName, storeObject, classMethod)
</del><ins>+ txn, request, server = yield self._getRequestForStoreObject(
+ actionName, storeObject, classMethod
+ )
</ins><span class="cx"> if args is not None:
</span><span class="cx"> request["arguments"] = args
</span><span class="cx"> if kwargs is not None:
</span><span class="lines">@@ -269,26 +314,46 @@
</span><span class="cx">
</span><span class="cx">
</span><span class="cx"> @inlineCallbacks
</span><del>- def _simple_object_recv(self, txn, actionName, request, method, transform=None):
</del><ins>+ def _simple_object_recv(
+ self, txn, actionName, request, method, transform=None
+ ):
</ins><span class="cx"> """
</span><del>- A simple recv operation that returns a value. We also look for an optional set of arguments/keywords
- and include those only if present.
</del><ins>+ A simple recv operation that returns a value.
+ We also look for an optional set of arguments/keywords and include
+ those only if present.
</ins><span class="cx">
</span><span class="cx"> @param actionName: name of the action.
</span><span class="cx"> @type actionName: C{str}
</span><ins>+
</ins><span class="cx"> @param request: request arguments
</span><span class="cx"> @type request: C{dict}
</span><del>- @param method: name of the method to execute on the shared resource to get the result.
</del><ins>+
+ @param method: name of the method to execute on the shared resource to
+ get the result.
</ins><span class="cx"> @type method: C{str}
</span><del>- @param transform: method to call on returned JSON value to convert it to something useful.
</del><ins>+
+ @param transform: method to call on returned JSON value to convert it
+ to something useful.
</ins><span class="cx"> @type transform: C{callable}
</span><span class="cx"> """
</span><span class="cx">
</span><del>- storeObject, classObject = yield self._getStoreObjectForRequest(txn, request)
</del><ins>+ storeObject, classObject = yield self._getStoreObjectForRequest(
+ txn, request
+ )
+
</ins><span class="cx"> if classObject is not None:
</span><del>- value = yield getattr(classObject, method)(storeObject, *request.get("arguments", ()), **request.get("keywords", {}))
</del><ins>+ m = getattr(classObject, method)
+ value = yield m(
+ storeObject,
+ *request.get("arguments", ()),
+ **request.get("keywords", {})
+ )
</ins><span class="cx"> else:
</span><del>- value = yield getattr(storeObject, method)(*request.get("arguments", ()), **request.get("keywords", {}))
</del><ins>+ m = getattr(storeObject, method)
+ value = yield m(
+ *request.get("arguments", ()),
+ **request.get("keywords", {})
+ )
</ins><span class="cx">
</span><span class="cx"> returnValue(transform(value) if transform is not None else value)
</span><span class="cx">
</span><span class="lines">@@ -297,18 +362,27 @@
</span><span class="cx"> # Factory methods for binding actions to the conduit class
</span><span class="cx"> #
</span><span class="cx"> @classmethod
</span><del>- def _make_simple_action(cls, action, method, classMethod=False, transform_recv_result=None, transform_send_result=None):
</del><ins>+ def _make_simple_action(
+ cls, action, method, classMethod=False,
+ transform_recv_result=None, transform_send_result=None
+ ):
</ins><span class="cx"> setattr(
</span><span class="cx"> cls,
</span><span class="cx"> "send_{}".format(action),
</span><span class="cx"> lambda self, storeObject, *args, **kwargs:
</span><del>- self._simple_object_send(action, storeObject, classMethod=classMethod, transform=transform_send_result, args=args, kwargs=kwargs)
</del><ins>+ self._simple_object_send(
+ action, storeObject, classMethod=classMethod,
+ transform=transform_send_result, args=args, kwargs=kwargs
+ )
</ins><span class="cx"> )
</span><span class="cx"> setattr(
</span><span class="cx"> cls,
</span><span class="cx"> "recv_{}".format(action),
</span><span class="cx"> lambda self, txn, message:
</span><del>- self._simple_object_recv(txn, action, message, method, transform=transform_recv_result)
</del><ins>+ self._simple_object_recv(
+ txn, action, message, method,
+ transform=transform_recv_result
+ )
</ins><span class="cx"> )
</span><span class="cx">
</span><span class="cx">
</span><span class="lines">@@ -345,24 +419,81 @@
</span><span class="cx"> # Calls on L{CommonHome} objects
</span><span class="cx">
</span><span class="cx"> # Calls on L{CommonHomeChild} objects
</span><del>-StoreAPIConduitMixin._make_simple_action("homechild_listobjects", "listObjects", classMethod=True)
-StoreAPIConduitMixin._make_simple_action("homechild_loadallobjects", "loadAllObjects", classMethod=True, transform_recv_result=StoreAPIConduitMixin._to_externalize_list)
-StoreAPIConduitMixin._make_simple_action("homechild_objectwith", "objectWith", classMethod=True, transform_recv_result=StoreAPIConduitMixin._to_externalize)
-StoreAPIConduitMixin._make_simple_action("homechild_movehere", "moveObjectResourceHere")
-StoreAPIConduitMixin._make_simple_action("homechild_moveaway", "moveObjectResourceAway")
-StoreAPIConduitMixin._make_simple_action("homechild_synctoken", "syncToken")
-StoreAPIConduitMixin._make_simple_action("homechild_resourcenamessincerevision", "resourceNamesSinceRevision", transform_send_result=StoreAPIConduitMixin._to_tuple)
-StoreAPIConduitMixin._make_simple_action("homechild_search", "search")
</del><ins>+StoreAPIConduitMixin._make_simple_action(
+ "homechild_listobjects", "listObjects",
+ classMethod=True
+)
+StoreAPIConduitMixin._make_simple_action(
+ "homechild_loadallobjects", "loadAllObjects",
+ classMethod=True,
+ transform_recv_result=StoreAPIConduitMixin._to_externalize_list
+)
+StoreAPIConduitMixin._make_simple_action(
+ "homechild_objectwith", "objectWith",
+ classMethod=True,
+ transform_recv_result=StoreAPIConduitMixin._to_externalize
+)
+StoreAPIConduitMixin._make_simple_action(
+ "homechild_movehere", "moveObjectResourceHere"
+)
+StoreAPIConduitMixin._make_simple_action(
+ "homechild_moveaway", "moveObjectResourceAway"
+)
+StoreAPIConduitMixin._make_simple_action(
+ "homechild_synctoken", "syncToken"
+)
+StoreAPIConduitMixin._make_simple_action(
+ "homechild_resourcenamessincerevision", "resourceNamesSinceRevision",
+ transform_send_result=StoreAPIConduitMixin._to_tuple
+)
+StoreAPIConduitMixin._make_simple_action(
+ "homechild_search", "search"
+)
</ins><span class="cx">
</span><span class="cx"> # Calls on L{CommonObjectResource} objects
</span><del>-StoreAPIConduitMixin._make_simple_action("objectresource_loadallobjects", "loadAllObjects", classMethod=True, transform_recv_result=StoreAPIConduitMixin._to_externalize_list)
-StoreAPIConduitMixin._make_simple_action("objectresource_loadallobjectswithnames", "loadAllObjectsWithNames", classMethod=True, transform_recv_result=StoreAPIConduitMixin._to_externalize_list)
-StoreAPIConduitMixin._make_simple_action("objectresource_listobjects", "listObjects", classMethod=True)
-StoreAPIConduitMixin._make_simple_action("objectresource_countobjects", "countObjects", classMethod=True)
-StoreAPIConduitMixin._make_simple_action("objectresource_objectwith", "objectWith", classMethod=True, transform_recv_result=StoreAPIConduitMixin._to_externalize)
-StoreAPIConduitMixin._make_simple_action("objectresource_resourcenameforuid", "resourceNameForUID", classMethod=True)
-StoreAPIConduitMixin._make_simple_action("objectresource_resourceuidforname", "resourceUIDForName", classMethod=True)
-StoreAPIConduitMixin._make_simple_action("objectresource_create", "create", classMethod=True, transform_recv_result=StoreAPIConduitMixin._to_externalize)
-StoreAPIConduitMixin._make_simple_action("objectresource_setcomponent", "setComponent")
-StoreAPIConduitMixin._make_simple_action("objectresource_component", "component", transform_recv_result=StoreAPIConduitMixin._to_string)
-StoreAPIConduitMixin._make_simple_action("objectresource_remove", "remove")
</del><ins>+StoreAPIConduitMixin._make_simple_action(
+ "objectresource_loadallobjects", "loadAllObjects",
+ classMethod=True,
+ transform_recv_result=StoreAPIConduitMixin._to_externalize_list
+)
+StoreAPIConduitMixin._make_simple_action(
+ "objectresource_loadallobjectswithnames", "loadAllObjectsWithNames",
+ classMethod=True,
+ transform_recv_result=StoreAPIConduitMixin._to_externalize_list
+)
+StoreAPIConduitMixin._make_simple_action(
+ "objectresource_listobjects", "listObjects",
+ classMethod=True
+)
+StoreAPIConduitMixin._make_simple_action(
+ "objectresource_countobjects", "countObjects",
+ classMethod=True
+)
+StoreAPIConduitMixin._make_simple_action(
+ "objectresource_objectwith", "objectWith",
+ classMethod=True,
+ transform_recv_result=StoreAPIConduitMixin._to_externalize
+)
+StoreAPIConduitMixin._make_simple_action(
+ "objectresource_resourcenameforuid", "resourceNameForUID",
+ classMethod=True
+)
+StoreAPIConduitMixin._make_simple_action(
+ "objectresource_resourceuidforname", "resourceUIDForName",
+ classMethod=True
+)
+StoreAPIConduitMixin._make_simple_action(
+ "objectresource_create", "create",
+ classMethod=True,
+ transform_recv_result=StoreAPIConduitMixin._to_externalize
+)
+StoreAPIConduitMixin._make_simple_action(
+ "objectresource_setcomponent", "setComponent"
+)
+StoreAPIConduitMixin._make_simple_action(
+ "objectresource_component", "component",
+ transform_recv_result=StoreAPIConduitMixin._to_string
+)
+StoreAPIConduitMixin._make_simple_action(
+ "objectresource_remove", "remove"
+)
</ins></span></pre>
</div>
</div>
</body>
</html>