An error occurred while loading the file. Please try again.
-
daphtya authored22f47d02
database.py 4.27 KiB
from flask import Flask
from flask_mongoengine import MongoEngine
from bson import json_util
from datetime import datetime
import json
mongo = MongoEngine()
class User(mongo.Document):
user_id = mongo.StringField(required=True, primary_key=True)
username = mongo.StringField(required=True, unique=True)
password = mongo.StringField(required=True)
name = mongo.StringField(required=True)
role = mongo.IntField(required=True)
page_list = mongo.ListField(mongo.ReferenceField("VizData"))
def to_json(self):
data = self.to_mongo()
data["page_list"] = [str(page.id) for page in self.page_list]
return json_util.dumps(data)
class Reply(mongo.EmbeddedDocument):
replier_id = mongo.StringField(max_length=20, required =True)
replier_name = mongo.StringField(required=True)
reply_text = mongo.StringField(required=True)
date = mongo.DateTimeField(default= datetime.utcnow)
class Comment(mongo.Document):
commenter_id = mongo.StringField(max_length=20, required=True)
commenter_name = mongo.StringField(required=True)
comment_text = mongo.StringField(required=True)
page = mongo.ReferenceField('VizData', required=True)
date = mongo.DateTimeField(default = datetime.utcnow)
reply = mongo.EmbeddedDocumentField('Reply')
class VizData(mongo.Document):
name = mongo.StringField(required = True)
level = mongo.IntField(required= True)
value = mongo.LongField(required = True)
year = mongo.IntField(required=True)
subdata = mongo.ListField(mongo.ReferenceField("VizData"))
value = mongo.IntField(required = True)
percentage = mongo.FloatField()
categories = mongo.ListField(mongo.StringField(), default=[])
detail = mongo.StringField()
class Page(mongo.Document):
level = mongo.IntField(required=True)
data = mongo.ListField(mongo.ReferenceField("Data", required=True))
comments = mongo.ListField(mongo.ReferenceField("Comment"), default=[])
# APBD Data
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)
persentase = mongo.FloatField()
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)
persentase = mongo.FloatField()
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)
persentase = mongo.FloatField()
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)
persentase = mongo.FloatField()
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)
persentase = mongo.FloatField()
if __name__ == "__main__":
app = Flask(__name__)
app.config["MONGODB_DB"] = "viz-masy"
mongo.init_app(app)
# data = Data(name="dummy", value=5)
# data.save()
# test_page = Page(level=1, data=[data])
# test_page.save()
# print(test_page.id)
# print(test_page.data)
# test = User(user_id="123456789", username="dsfdasfd", password="asdf", name="dichi", address="behind you", role=1, page_list=[test_page])
test = User.objects.get(user_id="123456789", username="dsfdasfd", password="asdf", name="dichi", address="behind you", role=1)
#print(test.id)
#test.save()
#print(test.id)
user_dict = json.loads(test.to_json())
page = Page.objects.with_id(user_dict['page_list'][0])
print(page.data[0].name)