mirror of
https://github.com/tebarius/Docker-Flask-QR.git
synced 2025-12-20 22:23:30 +01:00
MeCard ergänzt
This commit is contained in:
2
.idea/runConfigurations/Dockerfile_Raspi.xml
generated
2
.idea/runConfigurations/Dockerfile_Raspi.xml
generated
@@ -7,7 +7,7 @@
|
||||
<option name="portBindings">
|
||||
<list>
|
||||
<DockerPortBindingImpl>
|
||||
<option name="containerPort" value="80" />
|
||||
<option name="containerPort" value="8002" />
|
||||
<option name="hostPort" value="8002" />
|
||||
</DockerPortBindingImpl>
|
||||
</list>
|
||||
|
||||
4
.idea/runConfigurations/Dockerfile_local.xml
generated
4
.idea/runConfigurations/Dockerfile_local.xml
generated
@@ -1,5 +1,5 @@
|
||||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="Dockerfile-local" type="docker-deploy" factoryName="dockerfile" server-name="Docker-local">
|
||||
<configuration default="false" name="Dockerfile-local" type="docker-deploy" factoryName="dockerfile">
|
||||
<deployment type="dockerfile">
|
||||
<settings>
|
||||
<option name="imageTag" value="flask-qrcode-gen:latest" />
|
||||
@@ -7,7 +7,7 @@
|
||||
<option name="portBindings">
|
||||
<list>
|
||||
<DockerPortBindingImpl>
|
||||
<option name="containerPort" value="80" />
|
||||
<option name="containerPort" value="8002" />
|
||||
<option name="hostPort" value="8002" />
|
||||
</DockerPortBindingImpl>
|
||||
</list>
|
||||
|
||||
65
.idea/workspace.xml
generated
65
.idea/workspace.xml
generated
@@ -4,9 +4,17 @@
|
||||
<option name="autoReloadType" value="SELECTIVE" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="3fdfc273-527d-4717-bd6d-4ba98fba7555" name="Changes" comment="VCARD integriert">
|
||||
<list default="true" id="3fdfc273-527d-4717-bd6d-4ba98fba7555" name="Changes" comment="python3.11 - Kompatibilität wieder hergestellt">
|
||||
<change afterPath="$PROJECT_DIR$/app/templates/mecard.html" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/runConfigurations/Dockerfile_Raspi.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/runConfigurations/Dockerfile_Raspi.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/runConfigurations/Dockerfile_local.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/runConfigurations/Dockerfile_local.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Dockerfile" beforeDir="false" afterPath="$PROJECT_DIR$/Dockerfile" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Dockerfile-RasPi" beforeDir="false" afterPath="$PROJECT_DIR$/Dockerfile-RasPi" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/Flask-QR.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/Flask-QR.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/templates/base.html" beforeDir="false" afterPath="$PROJECT_DIR$/app/templates/base.html" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/templates/index.html" beforeDir="false" afterPath="$PROJECT_DIR$/app/templates/index.html" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/readme.md" beforeDir="false" afterPath="$PROJECT_DIR$/readme.md" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
@@ -54,7 +62,9 @@
|
||||
"associatedIndex": 4
|
||||
}</component>
|
||||
<component name="ProjectId" id="2XWrX9sCJFSR4JSbdK3QdicYBvo" />
|
||||
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
|
||||
<component name="ProjectLevelVcsManager" settingsEditedManually="true">
|
||||
<ConfirmationsSetting value="2" id="Add" />
|
||||
</component>
|
||||
<component name="ProjectViewState">
|
||||
<option name="hideEmptyMiddlePackages" value="true" />
|
||||
<option name="showLibraryContents" value="true" />
|
||||
@@ -66,15 +76,16 @@
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"SHARE_PROJECT_CONFIGURATION_FILES": "true",
|
||||
"ignore.virus.scanning.warn.message": "true",
|
||||
"last_opened_file_path": "D:/mager/Documents/IntelliJ/Docker-Flask-QR/app/templates",
|
||||
"last_opened_file_path": "/home/tebarius/IdeaProjects/Docker-Flask-QR/app/templates",
|
||||
"project.structure.last.edited": "Global Libraries",
|
||||
"project.structure.proportion": "0.15",
|
||||
"project.structure.side.proportion": "0.2",
|
||||
"settings.editor.selected.configurable": "preferences.lookFeel"
|
||||
"settings.editor.selected.configurable": "preferences.keymap"
|
||||
}
|
||||
}</component>
|
||||
<component name="RecentsManager">
|
||||
<key name="CopyFile.RECENT_KEYS">
|
||||
<recent name="$PROJECT_DIR$/app/templates" />
|
||||
<recent name="D:\mager\Documents\IntelliJ\Docker-Flask-QR\app\templates" />
|
||||
<recent name="D:\mager\Documents\IntelliJ\Docker-Flask-QR" />
|
||||
<recent name="D:\mager\Documents\IntelliJ\Docker-Flask-QR\templates" />
|
||||
@@ -86,13 +97,40 @@
|
||||
<recent name="D:\mager\Documents\IntelliJ\Docker-Flask-QR" />
|
||||
</key>
|
||||
</component>
|
||||
<component name="RunManager" selected="Docker.Dockerfile-local">
|
||||
<component name="RunManager" selected="Docker.Dockerfile-Raspi">
|
||||
<configuration name="Flask-QR" type="PythonConfigurationType" factoryName="Python" nameIsGenerated="true">
|
||||
<module name="Docker-Flask-QR" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="SDK_NAME" value="Python 3.12 (Docker-Flask-QR)" />
|
||||
<option name="WORKING_DIRECTORY" value="" />
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/app/Flask-QR.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<option name="MODULE_MODE" value="false" />
|
||||
<option name="REDIRECT_INPUT" value="false" />
|
||||
<option name="INPUT_FILE" value="" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<configuration default="true" type="docker-deploy" factoryName="dockerfile" temporary="true">
|
||||
<deployment type="dockerfile">
|
||||
<settings />
|
||||
</deployment>
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<list>
|
||||
<item itemvalue="Docker.Dockerfile-local" />
|
||||
<item itemvalue="Docker.Dockerfile-Raspi" />
|
||||
<item itemvalue="Python.Flask-QR" />
|
||||
</list>
|
||||
</component>
|
||||
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
||||
<component name="TaskManager">
|
||||
@@ -135,7 +173,15 @@
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1699392160202</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="5" />
|
||||
<task id="LOCAL-00005" summary="python3.11 - Kompatibilität wieder hergestellt">
|
||||
<option name="closed" value="true" />
|
||||
<created>1699436397080</created>
|
||||
<option name="number" value="00005" />
|
||||
<option name="presentableId" value="LOCAL-00005" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1699436397080</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="6" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="Vcs.Log.Tabs.Properties">
|
||||
@@ -165,6 +211,11 @@
|
||||
<MESSAGE value="css,mail,tel,url,calendar fertig" />
|
||||
<MESSAGE value="VCARD-Inhalt geplant (in Flask-qr.py)" />
|
||||
<MESSAGE value="VCARD integriert" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="VCARD integriert" />
|
||||
<MESSAGE value="python3.11 - Kompatibilität wieder hergestellt" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="python3.11 - Kompatibilität wieder hergestellt" />
|
||||
</component>
|
||||
<component name="XSLT-Support.FileAssociations.UIState">
|
||||
<expand />
|
||||
<select />
|
||||
</component>
|
||||
</project>
|
||||
@@ -10,6 +10,6 @@ COPY ./app /app/
|
||||
#RUN pip install --upgrade pip
|
||||
RUN pip install --trusted-host pypi.python.org -r requirements.txt
|
||||
|
||||
EXPOSE 80
|
||||
EXPOSE 8002
|
||||
|
||||
CMD ["python", "Flask-QR.py"]
|
||||
@@ -13,6 +13,6 @@ RUN apt-get update && apt-get install -y gcc zlib1g-dev libjpeg-dev
|
||||
#RUN python -m pip install --upgrade pillow
|
||||
RUN pip install --trusted-host pypi.python.org -r requirements.txt
|
||||
|
||||
EXPOSE 80
|
||||
EXPOSE 8002
|
||||
|
||||
CMD ["python", "Flask-QR.py"]
|
||||
@@ -33,6 +33,11 @@ def vcard():
|
||||
return render_template('vcard.html')
|
||||
|
||||
|
||||
@app.route("/mecard.html")
|
||||
def mecard():
|
||||
return render_template('mecard.html')
|
||||
|
||||
|
||||
@app.route("/geo.html")
|
||||
def geo():
|
||||
return render_template('geo.html')
|
||||
@@ -65,6 +70,31 @@ def makeqr():
|
||||
elif request.args.get('type') == "tel":
|
||||
data = f"tel:{request.args.get('tel')}"
|
||||
|
||||
elif request.args.get('type') == "mecard":
|
||||
titel = request.args.get("titel")
|
||||
if titel != "":
|
||||
titel += " "
|
||||
data = (f"MECARD:N:{request.args.get('nname')},{titel}{request.args.get('vname')};"
|
||||
f"ADR:{request.args.get('pbox')},{request.args.get('adresszusatz')},"
|
||||
f"{request.args.get('strasse')},{request.args.get('ort')},{request.args.get('bland')},"
|
||||
f"{request.args.get('plz')},{request.args.get('land')};")
|
||||
if request.args.get('tel') != "":
|
||||
data += f"TEL:{request.args.get('tel')};"
|
||||
if request.args.get('mail') != "":
|
||||
data += f"EMAIL:{request.args.get('mail')};"
|
||||
if request.args.get('url') != "":
|
||||
data += f"URL:{request.args.get('url')};"
|
||||
if request.args.get('tel') != "":
|
||||
data += f"TEL:{request.args.get('tel')};"
|
||||
if request.args.get('nickname') != "":
|
||||
data += f"NICKNAME:{request.args.get('nickname')};"
|
||||
if request.args.get('gebdate') != "":
|
||||
data += f"BDAY:{request.args.get('gebdate').replace('-','')};"
|
||||
if request.args.get('note') != "":
|
||||
data += f"NOTE:{request.args.get('note')};"
|
||||
|
||||
|
||||
|
||||
elif request.args.get('type') == "vcard":
|
||||
# BEGIN:VCARD
|
||||
# VERSION:3.0
|
||||
@@ -191,4 +221,4 @@ def makeqr():
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run(host='0.0.0.0', port=80, debug=True)
|
||||
app.run(host='0.0.0.0', port=8002, debug=True)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>QR-Code-Generator</title>
|
||||
<!--suppress HtmlUnknownTarget -->
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
||||
|
||||
@@ -11,4 +11,5 @@
|
||||
<div><button><a href="./wifi.html">WIFI</a></button></div>
|
||||
<div><button><a href="./cal.html">Kalender-Termin</a></button></div>
|
||||
<div><button><a href="./vcard.html">Visitenkarte (vCard)</a></button></div>
|
||||
<div><button><a href="./mecard.html">Visitenkarte (MeCard)</a></button></div>
|
||||
{% endblock %}
|
||||
|
||||
49
app/templates/mecard.html
Normal file
49
app/templates/mecard.html
Normal file
@@ -0,0 +1,49 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block inhalt %}
|
||||
<form action="qr.html">
|
||||
<label>Gebe bitte Details für die Visitenkarte an!</label><br />
|
||||
<input type="hidden" name="type" value="mecard">
|
||||
|
||||
<label for="vname">Vorname:</label>
|
||||
<input type="text" name="vname" id="vname" size="30" maxlength="60" required><br />
|
||||
<label for="nname">Nachname:</label>
|
||||
<input type="text" name="nname" id="nname" size="30" maxlength="60" required><br />
|
||||
<label><i><u>optionale Angaben:</u></i></label><br />
|
||||
<label for="titel">Titel (z.B. Dr.,Prof.):</label>
|
||||
<input type="text" name="titel" id="titel" size="10" maxlength="60"><br />
|
||||
<label for="tel">Telefon:</label>
|
||||
<input type="tel" name="tel" id="tel" size="20" maxlength="24"><br />
|
||||
<label for="mail">EMail:</label>
|
||||
<input type="email" name="mail" id="mail" size="30" maxlength="120"><br />
|
||||
<label for="url">Webseite:</label>
|
||||
<input type="url" name="url" id="url" size="30" maxlength="120"><br />
|
||||
<label for="nickname">Spitzname / Pseudonym:</label>
|
||||
<input type="text" name="nickname" id="nickname" size="20" maxlength="60"><br />
|
||||
<label for="gebdate">Geburtsdatum</label>
|
||||
<input type="date" name="gebdate" id="gebdate"><br />
|
||||
<label for="note">freie Notiz:</label>
|
||||
<input type="text" name="note" id="note" size="30" maxlength="240"><br />
|
||||
<br />
|
||||
<label for="strasse">Strasse:</label>
|
||||
<input type="text" name="strasse" id="strasse" size="30" maxlength="120"><br />
|
||||
<label for="plz">Postleitzahl:</label>
|
||||
<input type="text" name="plz" id="plz" size="10" maxlength="20"><br />
|
||||
<label for="ort">Ort:</label>
|
||||
<input type="text" name="ort" id="ort" size="30" maxlength="120"><br />
|
||||
<label for="land">Land:</label>
|
||||
<input type="text" name="land" id="land" size="30" maxlength="120"><br />
|
||||
<label for="adresszusatz">Adresszusatz / Wohnungsnummer:</label>
|
||||
<input type="text" name="adresszusatz" id="adresszusatz" size="20" maxlength="120"><br />
|
||||
<label for="pbox">Postfach:</label>
|
||||
<input type="text" name="pbox" id="pbox" size="20" maxlength="60"><br />
|
||||
<label for="bland">Bundesland:</label>
|
||||
<input type="text" name="bland" id="bland" size="30" maxlength="120"><br />
|
||||
|
||||
<br />
|
||||
<br />
|
||||
<button type="reset">Eingaben zurücksetzen</button>
|
||||
<button type="submit">Eingaben absenden</button>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
@@ -1,10 +1,9 @@
|
||||
# Flask QR-Code-Generator
|
||||
|
||||
Dieses Programm benötigt Python und das Flask-Framework um einen kleinen Server auf Port 80
|
||||
aufzumachen.
|
||||
Dieses Programm benötigt Python und das Flask-Framework um einen kleinen Server auf Port 8002 aufzumachen.
|
||||
|
||||
pip install Flask-QRcode
|
||||
... installiert alles Notwendige nach damit das Programm läuft
|
||||
... installiert alles Notwendige
|
||||
|
||||
## Docker
|
||||
2 unterschiedliche Dockerfile's, da obwohl bei beiden python:slim als Basis genutzt wird,
|
||||
|
||||
Reference in New Issue
Block a user