From 24489c5b5deb44a20ad8bcfb20afe23828ff45c7 Mon Sep 17 00:00:00 2001 From: Aleksey Lim Date: Mon, 01 Oct 2012 21:31:30 +0000 Subject: Commands attach/detach can be called only from Hub for now --- diff --git a/sugar_network/node/commands.py b/sugar_network/node/commands.py index 36889dc..e576d2b 100644 --- a/sugar_network/node/commands.py +++ b/sugar_network/node/commands.py @@ -102,6 +102,26 @@ class NodeCommands(ad.VolumeCommands, Commands): return cmd + @ad.document_command(method='PUT', cmd='attach', + permissions=ad.ACCESS_AUTH) + def attach(self, document, guid, request): + auth.validate(request, 'root') + directory = self.volume[document] + doc = directory.get(guid) + # TODO Reading layer here is a race + layer = list(set(doc['layer']) | set(request.content)) + directory.update(guid, {'layer': layer}) + + @ad.document_command(method='PUT', cmd='detach', + permissions=ad.ACCESS_AUTH) + def detach(self, document, guid, request): + auth.validate(request, 'root') + directory = self.volume[document] + doc = directory.get(guid) + # TODO Reading layer here is a race + layer = list(set(doc['layer']) - set(request.content)) + directory.update(guid, {'layer': layer}) + def before_create(self, request, props): if request['document'] == 'user': props['guid'], props['pubkey'] = _load_pubkey(props['pubkey']) diff --git a/sugar_network/resources/context.py b/sugar_network/resources/context.py index 8af986c..63d1e31 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, auth +from sugar_network.node import obs from active_toolkit import coroutine, util @@ -158,22 +158,6 @@ class Context(Resource): def presolve(self, value): return value - @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 = {} for repo in obs.get_repos(): -- cgit v0.9.1