Olli Graf
1 year ago
14 changed files with 1063 additions and 0 deletions
@ -0,0 +1,37 @@ |
|||||
|
#! /usr/bin/python3 |
||||
|
|
||||
|
from time import sleep |
||||
|
import logging |
||||
|
import Adafruit_DHT |
||||
|
|
||||
|
__PIN__ = 4 # GPIO Pin, den wir nutzen |
||||
|
__WAIT__ = 0.5 # Warten für 0,5 Sekunden |
||||
|
|
||||
|
logging.basicConfig( format='%(asctime)-15s [%(levelname)s] %(funcName)s: %(message)s', level=logging.DEBUG) |
||||
|
|
||||
|
def main(): |
||||
|
logging.debug('initialisiere Sensor') |
||||
|
dht22_sensor = Adafruit_DHT.DHT22 |
||||
|
logging.debug(f'Sensor initialisiert ${dht22_sensor}') |
||||
|
|
||||
|
while True: |
||||
|
|
||||
|
logging.debug('lese von Sensor') |
||||
|
feuchte, temp_c = Adafruit_DHT.read_retry(dht22_sensor, __PIN__) |
||||
|
|
||||
|
logging.debug(f'rel. Feuchte: ${feuchte:.2f}, Temperatur: ${temp_c:.2f}°C') |
||||
|
|
||||
|
|
||||
|
|
||||
|
if __name__ =='__main__': |
||||
|
try: |
||||
|
logging.debug('Programm startet') |
||||
|
main() |
||||
|
except KeyboardInterrupt: |
||||
|
pass |
||||
|
finally: |
||||
|
pass |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
@ -0,0 +1,14 @@ |
|||||
|
from flask import Flask |
||||
|
|
||||
|
|
||||
|
app = Flask(__name__) |
||||
|
|
||||
|
@app.route('/') |
||||
|
|
||||
|
def index(): |
||||
|
return 'Ein erstes Hallo' |
||||
|
|
||||
|
if __name__ == '__main__': |
||||
|
app.run(host='0.0.0.0',port=8085, debug=True) |
||||
|
|
||||
|
|
@ -0,0 +1,16 @@ |
|||||
|
#! /usr/bin/python3 |
||||
|
#encoding: utf-8 |
||||
|
|
||||
|
from flask import Flask |
||||
|
app = Flask(__name__) |
||||
|
|
||||
|
@app.route("/") |
||||
|
def hello(): |
||||
|
return "Hello World!" |
||||
|
|
||||
|
@app.route('/test') |
||||
|
def test(): |
||||
|
return 'Hello Test' |
||||
|
|
||||
|
app.run(host='0.0.0.0',port=8082) |
||||
|
|
@ -0,0 +1,4 @@ |
|||||
|
#!/usr/bin/bash |
||||
|
export FLASK_APP=first |
||||
|
export FLASK_ENV=development |
||||
|
|
@ -0,0 +1,45 @@ |
|||||
|
#encoding: utf-8 |
||||
|
import mysql.connector |
||||
|
import logging |
||||
|
|
||||
|
logging.basicConfig( format='%(asctime)-15s [%(levelname)s] %(funcName)s: %(message)s', level=logging.DEBUG) |
||||
|
class DBConnection(): |
||||
|
|
||||
|
def __init__(self): |
||||
|
self.dbconnection = None |
||||
|
|
||||
|
#Verbindung zur Datenbank mit den übergebenen Werten herstellen. |
||||
|
def connect(self, host, user, password, database): |
||||
|
|
||||
|
self.connection= mysql.connector.connect(host=host, user=user,password=password,database=database) |
||||
|
|
||||
|
# Verbindung trennen |
||||
|
def disconnect(self): |
||||
|
if self.connection is not None: |
||||
|
self.connection.close() |
||||
|
self.connection = None |
||||
|
|
||||
|
# Schüler-Record in die Tabelle einfügen. |
||||
|
def insertSchueler(self,schueler): |
||||
|
self.execute_query('insert into schueler (name,vorname) values(%s,%s)', (schueler['name'],schueler['vorname'])) |
||||
|
|
||||
|
# Liefert True, wenn die Verbindung zur DB besteht, sonst False |
||||
|
def isConnected(self): |
||||
|
if self.connection is not None: |
||||
|
return self.connection.is_connected() |
||||
|
return False |
||||
|
|
||||
|
# Wenn DB-Verbindung besteht, wird der Cursor geliefert, sonst None |
||||
|
def cursor(self): |
||||
|
if self.isConnected(): |
||||
|
return self.connection.cursor() |
||||
|
return None |
||||
|
|
||||
|
# Datenbank Kommando ausführen. Das params-Tupel wird in die Query eingesetzt. |
||||
|
# Liefert ein Resultset zurück. |
||||
|
def execute_query(self, query, params = None): |
||||
|
if self.isConnected(): |
||||
|
cursor = self.cursor() |
||||
|
if cursor is not None: |
||||
|
cursor.execute(query,params) #Kommdo ausführen |
||||
|
return cursor.fetchall() # Ergebnis zurückliefern. |
@ -0,0 +1,8 @@ |
|||||
|
[pidb] |
||||
|
host=database |
||||
|
user=piuser |
||||
|
password=SW_Ep.6:ROTJ |
||||
|
database=pidb |
||||
|
|
||||
|
|
||||
|
|
@ -0,0 +1,14 @@ |
|||||
|
from flask import Flask,render_template |
||||
|
|
||||
|
|
||||
|
app = Flask(__name__) |
||||
|
|
||||
|
@app.route('/') |
||||
|
|
||||
|
def index(): |
||||
|
return render_template('index.html') |
||||
|
|
||||
|
if __name__ == '__main__': |
||||
|
app.run(host='0.0.0.0',port=8085, debug=True) |
||||
|
|
||||
|
|
@ -0,0 +1,427 @@ |
|||||
|
/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ |
||||
|
|
||||
|
/** |
||||
|
* 1. Set default font family to sans-serif. |
||||
|
* 2. Prevent iOS text size adjust after orientation change, without disabling |
||||
|
* user zoom. |
||||
|
*/ |
||||
|
|
||||
|
html { |
||||
|
font-family: sans-serif; /* 1 */ |
||||
|
-ms-text-size-adjust: 100%; /* 2 */ |
||||
|
-webkit-text-size-adjust: 100%; /* 2 */ |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Remove default margin. |
||||
|
*/ |
||||
|
|
||||
|
body { |
||||
|
margin: 0; |
||||
|
} |
||||
|
|
||||
|
/* HTML5 display definitions |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/** |
||||
|
* Correct `block` display not defined for any HTML5 element in IE 8/9. |
||||
|
* Correct `block` display not defined for `details` or `summary` in IE 10/11 |
||||
|
* and Firefox. |
||||
|
* Correct `block` display not defined for `main` in IE 11. |
||||
|
*/ |
||||
|
|
||||
|
article, |
||||
|
aside, |
||||
|
details, |
||||
|
figcaption, |
||||
|
figure, |
||||
|
footer, |
||||
|
header, |
||||
|
hgroup, |
||||
|
main, |
||||
|
menu, |
||||
|
nav, |
||||
|
section, |
||||
|
summary { |
||||
|
display: block; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 1. Correct `inline-block` display not defined in IE 8/9. |
||||
|
* 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. |
||||
|
*/ |
||||
|
|
||||
|
audio, |
||||
|
canvas, |
||||
|
progress, |
||||
|
video { |
||||
|
display: inline-block; /* 1 */ |
||||
|
vertical-align: baseline; /* 2 */ |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Prevent modern browsers from displaying `audio` without controls. |
||||
|
* Remove excess height in iOS 5 devices. |
||||
|
*/ |
||||
|
|
||||
|
audio:not([controls]) { |
||||
|
display: none; |
||||
|
height: 0; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Address `[hidden]` styling not present in IE 8/9/10. |
||||
|
* Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. |
||||
|
*/ |
||||
|
|
||||
|
[hidden], |
||||
|
template { |
||||
|
display: none; |
||||
|
} |
||||
|
|
||||
|
/* Links |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/** |
||||
|
* Remove the gray background color from active links in IE 10. |
||||
|
*/ |
||||
|
|
||||
|
a { |
||||
|
background-color: transparent; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Improve readability when focused and also mouse hovered in all browsers. |
||||
|
*/ |
||||
|
|
||||
|
a:active, |
||||
|
a:hover { |
||||
|
outline: 0; |
||||
|
} |
||||
|
|
||||
|
/* Text-level semantics |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/** |
||||
|
* Address styling not present in IE 8/9/10/11, Safari, and Chrome. |
||||
|
*/ |
||||
|
|
||||
|
abbr[title] { |
||||
|
border-bottom: 1px dotted; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Address style set to `bolder` in Firefox 4+, Safari, and Chrome. |
||||
|
*/ |
||||
|
|
||||
|
b, |
||||
|
strong { |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Address styling not present in Safari and Chrome. |
||||
|
*/ |
||||
|
|
||||
|
dfn { |
||||
|
font-style: italic; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Address variable `h1` font-size and margin within `section` and `article` |
||||
|
* contexts in Firefox 4+, Safari, and Chrome. |
||||
|
*/ |
||||
|
|
||||
|
h1 { |
||||
|
font-size: 2em; |
||||
|
margin: 0.67em 0; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Address styling not present in IE 8/9. |
||||
|
*/ |
||||
|
|
||||
|
mark { |
||||
|
background: #ff0; |
||||
|
color: #000; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Address inconsistent and variable font size in all browsers. |
||||
|
*/ |
||||
|
|
||||
|
small { |
||||
|
font-size: 80%; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Prevent `sub` and `sup` affecting `line-height` in all browsers. |
||||
|
*/ |
||||
|
|
||||
|
sub, |
||||
|
sup { |
||||
|
font-size: 75%; |
||||
|
line-height: 0; |
||||
|
position: relative; |
||||
|
vertical-align: baseline; |
||||
|
} |
||||
|
|
||||
|
sup { |
||||
|
top: -0.5em; |
||||
|
} |
||||
|
|
||||
|
sub { |
||||
|
bottom: -0.25em; |
||||
|
} |
||||
|
|
||||
|
/* Embedded content |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/** |
||||
|
* Remove border when inside `a` element in IE 8/9/10. |
||||
|
*/ |
||||
|
|
||||
|
img { |
||||
|
border: 0; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Correct overflow not hidden in IE 9/10/11. |
||||
|
*/ |
||||
|
|
||||
|
svg:not(:root) { |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
|
||||
|
/* Grouping content |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/** |
||||
|
* Address margin not present in IE 8/9 and Safari. |
||||
|
*/ |
||||
|
|
||||
|
figure { |
||||
|
margin: 1em 40px; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Address differences between Firefox and other browsers. |
||||
|
*/ |
||||
|
|
||||
|
hr { |
||||
|
-moz-box-sizing: content-box; |
||||
|
box-sizing: content-box; |
||||
|
height: 0; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Contain overflow in all browsers. |
||||
|
*/ |
||||
|
|
||||
|
pre { |
||||
|
overflow: auto; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Address odd `em`-unit font size rendering in all browsers. |
||||
|
*/ |
||||
|
|
||||
|
code, |
||||
|
kbd, |
||||
|
pre, |
||||
|
samp { |
||||
|
font-family: monospace, monospace; |
||||
|
font-size: 1em; |
||||
|
} |
||||
|
|
||||
|
/* Forms |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/** |
||||
|
* Known limitation: by default, Chrome and Safari on OS X allow very limited |
||||
|
* styling of `select`, unless a `border` property is set. |
||||
|
*/ |
||||
|
|
||||
|
/** |
||||
|
* 1. Correct color not being inherited. |
||||
|
* Known issue: affects color of disabled elements. |
||||
|
* 2. Correct font properties not being inherited. |
||||
|
* 3. Address margins set differently in Firefox 4+, Safari, and Chrome. |
||||
|
*/ |
||||
|
|
||||
|
button, |
||||
|
input, |
||||
|
optgroup, |
||||
|
select, |
||||
|
textarea { |
||||
|
color: inherit; /* 1 */ |
||||
|
font: inherit; /* 2 */ |
||||
|
margin: 0; /* 3 */ |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Address `overflow` set to `hidden` in IE 8/9/10/11. |
||||
|
*/ |
||||
|
|
||||
|
button { |
||||
|
overflow: visible; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Address inconsistent `text-transform` inheritance for `button` and `select`. |
||||
|
* All other form control elements do not inherit `text-transform` values. |
||||
|
* Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. |
||||
|
* Correct `select` style inheritance in Firefox. |
||||
|
*/ |
||||
|
|
||||
|
button, |
||||
|
select { |
||||
|
text-transform: none; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` |
||||
|
* and `video` controls. |
||||
|
* 2. Correct inability to style clickable `input` types in iOS. |
||||
|
* 3. Improve usability and consistency of cursor style between image-type |
||||
|
* `input` and others. |
||||
|
*/ |
||||
|
|
||||
|
button, |
||||
|
html input[type="button"], /* 1 */ |
||||
|
input[type="reset"], |
||||
|
input[type="submit"] { |
||||
|
-webkit-appearance: button; /* 2 */ |
||||
|
cursor: pointer; /* 3 */ |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Re-set default cursor for disabled elements. |
||||
|
*/ |
||||
|
|
||||
|
button[disabled], |
||||
|
html input[disabled] { |
||||
|
cursor: default; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Remove inner padding and border in Firefox 4+. |
||||
|
*/ |
||||
|
|
||||
|
button::-moz-focus-inner, |
||||
|
input::-moz-focus-inner { |
||||
|
border: 0; |
||||
|
padding: 0; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Address Firefox 4+ setting `line-height` on `input` using `!important` in |
||||
|
* the UA stylesheet. |
||||
|
*/ |
||||
|
|
||||
|
input { |
||||
|
line-height: normal; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* It's recommended that you don't attempt to style these elements. |
||||
|
* Firefox's implementation doesn't respect box-sizing, padding, or width. |
||||
|
* |
||||
|
* 1. Address box sizing set to `content-box` in IE 8/9/10. |
||||
|
* 2. Remove excess padding in IE 8/9/10. |
||||
|
*/ |
||||
|
|
||||
|
input[type="checkbox"], |
||||
|
input[type="radio"] { |
||||
|
box-sizing: border-box; /* 1 */ |
||||
|
padding: 0; /* 2 */ |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Fix the cursor style for Chrome's increment/decrement buttons. For certain |
||||
|
* `font-size` values of the `input`, it causes the cursor style of the |
||||
|
* decrement button to change from `default` to `text`. |
||||
|
*/ |
||||
|
|
||||
|
input[type="number"]::-webkit-inner-spin-button, |
||||
|
input[type="number"]::-webkit-outer-spin-button { |
||||
|
height: auto; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 1. Address `appearance` set to `searchfield` in Safari and Chrome. |
||||
|
* 2. Address `box-sizing` set to `border-box` in Safari and Chrome |
||||
|
* (include `-moz` to future-proof). |
||||
|
*/ |
||||
|
|
||||
|
input[type="search"] { |
||||
|
-webkit-appearance: textfield; /* 1 */ |
||||
|
-moz-box-sizing: content-box; |
||||
|
-webkit-box-sizing: content-box; /* 2 */ |
||||
|
box-sizing: content-box; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Remove inner padding and search cancel button in Safari and Chrome on OS X. |
||||
|
* Safari (but not Chrome) clips the cancel button when the search input has |
||||
|
* padding (and `textfield` appearance). |
||||
|
*/ |
||||
|
|
||||
|
input[type="search"]::-webkit-search-cancel-button, |
||||
|
input[type="search"]::-webkit-search-decoration { |
||||
|
-webkit-appearance: none; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Define consistent border, margin, and padding. |
||||
|
*/ |
||||
|
|
||||
|
fieldset { |
||||
|
border: 1px solid #c0c0c0; |
||||
|
margin: 0 2px; |
||||
|
padding: 0.35em 0.625em 0.75em; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 1. Correct `color` not being inherited in IE 8/9/10/11. |
||||
|
* 2. Remove padding so people aren't caught out if they zero out fieldsets. |
||||
|
*/ |
||||
|
|
||||
|
legend { |
||||
|
border: 0; /* 1 */ |
||||
|
padding: 0; /* 2 */ |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Remove default vertical scrollbar in IE 8/9/10/11. |
||||
|
*/ |
||||
|
|
||||
|
textarea { |
||||
|
overflow: auto; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Don't inherit the `font-weight` (applied by a rule above). |
||||
|
* NOTE: the default cannot safely be changed in Chrome and Safari on OS X. |
||||
|
*/ |
||||
|
|
||||
|
optgroup { |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
|
||||
|
/* Tables |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/** |
||||
|
* Remove most spacing between table cells. |
||||
|
*/ |
||||
|
|
||||
|
table { |
||||
|
border-collapse: collapse; |
||||
|
border-spacing: 0; |
||||
|
} |
||||
|
|
||||
|
td, |
||||
|
th { |
||||
|
padding: 0; |
||||
|
} |
@ -0,0 +1,418 @@ |
|||||
|
/* |
||||
|
* Skeleton V2.0.4 |
||||
|
* Copyright 2014, Dave Gamache |
||||
|
* www.getskeleton.com |
||||
|
* Free to use under the MIT license. |
||||
|
* http://www.opensource.org/licenses/mit-license.php |
||||
|
* 12/29/2014 |
||||
|
*/ |
||||
|
|
||||
|
|
||||
|
/* Table of contents |
||||
|
–––––––––––––––––––––––––––––––––––––––––––––––––– |
||||
|
- Grid |
||||
|
- Base Styles |
||||
|
- Typography |
||||
|
- Links |
||||
|
- Buttons |
||||
|
- Forms |
||||
|
- Lists |
||||
|
- Code |
||||
|
- Tables |
||||
|
- Spacing |
||||
|
- Utilities |
||||
|
- Clearing |
||||
|
- Media Queries |
||||
|
*/ |
||||
|
|
||||
|
|
||||
|
/* Grid |
||||
|
–––––––––––––––––––––––––––––––––––––––––––––––––– */ |
||||
|
.container { |
||||
|
position: relative; |
||||
|
width: 100%; |
||||
|
max-width: 960px; |
||||
|
margin: 0 auto; |
||||
|
padding: 0 20px; |
||||
|
box-sizing: border-box; } |
||||
|
.column, |
||||
|
.columns { |
||||
|
width: 100%; |
||||
|
float: left; |
||||
|
box-sizing: border-box; } |
||||
|
|
||||
|
/* For devices larger than 400px */ |
||||
|
@media (min-width: 400px) { |
||||
|
.container { |
||||
|
width: 85%; |
||||
|
padding: 0; } |
||||
|
} |
||||
|
|
||||
|
/* For devices larger than 550px */ |
||||
|
@media (min-width: 550px) { |
||||
|
.container { |
||||
|
width: 80%; } |
||||
|
.column, |
||||
|
.columns { |
||||
|
margin-left: 4%; } |
||||
|
.column:first-child, |
||||
|
.columns:first-child { |
||||
|
margin-left: 0; } |
||||
|
|
||||
|
.one.column, |
||||
|
.one.columns { width: 4.66666666667%; } |
||||
|
.two.columns { width: 13.3333333333%; } |
||||
|
.three.columns { width: 22%; } |
||||
|
.four.columns { width: 30.6666666667%; } |
||||
|
.five.columns { width: 39.3333333333%; } |
||||
|
.six.columns { width: 48%; } |
||||
|
.seven.columns { width: 56.6666666667%; } |
||||
|
.eight.columns { width: 65.3333333333%; } |
||||
|
.nine.columns { width: 74.0%; } |
||||
|
.ten.columns { width: 82.6666666667%; } |
||||
|
.eleven.columns { width: 91.3333333333%; } |
||||
|
.twelve.columns { width: 100%; margin-left: 0; } |
||||
|
|
||||
|
.one-third.column { width: 30.6666666667%; } |
||||
|
.two-thirds.column { width: 65.3333333333%; } |
||||
|
|
||||
|
.one-half.column { width: 48%; } |
||||
|
|
||||
|
/* Offsets */ |
||||
|
.offset-by-one.column, |
||||
|
.offset-by-one.columns { margin-left: 8.66666666667%; } |
||||
|
.offset-by-two.column, |
||||
|
.offset-by-two.columns { margin-left: 17.3333333333%; } |
||||
|
.offset-by-three.column, |
||||
|
.offset-by-three.columns { margin-left: 26%; } |
||||
|
.offset-by-four.column, |
||||
|
.offset-by-four.columns { margin-left: 34.6666666667%; } |
||||
|
.offset-by-five.column, |
||||
|
.offset-by-five.columns { margin-left: 43.3333333333%; } |
||||
|
.offset-by-six.column, |
||||
|
.offset-by-six.columns { margin-left: 52%; } |
||||
|
.offset-by-seven.column, |
||||
|
.offset-by-seven.columns { margin-left: 60.6666666667%; } |
||||
|
.offset-by-eight.column, |
||||
|
.offset-by-eight.columns { margin-left: 69.3333333333%; } |
||||
|
.offset-by-nine.column, |
||||
|
.offset-by-nine.columns { margin-left: 78.0%; } |
||||
|
.offset-by-ten.column, |
||||
|
.offset-by-ten.columns { margin-left: 86.6666666667%; } |
||||
|
.offset-by-eleven.column, |
||||
|
.offset-by-eleven.columns { margin-left: 95.3333333333%; } |
||||
|
|
||||
|
.offset-by-one-third.column, |
||||
|
.offset-by-one-third.columns { margin-left: 34.6666666667%; } |
||||
|
.offset-by-two-thirds.column, |
||||
|
.offset-by-two-thirds.columns { margin-left: 69.3333333333%; } |
||||
|
|
||||
|
.offset-by-one-half.column, |
||||
|
.offset-by-one-half.columns { margin-left: 52%; } |
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
/* Base Styles |
||||
|
–––––––––––––––––––––––––––––––––––––––––––––––––– */ |
||||
|
/* NOTE |
||||
|
html is set to 62.5% so that all the REM measurements throughout Skeleton |
||||
|
are based on 10px sizing. So basically 1.5rem = 15px :) */ |
||||
|
html { |
||||
|
font-size: 62.5%; } |
||||
|
body { |
||||
|
font-size: 1.5em; /* currently ems cause chrome bug misinterpreting rems on body element */ |
||||
|
line-height: 1.6; |
||||
|
font-weight: 400; |
||||
|
font-family: "Raleway", "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; |
||||
|
color: #222; } |
||||
|
|
||||
|
|
||||
|
/* Typography |
||||
|
–––––––––––––––––––––––––––––––––––––––––––––––––– */ |
||||
|
h1, h2, h3, h4, h5, h6 { |
||||
|
margin-top: 0; |
||||
|
margin-bottom: 2rem; |
||||
|
font-weight: 300; } |
||||
|
h1 { font-size: 4.0rem; line-height: 1.2; letter-spacing: -.1rem;} |
||||
|
h2 { font-size: 3.6rem; line-height: 1.25; letter-spacing: -.1rem; } |
||||
|
h3 { font-size: 3.0rem; line-height: 1.3; letter-spacing: -.1rem; } |
||||
|
h4 { font-size: 2.4rem; line-height: 1.35; letter-spacing: -.08rem; } |
||||
|
h5 { font-size: 1.8rem; line-height: 1.5; letter-spacing: -.05rem; } |
||||
|
h6 { font-size: 1.5rem; line-height: 1.6; letter-spacing: 0; } |
||||
|
|
||||
|
/* Larger than phablet */ |
||||
|
@media (min-width: 550px) { |
||||
|
h1 { font-size: 5.0rem; } |
||||
|
h2 { font-size: 4.2rem; } |
||||
|
h3 { font-size: 3.6rem; } |
||||
|
h4 { font-size: 3.0rem; } |
||||
|
h5 { font-size: 2.4rem; } |
||||
|
h6 { font-size: 1.5rem; } |
||||
|
} |
||||
|
|
||||
|
p { |
||||
|
margin-top: 0; } |
||||
|
|
||||
|
|
||||
|
/* Links |
||||
|
–––––––––––––––––––––––––––––––––––––––––––––––––– */ |
||||
|
a { |
||||
|
color: #1EAEDB; } |
||||
|
a:hover { |
||||
|
color: #0FA0CE; } |
||||
|
|
||||
|
|
||||
|
/* Buttons |
||||
|
–––––––––––––––––––––––––––––––––––––––––––––––––– */ |
||||
|
.button, |
||||
|
button, |
||||
|
input[type="submit"], |
||||
|
input[type="reset"], |
||||
|
input[type="button"] { |
||||
|
display: inline-block; |
||||
|
height: 38px; |
||||
|
padding: 0 30px; |
||||
|
color: #555; |
||||
|
text-align: center; |
||||
|
font-size: 11px; |
||||
|
font-weight: 600; |
||||
|
line-height: 38px; |
||||
|
letter-spacing: .1rem; |
||||
|
text-transform: uppercase; |
||||
|
text-decoration: none; |
||||
|
white-space: nowrap; |
||||
|
background-color: transparent; |
||||
|
border-radius: 4px; |
||||
|
border: 1px solid #bbb; |
||||
|
cursor: pointer; |
||||
|
box-sizing: border-box; } |
||||
|
.button:hover, |
||||
|
button:hover, |
||||
|
input[type="submit"]:hover, |
||||
|
input[type="reset"]:hover, |
||||
|
input[type="button"]:hover, |
||||
|
.button:focus, |
||||
|
button:focus, |
||||
|
input[type="submit"]:focus, |
||||
|
input[type="reset"]:focus, |
||||
|
input[type="button"]:focus { |
||||
|
color: #333; |
||||
|
border-color: #888; |
||||
|
outline: 0; } |
||||
|
.button.button-primary, |
||||
|
button.button-primary, |
||||
|
input[type="submit"].button-primary, |
||||
|
input[type="reset"].button-primary, |
||||
|
input[type="button"].button-primary { |
||||
|
color: #FFF; |
||||
|
background-color: #33C3F0; |
||||
|
border-color: #33C3F0; } |
||||
|
.button.button-primary:hover, |
||||
|
button.button-primary:hover, |
||||
|
input[type="submit"].button-primary:hover, |
||||
|
input[type="reset"].button-primary:hover, |
||||
|
input[type="button"].button-primary:hover, |
||||
|
.button.button-primary:focus, |
||||
|
button.button-primary:focus, |
||||
|
input[type="submit"].button-primary:focus, |
||||
|
input[type="reset"].button-primary:focus, |
||||
|
input[type="button"].button-primary:focus { |
||||
|
color: #FFF; |
||||
|
background-color: #1EAEDB; |
||||
|
border-color: #1EAEDB; } |
||||
|
|
||||
|
|
||||
|
/* Forms |
||||
|
–––––––––––––––––––––––––––––––––––––––––––––––––– */ |
||||
|
input[type="email"], |
||||
|
input[type="number"], |
||||
|
input[type="search"], |
||||
|
input[type="text"], |
||||
|
input[type="tel"], |
||||
|
input[type="url"], |
||||
|
input[type="password"], |
||||
|
textarea, |
||||
|
select { |
||||
|
height: 38px; |
||||
|
padding: 6px 10px; /* The 6px vertically centers text on FF, ignored by Webkit */ |
||||
|
background-color: #fff; |
||||
|
border: 1px solid #D1D1D1; |
||||
|
border-radius: 4px; |
||||
|
box-shadow: none; |
||||
|
box-sizing: border-box; } |
||||
|
/* Removes awkward default styles on some inputs for iOS */ |
||||
|
input[type="email"], |
||||
|
input[type="number"], |
||||
|
input[type="search"], |
||||
|
input[type="text"], |
||||
|
input[type="tel"], |
||||
|
input[type="url"], |
||||
|
input[type="password"], |
||||
|
textarea { |
||||
|
-webkit-appearance: none; |
||||
|
-moz-appearance: none; |
||||
|
appearance: none; } |
||||
|
textarea { |
||||
|
min-height: 65px; |
||||
|
padding-top: 6px; |
||||
|
padding-bottom: 6px; } |
||||
|
input[type="email"]:focus, |
||||
|
input[type="number"]:focus, |
||||
|
input[type="search"]:focus, |
||||
|
input[type="text"]:focus, |
||||
|
input[type="tel"]:focus, |
||||
|
input[type="url"]:focus, |
||||
|
input[type="password"]:focus, |
||||
|
textarea:focus, |
||||
|
select:focus { |
||||
|
border: 1px solid #33C3F0; |
||||
|
outline: 0; } |
||||
|
label, |
||||
|
legend { |
||||
|
display: block; |
||||
|
margin-bottom: .5rem; |
||||
|
font-weight: 600; } |
||||
|
fieldset { |
||||
|
padding: 0; |
||||
|
border-width: 0; } |
||||
|
input[type="checkbox"], |
||||
|
input[type="radio"] { |
||||
|
display: inline; } |
||||
|
label > .label-body { |
||||
|
display: inline-block; |
||||
|
margin-left: .5rem; |
||||
|
font-weight: normal; } |
||||
|
|
||||
|
|
||||
|
/* Lists |
||||
|
–––––––––––––––––––––––––––––––––––––––––––––––––– */ |
||||
|
ul { |
||||
|
list-style: circle inside; } |
||||
|
ol { |
||||
|
list-style: decimal inside; } |
||||
|
ol, ul { |
||||
|
padding-left: 0; |
||||
|
margin-top: 0; } |
||||
|
ul ul, |
||||
|
ul ol, |
||||
|
ol ol, |
||||
|
ol ul { |
||||
|
margin: 1.5rem 0 1.5rem 3rem; |
||||
|
font-size: 90%; } |
||||
|
li { |
||||
|
margin-bottom: 1rem; } |
||||
|
|
||||
|
|
||||
|
/* Code |
||||
|
–––––––––––––––––––––––––––––––––––––––––––––––––– */ |
||||
|
code { |
||||
|
padding: .2rem .5rem; |
||||
|
margin: 0 .2rem; |
||||
|
font-size: 90%; |
||||
|
white-space: nowrap; |
||||
|
background: #F1F1F1; |
||||
|
border: 1px solid #E1E1E1; |
||||
|
border-radius: 4px; } |
||||
|
pre > code { |
||||
|
display: block; |
||||
|
padding: 1rem 1.5rem; |
||||
|
white-space: pre; } |
||||
|
|
||||
|
|
||||
|
/* Tables |
||||
|
–––––––––––––––––––––––––––––––––––––––––––––––––– */ |
||||
|
th, |
||||
|
td { |
||||
|
padding: 12px 15px; |
||||
|
text-align: left; |
||||
|
border-bottom: 1px solid #E1E1E1; } |
||||
|
th:first-child, |
||||
|
td:first-child { |
||||
|
padding-left: 0; } |
||||
|
th:last-child, |
||||
|
td:last-child { |
||||
|
padding-right: 0; } |
||||
|
|
||||
|
|
||||
|
/* Spacing |
||||
|
–––––––––––––––––––––––––––––––––––––––––––––––––– */ |
||||
|
button, |
||||
|
.button { |
||||
|
margin-bottom: 1rem; } |
||||
|
input, |
||||
|
textarea, |
||||
|
select, |
||||
|
fieldset { |
||||
|
margin-bottom: 1.5rem; } |
||||
|
pre, |
||||
|
blockquote, |
||||
|
dl, |
||||
|
figure, |
||||
|
table, |
||||
|
p, |
||||
|
ul, |
||||
|
ol, |
||||
|
form { |
||||
|
margin-bottom: 2.5rem; } |
||||
|
|
||||
|
|
||||
|
/* Utilities |
||||
|
–––––––––––––––––––––––––––––––––––––––––––––––––– */ |
||||
|
.u-full-width { |
||||
|
width: 100%; |
||||
|
box-sizing: border-box; } |
||||
|
.u-max-full-width { |
||||
|
max-width: 100%; |
||||
|
box-sizing: border-box; } |
||||
|
.u-pull-right { |
||||
|
float: right; } |
||||
|
.u-pull-left { |
||||
|
float: left; } |
||||
|
|
||||
|
|
||||
|
/* Misc |
||||
|
–––––––––––––––––––––––––––––––––––––––––––––––––– */ |
||||
|
hr { |
||||
|
margin-top: 3rem; |
||||
|
margin-bottom: 3.5rem; |
||||
|
border-width: 0; |
||||
|
border-top: 1px solid #E1E1E1; } |
||||
|
|
||||
|
|
||||
|
/* Clearing |
||||
|
–––––––––––––––––––––––––––––––––––––––––––––––––– */ |
||||
|
|
||||
|
/* Self Clearing Goodness */ |
||||
|
.container:after, |
||||
|
.row:after, |
||||
|
.u-cf { |
||||
|
content: ""; |
||||
|
display: table; |
||||
|
clear: both; } |
||||
|
|
||||
|
|
||||
|
/* Media Queries |
||||
|
–––––––––––––––––––––––––––––––––––––––––––––––––– */ |
||||
|
/* |
||||
|
Note: The best way to structure the use of media queries is to create the queries |
||||
|
near the relevant code. For example, if you wanted to change the styles for buttons |
||||
|
on small devices, paste the mobile query code up in the buttons section and style it |
||||
|
there. |
||||
|
*/ |
||||
|
|
||||
|
|
||||
|
/* Larger than mobile */ |
||||
|
@media (min-width: 400px) {} |
||||
|
|
||||
|
/* Larger than phablet (also point when grid becomes active) */ |
||||
|
@media (min-width: 550px) {} |
||||
|
|
||||
|
/* Larger than tablet */ |
||||
|
@media (min-width: 750px) {} |
||||
|
|
||||
|
/* Larger than desktop */ |
||||
|
@media (min-width: 1000px) {} |
||||
|
|
||||
|
/* Larger than Desktop HD */ |
||||
|
@media (min-width: 1200px) {} |
@ -0,0 +1,3 @@ |
|||||
|
p { |
||||
|
color:green; |
||||
|
} |
@ -0,0 +1,14 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
|
||||
|
<html lang='en'> |
||||
|
<head> |
||||
|
<meta charset='utf-8' /> |
||||
|
<title>Titlevon static/index.html</title> |
||||
|
</head> |
||||
|
|
||||
|
<body> |
||||
|
<p> |
||||
|
Ich bin der <strong>Seiteninhalt <em>23</em></strong> |
||||
|
</p> |
||||
|
</body> |
||||
|
</html |
@ -0,0 +1,30 @@ |
|||||
|
from flask import Flask,render_template |
||||
|
from DBConnection import DBConnection |
||||
|
import logging |
||||
|
import configparser |
||||
|
|
||||
|
logging.basicConfig( format='%(asctime)-15s [%(levelname)s] %(funcName)s: %(message)s', level=logging.DEBUG) |
||||
|
|
||||
|
config = configparser.ConfigParser() |
||||
|
config.read('db.ini') |
||||
|
|
||||
|
db_connection = DBConnection() |
||||
|
db_connection.connect(config['pidb']['host'],config['pidb']['user'],config['pidb']['password'],config['pidb']['database']) |
||||
|
app = Flask(__name__) |
||||
|
|
||||
|
schueler = [ |
||||
|
{'name':'Simpson','vorname': 'Bart'}, |
||||
|
{'name':'Simpson','vorname':'Lisa'}, |
||||
|
{'name':'van Houten','vorname':'Milhouse'}, |
||||
|
{'name':'Wiggum','vorname':'Ralph'}, |
||||
|
{'name':'Jones','vorname':'Jimbo'} |
||||
|
] |
||||
|
|
||||
|
@app.route('/') |
||||
|
def index(): |
||||
|
return render_template('students.html',schueler=schueler) |
||||
|
|
||||
|
if __name__ == '__main__': |
||||
|
app.run(host='0.0.0.0',port=8085, debug=True) |
||||
|
|
||||
|
|
@ -0,0 +1,14 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
|
||||
|
<html lang='en'> |
||||
|
<head> |
||||
|
<meta charset='utf-8' /> |
||||
|
<title>Title von templates/index.html</title> |
||||
|
</head> |
||||
|
|
||||
|
<body> |
||||
|
<p> |
||||
|
Ich bin der <strong>Seiteninhalt <em>23</em></strong> |
||||
|
</p> |
||||
|
</body> |
||||
|
</html |
@ -0,0 +1,19 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
|
||||
|
<html lang='de'> |
||||
|
<head> |
||||
|
<meta charset='utf-8' /> |
||||
|
<title>Schüler</title> |
||||
|
</head> |
||||
|
|
||||
|
<body> |
||||
|
<p> |
||||
|
Schülerverzeichnis |
||||
|
</p> |
||||
|
<ul> |
||||
|
{% for s in schueler %} |
||||
|
<li>{{s['name']}}, {{s['vorname']}}</li> |
||||
|
{%endfor %} |
||||
|
</ul> |
||||
|
</body> |
||||
|
</html |
Loading…
Reference in new issue