dummy_data_kpu/dummy_data_KPU.py
muhammadrizalsupriadi 6d3c4af045 dummy-data
2024-01-12 15:08:48 +07:00

106 lines
5.8 KiB
Python

import csv
import random
import hashlib
def generate_tps_code(tps_counter):
return f"TPS{tps_counter:02}"
def generate_id(prov, kota, kec, kel, tps_code):
return f"{prov}-{kota}-{kec}-{kel}-{tps_code}"
def create_dummy_data():
data_list = []
total_jml_surat_diterima = 0
total_jml_surat_dikembalikan = 0
total_jml_surat_tidak_digunakan = 0
total_jml_surat_digunakan = 0
total_sah_calon_a = 0
total_sah_calon_b = 0
total_sah_calon_c = 0
total_tidak_sah = 0
# Provinsi 51
for provinsi_51 in range(51, 51 + 3):
for kota_51 in range(provinsi_51 * 100 + 1, provinsi_51 * 100 + 3): # Update rentang untuk kota
for kecamatan_51 in range(kota_51 * 1000 + 50, kota_51 * 1000 + 53):
for i in range(3):
kelurahan_51 = 7 + i
combined_number_kelurahan_51 = int(f"{kecamatan_51:07d}{kelurahan_51 + 100:03d}")
for i in range(2):
jml_surat_diterima = random.randint(50, 200)
jml_surat_dikembalikan = random.randint(0, 10)
jml_surat_tidak_digunakan = random.randint(0, 10)
jml_surat_digunakan = jml_surat_diterima - jml_surat_dikembalikan - jml_surat_tidak_digunakan
sah_calon_a = random.randint(0, jml_surat_digunakan)
sah_calon_b = random.randint(0, jml_surat_digunakan - sah_calon_a)
sah_calon_c = jml_surat_digunakan - sah_calon_a - sah_calon_b
jml_surat_tidak_sah = jml_surat_digunakan - (sah_calon_a + sah_calon_b + sah_calon_c)
total_jml_surat_diterima += jml_surat_diterima
total_jml_surat_dikembalikan += jml_surat_dikembalikan
total_jml_surat_tidak_digunakan += jml_surat_tidak_digunakan
total_jml_surat_digunakan += jml_surat_digunakan
total_sah_calon_a += sah_calon_a
total_sah_calon_b += sah_calon_b
total_sah_calon_c += sah_calon_c
total_tidak_sah += jml_surat_tidak_sah
# Generate random data hash
data_hash1 = hashlib.sha256(str(random.getrandbits(256)).encode('utf-8')).hexdigest()
data_hash2 = hashlib.sha256(str(random.getrandbits(256)).encode('utf-8')).hexdigest()
# Generate ID based on the pattern
tps_code = generate_tps_code(i + 1)
random_id = generate_id(provinsi_51, kota_51, kecamatan_51, combined_number_kelurahan_51, tps_code)
args_value = {
"Username": f"zilla{i+1}",
"ID": random_id,
"DataHash1": data_hash1,
"DataHash2": data_hash2,
"JmlSuratDiterima": jml_surat_diterima,
"JmlSuratDikembalikan": jml_surat_dikembalikan,
"JmlSuratTidakDigunakan": jml_surat_tidak_digunakan,
"JmlSuratDigunakan": jml_surat_digunakan,
"JmlSuaraSahCalonA": sah_calon_a,
"JmlSuaraSahCalonB": sah_calon_b,
"JmlSuaraSahCalonC": sah_calon_c,
"JmlSuaraSahSeluruhCalon": sah_calon_a + sah_calon_b + sah_calon_c,
"JmlSuaraTidakSah": jml_surat_tidak_sah,
"JmlSuaraSahTidakSah": sah_calon_a + sah_calon_b + sah_calon_c
}
data_list.append(args_value)
return data_list, total_jml_surat_diterima, total_jml_surat_dikembalikan, total_jml_surat_tidak_digunakan, total_jml_surat_digunakan, total_sah_calon_a, total_sah_calon_b, total_sah_calon_c, total_tidak_sah
dummy_data_list, total_jml_surat_diterima, total_jml_surat_dikembalikan, total_jml_surat_tidak_digunakan, total_jml_surat_digunakan, total_a, total_b, total_c, total_tidak_sah = create_dummy_data()
print(f"Total JmlSuratDiterima: {total_jml_surat_diterima}")
print(f"Total JmlSuratDikembalikan: {total_jml_surat_dikembalikan}")
print(f"Total JmlSuratTidakDigunakan: {total_jml_surat_tidak_digunakan}")
print(f"Total JmlSuratDigunakan: {total_jml_surat_digunakan}")
print(f"Total JmlSuaraSahCalonA: {total_a}")
print(f"Total JmlSuaraSahCalonB: {total_b}")
print(f"Total JmlSuaraSahCalonC: {total_c}")
print(f"Total JmlSuaraTidakSah: {total_tidak_sah}")
# Simpan data dalam format CSV
csv_file_path = 'output.csv'
with open(csv_file_path, 'w', newline='', encoding='utf-8') as csvfile:
fieldnames = ["Username", "ID", "DataHash1", "DataHash2", "JmlSuratDiterima", "JmlSuratDikembalikan", "JmlSuratTidakDigunakan", "JmlSuratDigunakan", "JmlSuaraSahCalonA", "JmlSuaraSahCalonB", "JmlSuaraSahCalonC", "JmlSuaraSahSeluruhCalon", "JmlSuaraTidakSah", "JmlSuaraSahTidakSah"]
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
# Tulis header
writer.writeheader()
# Tulis data
for data in dummy_data_list:
writer.writerow(data)
# Tulis baris baru untuk total
total_data = {"Username": "Total", "ID": "Total", "JmlSuratDiterima": total_jml_surat_diterima, "JmlSuratDikembalikan": total_jml_surat_dikembalikan, "JmlSuratTidakDigunakan": total_jml_surat_tidak_digunakan, "JmlSuratDigunakan": total_jml_surat_digunakan, "JmlSuaraSahCalonA": total_a, "JmlSuaraSahCalonB": total_b, "JmlSuaraSahCalonC": total_c, "JmlSuaraSahSeluruhCalon": total_a + total_b + total_c, "JmlSuaraTidakSah": total_tidak_sah, "JmlSuaraSahTidakSah": total_a + total_b + total_c}
writer.writerow(total_data)
print(f"Data telah disimpan dalam file CSV: {csv_file_path}")