diff --git a/src/VERSION b/ConfBack/VERSION similarity index 100% rename from src/VERSION rename to ConfBack/VERSION diff --git a/src/__init__.py b/ConfBack/__init__.py similarity index 100% rename from src/__init__.py rename to ConfBack/__init__.py diff --git a/src/account/__init__.py b/ConfBack/account/__init__.py similarity index 100% rename from src/account/__init__.py rename to ConfBack/account/__init__.py diff --git a/src/account/views.py b/ConfBack/account/views.py similarity index 100% rename from src/account/views.py rename to ConfBack/account/views.py diff --git a/src/app.py b/ConfBack/app.py similarity index 93% rename from src/app.py rename to ConfBack/app.py index 962f3bb..0bc31e4 100644 --- a/src/app.py +++ b/ConfBack/app.py @@ -17,14 +17,14 @@ from flask_jwt_extended import JWTManager import jwt -from src.config import DefaultConfig -from src.auth import auth -from src.account import account -from src.params import params -from src.schedule import schedule -from src.log import log as logs -from src.manager import sock -from src.infos import info +from ConfBack.config import DefaultConfig +from ConfBack.auth import auth +from ConfBack.account import account +from ConfBack.params import params +from ConfBack.schedule import schedule +from ConfBack.log import log as logs +from ConfBack.manager import sock +from ConfBack.infos import info ######################################################### # Corps principal du programme # diff --git a/src/auth/__init__.py b/ConfBack/auth/__init__.py similarity index 100% rename from src/auth/__init__.py rename to ConfBack/auth/__init__.py diff --git a/src/auth/views.py b/ConfBack/auth/views.py similarity index 100% rename from src/auth/views.py rename to ConfBack/auth/views.py diff --git a/src/config.py b/ConfBack/config.py similarity index 89% rename from src/config.py rename to ConfBack/config.py index a1f5cf2..644a7e5 100644 --- a/src/config.py +++ b/ConfBack/config.py @@ -41,6 +41,7 @@ class BaseConfig(object): ALLOWED_EXTENSIONS = {'json', 'tar', 'txt'} MAX_CONTENT_LENGTH = 200 * 1024 * 1024 # 100 megabytes + # Database path DB_PATH = os.path.join(os.getcwd(), 'db.json') UNIX_ADDR = "/tmp/uds_socket" @@ -57,7 +58,13 @@ class DefaultConfig(BaseConfig): DELTA = datetime.timedelta(minutes=5) # in minutes class ProdConfig(BaseConfig): + DEBUG = False + TESTING = False + FLASK_ENV = 'production' + ROOT_BASE_FOLDER = "/opt" # Log Folder path - LOG_FOLDER = "/var/log" + LOG_FOLDER = "/var/log/kineintercom" + # Database path + DB_PATH = os.path.join('/etc/kineintercom', 'db.json') diff --git a/src/infos/__init__.py b/ConfBack/infos/__init__.py similarity index 100% rename from src/infos/__init__.py rename to ConfBack/infos/__init__.py diff --git a/src/infos/views.py b/ConfBack/infos/views.py similarity index 100% rename from src/infos/views.py rename to ConfBack/infos/views.py diff --git a/src/log/__init__.py b/ConfBack/log/__init__.py similarity index 100% rename from src/log/__init__.py rename to ConfBack/log/__init__.py diff --git a/src/log/views.py b/ConfBack/log/views.py similarity index 100% rename from src/log/views.py rename to ConfBack/log/views.py diff --git a/src/manager.py b/ConfBack/manager.py similarity index 100% rename from src/manager.py rename to ConfBack/manager.py diff --git a/src/params/__init__.py b/ConfBack/params/__init__.py similarity index 100% rename from src/params/__init__.py rename to ConfBack/params/__init__.py diff --git a/src/params/views.py b/ConfBack/params/views.py similarity index 99% rename from src/params/views.py rename to ConfBack/params/views.py index c8f80c6..d5d64c8 100644 --- a/src/params/views.py +++ b/ConfBack/params/views.py @@ -24,7 +24,7 @@ import shutil import hashlib from werkzeug.exceptions import HTTPException -from src.manager import sock +from ConfBack.manager import sock ######################################################### # Class et Methods # diff --git a/src/schedule/__init__.py b/ConfBack/schedule/__init__.py similarity index 100% rename from src/schedule/__init__.py rename to ConfBack/schedule/__init__.py diff --git a/src/schedule/views.py b/ConfBack/schedule/views.py similarity index 100% rename from src/schedule/views.py rename to ConfBack/schedule/views.py diff --git a/Pipfile b/Pipfile index a3f00c7..1d2033a 100644 --- a/Pipfile +++ b/Pipfile @@ -1,6 +1,6 @@ [[source]] url = "https://pypi.python.org/simple" -verify_ssl = true +verify_ssl = false name = "pypi" [packages] @@ -11,6 +11,7 @@ jsonschema = "*" pyjwt = "*" flask-jwt-extended = "*" psutil = "*" +waitress = "*" [dev-packages] diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..1994dad --- /dev/null +++ b/build.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# +# Author : vincent.benoit@scle.fr +# Date : 07/2022 +# Version : 1.0 +# Brief : création des packages necessaires pour le backend ScleSignRESTful +# +########################################################################### + +create_deb() { + dirname=configurateurback-$1 + /usr/bin/mkdir -p bdist_deb/$dirname + cd bdist_deb/$dirname + /usr/bin/dh_make -t $2/misc/template -n -y -i -d + /usr/bin/find $2/3rdparty -type f -exec /usr/bin/cp -a {} . \; + /usr/bin/find $2/certs/pub -type f -exec /usr/bin/cp -a {} . \; + /usr/bin/find $2/template -type f -exec /usr/bin/cp -a {} . \; + /usr/bin/cp -a $2/run_prod.py . + /usr/bin/dpkg-buildpackage -b -uc -us -rfakeroot + cd .. + if [ $? == "0" ] && [ ! -d "$2/dist" ]; then + /usr/bin/mkdir -p $2/dist + /usr/bin/find . -type f -name "*.deb" -exec /usr/bin/cp -a {} $2/dist \; + fi +} + +create_wheel() { + cd $1 + /usr/bin/python3 setup.py bdist_wheel --universal +} + +echo "*** Remove old dirs ***" +/usr/bin/rm -rf bdist_deb build dist ScleSignRESTful.egg-info +echo "*** read version ***" +vers=`/usr/bin/cat ConfBack/VERSION` +rootpath=`pwd` +echo "*** Create Debian Misc Package ***" +create_deb "$vers" "$rootpath" +echo "*** Create Python Package ***" +create_wheel "$rootpath" +echo "*** that's All Folks ...***" diff --git a/db.json b/db.json deleted file mode 100644 index c428ad7..0000000 --- a/db.json +++ /dev/null @@ -1 +0,0 @@ -{"utilisateur": {"id": "admin", "password": "9ac564e9a29c952a3ddeffd8635adb0c252dbd1d58f3efde265e028f7f808aa9"}, "OPERATION": "Horaires", "PIN_ACTIF": true, "CODE_PIN": "1234", "NUM_AUTORISE": "670100036", "TONE_DURATION": 2, "DTMF_CODE": "*", "DTMF_DURATION": 10, "INFOS": {"manufacturer": {"identification": "SIMCOM_Ltd", "model": "SIMCOM_SIM868", "hardware_rev": "1418B02SIM868M32_BT_EAT", "serial_number": "864866057705260"}, "control": {"operator": "SFR", "service_provider": "La poste mobile", "signal_dbm": "-75", "signal_qos": "excellent", "sim_inserted": true, "call_ready": true}}, "HORAIRES": {"Monday": [{"name": "00h00", "state": 0}, {"name": "00h30", "state": 0}, {"name": "01h00", "state": 0}, {"name": "01h30", "state": 0}, {"name": "02h00", "state": 0}, {"name": "02h30", "state": 0}, {"name": "03h00", "state": 0}, {"name": "03h30", "state": 0}, {"name": "04h00", "state": 0}, {"name": "04h30", "state": 0}, {"name": "05h00", "state": 0}, {"name": "05h30", "state": 0}, {"name": "06h00", "state": 0}, {"name": "06h30", "state": 1}, {"name": "07h00", "state": 1}, {"name": "07h30", "state": 1}, {"name": "08h00", "state": 1}, {"name": "08h30", "state": 1}, {"name": "09h00", "state": 1}, {"name": "09h30", "state": 1}, {"name": "10h00", "state": 1}, {"name": "10h30", "state": 1}, {"name": "11h00", "state": 1}, {"name": "11h30", "state": 1}, {"name": "12h00", "state": 1}, {"name": "12h30", "state": 1}, {"name": "13h00", "state": 1}, {"name": "13h30", "state": 1}, {"name": "14h00", "state": 1}, {"name": "14h30", "state": 1}, {"name": "15h00", "state": 1}, {"name": "15h30", "state": 1}, {"name": "16h00", "state": 1}, {"name": "16h30", "state": 1}, {"name": "17h00", "state": 1}, {"name": "17h30", "state": 1}, {"name": "18h00", "state": 1}, {"name": "18h30", "state": 1}, {"name": "19h00", "state": 1}, {"name": "19h30", "state": 0}, {"name": "20h00", "state": 0}, {"name": "20h30", "state": 0}, {"name": "21h00", "state": 0}, {"name": "21h30", "state": 0}, {"name": "22h00", "state": 0}, {"name": "22h30", "state": 0}, {"name": "23h00", "state": 0}, {"name": "23h30", "state": 0}], "Tuesday": [{"name": "00h00", "state": 0}, {"name": "00h30", "state": 0}, {"name": "01h00", "state": 0}, {"name": "01h30", "state": 0}, {"name": "02h00", "state": 0}, {"name": "02h30", "state": 0}, {"name": "03h00", "state": 0}, {"name": "03h30", "state": 0}, {"name": "04h00", "state": 0}, {"name": "04h30", "state": 0}, {"name": "05h00", "state": 0}, {"name": "05h30", "state": 0}, {"name": "06h00", "state": 0}, {"name": "06h30", "state": 1}, {"name": "07h00", "state": 1}, {"name": "07h30", "state": 1}, {"name": "08h00", "state": 1}, {"name": "08h30", "state": 1}, {"name": "09h00", "state": 1}, {"name": "09h30", "state": 1}, {"name": "10h00", "state": 1}, {"name": "10h30", "state": 1}, {"name": "11h00", "state": 1}, {"name": "11h30", "state": 1}, {"name": "12h00", "state": 1}, {"name": "12h30", "state": 1}, {"name": "13h00", "state": 1}, {"name": "13h30", "state": 1}, {"name": "14h00", "state": 1}, {"name": "14h30", "state": 1}, {"name": "15h00", "state": 1}, {"name": "15h30", "state": 1}, {"name": "16h00", "state": 1}, {"name": "16h30", "state": 1}, {"name": "17h00", "state": 1}, {"name": "17h30", "state": 1}, {"name": "18h00", "state": 1}, {"name": "18h30", "state": 1}, {"name": "19h00", "state": 1}, {"name": "19h30", "state": 0}, {"name": "20h00", "state": 0}, {"name": "20h30", "state": 0}, {"name": "21h00", "state": 0}, {"name": "21h30", "state": 0}, {"name": "22h00", "state": 0}, {"name": "22h30", "state": 0}, {"name": "23h00", "state": 0}, {"name": "23h30", "state": 0}], "Wednesday": [{"name": "00h00", "state": 0}, {"name": "00h30", "state": 0}, {"name": "01h00", "state": 0}, {"name": "01h30", "state": 0}, {"name": "02h00", "state": 0}, {"name": "02h30", "state": 0}, {"name": "03h00", "state": 0}, {"name": "03h30", "state": 0}, {"name": "04h00", "state": 0}, {"name": "04h30", "state": 0}, {"name": "05h00", "state": 0}, {"name": "05h30", "state": 0}, {"name": "06h00", "state": 0}, {"name": "06h30", "state": 1}, {"name": "07h00", "state": 1}, {"name": "07h30", "state": 1}, {"name": "08h00", "state": 1}, {"name": "08h30", "state": 1}, {"name": "09h00", "state": 1}, {"name": "09h30", "state": 1}, {"name": "10h00", "state": 1}, {"name": "10h30", "state": 1}, {"name": "11h00", "state": 1}, {"name": "11h30", "state": 1}, {"name": "12h00", "state": 1}, {"name": "12h30", "state": 1}, {"name": "13h00", "state": 1}, {"name": "13h30", "state": 1}, {"name": "14h00", "state": 1}, {"name": "14h30", "state": 1}, {"name": "15h00", "state": 1}, {"name": "15h30", "state": 1}, {"name": "16h00", "state": 1}, {"name": "16h30", "state": 1}, {"name": "17h00", "state": 1}, {"name": "17h30", "state": 1}, {"name": "18h00", "state": 1}, {"name": "18h30", "state": 1}, {"name": "19h00", "state": 1}, {"name": "19h30", "state": 0}, {"name": "20h00", "state": 0}, {"name": "20h30", "state": 0}, {"name": "21h00", "state": 0}, {"name": "21h30", "state": 0}, {"name": "22h00", "state": 0}, {"name": "22h30", "state": 0}, {"name": "23h00", "state": 0}, {"name": "23h30", "state": 0}], "Thursday": [{"name": "00h00", "state": 0}, {"name": "00h30", "state": 0}, {"name": "01h00", "state": 0}, {"name": "01h30", "state": 0}, {"name": "02h00", "state": 0}, {"name": "02h30", "state": 0}, {"name": "03h00", "state": 0}, {"name": "03h30", "state": 0}, {"name": "04h00", "state": 0}, {"name": "04h30", "state": 0}, {"name": "05h00", "state": 0}, {"name": "05h30", "state": 0}, {"name": "06h00", "state": 0}, {"name": "06h30", "state": 1}, {"name": "07h00", "state": 1}, {"name": "07h30", "state": 1}, {"name": "08h00", "state": 1}, {"name": "08h30", "state": 1}, {"name": "09h00", "state": 1}, {"name": "09h30", "state": 1}, {"name": "10h00", "state": 1}, {"name": "10h30", "state": 1}, {"name": "11h00", "state": 1}, {"name": "11h30", "state": 1}, {"name": "12h00", "state": 1}, {"name": "12h30", "state": 1}, {"name": "13h00", "state": 1}, {"name": "13h30", "state": 1}, {"name": "14h00", "state": 1}, {"name": "14h30", "state": 1}, {"name": "15h00", "state": 1}, {"name": "15h30", "state": 1}, {"name": "16h00", "state": 1}, {"name": "16h30", "state": 1}, {"name": "17h00", "state": 1}, {"name": "17h30", "state": 1}, {"name": "18h00", "state": 1}, {"name": "18h30", "state": 1}, {"name": "19h00", "state": 1}, {"name": "19h30", "state": 0}, {"name": "20h00", "state": 0}, {"name": "20h30", "state": 0}, {"name": "21h00", "state": 0}, {"name": "21h30", "state": 0}, {"name": "22h00", "state": 0}, {"name": "22h30", "state": 0}, {"name": "23h00", "state": 0}, {"name": "23h30", "state": 0}], "Friday": [{"name": "00h00", "state": 0}, {"name": "00h30", "state": 0}, {"name": "01h00", "state": 0}, {"name": "01h30", "state": 0}, {"name": "02h00", "state": 0}, {"name": "02h30", "state": 0}, {"name": "03h00", "state": 0}, {"name": "03h30", "state": 0}, {"name": "04h00", "state": 0}, {"name": "04h30", "state": 0}, {"name": "05h00", "state": 0}, {"name": "05h30", "state": 0}, {"name": "06h00", "state": 0}, {"name": "06h30", "state": 1}, {"name": "07h00", "state": 1}, {"name": "07h30", "state": 1}, {"name": "08h00", "state": 1}, {"name": "08h30", "state": 1}, {"name": "09h00", "state": 1}, {"name": "09h30", "state": 1}, {"name": "10h00", "state": 1}, {"name": "10h30", "state": 1}, {"name": "11h00", "state": 1}, {"name": "11h30", "state": 1}, {"name": "12h00", "state": 1}, {"name": "12h30", "state": 1}, {"name": "13h00", "state": 1}, {"name": "13h30", "state": 1}, {"name": "14h00", "state": 1}, {"name": "14h30", "state": 1}, {"name": "15h00", "state": 1}, {"name": "15h30", "state": 1}, {"name": "16h00", "state": 1}, {"name": "16h30", "state": 1}, {"name": "17h00", "state": 1}, {"name": "17h30", "state": 1}, {"name": "18h00", "state": 1}, {"name": "18h30", "state": 1}, {"name": "19h00", "state": 1}, {"name": "19h30", "state": 0}, {"name": "20h00", "state": 0}, {"name": "20h30", "state": 0}, {"name": "21h00", "state": 0}, {"name": "21h30", "state": 0}, {"name": "22h00", "state": 0}, {"name": "22h30", "state": 0}, {"name": "23h00", "state": 0}, {"name": "23h30", "state": 0}], "Saturday": [{"name": "00h00", "state": 0}, {"name": "00h30", "state": 0}, {"name": "01h00", "state": 0}, {"name": "01h30", "state": 0}, {"name": "02h00", "state": 0}, {"name": "02h30", "state": 0}, {"name": "03h00", "state": 0}, {"name": "03h30", "state": 0}, {"name": "04h00", "state": 0}, {"name": "04h30", "state": 0}, {"name": "05h00", "state": 0}, {"name": "05h30", "state": 0}, {"name": "06h00", "state": 0}, {"name": "06h30", "state": 0}, {"name": "07h00", "state": 0}, {"name": "07h30", "state": 0}, {"name": "08h00", "state": 0}, {"name": "08h30", "state": 0}, {"name": "09h00", "state": 0}, {"name": "09h30", "state": 0}, {"name": "10h00", "state": 0}, {"name": "10h30", "state": 0}, {"name": "11h00", "state": 0}, {"name": "11h30", "state": 0}, {"name": "12h00", "state": 0}, {"name": "12h30", "state": 0}, {"name": "13h00", "state": 0}, {"name": "13h30", "state": 0}, {"name": "14h00", "state": 0}, {"name": "14h30", "state": 0}, {"name": "15h00", "state": 0}, {"name": "15h30", "state": 0}, {"name": "16h00", "state": 0}, {"name": "16h30", "state": 0}, {"name": "17h00", "state": 0}, {"name": "17h30", "state": 0}, {"name": "18h00", "state": 0}, {"name": "18h30", "state": 0}, {"name": "19h00", "state": 0}, {"name": "19h30", "state": 0}, {"name": "20h00", "state": 0}, {"name": "20h30", "state": 0}, {"name": "21h00", "state": 0}, {"name": "21h30", "state": 0}, {"name": "22h00", "state": 0}, {"name": "22h30", "state": 0}, {"name": "23h00", "state": 0}, {"name": "23h30", "state": 0}], "Sunday": [{"name": "00h00", "state": 0}, {"name": "00h30", "state": 0}, {"name": "01h00", "state": 0}, {"name": "01h30", "state": 0}, {"name": "02h00", "state": 0}, {"name": "02h30", "state": 0}, {"name": "03h00", "state": 0}, {"name": "03h30", "state": 0}, {"name": "04h00", "state": 0}, {"name": "04h30", "state": 0}, {"name": "05h00", "state": 0}, {"name": "05h30", "state": 0}, {"name": "06h00", "state": 0}, {"name": "06h30", "state": 0}, {"name": "07h00", "state": 0}, {"name": "07h30", "state": 0}, {"name": "08h00", "state": 0}, {"name": "08h30", "state": 0}, {"name": "09h00", "state": 0}, {"name": "09h30", "state": 0}, {"name": "10h00", "state": 0}, {"name": "10h30", "state": 0}, {"name": "11h00", "state": 0}, {"name": "11h30", "state": 0}, {"name": "12h00", "state": 0}, {"name": "12h30", "state": 0}, {"name": "13h00", "state": 0}, {"name": "13h30", "state": 0}, {"name": "14h00", "state": 0}, {"name": "14h30", "state": 0}, {"name": "15h00", "state": 0}, {"name": "15h30", "state": 0}, {"name": "16h00", "state": 0}, {"name": "16h30", "state": 0}, {"name": "17h00", "state": 0}, {"name": "17h30", "state": 0}, {"name": "18h00", "state": 0}, {"name": "18h30", "state": 0}, {"name": "19h00", "state": 0}, {"name": "19h30", "state": 0}, {"name": "20h00", "state": 0}, {"name": "20h30", "state": 0}, {"name": "21h00", "state": 0}, {"name": "21h30", "state": 0}, {"name": "22h00", "state": 0}, {"name": "22h30", "state": 0}, {"name": "23h00", "state": 0}, {"name": "23h30", "state": 0}]}} \ No newline at end of file diff --git a/misc/configurateur_backend.service b/misc/configurateur_backend.service new file mode 100644 index 0000000..68f82e6 --- /dev/null +++ b/misc/configurateur_backend.service @@ -0,0 +1,17 @@ +[Unit] +Description=Démarrage du Backend du Configurateur +StartLimitIntervalSec=300 +StartLimitBurst=5 +Wants=kineintercom.service + +[Service] +Type=simple +User=pi +Group=pi +ExecStart=/usr/bin/python3 /usr/local/bin/run_prod.py +Restart=on-failure +RestartSec=15s + +[Install] +WantedBy=multi-user.target + diff --git a/misc/template/changelog b/misc/template/changelog new file mode 100644 index 0000000..b41a763 --- /dev/null +++ b/misc/template/changelog @@ -0,0 +1,5 @@ +#PACKAGE# (#VERSION#) stable; urgency=medium + + * Initial release + + -- #USERNAME# <#EMAIL#> #DATE# diff --git a/misc/template/confbackmisc.postinst b/misc/template/confbackmisc.postinst new file mode 100644 index 0000000..51b161a --- /dev/null +++ b/misc/template/confbackmisc.postinst @@ -0,0 +1,25 @@ +#!/bin/sh +# postinst script for confbackmisc +# +# see: dh_installdeb(1) + +set -e +user="root" + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +userpi="pi" +dirname="kineintercom" +# create log directory +if [ ! -d "/var/log/$dirname" ]; then + /usr/bin/mkdir -p /var/log/$dirname + /usr/bin/chown -R $user:$userpi /var/log/$dirname + /usr/bin/chmod 770 /var/log/$dirname +fi + +# Restart service +/usr/bin/systemctl enable configurateur_backend.service +/usr/bin/systemctl restart configurateur_backend.service diff --git a/misc/template/control b/misc/template/control new file mode 100644 index 0000000..e7243b2 --- /dev/null +++ b/misc/template/control @@ -0,0 +1,12 @@ +Source: #PACKAGE# +Section: misc +Priority: optional +Maintainer: #USERNAME# <#EMAIL#> +Build-Depends: #BUILD_DEPS# +Standards-Version: #POLICY# +Homepage: https://git.nas.benserv.fr/vincent/Kine-backend + +Package: #PACKAGE# +Architecture: all +Depends: ${misc:Depends}, kineintercommisc +Description: Installation des fichiers nécessaires au fonctionnement du Backend Configurateur diff --git a/misc/template/install b/misc/template/install new file mode 100644 index 0000000..a046f76 --- /dev/null +++ b/misc/template/install @@ -0,0 +1,2 @@ +configurateur_backend.service /lib/systemd/system/ +run_prod.py /usr/local/bin/ diff --git a/misc/template/rules b/misc/template/rules new file mode 100755 index 0000000..7dab8e0 --- /dev/null +++ b/misc/template/rules @@ -0,0 +1,12 @@ +#!/usr/bin/make -f +# See debhelper(7) (uncomment to enable) +# output every command that modifies files on the build system. +#export DH_VERBOSE = 1 + +#RULES_START_TEXT# +%: + dh $@#DH_ADDON# + +override_dh_auto_install: + +#RULES_END_TEXT# diff --git a/run.py b/run.py index 3141c11..b38b86a 100644 --- a/run.py +++ b/run.py @@ -3,7 +3,7 @@ # @author : vincent.benoit@benserv.fr # @brief : Backend Configurateur KineInterCOM -from src import app +from ConfBack import app print("Launch Flask KineInterCOM Configurateur Backend ...") ret, application = app.create_app() if application and ret: diff --git a/run_prod.py b/run_prod.py index 414c7fa..3dd3b9f 100644 --- a/run_prod.py +++ b/run_prod.py @@ -3,8 +3,8 @@ # @author : vincent.benoit@benserv.fr # @brief : KineIntercom Backend -from src import app -from src.config import ProdConfig +from ConfBack import app +from ConfBack.config import ProdConfig from waitress import serve print("Launch Flask KineIntercom Backend ...") diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..bea4ad0 --- /dev/null +++ b/setup.py @@ -0,0 +1,39 @@ +import io, os +from setuptools import find_packages, setup + +def read(*paths, **kwargs): + """Read the contents of a text file safely. + >>> read("project_name", "VERSION") + '0.1.0' + >>> read("README.md") + ... + """ + + content = "" + with io.open( + os.path.join(os.path.dirname(__file__), *paths), + encoding=kwargs.get("encoding", "utf8"), + ) as open_file: + content = open_file.read().strip() + return content + +def read_requirements(path): + ret = [] + with open(path, "r") as f: + ret = f.read().splitlines() + return ret + +setup( + name='ConfigurateurBack', + version=read("ConfBack", "VERSION"), + author='Vincent BENOIT', + author_email='vincent.benoit@benserv.fr', + url='https://git.nas.benserv.fr/vincent/Kine-backend.git', + description='Backend RESTful API pour l\'outil de configuration KineIntercom', + long_description=read("README.md"), + long_description_content_type="text/markdown", + packages=["ConfBack"], + include_package_data=True, + zip_safe=False, + install_requires=read_requirements("requirements.txt") +)