From c4aec431b167ff4107a55893790f46f27dba6161 Mon Sep 17 00:00:00 2001
From: Rifo Genadi <rifoagenadi@gmail.com>
Date: Sat, 13 Apr 2019 20:47:14 +0700
Subject: [PATCH] Fix database migration

---
 __pycache__/app.cpython-36.pyc             | Bin 1415 -> 0 bytes
 __pycache__/conftest.cpython-36-PYTEST.pyc | Bin 129 -> 0 bytes
 __pycache__/setup.cpython-36.pyc           | Bin 219 -> 0 bytes
 app.py                                     |   1 +
 database/database.py                       |   5 ++
 migrate/migrate.py                         |  47 +++++++++------
 modules/apbd.py                            |  65 ++++-----------------
 7 files changed, 45 insertions(+), 73 deletions(-)
 delete mode 100644 __pycache__/app.cpython-36.pyc
 delete mode 100644 __pycache__/conftest.cpython-36-PYTEST.pyc
 delete mode 100644 __pycache__/setup.cpython-36.pyc

diff --git a/__pycache__/app.cpython-36.pyc b/__pycache__/app.cpython-36.pyc
deleted file mode 100644
index d31d7560dc777c87b174b232f3f3ddba8cfcacec..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1415
zcmb_cOK%e~5MJ*)uQmyNP=rtfry#XGa6t$m3WSG5OQjSfR*_bljFURq7xpevb1hf?
z0(brd2Y$w0Iq?@bG4>|3lpI-Utr>q~&*yK(zSn3};qc2KwlwXBcImUxevH5Pjss{w
zLM<X5iF8jV($~>9JR>qaQ~5?{MYd-XjS}jd6VIjYv@)%Nc}{T7p4O<VEO%N5>zsfM
z&L<7y8W>jx#GnFIHM6E>YEXv;tik%kgyv@*TF_SLx<apAK{sGip-t+*)=cN$FscRH
zaQ!o8hn>FGz3~&zp>_4bdL9O1R;+Ux1Lb~3qcjXMiipGMhn$M6aHb-O+4!tW3M)$D
zNiwgFl6cG}d!zAWZtVvt+aJm8mLEamDgMI50SKnkkLGut1fv-y=?Ka{Qr>}pvrfvB
zGdk<Md)41PJm|mws&NOGTnxXu&mIg$3DCiWWt^so7-ad7iox;m>%p+xa1f;FUV2to
zr!)+chRmzupy|AV<GiW(Wq6R?k4)r2_!m_fsi?YWWJvaWL3i`g3MK-<_D-`X>=JHZ
z;03|bl8cL4xxET*;lz?f743OdvB>f4`-OS@rhifxFM211{jB%8chW12<F_X$uM^Si
zGy$=i;zQgh)20LnmUIpDe(4$L-2`*tS?Jvbd*M0g-3PaiEs9mB9PyeY(>e@9K4Wo5
z^63l%p7Xk#-#LheEX2xWK?w<pg0T(*E@ho>ybRJ@T!q#oROtcB6w=kXEPG*>XIUwg
zDHCsDlxX6h=~ZHqi=RvN=8dwik|?5a_IH2%DcXNiWMiqwsLXdsl$)g}BFOU261}3!
zcB#w1sFG$&N%If5(1}Y0R*K{-mfXgG)jG8iDO}%=0v7weY#<BhFrOTC+nzO+_nJ$o
z%9fQy;rOg+UP~5u7znzzG`M`;<W6xAQQt2Nyi$c-UUIKC=1JtIXJZyp&t);oe1tuV
zCwWHI9pkdaRn@qnWbiy*c_jB?lt3QRNAiUbvH_Z;N$QqM>ZEG4&9-%`erw$&zX6f!
BOYZ;x

diff --git a/__pycache__/conftest.cpython-36-PYTEST.pyc b/__pycache__/conftest.cpython-36-PYTEST.pyc
deleted file mode 100644
index f16c2c0a147fd45a1b320af4c8ca5a0c2e34be3c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 129
zcmXr!<>gv1d2S2?5IhDEFu(|8H~?`m3y?@*2xib^^jpbL1QJFNzw}(JVv_SyQe)CH
zONvqp@{40iN|REHV*&zvVv-V*vs3d@fbw~1C8@<FdIgoYIBatBQ%ZAE?Lg)f12F>t
DZtWh>

