Skip to content

Commit

Permalink
add index tender schema
Browse files Browse the repository at this point in the history
  • Loading branch information
wakataw committed Jun 2, 2022
1 parent 3d8e958 commit 369f011
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 0 deletions.
67 changes: 67 additions & 0 deletions pyproc/schema.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
from pydantic import BaseModel
from typing import Optional, List
import re


class IndexBase(BaseModel):
"""
Model untuk menyimpan item daftar pengadaan pada halaman depan pencarian.
Keterangan:
0: id_paket: "8691119"
1: nama_paket: "Pelatihan Perencanaan KPBU Pusbindiklatren Tahun Anggaran 2022"
2: lembaga: "Kementerian Perencanaan Pembangunan Nasional"
3: tahap_tender: "Tender Gagal"
4: harga_perkiraan_sendiri: "798 Jt"
5: metode_pengadaan: "Pascakualifikasi Dua File"
6: metode_pengadaan_2: "Tender"
7: metode_pengadaan_3: "Sistem Nilai"
8: jenis_pengadaan: "Jasa Lainnya - TA 2022"
9: spse_version: "5"
10: nilai_kontrak: "Nilai Kontrak belum dibuat"
11: evaluasi ulang: null
12: penawaran ulang: null
13: konsolidasi: "0"
14: orang_asli_papua: "0"
15: Unknown: null
"""
id_paket: str
nama_paket: str
kementerian_lembaga: str
tahap: str
harga_perkiraan_sendiri: str
metode_pengadaan: str
metode_pengadaan_2: str
metode_pengadaan_3: str
jenis_pengadaan: str
tahun_pengadaan: List[int]
spse_version: str
nilai_kontrak: str
evaluasi_ulang: bool
penawaran_ulang: bool
konsolidasi: bool
orang_asli_papua: bool
unknown: Optional[str]

@classmethod
def parse_iterable(cls, values: List):
defaultdict = {
'id_paket': values[0],
'nama_paket': values[1],
'kementerian_lembaga': values[2],
'tahap': values[3],
'harga_perkiraan_sendiri': values[4],
'metode_pengadaan': values[5],
'metode_pengadaan_2': values[6],
'metode_pengadaan_3': values[7],
'jenis_pengadaan': values[8],
'tahun_pengadaan': re.findall(r'(\d{4})', values[8]),
'spse_version': values[9],
'nilai_kontrak': 0 if values[10] is None else values[10],
'evaluasi_ulang': 0 if values[11] is None else values[11],
'penawaran_ulang': 0 if values[12] is None else values[12],
'konsolidasi': 0 if values[13] is None else values[13],
'orang_asli_papua': 0 if values[14] is None else values[14],
'unknown': values[15]
}
return cls.parse_obj(defaultdict)
13 changes: 13 additions & 0 deletions tests/test_schema.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import unittest
from pyproc.schema import IndexBase
from pyproc.lpse import Lpse


class TestSchema(unittest.TestCase):

def test_index_schema(self):
lpse = Lpse('http://lpse.kepahiangkab.go.id/eproc4')
for item in lpse.get_paket_tender(length=5, data_only=True):
index = IndexBase.parse_iterable(item)
print(index)
self.assertTrue(type(index) == IndexBase)

0 comments on commit 369f011

Please sign in to comment.