ub3 + ub3-dekorator
This commit is contained in:
parent
80e78d071e
commit
15d91b40d1
|
|
@ -6,4 +6,6 @@ app = Flask(__name__)
|
||||||
def home():
|
def home():
|
||||||
return render_template('index.html')
|
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