[tor-commits] [ooni-probe/master] Add deck configuration step to the setup wizard

art at torproject.org art at torproject.org
Mon Sep 19 12:14:24 UTC 2016


commit 0c27e0602cfcfb172bc09d1ca2c35a612803f783
Author: Arturo Filastò <arturo at filasto.net>
Date:   Wed Aug 31 16:32:38 2016 +0200

    Add deck configuration step to the setup wizard
---
 ooni/ui/web/server.py | 38 +++++++++++++++++++++++++++++++++++++-
 1 file changed, 37 insertions(+), 1 deletion(-)

diff --git a/ooni/ui/web/server.py b/ooni/ui/web/server.py
index 6f9ef69..2e89370 100644
--- a/ooni/ui/web/server.py
+++ b/ooni/ui/web/server.py
@@ -190,7 +190,8 @@ class WebUIAPI(object):
     def status(self):
         quota_warning = None
         try:
-            with open(os.path.join(config.running_dir, "quota_warning")) as in_file:
+            with open(os.path.join(config.running_path,
+                                   "quota_warning")) as in_file:
                 quota_warning = in_file.read()
         except IOError as ioe:
             if ioe.errno != errno.ENOENT:
@@ -259,6 +260,21 @@ class WebUIAPI(object):
         d.addCallback(got_status_update)
         return d
 
+    @app.route('/api/initialize', methods=["GET"])
+    @xsrf_protect(check=False)
+    @requires_false(attrs=['_is_initialized'])
+    def api_initialize_get(self, request):
+        available_decks = []
+        for deck_id, deck in self.director.deck_store.list():
+            available_decks.append({
+                'name': deck.name,
+                'description': deck.description,
+                'schedule': deck.schedule,
+                'enabled': self.director.deck_store.is_enabled(deck_id),
+                'id': deck_id
+            })
+        return self.render_json({"available_decks": available_decks}, request)
+
     @app.route('/api/initialize', methods=["POST"])
     @xsrf_protect(check=True)
     @requires_false(attrs=['_is_initialized'])
@@ -278,6 +294,26 @@ class WebUIAPI(object):
                 raise WebUIError(400, 'Missing required key {0}'.format(
                     required_key))
         config.create_config_file(**options)
+        try:
+            deck_config = initial_configuration['deck_config']
+        except KeyError:
+            raise WebUIError(400, 'Missing enabled decks')
+
+        for deck_id, enabled in deck_config.items():
+            try:
+                if enabled is True:
+                    self.director.deck_store.enable(deck_id)
+                elif enabled is False:
+                    try:
+                        self.director.deck_store.disable(deck_id)
+                    except DeckNotFound:
+                        # We ignore these errors, because it could be that a deck
+                        # that is marked as disabled is already disabled
+                        pass
+            except DeckNotFound:
+                raise WebUIError(404, 'Deck not found')
+
+        self.scheduler.refresh_deck_list()
         config.set_initialized()
 
         self._is_initialized = True





More information about the tor-commits mailing list