ub3 + ub3-dekorator
This commit is contained in:
parent
80e78d071e
commit
15d91b40d1
|
|
@ -6,4 +6,6 @@ app = Flask(__name__)
|
|||
def home():
|
||||
return render_template('index.html')
|
||||
|
||||
app.run(host='0.0.0.0', port=5007)
|
||||
app.run(host='0.0.0.0', port=5007, debug=True)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
from flask import Flask, render_template
|
||||
import mitarbeiter
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
@app.route('/')
|
||||
def startseite():
|
||||
return render_template('index.html',
|
||||
mycontent=mitarbeiter.GibAlleMitarbeiter(mitarbeiter.mitarbeiterliste))
|
||||
|
||||
@app.route('/mitarbeiter1')
|
||||
def show1():
|
||||
return render_template('index.html', mycontent=mitarbeiter.GibMitarbeiter(mitarbeiter.mitarbeiter1))
|
||||
|
||||
@app.route('/mitarbeiter2')
|
||||
def show2():
|
||||
return render_template('index.html', mycontent=mitarbeiter.GibMitarbeiter(mitarbeiter.mitarbeiter2))
|
||||
|
||||
@app.route('/mitarbeiter3')
|
||||
def show3():
|
||||
return render_template('index.html', mycontent=mitarbeiter.GibMitarbeiter(mitarbeiter.mitarbeiter3))
|
||||
|
||||
@app.route('/mitarbeiter')
|
||||
def show_all():
|
||||
return render_template('index.html', mycontent=mitarbeiter.GibAlleMitarbeiter(mitarbeiter.mitarbeiterliste))
|
||||
|
||||
app.run(host='0.0.0.0', port=5007)
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
#! /usr/bin/python3
|
||||
|
||||
mitarbeiter1 = ['Otto', 'Müller', 'Adlergestell 700', '12527 Berlin', '03067549000']
|
||||
mitarbeiter2 = ['Hans', 'Lindner', 'Friedenstraße 4', '10464 Wildau', '03375 23925']
|
||||
mitarbeiter3 = ['Eva', 'Habeck', 'Seestraße 5', '10430 Wildau', '03375 45321']
|
||||
mitarbeiterliste= [mitarbeiter1, mitarbeiter2, mitarbeiter3]
|
||||
|
||||
for m in mitarbeiterliste:
|
||||
print('Vorname: ' + m[0])
|
||||
print('Nachname: ' + m[1])
|
||||
print('Straße: ' + m[2])
|
||||
print('PLZ Ort: ' + m[3])
|
||||
print('Telefonnr.: ' + m[4])
|
||||
print('-----------------------------')
|
||||
|
||||
def GibMitarbeiter(mitarbeiter):
|
||||
string = f"<span id='vorname'>Vorname: {mitarbeiter[0]}</span><br>"
|
||||
string += f"Nachname: {mitarbeiter[1]}<br>"
|
||||
string += f"Straße: {mitarbeiter[2]}<br>"
|
||||
string += f"Ort: {mitarbeiter[3]}<br>"
|
||||
string += f"Telefon: {mitarbeiter[4]}<br><br>"
|
||||
return string
|
||||
|
||||
def GibAlleMitarbeiter(liste):
|
||||
text = ""
|
||||
for m in liste:
|
||||
text += GibMitarbeiter(m)
|
||||
return text
|
||||
|
||||
if __name__ == '__main__':
|
||||
print(GibMitarbeiter(mitarbeiter1))
|
||||
print(GibAlleMitarbeiter(mitarbeiterliste))
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Mitarbeiterliste</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Verdana, Arial, sans-serif;
|
||||
font-size: 87.5%;
|
||||
background-color: AliceBlue;
|
||||
}
|
||||
h1 {
|
||||
color: Indigo;
|
||||
}
|
||||
#vorname {
|
||||
color: green;
|
||||
}
|
||||
footer {
|
||||
margin-top: 40px;
|
||||
font-size: 0.9em;
|
||||
color: gray;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Mitarbeiterliste</h1>
|
||||
<p>{{ mycontent | safe }}</p>
|
||||
|
||||
<footer>
|
||||
Autor: Butenhoff – <a href="mailto: tobu6289@thwildau.de">tobu6289@th-wildau.de</a>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,19 @@
|
|||
# app.py
|
||||
from flask import Flask, render_template
|
||||
import mitarbeiter
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
@app.route('/')
|
||||
def index():
|
||||
return render_template("index.html", mitarbeiterliste=mitarbeiter.alle_mitarbeiter)
|
||||
|
||||
@app.route('/detail/<int:mid>')
|
||||
def mitarbeiter_detail(mid):
|
||||
person = mitarbeiter.get_mitarbeiter_by_id(mid)
|
||||
if person:
|
||||
return render_template("detail.html", mitarbeiter=person)
|
||||
return "<h2>Mitarbeiter nicht gefunden.</h2>", 404
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(host='0.0.0.0', port=5000)
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
# mitarbeiter.py
|
||||
|
||||
class Mitarbeiter:
|
||||
def __init__(self, id, vorname, nachname, strasse, ort, telefon, bildpfad):
|
||||
self.id = id
|
||||
self.vorname = vorname
|
||||
self.nachname = nachname
|
||||
self.strasse = strasse
|
||||
self.ort = ort
|
||||
self.telefon = telefon
|
||||
self.bildpfad = bildpfad
|
||||
|
||||
# Beispielhafte Mitarbeiter
|
||||
m1 = Mitarbeiter(1, "Otto", "Müller", "Adlergestell 700", "12527 Berlin", "030 67549000", "/static/images/otto.jpeg")
|
||||
m2 = Mitarbeiter(2, "Hans", "Lindner", "Friedenstraße 4", "10464 Wildau", "03375 23925", "/static/images/hans.jpeg")
|
||||
m3 = Mitarbeiter(3, "Eva", "Habeck", "Seestraße 5", "10430 Wildau", "03375 45321", "/static/images/eva.jpeg")
|
||||
|
||||
# Liste mit allen
|
||||
alle_mitarbeiter = [m1, m2, m3]
|
||||
|
||||
# Mitarbteiter mit ID 1
|
||||
def get_mitarbeiter_by_id(mid):
|
||||
for m in alle_mitarbeiter:
|
||||
if m.id == mid:
|
||||
return m
|
||||
return None
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 5.6 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 5.7 KiB |
|
|
@ -0,0 +1,39 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Details – {{ mitarbeiter.vorname }} {{ mitarbeiter.nachname }}</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Verdana, Arial, sans-serif;
|
||||
background-color: AliceBlue;
|
||||
padding: 20px;
|
||||
}
|
||||
.mitarbeiter-detail {
|
||||
background-color: white;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
width: 400px;
|
||||
box-shadow: 0 0 8px rgba(0,0,0,0.1);
|
||||
}
|
||||
img {
|
||||
max-width: 100%;
|
||||
border-radius: 50%;
|
||||
}
|
||||
a {
|
||||
color: darkblue;
|
||||
text-decoration: none;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<a href="/">← Zurück zur Übersicht</a>
|
||||
<div class="mitarbeiter-detail">
|
||||
<img src="{{ mitarbeiter.bildpfad }}" alt="Profilbild">
|
||||
<h2>{{ mitarbeiter.vorname }} {{ mitarbeiter.nachname }}</h2>
|
||||
<p><strong>Straße:</strong> {{ mitarbeiter.strasse }}</p>
|
||||
<p><strong>Ort:</strong> {{ mitarbeiter.ort }}</p>
|
||||
<p><strong>Telefon:</strong> {{ mitarbeiter.telefon }}</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Mitarbeiterliste</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Verdana, Arial, sans-serif;
|
||||
background-color: AliceBlue;
|
||||
}
|
||||
.mitarbeiter {
|
||||
border: 1px solid lightgray;
|
||||
border-radius: 10px;
|
||||
background-color: white;
|
||||
padding: 15px;
|
||||
margin: 15px;
|
||||
display: inline-block;
|
||||
width: 250px;
|
||||
vertical-align: top;
|
||||
box-shadow: 2px 2px 6px rgba(0,0,0,0.1);
|
||||
}
|
||||
.mitarbeiter img {
|
||||
max-width: 100%;
|
||||
border-radius: 50%;
|
||||
}
|
||||
footer {
|
||||
margin-top: 40px;
|
||||
font-size: 0.9em;
|
||||
color: gray;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Mitarbeiterliste</h1>
|
||||
|
||||
{% for m in mitarbeiterliste %}
|
||||
<div class="mitarbeiter">
|
||||
<a href="/detail/{{ m.id }}">
|
||||
<img src="{{ m.bildpfad }}" alt="Profilbild von {{ m.vorname }}" width="150" height="150">
|
||||
</a>
|
||||
<p><strong>{{ m.vorname }} {{ m.nachname }}</strong></p>
|
||||
<p>{{ m.strasse }}</p>
|
||||
<p>{{ m.ort }}</p>
|
||||
<p>{{ m.telefon }}</p>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
<footer>
|
||||
Autor: Butenhoff – <a href="mailto:tobu6289@th-wildau.de">tobu6289@th-wildau.de</a>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
def call_limit(max_calls):
|
||||
"""Ein Dekorator, der nur eine bestimmte Anzahl von Funktionsaufrufen erlaubt."""
|
||||
def decorator(func):
|
||||
count = 0 # Zähler für die Aufrufe
|
||||
|
||||
def wrapper(*args, **kwargs):
|
||||
nonlocal count # Zugriff auf äußeren Zähler
|
||||
if count < max_calls:
|
||||
count += 1
|
||||
return func(*args, **kwargs)
|
||||
else:
|
||||
print(f"Aufruflimit erreicht: {max_calls}x erlaubt.")
|
||||
return wrapper
|
||||
return decorator
|
||||
|
||||
|
||||
# Anwendung des Dekorators
|
||||
@call_limit(3)
|
||||
def say_hello():
|
||||
print("Hello world!")
|
||||
|
||||
# Testaufrufe
|
||||
if __name__ == '__main__':
|
||||
say_hello() # 1. Aufruf
|
||||
say_hello() # 2. Aufruf
|
||||
say_hello() # 3. Aufruf
|
||||
say_hello() # 4. Aufruf → wird geblockt, habs getestet :P
|
||||
Loading…
Reference in New Issue