From 77a615f7ff68e2f37808d2e0c37cd2cb67254ed6 Mon Sep 17 00:00:00 2001
From: inso <insomniak.fr@gmaiL.com>
Date: Sat, 1 Oct 2016 02:40:28 +0200
Subject: [PATCH] Add user parameters file

---
 src/sakia/data/entities/__init__.py           |  1 +
 src/sakia/data/entities/user_parameters.py    | 20 +++++++++++++
 src/sakia/data/files/__init__.py              |  1 +
 src/sakia/data/files/user_parameters.py       | 28 +++++++++++++++++++
 src/sakia/data/repositories/meta.sql          |  6 ++--
 .../unit/data/test_user_parameters_file.py    | 16 +++++++++++
 6 files changed, 70 insertions(+), 2 deletions(-)
 create mode 100644 src/sakia/data/entities/user_parameters.py
 create mode 100644 src/sakia/data/files/__init__.py
 create mode 100644 src/sakia/data/files/user_parameters.py
 create mode 100644 src/sakia/tests/unit/data/test_user_parameters_file.py

diff --git a/src/sakia/data/entities/__init__.py b/src/sakia/data/entities/__init__.py
index 35265ddc..cc26e051 100644
--- a/src/sakia/data/entities/__init__.py
+++ b/src/sakia/data/entities/__init__.py
@@ -4,3 +4,4 @@ from .certification import Certification
 from .transaction import Transaction
 from .node import Node
 from .connection import Connection
+from .user_parameters import UserParameters
diff --git a/src/sakia/data/entities/user_parameters.py b/src/sakia/data/entities/user_parameters.py
new file mode 100644
index 00000000..54b543b8
--- /dev/null
+++ b/src/sakia/data/entities/user_parameters.py
@@ -0,0 +1,20 @@
+import attr
+
+
+@attr.s()
+class UserParameters:
+    """
+    The user parameters entity
+    """
+    lang = attr.ib(convert=str, default="en_US")
+    referential = attr.ib(convert=int, default=0)
+    expert_mode = attr.ib(convert=bool, default=False)
+    digits_after_comma = attr.ib(convert=int, default=2)
+    maximized = attr.ib(convert=bool, default=False)
+    notifications = attr.ib(convert=bool, default=True)
+    enable_proxy = attr.ib(convert=bool, default=True)
+    proxy_type = attr.ib(convert=int, default=0)
+    proxy_address = attr.ib(convert=str, default="")
+    proxy_port = attr.ib(convert=int, default=8080)
+    international_system_of_units = attr.ib(convert=int, default=False)
+    forgetfulness = attr.ib(convert=bool, default=True)
diff --git a/src/sakia/data/files/__init__.py b/src/sakia/data/files/__init__.py
new file mode 100644
index 00000000..39fa10f9
--- /dev/null
+++ b/src/sakia/data/files/__init__.py
@@ -0,0 +1 @@
+from .user_parameters import UserParametersFile
\ No newline at end of file
diff --git a/src/sakia/data/files/user_parameters.py b/src/sakia/data/files/user_parameters.py
new file mode 100644
index 00000000..119fee4d
--- /dev/null
+++ b/src/sakia/data/files/user_parameters.py
@@ -0,0 +1,28 @@
+import attr
+import json
+from ..entities import UserParameters
+
+
+@attr.s(frozen=True)
+class UserParametersFile:
+    """
+    The repository for UserParameters
+    """
+    _file = attr.ib()
+
+    def save(self, user_parameters):
+        """
+        Commit a user_parameters to the database
+        :param sakia.data.entities.UserParameters user_parameters: the user_parameters to commit
+        """
+        with open(self._file, 'w') as outfile:
+            json.dump(attr.asdict(user_parameters), outfile, indent=4)
+
+    def load(self):
+        """
+        Update an existing user_parameters in the database
+        :param sakia.data.entities.UserParameters user_parameters: the user_parameters to update
+        """
+        with open(self._file, 'r') as json_data:
+            user_parameters = UserParameters(**json.load(json_data))
+        return user_parameters
\ No newline at end of file
diff --git a/src/sakia/data/repositories/meta.sql b/src/sakia/data/repositories/meta.sql
index 693aeea8..4d1cbb1e 100644
--- a/src/sakia/data/repositories/meta.sql
+++ b/src/sakia/data/repositories/meta.sql
@@ -81,7 +81,7 @@ CREATE TABLE IF NOT EXISTS nodes(
                                pubkey               VARCHAR(50),
                                endpoints            TEXT,
                                peer_buid            VARCHAR(100),
-                               uid               VARCHAR(50),
+                               uid                  VARCHAR(50),
                                current_buid         VARCHAR(100),
                                previous_buid        VARCHAR(100),
                                state                INT,
@@ -93,10 +93,12 @@ CREATE TABLE IF NOT EXISTS nodes(
                                PRIMARY KEY (currency, pubkey)
                                );
 
--- Keys TABLE
+-- Cnnections TABLE
 CREATE TABLE IF NOT EXISTS connections(
                                currency           VARCHAR(30),
                                pubkey             VARCHAR(50),
                                salt               VARCHAR(50),
                                PRIMARY KEY (currency, pubkey)
                                );
+
+
diff --git a/src/sakia/tests/unit/data/test_user_parameters_file.py b/src/sakia/tests/unit/data/test_user_parameters_file.py
new file mode 100644
index 00000000..c4fe4980
--- /dev/null
+++ b/src/sakia/tests/unit/data/test_user_parameters_file.py
@@ -0,0 +1,16 @@
+from sakia.data.entities import UserParameters
+from sakia.data.files import UserParametersFile
+import tempfile
+import unittest
+import os
+
+
+class TestUserParametersFile(unittest.TestCase):
+    def test_init_save_load(self):
+        file = os.path.join(tempfile.mkdtemp(), "params.json")
+        user_parameters = UserParameters()
+        user_parameters_file = UserParametersFile(file)
+        user_parameters.proxy_address = "test.fr"
+        user_parameters_file.save(user_parameters)
+        user_parameters_2 = user_parameters_file.load()
+        self.assertEqual(user_parameters, user_parameters_2)
-- 
GitLab