KK KTP arsip
This commit is contained in:
138
models.py
Normal file
138
models.py
Normal file
@@ -0,0 +1,138 @@
|
||||
"""
|
||||
Database Models for OCR Application
|
||||
"""
|
||||
|
||||
from datetime import datetime
|
||||
from database import db
|
||||
|
||||
|
||||
class KTPRecord(db.Model):
|
||||
"""Model untuk menyimpan data KTP hasil OCR"""
|
||||
__tablename__ = 'ktp_records'
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
|
||||
nik = db.Column(db.String(16), unique=True, nullable=True, index=True)
|
||||
nama = db.Column(db.String(100), nullable=True)
|
||||
tempat_lahir = db.Column(db.String(50), nullable=True)
|
||||
tanggal_lahir = db.Column(db.String(20), nullable=True)
|
||||
jenis_kelamin = db.Column(db.String(20), nullable=True)
|
||||
gol_darah = db.Column(db.String(5), nullable=True)
|
||||
alamat = db.Column(db.Text, nullable=True)
|
||||
rt_rw = db.Column(db.String(10), nullable=True)
|
||||
kel_desa = db.Column(db.String(50), nullable=True)
|
||||
kecamatan = db.Column(db.String(50), nullable=True)
|
||||
kabupaten_kota = db.Column(db.String(50), nullable=True)
|
||||
provinsi = db.Column(db.String(50), nullable=True)
|
||||
agama = db.Column(db.String(20), nullable=True)
|
||||
status_perkawinan = db.Column(db.String(30), nullable=True)
|
||||
pekerjaan = db.Column(db.String(50), nullable=True)
|
||||
kewarganegaraan = db.Column(db.String(10), nullable=True)
|
||||
berlaku_hingga = db.Column(db.String(20), nullable=True)
|
||||
image_path = db.Column(db.String(255), nullable=True) # Path to saved KTP image
|
||||
raw_text = db.Column(db.Text, nullable=True)
|
||||
created_at = db.Column(db.DateTime, default=datetime.utcnow)
|
||||
updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
|
||||
|
||||
def to_dict(self):
|
||||
"""Convert model to dictionary"""
|
||||
return {
|
||||
'id': self.id,
|
||||
'nik': self.nik,
|
||||
'nama': self.nama,
|
||||
'tempat_lahir': self.tempat_lahir,
|
||||
'tanggal_lahir': self.tanggal_lahir,
|
||||
'jenis_kelamin': self.jenis_kelamin,
|
||||
'gol_darah': self.gol_darah,
|
||||
'alamat': self.alamat,
|
||||
'rt_rw': self.rt_rw,
|
||||
'kel_desa': self.kel_desa,
|
||||
'kecamatan': self.kecamatan,
|
||||
'kabupaten_kota': self.kabupaten_kota,
|
||||
'provinsi': self.provinsi,
|
||||
'agama': self.agama,
|
||||
'status_perkawinan': self.status_perkawinan,
|
||||
'pekerjaan': self.pekerjaan,
|
||||
'kewarganegaraan': self.kewarganegaraan,
|
||||
'berlaku_hingga': self.berlaku_hingga,
|
||||
'image_path': self.image_path,
|
||||
'created_at': self.created_at.isoformat() if self.created_at else None,
|
||||
'updated_at': self.updated_at.isoformat() if self.updated_at else None
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def from_ocr_data(cls, ocr_data, raw_text=None):
|
||||
"""Create KTPRecord from OCR extracted data"""
|
||||
return cls(
|
||||
nik=ocr_data.get('nik'),
|
||||
nama=ocr_data.get('nama'),
|
||||
tempat_lahir=ocr_data.get('tempat_lahir'),
|
||||
tanggal_lahir=ocr_data.get('tanggal_lahir'),
|
||||
jenis_kelamin=ocr_data.get('jenis_kelamin'),
|
||||
gol_darah=ocr_data.get('gol_darah'),
|
||||
alamat=ocr_data.get('alamat'),
|
||||
rt_rw=ocr_data.get('rt_rw'),
|
||||
kel_desa=ocr_data.get('kel_desa'),
|
||||
kecamatan=ocr_data.get('kecamatan'),
|
||||
kabupaten_kota=ocr_data.get('kabupaten_kota'),
|
||||
provinsi=ocr_data.get('provinsi'),
|
||||
agama=ocr_data.get('agama'),
|
||||
status_perkawinan=ocr_data.get('status_perkawinan'),
|
||||
pekerjaan=ocr_data.get('pekerjaan'),
|
||||
kewarganegaraan=ocr_data.get('kewarganegaraan'),
|
||||
berlaku_hingga=ocr_data.get('berlaku_hingga'),
|
||||
raw_text=raw_text
|
||||
)
|
||||
|
||||
|
||||
class KKRecord(db.Model):
|
||||
"""Model untuk menyimpan data Kartu Keluarga hasil OCR"""
|
||||
__tablename__ = 'kk_records'
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
|
||||
no_kk = db.Column(db.String(16), unique=True, nullable=True, index=True)
|
||||
kepala_keluarga = db.Column(db.String(100), nullable=True)
|
||||
alamat = db.Column(db.Text, nullable=True)
|
||||
rt_rw = db.Column(db.String(10), nullable=True)
|
||||
kel_desa = db.Column(db.String(50), nullable=True)
|
||||
kecamatan = db.Column(db.String(50), nullable=True)
|
||||
kabupaten_kota = db.Column(db.String(50), nullable=True)
|
||||
provinsi = db.Column(db.String(50), nullable=True)
|
||||
kode_pos = db.Column(db.String(10), nullable=True)
|
||||
image_path = db.Column(db.String(255), nullable=True) # Path to saved KK image
|
||||
raw_text = db.Column(db.Text, nullable=True)
|
||||
created_at = db.Column(db.DateTime, default=datetime.utcnow)
|
||||
updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
|
||||
|
||||
def to_dict(self):
|
||||
"""Convert model to dictionary"""
|
||||
return {
|
||||
'id': self.id,
|
||||
'no_kk': self.no_kk,
|
||||
'kepala_keluarga': self.kepala_keluarga,
|
||||
'alamat': self.alamat,
|
||||
'rt_rw': self.rt_rw,
|
||||
'kel_desa': self.kel_desa,
|
||||
'kecamatan': self.kecamatan,
|
||||
'kabupaten_kota': self.kabupaten_kota,
|
||||
'provinsi': self.provinsi,
|
||||
'kode_pos': self.kode_pos,
|
||||
'image_path': self.image_path,
|
||||
'created_at': self.created_at.isoformat() if self.created_at else None,
|
||||
'updated_at': self.updated_at.isoformat() if self.updated_at else None
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def from_ocr_data(cls, ocr_data, raw_text=None):
|
||||
"""Create KKRecord from OCR extracted data"""
|
||||
return cls(
|
||||
no_kk=ocr_data.get('no_kk'),
|
||||
kepala_keluarga=ocr_data.get('kepala_keluarga'),
|
||||
alamat=ocr_data.get('alamat'),
|
||||
rt_rw=ocr_data.get('rt_rw'),
|
||||
kel_desa=ocr_data.get('kel_desa'),
|
||||
kecamatan=ocr_data.get('kecamatan'),
|
||||
kabupaten_kota=ocr_data.get('kabupaten_kota'),
|
||||
provinsi=ocr_data.get('provinsi'),
|
||||
kode_pos=ocr_data.get('kode_pos'),
|
||||
raw_text=raw_text
|
||||
)
|
||||
Reference in New Issue
Block a user