]> CRI, Mines Paris - PSL - Portfolio.git/blobdiff - Products/Portfolio/skins/lrservice.py
eggification
[Portfolio.git] / Products / Portfolio / skins / lrservice.py
diff --git a/Products/Portfolio/skins/lrservice.py b/Products/Portfolio/skins/lrservice.py
new file mode 100644 (file)
index 0000000..8b56499
--- /dev/null
@@ -0,0 +1,53 @@
+##parameters=
+
+from Products.Plinn.utils import makeValidId
+from Products.CMFCore.utils import getToolByName
+
+utool = getToolByName(context, 'portal_url')
+portal = utool.getPortalObject()
+uidtool = getToolByName(portal, 'portal_uidhandler')
+
+fg = context.REQUEST.form.get
+
+method = fg('method')
+
+if method == 'normaliseAndCreatePath' :
+    normalizedPath, uids = [], []
+    o = portal
+    path = fg('path', '').split('      ') # séparateur : 0x09 (tabulation)
+    for part in path :
+        validId = makeValidId(o, part, allow_dup=1)
+        if o.hasObject(validId) :
+            normalizedPath.append(validId)
+            o = o[validId]
+        else :
+            id = o.invokeFactory('Portfolio', validId, title=part)
+            o = o[id]
+            normalizedPath.append(id)
+        uid = uidtool.register(o)
+        uids.append(uid)
+    
+    return '%s\n%s' % ('/'.join(normalizedPath), ' '.join([str(uid) for uid in uids]))
+
+elif method == 'uploadPhoto' :
+    path = fg('normalizedPath')
+    name = fg('fileName')
+    portfolio = portal.restrictedTraverse(path)
+    photoId = makeValidId(portfolio, name, allow_dup=1)
+    if portfolio.hasObject(photoId) :
+        photo = portfolio[photoId]
+        photo.manage_upload(fg('photo'))
+    else :
+        id = portfolio.invokeFactory('Photo',
+                                     photoId,
+                                     file=fg('photo'),
+                                     content_type='image/jpeg')
+    photo = portfolio[photoId]
+    uid = uidtool.register(photo)
+    return '%s %s' % (uid, photo.absolute_url())
+
+elif method in ('deletePhoto', 'deletePortfolio') :
+    o = uidtool.queryObject(fg('uid'))
+    if o :
+        parent = o.getParentNode()
+        parent.manage_delObjects([o.getId()])