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