106 lines
5.8 KiB
Python
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}")
|