Initialisierung Start
This commit is contained in:
106
Projektmanagement/app.py
Normal file
106
Projektmanagement/app.py
Normal file
@@ -0,0 +1,106 @@
|
||||
from flask import Flask, render_template, redirect, url_for, flash
|
||||
from flask_sqlalchemy import SQLAlchemy
|
||||
from datetime import datetime
|
||||
|
||||
app = Flask(__name__)
|
||||
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///projektmanagement.db'
|
||||
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
|
||||
app.config['SECRET_KEY'] = 'dein_sicherer_geheimer_schlüssel' # Anpassen für Produktionsumgebung
|
||||
|
||||
db = SQLAlchemy(app)
|
||||
|
||||
# Datenbankmodelle
|
||||
class Project(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
name = db.Column(db.String(100), nullable=False)
|
||||
status = db.Column(db.String(50), nullable=False)
|
||||
|
||||
class TeamMember(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
name = db.Column(db.String(100), nullable=False)
|
||||
avatar = db.Column(db.String(200), nullable=False)
|
||||
tasks_completed = db.Column(db.Integer, nullable=False)
|
||||
performance = db.Column(db.Integer, nullable=False)
|
||||
|
||||
class Activity(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
user = db.Column(db.String(100), nullable=False)
|
||||
action = db.Column(db.String(50), nullable=False)
|
||||
item = db.Column(db.String(100), nullable=False)
|
||||
timestamp = db.Column(db.DateTime, default=datetime.utcnow)
|
||||
|
||||
class Resource(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
name = db.Column(db.String(100), nullable=False)
|
||||
allocation = db.Column(db.Integer, nullable=False)
|
||||
|
||||
class Risk(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
name = db.Column(db.String(100), nullable=False)
|
||||
level = db.Column(db.String(50), nullable=False)
|
||||
color = db.Column(db.String(20), nullable=False)
|
||||
|
||||
# Initialisierung der Datenbank
|
||||
def initialize_database():
|
||||
with app.app_context():
|
||||
db.create_all()
|
||||
# Nur Beispiel-Daten hinzufügen, falls Datenbank leer ist
|
||||
if not Project.query.first():
|
||||
db.session.add_all([
|
||||
Project(name="Projekt A", status="active"),
|
||||
Project(name="Projekt B", status="completed"),
|
||||
Project(name="Projekt C", status="overdue")
|
||||
])
|
||||
db.session.add_all([
|
||||
TeamMember(name="Max Mustermann", avatar="https://via.placeholder.com/40", tasks_completed=5, performance=75),
|
||||
TeamMember(name="Anna Müller", avatar="https://via.placeholder.com/40", tasks_completed=3, performance=50),
|
||||
TeamMember(name="Erik Schmidt", avatar="https://via.placeholder.com/40", tasks_completed=8, performance=90)
|
||||
])
|
||||
db.session.add_all([
|
||||
Activity(user="Max Mustermann", action="erstellt", item="Projekt A"),
|
||||
Activity(user="Anna Müller", action="aktualisiert", item="Projekt B"),
|
||||
Activity(user="Erik Schmidt", action="gelöscht", item="Aufgabe 3")
|
||||
])
|
||||
db.session.add_all([
|
||||
Resource(name="Entwicklung", allocation=80),
|
||||
Resource(name="Marketing", allocation=60),
|
||||
Resource(name="Vertrieb", allocation=40)
|
||||
])
|
||||
db.session.add_all([
|
||||
Risk(name="Budgetüberschreitung", level="Mittel", color="bg-yellow-500"),
|
||||
Risk(name="Zeitverzögerung", level="Hoch", color="bg-red-500"),
|
||||
Risk(name="Ressourcenmangel", level="Niedrig", color="bg-green-500")
|
||||
])
|
||||
db.session.commit()
|
||||
|
||||
# Hilfsfunktionen für Statistiken
|
||||
def get_active_projects():
|
||||
return Project.query.filter_by(status="active").count()
|
||||
|
||||
def get_completed_projects():
|
||||
return Project.query.filter_by(status="completed").count()
|
||||
|
||||
def get_overdue_tasks():
|
||||
return Project.query.filter_by(status="overdue").count()
|
||||
|
||||
def get_task_progress():
|
||||
total = Project.query.count()
|
||||
completed = get_completed_projects()
|
||||
return round((completed / total) * 100) if total > 0 else 0
|
||||
|
||||
@app.route("/")
|
||||
def dashboard():
|
||||
# Holt Daten aus der Datenbank und gibt sie an das Template weiter
|
||||
return render_template("dashboard.html",
|
||||
active_projects=get_active_projects(),
|
||||
completed_projects=get_completed_projects(),
|
||||
overdue_tasks=get_overdue_tasks(),
|
||||
task_progress=get_task_progress(),
|
||||
team_performance=TeamMember.query.all(),
|
||||
recent_activities=Activity.query.order_by(Activity.timestamp.desc()).all(),
|
||||
resources=Resource.query.all(),
|
||||
risks=Risk.query.all())
|
||||
|
||||
if __name__ == "__main__":
|
||||
initialize_database() # Initialisiert die Datenbank beim ersten Start
|
||||
app.run(debug=False, host='0.0.0.0')
|
||||
Reference in New Issue
Block a user