Python Pyramid

Praktikum Pyramid Framework

Membuat aplikasi CRUD sederhana dengan Pyramid Framework dan PostgreSQL

Tujuan Praktikum

Setelah menyelesaikan praktikum ini, Kalian diharapkan mampu:

  • Memahami konsep dasar Pyramid Framework dalam pengembangan web
  • Menggunakan cookiecutter untuk membuat struktur proyek Pyramid
  • Mengonfigurasi koneksi database PostgreSQL dengan SQLAlchemy
  • Membuat model data menggunakan SQLAlchemy ORM
  • Mengimplementasikan migrasi database dengan Alembic
  • Membuat view dan route untuk operasi CRUD sederhana
  • Mengembangkan aplikasi web CRUD pengelolaan data Mahasiswa

Pengenalan Pyramid Framework

Pyramid Framework

Pyramid adalah framework Python yang bersifat minimalis namun sangat fleksibel untuk pengembangan web. Berbeda dengan Django yang menganut filosofi "batteries included", Pyramid lebih mengutamakan fleksibilitas dengan pendekatan "pay only for what you eat".

Kelebihan Pyramid

AspekDeskripsi
FleksibilitasDapat digunakan untuk proyek kecil hingga besar
ModularKomponen dapat ditambahkan sesuai kebutuhan
Konfigurasi DeklaratifRoute dan konfigurasi yang jelas dan terstruktur
Database AgnosticDapat bekerja dengan berbagai database
SkalabilitasMendukung pengembangan aplikasi yang dapat diskalakan
Template EngineMendukung Jinja2, Mako, dan Chameleon

Pyramid vs Framework Lainnya

Pyramid terkadang dianggap berada di tengah-tengah antara micro-framework seperti Flask dan full-stack framework seperti Django. Pyramid memberikan fleksibilitas seperti Flask tetapi juga menyediakan komponen-komponen yang lebih terstruktur.

Alat dan Bahan

Untuk mengikuti praktikum ini, Kalian memerlukan:

  • Python 3.7+: Pastikan Python versi terbaru sudah terpasang
  • PostgreSQL: Database untuk menyimpan data
  • Text Editor/IDE: VSCode, PyCharm, atau editor lainnya
  • Command Line/Terminal: Untuk menjalankan perintah
  • Git: Untuk version control (opsional)

Rekomendasi Setup PostgreSQL

Untuk memudahkan pengembangan, Kalian dapat menggunakan:

  • PostgreSQL App (macOS): https://postgresapp.com/
  • pgAdmin: Tool GUI untuk mengelola database PostgreSQL
  • DBeaver: Database manager universal yang mendukung PostgreSQL
  • Docker: Menjalankan PostgreSQL dalam container

Materi Praktikum

Format Pengumpulan

Direktori GitHub

  • Buat repository dengan format: pemrograman_web_itera_[NIM]
  • Contoh: pemrograman_web_itera_119140001

Struktur Folder

  • Buat folder per pertemuan dengan format: [NAMA]_[NIM]_pertemuan[X]
  • Contoh: johndoe_119140001_pertemuan6
  • Setiap folder berisi semua file praktikum dan tugas untuk pertemuan tersebut

Deadline Pengumpulan

  • Deadline: 15 Mei 2025, 23:59 WIB
  • Keterlambatan pengumpulan akan dikenakan pengurangan nilai sebesar 10% per hari

Tugas Praktikum

Aplikasi Manajemen Matakuliah dengan Pyramid

Buatlah aplikasi API sederhana untuk manajemen matakuliah berdasarkan apa yang telah Kalian pelajari dalam praktikum ini.

Tugas Praktikum

Ini adalah tugas mandiri yang harus dikerjakan berdasarkan materi praktikum yang telah dipelajari. Kalian perlu mengaplikasikan semua langkah yang telah diajarkan untuk membuat aplikasi manajemen matakuliah.

Persyaratan

Model Data

Buat model Matakuliah dengan atribut berikut:

AtributTipeDeskripsiConstraint
idIntegerPrimary keyAuto increment
kode_mkTextKode mata kuliahUnique, Not null
nama_mkTextNama mata kuliahNot null
sksIntegerJumlah SKSNot null
semesterIntegerSemester pengambilanNot null
Contoh Model Matakuliah
class Matakuliah(Base):
    __tablename__ = 'matakuliah'
    id = Column(Integer, primary_key=True)
    kode_mk = Column(Text, unique=True, nullable=False)
    nama_mk = Column(Text, nullable=False)
    sks = Column(Integer, nullable=False)
    semester = Column(Integer, nullable=False)

    def to_dict(self):
        return {
            'id': self.id,
            'kode_mk': self.kode_mk,
            'nama_mk': self.nama_mk,
            'sks': self.sks,
            'semester': self.semester,
        }

API Endpoints

Implementasikan endpoint untuk operasi dasar:

HTTP MethodURL PatternDeskripsi
GET/api/matakuliahMendapatkan semua matakuliah
GET/api/matakuliah/{id}Mendapatkan detail satu matakuliah
POST/api/matakuliahMenambahkan matakuliah baru
PUT/api/matakuliah/{id}Mengupdate data matakuliah
DELETE/api/matakuliah/{id}Menghapus data matakuliah

Penting

Jangan lupa menambahkan parameter request_method pada setiap route untuk memastikan routing berfungsi dengan benar!

Testing

Pastikan API berfungsi dengan baik:

  1. Jalankan migrasi database dengan Alembic
  2. Tambahkan data awal minimal 3 matakuliah
  3. Test semua endpoint dengan curl atau Postman
  4. Verifikasi response sesuai dengan yang diharapkan

Dokumentasi

Buat file README.md yang berisi:

  1. Deskripsi Proyek: Penjelasan singkat tentang aplikasi
  2. Cara Instalasi:
    • Langkah membuat virtual environment
    • Instalasi dependensi
    • Konfigurasi database
  3. Cara Menjalankan:
    • Menjalankan migrasi
    • Menjalankan server
  4. API Endpoints: Dokumentasi semua endpoint dengan contoh request dan response
  5. Testing: Contoh perintah curl untuk testing setiap endpoint

Contoh Dokumentasi API

Contoh format dokumentasi:

## API Endpoints

### 1. Get All Matakuliah
**Request:**
```bash
curl -X GET http://localhost:6543/api/matakuliah

Response:

{
  "matakuliahs": [
    {
      "id": 1,
      "kode_mk": "IF101",
      "nama_mk": "Algoritma dan Pemrograman",
      "sks": 3,
      "semester": 1
    }
  ]
}

Kriteria Penilaian

AspekBobotDetail
Model Data30%Model Matakuliah dengan atribut lengkap, validasi, dan method to_dict()
API Endpoints40%Implementasi lengkap CRUD dengan validasi dan error handling
Dokumentasi dan Kerapian Kode30%README.md lengkap, code comments, dan struktur kode yang rapi

Langkah Pengerjaan

Tips Pengerjaan

  1. Gunakan kode dari praktikum sebagai dasar
  2. Ubah model dan view untuk menyesuaikan dengan matakuliah
  3. Ingat untuk menambahkan request_method pada route
  4. Jalankan migrasi database sebelum menguji API
  5. Test setiap endpoint sebelum submit

Submit Tugas

Submit Tugas Praktikum 6