Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar_network/resources/context.py
diff options
context:
space:
mode:
Diffstat (limited to 'sugar_network/resources/context.py')
-rw-r--r--sugar_network/resources/context.py30
1 files changed, 16 insertions, 14 deletions
diff --git a/sugar_network/resources/context.py b/sugar_network/resources/context.py
index 5683664..8af986c 100644
--- a/sugar_network/resources/context.py
+++ b/sugar_network/resources/context.py
@@ -20,7 +20,7 @@ from sugar_network import resources, static
from sugar_network.local import activities
from sugar_network.resources.volume import Resource
from sugar_network.zerosugar import Spec
-from sugar_network.node import obs
+from sugar_network.node import obs, auth
from active_toolkit import coroutine, util
@@ -158,19 +158,21 @@ class Context(Resource):
def presolve(self, value):
return value
- @classmethod
- @ad.directory_command(method='PUT', cmd='include',
- arguments={'layers': ad.to_list})
- def include(cls, directory, layers, request):
- import logging
- logging.error('include> %r %r', layers, request.content)
-
- @classmethod
- @ad.directory_command(method='PUT', cmd='exclude',
- arguments={'layers': ad.to_list})
- def exclude(cls, directory, layers, request):
- import logging
- logging.error('exclude> %r %r', layers, request.content)
+ @ad.document_command(method='PUT', cmd='attach',
+ permissions=ad.ACCESS_AUTH)
+ def attach(self, request):
+ auth.validate(request, 'root')
+ # TODO Reading layer here is a race
+ layer = list(set(self['layer']) | set(request.content))
+ request.volume['context'].update(self.guid, {'layer': layer})
+
+ @ad.document_command(method='PUT', cmd='detach',
+ permissions=ad.ACCESS_AUTH)
+ def detach(self, request):
+ auth.validate(request, 'root')
+ # TODO Reading layer here is a race
+ layer = list(set(self['layer']) - set(request.content))
+ request.volume['context'].update(self.guid, {'layer': layer})
def _process_aliases(self, aliases):
packages = {}