diff --git a/__pycache__/setup.cpython-36.pyc b/__pycache__/setup.cpython-36.pyc
deleted file mode 100644
index 865a7b67ff720bb1405e0992b68a56e0f43e82a0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 219
zcmXr!<>m68GB?JAfq~&M5W@izkmUfx#XLYFg&~Epg&~R|g(;XplQ|hE0tbvhmNO6+
zvjB+{2B18n-%5rekT8PyrR`!BlboND8k3$`Qj}VdUmR0Xnv_}`6A<7Nla!d8otl>t
zQ=D2-TA)`@d5b+WFS8^*B?)9=F~}VZj77{q(oYjYBg}=cKuT_L*yQG?l;)(`fpvj2
F0RYsyD3JgF

diff --git a/app.py b/app.py
index 3f4e43b..80753af 100644
--- a/app.py
+++ b/app.py
@@ -17,6 +17,7 @@ app.register_blueprint(login_route)
 app.register_blueprint(register_route)
 app.register_blueprint(comment_route)
 app.register_blueprint(admin_route)
+app.register_blueprint(apbd_route)
 
 cors = CORS(app)
 
diff --git a/database/database.py b/database/database.py
index b65a731..40c327e 100644
--- a/database/database.py
+++ b/database/database.py
@@ -45,6 +45,7 @@ class Rekening(mongo.Document):
     kode_rekening = mongo.StringField(required=True)
     nama_rekening = mongo.StringField(required=True)
     jumlah_rincian = mongo.IntField(required=True)
+    persentase = mongo.IntField()
 
 class Kegiatan(mongo.Document):
     id_program = mongo.IntField(required=True)
@@ -52,6 +53,7 @@ class Kegiatan(mongo.Document):
     nama_kegiatan = mongo.StringField(required=True)
     rekening = mongo.ListField(mongo.StringField(), default=[], required=True)
     jumlah_rincian = mongo.IntField(default = 0)
+    persentase = mongo.IntField()
 
 class Program(mongo.Document):
     id_skpd = mongo.IntField(required=True)
@@ -59,6 +61,7 @@ class Program(mongo.Document):
     nama_program = mongo.StringField(required=True)
     kegiatan = mongo.ListField(mongo.IntField(), default=[], required=True)
     jumlah_rincian = mongo.IntField(default = 0)
+    persentase = mongo.IntField()
 
 class SKPD(mongo.Document):
     id_urusan = mongo.IntField(required=True)
@@ -66,6 +69,7 @@ class SKPD(mongo.Document):
     nama_skpd = mongo.StringField(required=True)
     program = mongo.ListField(mongo.IntField(), default=[], required=True)
     jumlah_rincian = mongo.IntField(default = 0)
+    persentase = mongo.IntField()
 
 class Urusan(mongo.Document):
     tahun = mongo.IntField(required=True)
@@ -73,6 +77,7 @@ class Urusan(mongo.Document):
     nama_urusan = mongo.StringField(required=True)
     skpd = mongo.ListField(mongo.IntField(), default=[], required=True)
     jumlah_rincian = mongo.IntField(default = 0)
+    persentase = mongo.IntField()
 
 if __name__ == "__main__":
     app = Flask(__name__)
diff --git a/migrate/migrate.py b/migrate/migrate.py
index e29f046..40470e2 100644
--- a/migrate/migrate.py
+++ b/migrate/migrate.py
@@ -9,42 +9,44 @@ class Rekening(mongo.Document):
     id_kegiatan = mongo.IntField(required=True)
     kode_rekening = mongo.StringField(required=True)
     nama_rekening = mongo.StringField(required=True)
-    jumlah_rincian = mongo.IntField(required=True)
+    jumlah_rincian = mongo.StringField(required=True)
 
 class Kegiatan(mongo.Document):
     id_program = mongo.IntField(required=True)
     id_kegiatan = mongo.IntField(required=True)
     nama_kegiatan = mongo.StringField(required=True)
     rekening = mongo.ListField(mongo.StringField(), default=[], required=True)
-    jumlah_rincian = mongo.IntField(default = 0)
+    jumlah_rincian = mongo.StringField(default = '0')
 
 class Program(mongo.Document):
     id_skpd = mongo.IntField(required=True)
     id_program = mongo.IntField(required=True)
     nama_program = mongo.StringField(required=True)
     kegiatan = mongo.ListField(mongo.IntField(), default=[], required=True)
-    jumlah_rincian = mongo.IntField(default = 0)
+    jumlah_rincian = mongo.StringField(default = '0')
 
 class SKPD(mongo.Document):
     id_urusan = mongo.IntField(required=True)
     id_skpd = mongo.IntField(required=True)
     nama_skpd = mongo.StringField(required=True)
     program = mongo.ListField(mongo.IntField(), default=[], required=True)
-    jumlah_rincian = mongo.IntField(default = 0)
+    jumlah_rincian = mongo.StringField(default = '0')
 
 class Urusan(mongo.Document):
     tahun = mongo.IntField(required=True)
     id_urusan = mongo.IntField(required=True)
     nama_urusan = mongo.StringField(required=True)
     skpd = mongo.ListField(mongo.IntField(), default=[], required=True)
-    jumlah_rincian = mongo.IntField(default = 0)
+    jumlah_rincian = mongo.StringField(default = '0')
 
 # memasukkan data urusan
 with open("dummy.csv") as f:
     reader = csv.reader(f)
     next(reader) # skip header
     urusan = { }
+    count = 0;
     for row in reader:
+        count+=1
         id_urusan = int(row[3])
         nama_urusan = row[5]
         id_skpd = int(row[6])
@@ -125,30 +127,39 @@ for key in kegiatan.keys():
 with open("dummy.csv") as f:
     reader = csv.reader(f)
     next(reader) # skip header
-    rekening = {}
+    rekening = []
     for row in reader:
         id_kegiatan = int(row[16])
         kode_rekening = row[19]
         nama_rekening = row[20]
-        jumlah_rincian = int(row[21])
-        if not(kode_rekening in rekening):
-            newRekening = {'id_kegiatan': id_kegiatan, 'kode_rekening': kode_rekening, 'nama_rekening': nama_rekening, 'jumlah_rincian': jumlah_rincian}
-            rekening[kode_rekening] = newRekening
-for key in rekening.keys(): 
-    nominal = rekening[key]['jumlah_rincian']
-    new_rekening = Rekening(id_kegiatan=rekening[key]['id_kegiatan'], kode_rekening=rekening[key]['kode_rekening'], nama_rekening=rekening[key]['nama_rekening'], jumlah_rincian=rekening[key]['jumlah_rincian'])
+        jumlah_rincian = row[21]
+        newRekening = {'id_kegiatan': id_kegiatan, 'kode_rekening': kode_rekening, 'nama_rekening': nama_rekening, 'jumlah_rincian': jumlah_rincian}
+        rekening.append(newRekening)
+        # rekening[kode_rekening] = newRekening
+
+count = 1
+for key in rekening: 
+    print(count)
+    nominal = int(key['jumlah_rincian'])
+    new_rekening = Rekening(id_kegiatan=key['id_kegiatan'], kode_rekening=key['kode_rekening'], nama_rekening=key['nama_rekening'], jumlah_rincian=key['jumlah_rincian'])
     new_rekening.save()
     # Tambahkan jumlah rincian kegiatan
-    parent_kegiatan = Kegiatan.objects(id_kegiatan=rekening[key]['id_kegiatan'])
+    parent_kegiatan = Kegiatan.objects(id_kegiatan=key['id_kegiatan'])
     id_program = parent_kegiatan[0]['id_program']
-    parent_kegiatan.update_one(inc__jumlah_rincian=nominal)
+    jumlah_rincian_kegiatan = int(parent_kegiatan[0]['jumlah_rincian']) + nominal
+    parent_kegiatan.update_one(set__jumlah_rincian=str(jumlah_rincian_kegiatan))
     # Tambahkan jumlah rincian program
     parent_program = Program.objects(id_program=id_program)
     id_skpd = parent_program[0]['id_skpd']
-    parent_program.update_one(inc__jumlah_rincian=nominal)
+    jumlah_rincian_program = int(parent_program[0]['jumlah_rincian']) + nominal
+    parent_program.update_one(set__jumlah_rincian=str(jumlah_rincian_program))
     # Tambahkan jumlah rincian skpd
     parent_skpd = SKPD.objects(id_skpd=id_skpd)
     id_urusan = parent_skpd[0]['id_urusan']
-    parent_skpd.update_one(inc__jumlah_rincian=nominal)
+    jumlah_rincian_skpd = int(parent_skpd[0]['jumlah_rincian']) + nominal
+    parent_skpd.update_one(set__jumlah_rincian=str(jumlah_rincian_skpd))
     # Tambahkan jumlah rincian urusan
-    parent_urusan = Urusan.objects(id_urusan=id_urusan).update_one(inc__jumlah_rincian=nominal)
\ No newline at end of file
+    parent_urusan = Urusan.objects(id_urusan=id_urusan)
+    jumlah_rincian_urusan = int(parent_urusan[0]['jumlah_rincian']) + nominal
+    parent_urusan.update_one(set__jumlah_rincian=str(jumlah_rincian_urusan))
+    count+=1
\ No newline at end of file
diff --git a/modules/apbd.py b/modules/apbd.py
index 614258e..61b8f77 100644
--- a/modules/apbd.py
+++ b/modules/apbd.py
@@ -5,62 +5,17 @@ apbd_route = Blueprint('apbd', __name__, template_folder="templates")
 
 # get all urusan
 @apbd_route.route("/api/urusan", methods=["GET"])
-def
+def getAllUrusan():
+    urusans = db.Urusan.objects()
 
-@login_route.route("/api/login", methods=["POST"])
-def login_user():
-    form = request.get_json()
-    username = form.get("username")
-    password = form.get("password")
-    # TO DO : seed and hash the password
+    jumlah_rincian = 0
+    for urusan in urusans:
+        jumlah_rincian += urusan['jumlah_rincian']
     
-    user = db.User.objects(username=username)
+    for urusan in urusans:
+        urusan.persentase = (urusan['jumlah_rincian']/jumlah_rincian)*100
 
-    if len(user) > 0 and user[0].password == password:
-        key = current_app.config.get("SECRET_KEY")
-        token = Token.generate_from(user[0].id, key)
-
-        del user[0].password
-        return jsonify({
-            "status": 200,
-            "data": {
-                "token": token.decode("utf-8"),
-                "user": user[0]
-            }
-        })
-    else:
-        return jsonify({
-            "status": 404,
-            "message": "User not found"
-        })
-
-
-@login_route.route("/api/check-user", methods=["POST"])
-def check_user_existence():
-    form = request.get_json()
-    username = form.get("username")
-    
-    exists = db.User.objects(username = username)
-
-    if len(exists) > 0:
-        return jsonify({
-            "status": 200,
-            "message": "User exists",
-            "exist":True
-        })
-    else:
-        return jsonify({
-            "status": 404,
-            "message": "User not found",
-            "exist":False
-        })
-
-
-@login_route.route("/api/get-user", methods=["POST"])
-@validate_login_token(pass_user=True)
-def get_user_from_token(user):
     return jsonify({
-        "status": 200,
-        "data": user
-    })
-    
\ No newline at end of file
+        'status': "200",
+        'response': urusans
+    })
\ No newline at end of file
-- 
GitLab