Untitled

 avatar
unknown
plain_text
5 months ago
2.0 kB
3
Indexable
from flask import Flask, render_template, request, redirect, url_for
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime
import os

app = Flask(__name__)

# Konfigurasi database untuk development dan production
if 'DATABASE_URL' in os.environ:
    app.config['SQLALCHEMY_DATABASE_URI'] = os.environ['DATABASE_URL']
else:
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///absensi.db'

app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)

# Model database
class Absensi(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    nama_lengkap = db.Column(db.String(100), nullable=False)
    nik = db.Column(db.String(16), nullable=False)
    asal_sekolah = db.Column(db.String(100), nullable=False)
    jurusan = db.Column(db.String(50), nullable=False)
    tahun_lulus = db.Column(db.Integer, nullable=False)
    waktu_absen = db.Column(db.DateTime, default=datetime.utcnow)

    def __repr__(self):
        return f'<Absensi {self.nama_lengkap}>'

# Buat tabel database
with app.app_context():
    db.create_all()

@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        nama_lengkap = request.form['nama_lengkap']
        nik = request.form['nik']
        asal_sekolah = request.form['asal_sekolah']
        jurusan = request.form['jurusan']
        tahun_lulus = request.form['tahun_lulus']

        absensi = Absensi(
            nama_lengkap=nama_lengkap,
            nik=nik,
            asal_sekolah=asal_sekolah,
            jurusan=jurusan,
            tahun_lulus=tahun_lulus
        )
        db.session.add(absensi)
        db.session.commit()
        return redirect(url_for('daftar_hadir'))

    return render_template('index.html')

@app.route('/daftar-hadir')
def daftar_hadir():
    semua_absensi = Absensi.query.order_by(Absensi.waktu_absen.desc()).all()
    return render_template('daftar_hadir.html', absensi=semua_absensi)

if __name__ == '__main__':
    app.run(debug=False)
Editor is loading...
Leave a Comment