BE for PyCon ID 2025 website
- python 3.12
- postgresql 14
- buat python virtual environtment
python -m venv env - aktifkan python virtual environtment
source env/bin/activate - install depedency ke virtual environtment
pip install -r requirements.txt - copy file .env.example menjadi .env
cp .env.example .envlalu isi berdasarkan konfigurasi postgresql - jika belum ada atau update data lokasi (negara, provinsi, kota) jalankan
python cli.py download-location-data - seeder initial data
python cli.py initial-data - migrasi tabel menggunakan alembic
alembic upgrade head - jalankan aplikasi
uvicorn main:app --reload - buka openapi doc di http://localhost:8000/docs
ruff format
ruff check
- migrasi database lalu run semua testing
alembic upgrade head && pytest . - run testing secara paralel
pytest -n auto . - run semua testing pada folder tertentu
pytest ./{path}/{to}/{folder} - run semua testing pada file tertentu
pytest ./{path}/{to}/{folder}/{file}.py - run semua testing pada class tertentu
pytest ./{path}/{to}/{folder}/{file}.py::{nama class} - run satu testing pada class tertentu
pytest ./{path}/{to}/{folder}/{file}.py::{nama class}::{nama fungsi} - run verbose (lihat print)
pytest . -s
Untuk data lokasi (negara, provinsi, kota) diambil dari countries-states-cities-database.
Jalankan perintah berikut untuk mendownload data lokasi terbaru:
python cli.py download-location-dataUntuk menghapus data lokasi:
python cli.py clear-location-dataUntuk mengimpor data lokasi ke database:
python cli.py import-location-dataatau bisa gunakan initial-data yang sudah include import data lokasi:
python cli.py initial-datauntuk cities.json di github asalnya sudah mengcompress .json ke .json.gz (tinggal di uncompress)
untuk tata cara kontribusi bisa dilihat di CONTRIBUTING.md dan diharapkan kontributor memematuhi Code of Conduct yang berlaku.
- Create a Project on Google Cloud
- Create a clients on Google Auth Platform
- Copy
Client IDandClient Secretinto.env - Set the HTTP origins that host your web application on
Authorised JavaScript origins - Set callback End-Point on
Authorised redirect URIsto get an access code from Google
Jika ada muncul kesalahan seperti ini ketika menjalankan alembic untuk pertama kalinya,
sqlalchemy.exc.ProgrammingError: (psycopg.errors.InsufficientPrivilege) permission denied for schema public
LINE 2: CREATE TABLE public.alembic_version (
^
[SQL:
CREATE TABLE public.alembic_version (
version_num VARCHAR(32) NOT NULL,
CONSTRAINT alembic_version_pkc PRIMARY KEY (version_num)
)
solusinya adalah memberikan permission ke pada user yang bersangkutan ke schema public.
Berikan akses usage dan create schema public ke user.
GRANT USAGE ON SCHEMA public TO user;
GRANT CREATE ON SCHEMA public TO user;
Cara ini juga dapat dicoba:
GRANT ALL ON SCHEMA public TO user;
Login sebagai user-nya, lalu uji coba:
SELECT has_schema_privilege('public', 'CREATE');`
Luarannya: t (true) jika sudah benar. Setelah ini dapat menjalankan alembic kembali.