From addb93d3172a1e0dce526decfb782aeb11195661 Mon Sep 17 00:00:00 2001 From: JensDiemer Date: Sat, 2 Apr 2022 19:34:39 +0200 Subject: [PATCH 1/8] Updates --- ...service => django-fritzconnection.service} | 0 conf/manage.py | 2 +- conf/requirements.txt | 96 +++++----- manifest.json | 17 +- poetry.lock | 168 ++++++++++++------ pyproject.toml | 7 +- scripts/install | 28 ++- 7 files changed, 187 insertions(+), 131 deletions(-) rename conf/{pyinventory.service => django-fritzconnection.service} (100%) diff --git a/conf/pyinventory.service b/conf/django-fritzconnection.service similarity index 100% rename from conf/pyinventory.service rename to conf/django-fritzconnection.service diff --git a/conf/manage.py b/conf/manage.py index a85e3b1..9962cbd 100755 --- a/conf/manage.py +++ b/conf/manage.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python3 +#!__FINAL_HOME_PATH__/venv/bin/python import os import sys diff --git a/conf/requirements.txt b/conf/requirements.txt index 873430a..d358640 100644 --- a/conf/requirements.txt +++ b/conf/requirements.txt @@ -1,104 +1,90 @@ -asgiref==3.5.0; python_version >= "3.8" and python_full_version < "4.0.0" \ +asgiref==3.5.0; python_version >= "3.7" and python_full_version < "4.0.0" \ --hash=sha256:88d59c13d634dcffe0510be048210188edd79aeccb6a6c9028cdad6f31d730a9 \ --hash=sha256:2f8abc20f7248433085eda803936d98992f1343ddb022065779f37c5da0181d0 async-timeout==4.0.2; python_version >= "3.7" and python_full_version < "4.0.0" \ --hash=sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15 \ --hash=sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c -backports.zoneinfo==0.2.1; python_version >= "3.8" and python_full_version < "4.0.0" and python_version < "3.9" \ - --hash=sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc \ - --hash=sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722 \ - --hash=sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546 \ - --hash=sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08 \ - --hash=sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7 \ - --hash=sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac \ - --hash=sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf \ - --hash=sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570 \ - --hash=sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b \ - --hash=sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582 \ - --hash=sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987 \ - --hash=sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1 \ - --hash=sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9 \ - --hash=sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328 \ - --hash=sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6 \ - --hash=sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2 -bleach==4.1.0; python_version >= "3.8" and python_full_version < "4.0.0" \ +bleach==4.1.0; python_version >= "3.7" and python_full_version < "4.0.0" \ --hash=sha256:4d2651ab93271d1129ac9cbc679f524565cc8a1b791909c4a51eac4446a15994 \ --hash=sha256:0900d8b37eba61a802ee40ac0061f8c2b5dee29c1927dd1d233e075ebf5a71da -bx-django-utils==20; python_version >= "3.8" and python_full_version < "4.0.0" \ +bx-django-utils==20; python_version >= "3.7" and python_full_version < "4.0.0" \ --hash=sha256:7daf89de453cfaff49117dc24a1c2408fcc91279cd11554e0c16683095cec8b3 \ --hash=sha256:6a5be502414a63fbd462c0f29a1403def436b89450a1325a24fa1233a5410ada bx-py-utils==60; python_version >= "3.6" and python_full_version < "4.0.0" \ --hash=sha256:e321f7275aaf36829fc193023b1d0daca17415aaf74632915de2c202ecc26bd8 \ --hash=sha256:d3395a9f72d2e2633b1e322ff8608204601e14eb3f6dc5d346953002a309ffcf -certifi==2021.10.8; python_version >= "3.8" and python_full_version < "3.0.0" or python_version >= "3.8" and python_full_version < "4.0.0" and python_full_version >= "3.6.0" \ +certifi==2021.10.8; python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "4.0.0" and python_full_version >= "3.6.0" \ --hash=sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569 \ --hash=sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872 -charset-normalizer==2.0.12; python_version >= "3.8" and python_full_version < "4.0.0" and python_full_version >= "3.6.0" \ +charset-normalizer==2.0.12; python_version >= "3.7" and python_full_version < "4.0.0" and python_full_version >= "3.6.0" \ --hash=sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597 \ --hash=sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df -colorama==0.4.4; python_version >= "3.8" and python_full_version < "3.0.0" and sys_platform == "win32" or python_version >= "3.8" and python_full_version < "4.0.0" and sys_platform == "win32" and python_full_version >= "3.5.0" \ +colorama==0.4.4; python_version >= "3.7" and python_full_version < "3.0.0" and sys_platform == "win32" or python_version >= "3.7" and python_full_version < "4.0.0" and sys_platform == "win32" and python_full_version >= "3.5.0" \ --hash=sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2 \ --hash=sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b -colorlog==6.6.0; python_version >= "3.8" and python_full_version < "4.0.0" \ +colorlog==6.6.0; python_version >= "3.7" and python_full_version < "4.0.0" \ --hash=sha256:351c51e866c86c3217f08e4b067a7974a678be78f07f85fc2d55b8babde6d94e \ --hash=sha256:344f73204009e4c83c5b6beb00b3c45dc70fcdae3c80db919e0a4171d006fde8 deprecated==1.2.13; python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "4.0.0" and python_full_version >= "3.4.0" \ --hash=sha256:64756e3e14c8c5eea9795d93c524551432a0be75629f8f29e67ab8caf076c76d \ --hash=sha256:43ac5335da90c31c24ba028af536a91d41d53f9e6901ddb021bcc572ce44e38d -diff-match-patch==20200713; python_version >= "3.8" and python_full_version < "4.0.0" \ +diff-match-patch==20200713; python_version >= "3.7" and python_full_version < "4.0.0" \ --hash=sha256:da6f5a01aa586df23dfc89f3827e1cafbb5420be9d87769eeb079ddfd9477a18 \ --hash=sha256:8bf9d9c4e059d917b5c6312bac0c137971a32815ddbda9c682b949f2986b4d34 -django-admin-sortable2==1.0.4; python_version >= "3.8" and python_full_version < "4.0.0" \ +django-admin-sortable2==1.0.4; python_version >= "3.7" and python_full_version < "4.0.0" \ --hash=sha256:f96044003176c6684c5f969792ca833a505d654fa0f7b24232a0a610e4332a53 \ --hash=sha256:e22956889533b48a35a7f02859ae3a939753fa9a7d7d532cefc2835b41bdcebb django-axes==5.31.0; python_version >= "3.7" and python_full_version < "4.0.0" \ --hash=sha256:e6754be4c8a9e55a25381e4aea6aeb1ec1f0d8dd025f233d9caa910ce9be6728 \ --hash=sha256:17f1884a439d2a20495c0c03427922634ab7828cd030d9bc1ce3d0425917ff36 -django-debug-toolbar==3.2.4; python_version >= "3.8" and python_full_version < "4.0.0" \ +django-debug-toolbar==3.2.4; python_version >= "3.7" and python_full_version < "4.0.0" \ --hash=sha256:644bbd5c428d3283aa9115722471769cac1bec189edf3a0c855fd8ff870375a9 \ --hash=sha256:6b633b6cfee24f232d73569870f19aa86c819d750e7f3e833f2344a9eb4b4409 -django-fritzconnection==0.0.2a0; python_version >= "3.8" and python_full_version < "4.0.0" \ - --hash=sha256:2a32d6c61495052a80dee93103946503e1c8b5b6a940a5d2053388bc8d3cdbf3 \ - --hash=sha256:de76455e328e7f4ac929cdd32e5f50659b86b9da890003c1f3b6f35daf6008a1 +django-fritzconnection==0.0.2rc0; python_version >= "3.7" and python_full_version < "4.0.0" \ + --hash=sha256:53904dc03672059d0459ec6e27badce3554802bae15b93e24ecc422fc6c45cc0 \ + --hash=sha256:703c3f26f653073e5a183150b9d23e4ac0c7597abb9ff16fc833ff1b7fd5c5a2 django-ipware==4.0.2; python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "4.0.0" and python_full_version >= "3.6.0" \ --hash=sha256:602a58325a4808bd19197fef2676a0b2da2df40d0ecf21be414b2ff48c72ad05 \ --hash=sha256:878dbb06a87e25550798e9ef3204ed70a200dd8b15e47dcef848cf08244f04c9 django-redis==5.2.0; python_version >= "3.7" and python_full_version < "4.0.0" \ --hash=sha256:8a99e5582c79f894168f5865c52bd921213253b7fd64d16733ae4591564465de \ --hash=sha256:1d037dc02b11ad7aa11f655d26dac3fb1af32630f61ef4428860a2e29ff92026 -django-reversion-compare==0.15.0; python_version >= "3.8" and python_full_version < "4.0.0" \ +django-reversion-compare==0.15.0; python_version >= "3.7" and python_full_version < "4.0.0" \ --hash=sha256:ed0264a2852d9d867023f1874948b8234dad9c2d2fa22ea18cfd5f28f304d7a0 \ --hash=sha256:d6f37b106aec287ae17a076bb7db1184ab02ab1898f0e8693f2779fbdaf71697 -django-reversion==5.0.0; python_version >= "3.8" and python_full_version < "4.0.0" \ +django-reversion==5.0.0; python_version >= "3.7" and python_full_version < "4.0.0" \ --hash=sha256:0bade3c399387451087f0c67835e0d3d186d767de6a5c5ba53a88eafc3f271c8 \ --hash=sha256:7bea725de7f56769d89a5a712cf7b7f1b02abc27655432f2eb1a703264986d99 -django-tagulous==1.3.3; python_version >= "3.8" and python_full_version < "4.0.0" \ +django-tagulous==1.3.3; python_version >= "3.7" and python_full_version < "4.0.0" \ --hash=sha256:d445590ae1b5cb9b8c5a425f97bf5f01148a33419c19edeb721ebd9fdd6792fe \ --hash=sha256:ad3bb85f4cce83a47e4c0257143229cb92a294defa02fe661823b0442b35d478 -django-tools==0.49.0; python_version >= "3.8" and python_full_version < "4.0.0" \ +django-tools==0.49.0; python_version >= "3.7" and python_full_version < "4.0.0" \ --hash=sha256:9da6d5610576a34219be3dea9c7c2207669e5c916d89987011843ded772ece0a \ --hash=sha256:a27c32cff98cd82dde23ab2f05fb9e06a32aaeb8357e96f1ec02a634b6619170 django-yunohost-integration==0.2.4; python_version >= "3.7" and python_full_version < "4.0.0" \ --hash=sha256:f5cdb5480025e90de0221d2b1c6282f517fd0c903702563cccb771cb3e1d9417 \ --hash=sha256:a4b3617a3b39225d6162fa88827e9fe8b65388e26a0bbc23ea665c62aa8cb044 -django==4.0.3; python_version >= "3.8" and python_full_version < "4.0.0" \ - --hash=sha256:1239218849e922033a35d2a2f777cb8bee18bd725416744074f455f34ff50d0c \ - --hash=sha256:77ff2e7050e3324c9b67e29b6707754566f58514112a9ac73310f60cd5261930 -fritzconnection==1.9.1; python_version >= "3.8" and python_full_version < "4.0.0" \ +django==3.2.12; python_version >= "3.7" and python_full_version < "4.0.0" \ + --hash=sha256:9b06c289f9ba3a8abea16c9c9505f25107809fb933676f6c891ded270039d965 \ + --hash=sha256:9772e6935703e59e993960832d66a614cf0233a1c5123bc6224ecc6ad69e41e2 +fritzconnection==1.9.1; python_version >= "3.7" and python_full_version < "4.0.0" \ --hash=sha256:9daa9a6c8366a77a2617b34b1db9b2191bb21ba638be35d691541a0892363a16 \ --hash=sha256:244f74d62e426465108654d422d3a9e484c857b5bfaf088b623860f1874dd715 gunicorn==20.1.0; python_version >= "3.7" and python_full_version < "4.0.0" \ --hash=sha256:9dcc4547dbb1cb284accfb15ab5667a0e5d1881cc443e0677b4882a4067a807e \ --hash=sha256:e0a968b5ba15f8a328fdfd7ab1fcb5af4470c28aaf7e55df02a99bc13138e6e8 -icdiff==2.0.4; python_version >= "3.8" and python_full_version < "4.0.0" \ +icdiff==2.0.4; python_version >= "3.7" and python_full_version < "4.0.0" \ --hash=sha256:c72572e5ce087bc7a7748af2664764d4a805897caeefb665bdc12677fefb2212 -idna==3.3; python_version >= "3.8" and python_full_version < "3.0.0" or python_version >= "3.8" and python_full_version < "4.0.0" and python_full_version >= "3.6.0" \ +idna==3.3; python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "4.0.0" and python_full_version >= "3.6.0" \ --hash=sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff \ --hash=sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d -packaging==21.3; python_version >= "3.8" and python_full_version < "4.0.0" \ +importlib-metadata==4.2.0; python_version >= "3.7" and python_full_version < "4.0.0" and python_version < "3.8" \ + --hash=sha256:057e92c15bc8d9e8109738a48db0ccb31b4d9d5cfbee5a8670879a30be66304b \ + --hash=sha256:b7e52a1f8dec14a75ea73e0891f3060099ca1d8e6a462a4dff11c3e119ea1b31 +packaging==21.3; python_version >= "3.7" and python_full_version < "4.0.0" \ --hash=sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522 \ --hash=sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb -pprintpp==0.4.0; python_version >= "3.8" and python_full_version < "4.0.0" \ +pprintpp==0.4.0; python_version >= "3.7" and python_full_version < "4.0.0" \ --hash=sha256:b6b4dcdd0c0c0d75e4d7b2f21a9e933e5b2ce62b26e1a54537f9651ae5a5c01d \ --hash=sha256:ea826108e2c7f49dc6d66c752973c3fc9749142a798d6b254e1e301cfdbc6403 psycopg2==2.9.3; python_version >= "3.6" \ @@ -113,31 +99,34 @@ psycopg2==2.9.3; python_version >= "3.6" \ --hash=sha256:8cf3878353cc04b053822896bc4922b194792df9df2f1ad8da01fb3043602126 \ --hash=sha256:06f32425949bd5fe8f625c49f17ebb9784e1e4fe928b7cce72edc36fb68e4c0c \ --hash=sha256:8e841d1bf3434da985cc5ef13e6f75c8981ced601fd70cc6bf33351b91562981 -pyparsing==3.0.7; python_version >= "3.8" and python_full_version < "4.0.0" \ +pyparsing==3.0.7; python_version >= "3.7" and python_full_version < "4.0.0" \ --hash=sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484 \ --hash=sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea -python-stdnum==1.17; python_version >= "3.8" and python_full_version < "4.0.0" \ +python-stdnum==1.17; python_version >= "3.7" and python_full_version < "4.0.0" \ --hash=sha256:374e2b5e13912ccdbf50b0b23fca2c3e0531174805c32d74e145f37756328340 \ --hash=sha256:a46e6cf9652807314d369b654b255c86a59f93d18be2834f3d567ed1a346c547 +pytz==2022.1; python_version >= "3.7" and python_full_version < "4.0.0" \ + --hash=sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c \ + --hash=sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7 redis==4.2.1; python_version >= "3.7" and python_full_version < "4.0.0" \ --hash=sha256:69d05fac17bf3f43937afbb775c536eb516bd21355a4f17d59a966f4a531ce71 \ --hash=sha256:fe45513881229dbee610620b9e0817b1f48c47ba635870320fd44a712204bbdd -requests==2.27.1; python_version >= "3.8" and python_full_version < "3.0.0" or python_version >= "3.8" and python_full_version < "4.0.0" and python_full_version >= "3.6.0" \ +requests==2.27.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "4.0.0" and python_full_version >= "3.6.0" \ --hash=sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d \ --hash=sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61 -six==1.16.0; python_version >= "3.8" and python_full_version < "3.0.0" or python_version >= "3.8" and python_full_version < "4.0.0" and python_full_version >= "3.3.0" \ +six==1.16.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "4.0.0" and python_full_version >= "3.3.0" \ --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 \ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 -sqlparse==0.4.2; python_version >= "3.8" and python_full_version < "4.0.0" \ +sqlparse==0.4.2; python_version >= "3.7" and python_full_version < "4.0.0" \ --hash=sha256:48719e356bb8b42991bdbb1e8b83223757b93789c00910a616a071910ca4a64d \ --hash=sha256:0c00730c74263a94e5a9919ade150dfc3b19c574389985446148402998287dae -tzdata==2022.1; python_version >= "3.8" and python_full_version < "4.0.0" and sys_platform == "win32" \ - --hash=sha256:238e70234214138ed7b4e8a0fab0e5e13872edab3be586ab8198c407620e2ab9 \ - --hash=sha256:8b536a8ec63dc0751342b3984193a3118f8fca2afe25752bb9b7fffd398552d3 -urllib3==1.26.9; python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version < "4" and python_version >= "3.8" and python_full_version < "4.0.0" \ +typing-extensions==4.1.1; python_version >= "3.7" and python_full_version < "4.0.0" and python_version < "3.8" \ + --hash=sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2 \ + --hash=sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42 +urllib3==1.26.9; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version < "4" and python_version >= "3.7" and python_full_version < "4.0.0" \ --hash=sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14 \ --hash=sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e -webencodings==0.5.1; python_version >= "3.8" and python_full_version < "4.0.0" \ +webencodings==0.5.1; python_version >= "3.7" and python_full_version < "4.0.0" \ --hash=sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78 \ --hash=sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923 wrapt==1.14.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "4.0.0" and python_full_version >= "3.5.0" \ @@ -205,3 +194,6 @@ wrapt==1.14.0; python_version >= "3.7" and python_full_version < "3.0.0" or pyth --hash=sha256:2eca15d6b947cfff51ed76b2d60fd172c6ecd418ddab1c5126032d27f74bc350 \ --hash=sha256:bb36fbb48b22985d13a6b496ea5fb9bb2a076fea943831643836c9f6febbcfdc \ --hash=sha256:8323a43bd9c91f62bb7d4be74cc9ff10090e7ef820e27bfe8815c57e68261311 +zipp==3.7.0; python_version >= "3.7" and python_full_version < "4.0.0" and python_version < "3.8" \ + --hash=sha256:b47250dd24f92b7dd6a0a8fc5244da14608f3ca90a5efcd37a3b1642fac9a375 \ + --hash=sha256:9f50f446828eb9d45b267433fd3e9da8d801f614129124863f9c51ebceafb87d diff --git a/manifest.json b/manifest.json index dc0d521..299e7e7 100644 --- a/manifest.json +++ b/manifest.json @@ -5,8 +5,15 @@ "description": { "en": "Web based FritzBox management using Python/Django." }, - "version": "0.0.2-alpha~ynh1", + "version": "0.0.2.rc0~ynh1", "url": "https://github.com/jedie/django-fritzconnection", + "upstream": { + "license": "GPL-3.0", + "website": "https://github.com/jedie/django-fritzconnection", + "admindoc": "https://github.com/jedie/django-fritzconnection", + "userdoc": "https://github.com/jedie/django-fritzconnection", + "code": "https://github.com/jedie/django-fritzconnection" + }, "license": "GPL-3.0", "maintainer": { "name": "Jens Diemer", @@ -24,8 +31,7 @@ "install" : [ { "name": "domain", - "type": "domain", - "example": "domain.org" + "type": "domain" }, { "name": "path", @@ -35,9 +41,8 @@ }, { "name": "admin", - "type": "user", - "example": "johndoe" - } + "type": "user" + } ] } } diff --git a/poetry.lock b/poetry.lock index 9ef429d..f955008 100644 --- a/poetry.lock +++ b/poetry.lock @@ -6,6 +6,9 @@ category = "main" optional = false python-versions = ">=3.7" +[package.dependencies] +typing-extensions = {version = "*", markers = "python_version < \"3.8\""} + [package.extras] tests = ["pytest", "pytest-asyncio", "mypy (>=0.800)"] @@ -25,6 +28,9 @@ category = "main" optional = false python-versions = ">=3.6" +[package.dependencies] +typing-extensions = {version = ">=3.6.5", markers = "python_version < \"3.8\""} + [[package]] name = "atomicwrites" version = "1.4.0" @@ -47,17 +53,6 @@ docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"] -[[package]] -name = "backports.zoneinfo" -version = "0.2.1" -description = "Backport of the standard library zoneinfo module" -category = "main" -optional = false -python-versions = ">=3.6" - -[package.extras] -tzdata = ["tzdata"] - [[package]] name = "black" version = "22.3.0" @@ -72,6 +67,7 @@ mypy-extensions = ">=0.4.3" pathspec = ">=0.9.0" platformdirs = ">=2" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typed-ast = {version = ">=1.4.2", markers = "python_version < \"3.8\" and implementation_name == \"cpython\""} typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} [package.extras] @@ -143,6 +139,7 @@ python-versions = ">=3.7" [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} +importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} [[package]] name = "colorama" @@ -207,6 +204,7 @@ python-versions = ">=3.6" [package.dependencies] black = ">=21.5b1" toml = ">=0.10.0" +typing-extensions = {version = "*", markers = "python_version < \"3.8\""} [package.extras] isort = ["isort (>=5.0.1)"] @@ -245,17 +243,16 @@ python-versions = "*" [[package]] name = "django" -version = "4.0.3" -description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design." +version = "3.2.12" +description = "A high-level Python Web framework that encourages rapid development and clean, pragmatic design." category = "main" optional = false -python-versions = ">=3.8" +python-versions = ">=3.6" [package.dependencies] -asgiref = ">=3.4.1,<4" -"backports.zoneinfo" = {version = "*", markers = "python_version < \"3.9\""} +asgiref = ">=3.3.2,<4" +pytz = "*" sqlparse = ">=0.2.2" -tzdata = {version = "*", markers = "sys_platform == \"win32\""} [package.extras] argon2 = ["argon2-cffi (>=19.1.0)"] @@ -298,11 +295,11 @@ sqlparse = ">=0.2.0" [[package]] name = "django-fritzconnection" -version = "0.0.2a0" +version = "0.0.2rc0" description = "Web based FritzBox management using Python/Django." category = "main" optional = false -python-versions = ">=3.8,<4.0.0" +python-versions = ">=3.7,<4.0.0" [package.dependencies] bx_django_utils = "*" @@ -435,6 +432,7 @@ optional = false python-versions = ">=3.6" [package.dependencies] +importlib-metadata = {version = "<4.3", markers = "python_version < \"3.8\""} mccabe = ">=0.6.0,<0.7.0" pycodestyle = ">=2.8.0,<2.9.0" pyflakes = ">=2.4.0,<2.5.0" @@ -495,6 +493,22 @@ category = "main" optional = false python-versions = ">=3.5" +[[package]] +name = "importlib-metadata" +version = "4.2.0" +description = "Read metadata from Python packages" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} +zipp = ">=0.5" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] +testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"] + [[package]] name = "iniconfig" version = "1.1.1" @@ -572,6 +586,9 @@ category = "dev" optional = false python-versions = ">=3.6" +[package.dependencies] +importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} + [package.extras] dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] @@ -639,6 +656,7 @@ python-versions = ">=3.7" atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} attrs = ">=19.2.0" colorama = {version = "*", markers = "sys_platform == \"win32\""} +importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} iniconfig = "*" packaging = "*" pluggy = ">=0.12,<2.0" @@ -673,6 +691,7 @@ python-versions = ">=3.6" [package.dependencies] darker = ">=1.1.0" +typing-extensions = {version = "*", markers = "python_version < \"3.8\""} [package.extras] test = ["mypy (>=0.782)", "pytest (>=6.0.1)", "pytest-black", "pytest-isort (>=1.1.0)", "pytest-mypy"] @@ -713,6 +732,7 @@ optional = false python-versions = ">=3.6,<4" [package.dependencies] +importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} isort = ">=4.0" pytest = ">=5.0" @@ -729,6 +749,14 @@ soap = ["zeep"] soap-alt = ["suds"] soap-fallback = ["pysimplesoap"] +[[package]] +name = "pytz" +version = "2022.1" +description = "World timezone definitions, modern and historical" +category = "main" +optional = false +python-versions = "*" + [[package]] name = "pyupgrade" version = "2.31.1" @@ -751,7 +779,9 @@ python-versions = ">=3.6" [package.dependencies] async-timeout = ">=4.0.2" deprecated = ">=1.2.3" +importlib-metadata = {version = ">=1.0", markers = "python_version < \"3.8\""} packaging = ">=20.4" +typing-extensions = {version = "*", markers = "python_version < \"3.8\""} [package.extras] hiredis = ["hiredis (>=1.0.0)"] @@ -826,6 +856,7 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" [package.dependencies] colorama = {version = ">=0.4.1", markers = "platform_system == \"Windows\""} filelock = ">=3.0.0" +importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} packaging = ">=14" pluggy = ">=0.12.0" py = ">=1.4.17" @@ -838,20 +869,20 @@ docs = ["pygments-github-lexers (>=0.0.5)", "sphinx (>=2.0.0)", "sphinxcontrib-a testing = ["flaky (>=3.4.0)", "freezegun (>=0.3.11)", "pytest (>=4.0.0)", "pytest-cov (>=2.5.1)", "pytest-mock (>=1.10.0)", "pytest-randomly (>=1.0.0)", "psutil (>=5.6.1)", "pathlib2 (>=2.3.3)"] [[package]] -name = "typing-extensions" -version = "4.1.1" -description = "Backported and Experimental Type Hints for Python 3.6+" +name = "typed-ast" +version = "1.5.2" +description = "a fork of Python 2 and 3 ast modules with type comment support" category = "dev" optional = false python-versions = ">=3.6" [[package]] -name = "tzdata" -version = "2022.1" -description = "Provider of IANA time zone data" +name = "typing-extensions" +version = "4.1.1" +description = "Backported and Experimental Type Hints for Python 3.6+" category = "main" optional = false -python-versions = ">=2" +python-versions = ">=3.6" [[package]] name = "urllib3" @@ -877,6 +908,7 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" [package.dependencies] distlib = ">=0.3.1,<1" filelock = ">=3.2,<4" +importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} platformdirs = ">=2,<3" six = ">=1.9.0,<2" @@ -900,10 +932,22 @@ category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +[[package]] +name = "zipp" +version = "3.7.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"] + [metadata] lock-version = "1.1" -python-versions = ">=3.8,<4.0.0" -content-hash = "563e3ed49de687f4d2879a86eaea60c015f6611a3d752f2b699d407edda2f549" +python-versions = ">=3.7,<4.0.0" +content-hash = "88a8f1159a0ce286bc00f820a82df8729ee45f44ea9d8e8a90ab26b60ac1e4f3" [metadata.files] asgiref = [ @@ -926,24 +970,6 @@ attrs = [ {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, ] -"backports.zoneinfo" = [ - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win32.whl", hash = "sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win32.whl", hash = "sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-win32.whl", hash = "sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6"}, - {file = "backports.zoneinfo-0.2.1.tar.gz", hash = "sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2"}, -] black = [ {file = "black-22.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2497f9c2386572e28921fa8bec7be3e51de6801f7459dffd6e62492531c47e09"}, {file = "black-22.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5795a0375eb87bfe902e80e0c8cfaedf8af4d49694d69161e5bd3206c18618bb"}, @@ -1065,8 +1091,8 @@ distlib = [ {file = "distlib-0.3.4.zip", hash = "sha256:e4b58818180336dc9c529bfb9a0b58728ffc09ad92027a3f30b7cd91e3458579"}, ] django = [ - {file = "Django-4.0.3-py3-none-any.whl", hash = "sha256:1239218849e922033a35d2a2f777cb8bee18bd725416744074f455f34ff50d0c"}, - {file = "Django-4.0.3.tar.gz", hash = "sha256:77ff2e7050e3324c9b67e29b6707754566f58514112a9ac73310f60cd5261930"}, + {file = "Django-3.2.12-py3-none-any.whl", hash = "sha256:9b06c289f9ba3a8abea16c9c9505f25107809fb933676f6c891ded270039d965"}, + {file = "Django-3.2.12.tar.gz", hash = "sha256:9772e6935703e59e993960832d66a614cf0233a1c5123bc6224ecc6ad69e41e2"}, ] django-admin-sortable2 = [ {file = "django-admin-sortable2-1.0.4.tar.gz", hash = "sha256:f96044003176c6684c5f969792ca833a505d654fa0f7b24232a0a610e4332a53"}, @@ -1081,8 +1107,8 @@ django-debug-toolbar = [ {file = "django_debug_toolbar-3.2.4-py3-none-any.whl", hash = "sha256:6b633b6cfee24f232d73569870f19aa86c819d750e7f3e833f2344a9eb4b4409"}, ] django-fritzconnection = [ - {file = "django-fritzconnection-0.0.2a0.tar.gz", hash = "sha256:2a32d6c61495052a80dee93103946503e1c8b5b6a940a5d2053388bc8d3cdbf3"}, - {file = "django_fritzconnection-0.0.2a0-py3-none-any.whl", hash = "sha256:de76455e328e7f4ac929cdd32e5f50659b86b9da890003c1f3b6f35daf6008a1"}, + {file = "django-fritzconnection-0.0.2rc0.tar.gz", hash = "sha256:53904dc03672059d0459ec6e27badce3554802bae15b93e24ecc422fc6c45cc0"}, + {file = "django_fritzconnection-0.0.2rc0-py3-none-any.whl", hash = "sha256:703c3f26f653073e5a183150b9d23e4ac0c7597abb9ff16fc833ff1b7fd5c5a2"}, ] django-ipware = [ {file = "django-ipware-4.0.2.tar.gz", hash = "sha256:602a58325a4808bd19197fef2676a0b2da2df40d0ecf21be414b2ff48c72ad05"}, @@ -1142,6 +1168,10 @@ idna = [ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, ] +importlib-metadata = [ + {file = "importlib_metadata-4.2.0-py3-none-any.whl", hash = "sha256:057e92c15bc8d9e8109738a48db0ccb31b4d9d5cfbee5a8670879a30be66304b"}, + {file = "importlib_metadata-4.2.0.tar.gz", hash = "sha256:b7e52a1f8dec14a75ea73e0891f3060099ca1d8e6a462a4dff11c3e119ea1b31"}, +] iniconfig = [ {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, @@ -1235,6 +1265,10 @@ python-stdnum = [ {file = "python-stdnum-1.17.tar.gz", hash = "sha256:374e2b5e13912ccdbf50b0b23fca2c3e0531174805c32d74e145f37756328340"}, {file = "python_stdnum-1.17-py2.py3-none-any.whl", hash = "sha256:a46e6cf9652807314d369b654b255c86a59f93d18be2834f3d567ed1a346c547"}, ] +pytz = [ + {file = "pytz-2022.1-py2.py3-none-any.whl", hash = "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c"}, + {file = "pytz-2022.1.tar.gz", hash = "sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7"}, +] pyupgrade = [ {file = "pyupgrade-2.31.1-py2.py3-none-any.whl", hash = "sha256:4060a7c20c79d373a3dcf34566b275c6de6cd2b034ad22465d3263fb0de82648"}, {file = "pyupgrade-2.31.1.tar.gz", hash = "sha256:22e0ad6dd39c4381805cb059f1e691b6315c62c0ebcec98a5f29d22cd186a72a"}, @@ -1271,14 +1305,36 @@ tox = [ {file = "tox-3.24.5-py2.py3-none-any.whl", hash = "sha256:be3362472a33094bce26727f5f771ca0facf6dafa217f65875314e9a6600c95c"}, {file = "tox-3.24.5.tar.gz", hash = "sha256:67e0e32c90e278251fea45b696d0fef3879089ccbe979b0c556d35d5a70e2993"}, ] +typed-ast = [ + {file = "typed_ast-1.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:183b183b7771a508395d2cbffd6db67d6ad52958a5fdc99f450d954003900266"}, + {file = "typed_ast-1.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:676d051b1da67a852c0447621fdd11c4e104827417bf216092ec3e286f7da596"}, + {file = "typed_ast-1.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc2542e83ac8399752bc16e0b35e038bdb659ba237f4222616b4e83fb9654985"}, + {file = "typed_ast-1.5.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:74cac86cc586db8dfda0ce65d8bcd2bf17b58668dfcc3652762f3ef0e6677e76"}, + {file = "typed_ast-1.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:18fe320f354d6f9ad3147859b6e16649a0781425268c4dde596093177660e71a"}, + {file = "typed_ast-1.5.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:31d8c6b2df19a777bc8826770b872a45a1f30cfefcfd729491baa5237faae837"}, + {file = "typed_ast-1.5.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:963a0ccc9a4188524e6e6d39b12c9ca24cc2d45a71cfdd04a26d883c922b4b78"}, + {file = "typed_ast-1.5.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0eb77764ea470f14fcbb89d51bc6bbf5e7623446ac4ed06cbd9ca9495b62e36e"}, + {file = "typed_ast-1.5.2-cp36-cp36m-win_amd64.whl", hash = "sha256:294a6903a4d087db805a7656989f613371915fc45c8cc0ddc5c5a0a8ad9bea4d"}, + {file = "typed_ast-1.5.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:26a432dc219c6b6f38be20a958cbe1abffcc5492821d7e27f08606ef99e0dffd"}, + {file = "typed_ast-1.5.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7407cfcad702f0b6c0e0f3e7ab876cd1d2c13b14ce770e412c0c4b9728a0f88"}, + {file = "typed_ast-1.5.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f30ddd110634c2d7534b2d4e0e22967e88366b0d356b24de87419cc4410c41b7"}, + {file = "typed_ast-1.5.2-cp37-cp37m-win_amd64.whl", hash = "sha256:8c08d6625bb258179b6e512f55ad20f9dfef019bbfbe3095247401e053a3ea30"}, + {file = "typed_ast-1.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:90904d889ab8e81a956f2c0935a523cc4e077c7847a836abee832f868d5c26a4"}, + {file = "typed_ast-1.5.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bbebc31bf11762b63bf61aaae232becb41c5bf6b3461b80a4df7e791fabb3aca"}, + {file = "typed_ast-1.5.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c29dd9a3a9d259c9fa19d19738d021632d673f6ed9b35a739f48e5f807f264fb"}, + {file = "typed_ast-1.5.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:58ae097a325e9bb7a684572d20eb3e1809802c5c9ec7108e85da1eb6c1a3331b"}, + {file = "typed_ast-1.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:da0a98d458010bf4fe535f2d1e367a2e2060e105978873c04c04212fb20543f7"}, + {file = "typed_ast-1.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:33b4a19ddc9fc551ebabca9765d54d04600c4a50eda13893dadf67ed81d9a098"}, + {file = "typed_ast-1.5.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1098df9a0592dd4c8c0ccfc2e98931278a6c6c53cb3a3e2cf7e9ee3b06153344"}, + {file = "typed_ast-1.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42c47c3b43fe3a39ddf8de1d40dbbfca60ac8530a36c9b198ea5b9efac75c09e"}, + {file = "typed_ast-1.5.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f290617f74a610849bd8f5514e34ae3d09eafd521dceaa6cf68b3f4414266d4e"}, + {file = "typed_ast-1.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:df05aa5b241e2e8045f5f4367a9f6187b09c4cdf8578bb219861c4e27c443db5"}, + {file = "typed_ast-1.5.2.tar.gz", hash = "sha256:525a2d4088e70a9f75b08b3f87a51acc9cde640e19cc523c7e41aa355564ae27"}, +] typing-extensions = [ {file = "typing_extensions-4.1.1-py3-none-any.whl", hash = "sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2"}, {file = "typing_extensions-4.1.1.tar.gz", hash = "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42"}, ] -tzdata = [ - {file = "tzdata-2022.1-py2.py3-none-any.whl", hash = "sha256:238e70234214138ed7b4e8a0fab0e5e13872edab3be586ab8198c407620e2ab9"}, - {file = "tzdata-2022.1.tar.gz", hash = "sha256:8b536a8ec63dc0751342b3984193a3118f8fca2afe25752bb9b7fffd398552d3"}, -] urllib3 = [ {file = "urllib3-1.26.9-py2.py3-none-any.whl", hash = "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14"}, {file = "urllib3-1.26.9.tar.gz", hash = "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"}, @@ -1357,3 +1413,7 @@ wrapt = [ {file = "wrapt-1.14.0-cp39-cp39-win_amd64.whl", hash = "sha256:bb36fbb48b22985d13a6b496ea5fb9bb2a076fea943831643836c9f6febbcfdc"}, {file = "wrapt-1.14.0.tar.gz", hash = "sha256:8323a43bd9c91f62bb7d4be74cc9ff10090e7ef820e27bfe8815c57e68261311"}, ] +zipp = [ + {file = "zipp-3.7.0-py3-none-any.whl", hash = "sha256:b47250dd24f92b7dd6a0a8fc5244da14608f3ca90a5efcd37a3b1642fac9a375"}, + {file = "zipp-3.7.0.tar.gz", hash = "sha256:9f50f446828eb9d45b267433fd3e9da8d801f614129124863f9c51ebceafb87d"}, +] diff --git a/pyproject.toml b/pyproject.toml index fa0df0c..dc7ffbc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,13 +1,14 @@ [tool.poetry] name = "django-fritzconnection_ynh" -version = "0.0.2-alpha~ynh1" +version = "0.0.2.rc0~ynh1" description = "Test django-fritzconnection_ynh via local_test.py" authors = ["JensDiemer "] license = "GPL" [tool.poetry.dependencies] -python = ">=3.8,<4.0.0" -django-fritzconnection = ">=0.0.2-alpha" +# Keep Python 3.7 until Yunohost contains a newer Python Version ;) +python = ">=3.7,<4.0.0" +django-fritzconnection = ">=0.0.2rc0" # Note: "ynh" extras will install gunicorn, psycopg2, django-redis and django-axes django_yunohost_integration = {version = ">=v0.2.0", extras = ["ynh"]} diff --git a/scripts/install b/scripts/install index f3cb641..59c2632 100755 --- a/scripts/install +++ b/scripts/install @@ -134,6 +134,8 @@ ynh_replace_string --match_string="__PORT__" --replace_string="$port" --target_f ynh_store_file_checksum --file="$gunicorn_conf" cp ../conf/manage.py "$final_path/manage.py" +ynh_replace_string --match_string="__FINAL_HOME_PATH__" --replace_string="$final_path" --target_file="$final_path/manage.py" +ynh_store_file_checksum --file="$final_path/manage.py" chmod +x "$final_path/manage.py" settings="$final_path/settings.py" @@ -167,25 +169,21 @@ touch "$final_path/local_settings.py" #================================================= ynh_script_progression --message="migrate/collectstatic/createadmin..." --weight=10 -( - set +o nounset - source "${final_path}/venv/bin/activate" - set -o nounset - cd "${final_path}" +cd "$final_path" || exit - # Just for debugging: - ./manage.py diffsettings +# Just for debugging: +./manage.py diffsettings - ./manage.py migrate --no-input - ./manage.py collectstatic --no-input +./manage.py migrate --no-input +./manage.py collectstatic --no-input - # Create/update Django superuser (set unusable password, because auth done via SSOwat): - ./manage.py create_superuser --username="$admin" --email="$admin_mail" +# Create/update Django superuser (set unusable password, because auth done via SSOwat): +./manage.py create_superuser --username="$admin" --email="$admin_mail" + +# Check the configuration +# This may fail in some cases with errors, etc., but the app works and the user can fix issues later. +./manage.py check --deploy || true - # Check the configuration - # This may fail in some cases with errors, etc., but the app works and the user can fix issues later. - ./manage.py check --deploy || true -) #================================================= # SETUP LOGROTATE From 1975bbc36620f8f0addd18c5bd2d6b1ba6954ec8 Mon Sep 17 00:00:00 2001 From: JensDiemer Date: Sat, 2 Apr 2022 19:47:32 +0200 Subject: [PATCH 2/8] Bugfix DB settings Note: ``` db_name=$(ynh_sanitize_dbid --db_name="$app") db_user=$db_name ynh_app_setting_set --app="$app" --key=db_name --value="$db_name" ``` So `$db_name` is `django_fritzconnection`, but `$app` == `__APP__` is still `django-fritzconnection` ! --- conf/settings.py | 4 ++-- scripts/install | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/conf/settings.py b/conf/settings.py index 266cf85..af40036 100644 --- a/conf/settings.py +++ b/conf/settings.py @@ -73,8 +73,8 @@ MANAGERS = ADMINS DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', - 'NAME': '__APP__', - 'USER': '__APP__', + 'NAME': '__DB_NAME__', + 'USER': '__DB_USER__', 'PASSWORD': '__DB_PWD__', 'HOST': '127.0.0.1', 'PORT': '5432', # Default Postgres Port diff --git a/scripts/install b/scripts/install index 59c2632..f785a50 100755 --- a/scripts/install +++ b/scripts/install @@ -142,6 +142,8 @@ settings="$final_path/settings.py" cp "../conf/settings.py" "$settings" ynh_replace_string --match_string="__APP__" --replace_string="$app" --target_file="$settings" +ynh_replace_string --match_string="__DB_NAME__" --replace_string="$db_name" --target_file="$settings" +ynh_replace_string --match_string="__DB_USER__" --replace_string="$db_user" --target_file="$settings" ynh_replace_string --match_string="__DB_PWD__" --replace_string="$db_pwd" --target_file="$settings" ynh_replace_string --match_string="__ADMIN__" --replace_string="$admin" --target_file="$settings" ynh_replace_string --match_string="__ADMINMAIL__" --replace_string="$admin_mail" --target_file="$settings" From 5f82b8020159baa978399fc58e24484669edf295 Mon Sep 17 00:00:00 2001 From: JensDiemer Date: Sat, 2 Apr 2022 20:16:28 +0200 Subject: [PATCH 3/8] update test --- .github/workflows/pytest.yml | 9 ++------- pyproject.toml | 2 +- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 636c8af..7d336a3 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -14,7 +14,7 @@ jobs: strategy: max-parallel: 2 matrix: - python-version: [3.9, 3.8, 3.7] + python-version: ["3.10", "3.9", "3.8", "3.7"] steps: - uses: actions/checkout@v2 with: @@ -23,7 +23,7 @@ jobs: run: | git fetch origin master - name: 'Set up Python ${{ matrix.python-version }}' - uses: actions/setup-python@v1 + uses: actions/setup-python@v2 with: python-version: '${{ matrix.python-version }}' @@ -42,8 +42,3 @@ jobs: - name: 'Upload coverage report' run: bash <(curl -s https://codecov.io/bash) - - - name: 'Run linters' - if: matrix.python-version == '3.8' - run: | - make lint diff --git a/pyproject.toml b/pyproject.toml index dc7ffbc..06d3521 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -101,7 +101,7 @@ addopts = """ legacy_tox_ini = """ [tox] isolated_build = True -envlist = px310,py39,py38 +envlist = px310,py39,py38,py37 skip_missing_interpreters = True [testenv] From 777bd7a449fae62613ffa7083180639b81e21fb1 Mon Sep 17 00:00:00 2001 From: JensDiemer Date: Sat, 2 Apr 2022 20:16:43 +0200 Subject: [PATCH 4/8] update to django-fritzconnection==0.0.2rc1 --- conf/requirements.txt | 6 +++--- poetry.lock | 8 ++++---- pyproject.toml | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/conf/requirements.txt b/conf/requirements.txt index d358640..3be9927 100644 --- a/conf/requirements.txt +++ b/conf/requirements.txt @@ -40,9 +40,9 @@ django-axes==5.31.0; python_version >= "3.7" and python_full_version < "4.0.0" \ django-debug-toolbar==3.2.4; python_version >= "3.7" and python_full_version < "4.0.0" \ --hash=sha256:644bbd5c428d3283aa9115722471769cac1bec189edf3a0c855fd8ff870375a9 \ --hash=sha256:6b633b6cfee24f232d73569870f19aa86c819d750e7f3e833f2344a9eb4b4409 -django-fritzconnection==0.0.2rc0; python_version >= "3.7" and python_full_version < "4.0.0" \ - --hash=sha256:53904dc03672059d0459ec6e27badce3554802bae15b93e24ecc422fc6c45cc0 \ - --hash=sha256:703c3f26f653073e5a183150b9d23e4ac0c7597abb9ff16fc833ff1b7fd5c5a2 +django-fritzconnection==0.0.2rc1; python_version >= "3.7" and python_full_version < "4.0.0" \ + --hash=sha256:d996ec1d65c4b2f43b90b5f346964be5e885cf36721cc0f42a7952aad824c950 \ + --hash=sha256:3c08cdd2d2d92ca08c9d10d4d1cc1df91aa1f5c83488b8fba6e6847f26800976 django-ipware==4.0.2; python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "4.0.0" and python_full_version >= "3.6.0" \ --hash=sha256:602a58325a4808bd19197fef2676a0b2da2df40d0ecf21be414b2ff48c72ad05 \ --hash=sha256:878dbb06a87e25550798e9ef3204ed70a200dd8b15e47dcef848cf08244f04c9 diff --git a/poetry.lock b/poetry.lock index f955008..7ddd063 100644 --- a/poetry.lock +++ b/poetry.lock @@ -295,7 +295,7 @@ sqlparse = ">=0.2.0" [[package]] name = "django-fritzconnection" -version = "0.0.2rc0" +version = "0.0.2rc1" description = "Web based FritzBox management using Python/Django." category = "main" optional = false @@ -947,7 +947,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [metadata] lock-version = "1.1" python-versions = ">=3.7,<4.0.0" -content-hash = "88a8f1159a0ce286bc00f820a82df8729ee45f44ea9d8e8a90ab26b60ac1e4f3" +content-hash = "8f3f43b394d701d10e15f02cea8b141f719e80b65bc2340332685c92512bb8be" [metadata.files] asgiref = [ @@ -1107,8 +1107,8 @@ django-debug-toolbar = [ {file = "django_debug_toolbar-3.2.4-py3-none-any.whl", hash = "sha256:6b633b6cfee24f232d73569870f19aa86c819d750e7f3e833f2344a9eb4b4409"}, ] django-fritzconnection = [ - {file = "django-fritzconnection-0.0.2rc0.tar.gz", hash = "sha256:53904dc03672059d0459ec6e27badce3554802bae15b93e24ecc422fc6c45cc0"}, - {file = "django_fritzconnection-0.0.2rc0-py3-none-any.whl", hash = "sha256:703c3f26f653073e5a183150b9d23e4ac0c7597abb9ff16fc833ff1b7fd5c5a2"}, + {file = "django-fritzconnection-0.0.2rc1.tar.gz", hash = "sha256:d996ec1d65c4b2f43b90b5f346964be5e885cf36721cc0f42a7952aad824c950"}, + {file = "django_fritzconnection-0.0.2rc1-py3-none-any.whl", hash = "sha256:3c08cdd2d2d92ca08c9d10d4d1cc1df91aa1f5c83488b8fba6e6847f26800976"}, ] django-ipware = [ {file = "django-ipware-4.0.2.tar.gz", hash = "sha256:602a58325a4808bd19197fef2676a0b2da2df40d0ecf21be414b2ff48c72ad05"}, diff --git a/pyproject.toml b/pyproject.toml index 06d3521..4fc79a1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,7 @@ license = "GPL" [tool.poetry.dependencies] # Keep Python 3.7 until Yunohost contains a newer Python Version ;) python = ">=3.7,<4.0.0" -django-fritzconnection = ">=0.0.2rc0" +django-fritzconnection = ">=0.0.2rc1" # Note: "ynh" extras will install gunicorn, psycopg2, django-redis and django-axes django_yunohost_integration = {version = ">=v0.2.0", extras = ["ynh"]} From c8ae8cbb221676df443acbd46050b9ad3682efcf Mon Sep 17 00:00:00 2001 From: JensDiemer Date: Sat, 2 Apr 2022 20:35:22 +0200 Subject: [PATCH 5/8] update tests --- manifest.json | 2 +- pyproject.toml | 8 +++--- tests/test_django_project.py | 47 ++++++++++++++++++------------------ tests/test_project_setup.py | 17 +++++++++---- 4 files changed, 40 insertions(+), 34 deletions(-) diff --git a/manifest.json b/manifest.json index 299e7e7..196ceea 100644 --- a/manifest.json +++ b/manifest.json @@ -5,7 +5,7 @@ "description": { "en": "Web based FritzBox management using Python/Django." }, - "version": "0.0.2.rc0~ynh1", + "version": "0.0.2.rc1~ynh1", "url": "https://github.com/jedie/django-fritzconnection", "upstream": { "license": "GPL-3.0", diff --git a/pyproject.toml b/pyproject.toml index 4fc79a1..d609abb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "django-fritzconnection_ynh" -version = "0.0.2.rc0~ynh1" +version = "0.0.2.rc1~ynh1" description = "Test django-fritzconnection_ynh via local_test.py" authors = ["JensDiemer "] license = "GPL" @@ -39,7 +39,7 @@ build-backend = "poetry.core.masonry.api" [tool.darker] src = ['.'] revision = "origin/master..." -line_length = 120 +line_length = 100 verbose = true skip_string_normalization = true diff = false @@ -53,14 +53,14 @@ log_level = "INFO" [tool.flynt] -line_length = 120 +line_length = 100 [tool.isort] # https://pycqa.github.io/isort/docs/configuration/config_files/#pyprojecttoml-preferred-format atomic=true profile='black' -line_length=120 +line_length=100 skip_glob=["*/htmlcov/*","*/migrations/*"] known_first_party=["djfritz","djfritz_project","djfritz_tests"] lines_after_imports=2 diff --git a/tests/test_django_project.py b/tests/test_django_project.py index ceda7d3..850008c 100644 --- a/tests/test_django_project.py +++ b/tests/test_django_project.py @@ -1,6 +1,5 @@ from pathlib import Path -from axes.models import AccessLog from bx_django_utils.test_utils.html_assertion import HtmlAssertionMixin from django.conf import LazySettings, settings from django.contrib.auth.models import User @@ -11,7 +10,7 @@ from django.urls.base import reverse from django_yunohost_integration.test_utils import generate_basic_auth from django_yunohost_integration.views import request_media_debug_view -import inventory +import djfritz @override_settings(DEBUG=False) @@ -40,18 +39,12 @@ class DjangoYnhTestCase(HtmlAssertionMixin, TestCase): assert settings.ROOT_URLCONF == 'urls' def test_urls(self): - assert reverse('admin:index') == '/app_path/' + assert reverse('admin:index') == '/app_path/admin/' # The django_yunohost_integration debug view should not be available: with self.assertRaises(NoReverseMatch): reverse(request_media_debug_view) - # Serve user uploads via django_tools.serve_media_app: - assert settings.MEDIA_URL == '/app_path/media/' - assert reverse('serve_media_app:serve-media', kwargs={'user_token': 'token', 'path': 'foo/bar/'}) == ( - '/app_path/media/token/foo/bar/' - ) - def test_auth(self): # SecurityMiddleware should redirects all non-HTTPS requests to HTTPS: assert settings.SECURE_SSL_REDIRECT is True @@ -64,7 +57,16 @@ class DjangoYnhTestCase(HtmlAssertionMixin, TestCase): ) response = self.client.get('/app_path/', secure=True) - self.assertRedirects(response, expected_url='/app_path/login/?next=/app_path/', fetch_redirect_response=False) + self.assertRedirects( + response, expected_url='/app_path/admin/', fetch_redirect_response=False + ) + + response = self.client.get('/app_path/admin/', secure=True) + self.assertRedirects( + response, + expected_url='/app_path/admin/login/?next=/app_path/admin/', + fetch_redirect_response=False, + ) @override_settings(SECURE_SSL_REDIRECT=False) def test_create_unknown_user(self): @@ -73,7 +75,7 @@ class DjangoYnhTestCase(HtmlAssertionMixin, TestCase): self.client.cookies['SSOwAuthUser'] = 'test' response = self.client.get( - path='/app_path/', + path='/app_path/admin/', HTTP_REMOTE_USER='test', HTTP_AUTH_USER='test', HTTP_AUTHORIZATION='basic dGVzdDp0ZXN0MTIz', @@ -90,7 +92,10 @@ class DjangoYnhTestCase(HtmlAssertionMixin, TestCase): self.assert_html_parts( response, parts=( - f'Site administration | django-fritzconnection v{inventory.__version__}', + ( + 'Site administration | django-fritzconnection' + f' v{djfritz.__version__}' + ), 'test', ), ) @@ -98,12 +103,11 @@ class DjangoYnhTestCase(HtmlAssertionMixin, TestCase): @override_settings(SECURE_SSL_REDIRECT=False) def test_wrong_auth_user(self): assert User.objects.count() == 0 - assert AccessLog.objects.count() == 0 self.client.cookies['SSOwAuthUser'] = 'test' response = self.client.get( - path='/app_path/', + path='/app_path/admin/', HTTP_REMOTE_USER='test', HTTP_AUTH_USER='foobar', # <<< wrong user name HTTP_AUTHORIZATION='basic dGVzdDp0ZXN0MTIz', @@ -116,19 +120,16 @@ class DjangoYnhTestCase(HtmlAssertionMixin, TestCase): assert user.is_staff is True # Set by: django_yunohost_integration assert user.is_superuser is False - assert AccessLog.objects.count() == 1 - assert response.status_code == 403 # Forbidden @override_settings(SECURE_SSL_REDIRECT=False) def test_wrong_cookie(self): assert User.objects.count() == 0 - assert AccessLog.objects.count() == 0 self.client.cookies['SSOwAuthUser'] = 'foobar' # <<< wrong user name response = self.client.get( - path='/app_path/', + path='/app_path/admin/', HTTP_REMOTE_USER='test', HTTP_AUTH_USER='test', HTTP_AUTHORIZATION='basic dGVzdDp0ZXN0MTIz', @@ -141,8 +142,6 @@ class DjangoYnhTestCase(HtmlAssertionMixin, TestCase): assert user.is_staff is True # Set by: django_yunohost_integration assert user.is_superuser is False - assert AccessLog.objects.count() == 1 - assert response.status_code == 403 # Forbidden @override_settings(SECURE_SSL_REDIRECT=False) @@ -152,10 +151,12 @@ class DjangoYnhTestCase(HtmlAssertionMixin, TestCase): self.client.cookies['SSOwAuthUser'] = 'test' response = self.client.get( - path='/app_path/', + path='/app_path/admin/', HTTP_REMOTE_USER='test', HTTP_AUTH_USER='test', - HTTP_AUTHORIZATION=generate_basic_auth(username='foobar', password='test123'), # <<< wrong user name + HTTP_AUTHORIZATION=generate_basic_auth( + username='foobar', password='test123' + ), # <<< wrong user name ) assert User.objects.count() == 1 @@ -165,6 +166,4 @@ class DjangoYnhTestCase(HtmlAssertionMixin, TestCase): assert user.is_staff is True # Set by: django_yunohost_integration assert user.is_superuser is False - assert AccessLog.objects.count() == 1 - assert response.status_code == 403 # Forbidden diff --git a/tests/test_project_setup.py b/tests/test_project_setup.py index e48f9c5..479476f 100644 --- a/tests/test_project_setup.py +++ b/tests/test_project_setup.py @@ -6,7 +6,7 @@ from pathlib import Path from bx_py_utils.path import assert_is_file -import inventory +import djfritz PACKAGE_ROOT = Path(__file__).parent.parent @@ -21,10 +21,14 @@ def assert_file_contains_string(file_path, string): def test_version(): - version = inventory.__version__ + version = djfritz.__version__ - assert_file_contains_string(file_path=Path(PACKAGE_ROOT, 'pyproject.toml'), string=f'version = "{version}~ynh') - assert_file_contains_string(file_path=Path(PACKAGE_ROOT, 'manifest.json'), string=f'"version": "{version}~ynh') + assert_file_contains_string( + file_path=Path(PACKAGE_ROOT, 'pyproject.toml'), string=f'version = "{version}~ynh' + ) + assert_file_contains_string( + file_path=Path(PACKAGE_ROOT, 'manifest.json'), string=f'"version": "{version}~ynh' + ) def poetry_check_output(*args): @@ -57,7 +61,10 @@ def test_requirements_txt(): diff = '\n'.join( difflib.unified_diff( - current_content.splitlines(), output.splitlines(), fromfile=str(requirements_txt), tofile='FRESH EXPORT' + current_content.splitlines(), + output.splitlines(), + fromfile=str(requirements_txt), + tofile='FRESH EXPORT', ) ) print(diff) From 22ba71ee572158cfadd79b97ea4e9996fb461f05 Mon Sep 17 00:00:00 2001 From: JensDiemer Date: Sat, 2 Apr 2022 20:40:21 +0200 Subject: [PATCH 6/8] add doc/DISCLAIMER.md --- doc/DISCLAIMER.md | 137 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 doc/DISCLAIMER.md diff --git a/doc/DISCLAIMER.md b/doc/DISCLAIMER.md new file mode 100644 index 0000000..3aae51a --- /dev/null +++ b/doc/DISCLAIMER.md @@ -0,0 +1,137 @@ +[![pytest](https://github.com/YunoHost-Apps/django-fritzconnection_ynh/actions/workflows/pytest.yml/badge.svg?branch=master)](https://github.com/YunoHost-Apps/django-fritzconnection_ynh/actions/workflows/pytest.yml) [![YunoHost apps package linter](https://github.com/YunoHost-Apps/django-fritzconnection_ynh/actions/workflows/package_linter.yml/badge.svg)](https://github.com/YunoHost-Apps/django-fritzconnection_ynh/actions/workflows/package_linter.yml) [![Coverage Status on codecov.io](https://codecov.io/gh/YunoHost-Apps/django-fritzconnection_ynh/branch/master/graph/badge.svg)](https://codecov.io/gh/YunoHost-Apps/django-fritzconnection_ynh) + +Pull requests welcome ;) + +## Overview + +This package for YunoHost used [django-yunohost-integration](https://github.com/YunoHost-Apps/django_yunohost_integration) + + +## Settings and upgrades + +Almost everything related to django-fritzconnection's configuration is handled in a `"../conf/settings.py"` file. +You can edit the file `/opt/yunohost/django-fritzconnection/local_settings.py` to enable or disable features. + +Test sending emails: + +```bash +ssh admin@yourdomain.tld +root@yunohost:~# cd /opt/yunohost/django-fritzconnection/ +root@yunohost:/opt/yunohost/django-fritzconnection# source venv/bin/activate +(venv) root@yunohost:/opt/yunohost/django-fritzconnection# ./manage.py sendtestemail --admins +``` + +Background info: Error mails are send to all [settings.ADMINS](https://docs.djangoproject.com/en/2.2/ref/settings/#std:setting-ADMINS). By default the YunoHost admin is inserted here. +To check current ADMINS run: + +```bash +(venv) root@yunohost:/opt/yunohost/django-fritzconnection# ./manage.py sendtestemail --admins +``` + +If you prefere to send error emails to a extrnal email address, just do something like this: + +```bash +echo "ADMINS = (('Your Name', 'example@domain.tld'),)" >> /opt/yunohost/django-fritzconnection/local_settings.py +``` + +To check the effective settings, run this: +```bash +(venv) root@yunohost:/opt/yunohost/django-fritzconnection# ./manage.py diffsettings +``` + + +# Miscellaneous + + +## SSO authentication + +[SSOwat](https://github.com/YunoHost/SSOwat) is fully supported via [django-yunohost-integration](https://github.com/YunoHost-Apps/django_yunohost_integration): + +* First user (`$YNH_APP_ARG_ADMIN`) will be created as Django's super user +* All new users will be created as normal users +* Login via SSO is fully supported +* User Email, First / Last name will be updated from SSO data + + +--- + +# Yunohost developer commands + +To remove call e.g.: +```bash +sudo yunohost app remove django-fritzconnection +``` + +Backup / remove / restore cycle, e.g.: +```bash +yunohost backup create --apps django-fritzconnection +yunohost backup list +archives: + - django-fritzconnection-pre-upgrade1 + - 20201223-163434 +yunohost app remove django-fritzconnection +yunohost backup restore 20201223-163434 --apps django-fritzconnection +``` + +Debug installation, e.g.: +```bash +root@yunohost:~# ls -la /var/www/django-fritzconnection/ +total 18 +drwxr-xr-x 4 root root 4 Dec 8 08:36 . +drwxr-xr-x 6 root root 6 Dec 8 08:36 .. +drwxr-xr-x 2 root root 2 Dec 8 08:36 media +drwxr-xr-x 7 root root 8 Dec 8 08:40 static + +root@yunohost:~# ls -la /opt/yunohost/django-fritzconnection/ +total 58 +drwxr-xr-x 5 django-fritzconnection django-fritzconnection 11 Dec 8 08:39 . +drwxr-xr-x 3 root root 3 Dec 8 08:36 .. +-rw-r--r-- 1 django-fritzconnection django-fritzconnection 460 Dec 8 08:39 gunicorn.conf.py +-rw-r--r-- 1 django-fritzconnection django-fritzconnection 0 Dec 8 08:39 local_settings.py +-rwxr-xr-x 1 django-fritzconnection django-fritzconnection 274 Dec 8 08:39 manage.py +-rw-r--r-- 1 django-fritzconnection django-fritzconnection 171 Dec 8 08:39 secret.txt +drwxr-xr-x 6 django-fritzconnection django-fritzconnection 6 Dec 8 08:37 venv +-rw-r--r-- 1 django-fritzconnection django-fritzconnection 115 Dec 8 08:39 wsgi.py +-rw-r--r-- 1 django-fritzconnection django-fritzconnection 4737 Dec 8 08:39 settings.py + +root@yunohost:~# cd /opt/yunohost/django-fritzconnection/ +root@yunohost:/opt/yunohost/django-fritzconnection# source venv/bin/activate +(venv) root@yunohost:/opt/yunohost/django-fritzconnection# ./manage.py check +django-fritzconnection v0.8.2 (Django v2.2.17) +DJANGO_SETTINGS_MODULE='settings' +PROJECT_PATH:/opt/yunohost/django-fritzconnection/venv/lib/python3.7/site-packages +BASE_PATH:/opt/yunohost/django-fritzconnection +System check identified no issues (0 silenced). + +root@yunohost:~# tail -f /var/log/django-fritzconnection/django-fritzconnection.log +root@yunohost:~# cat /etc/systemd/system/django-fritzconnection.service + +root@yunohost:~# systemctl reload-or-restart django-fritzconnection +root@yunohost:~# journalctl --unit=django-fritzconnection --follow +``` + +## local test + +For quicker developing of django-fritzconnection in the context of YunoHost app, +it's possible to run the Django developer server with the settings +and urls made for YunoHost installation. + +e.g.: +```bash +~$ git clone https://github.com/YunoHost-Apps/django-fritzconnection_ynh.git +~$ cd django-fritzconnection_ynh/ +~/django-fritzconnection_ynh$ make +install-poetry install or update poetry +install install django-fritzconnection via poetry +update update the sources and installation +local-test Run local_test.py to run django-fritzconnection_ynh locally +~/django-fritzconnection_ynh$ make install-poetry +~/django-fritzconnection_ynh$ make install +~/django-fritzconnection_ynh$ make local-test +``` + +Notes: + +* SQlite database will be used +* A super user with username `test` and password `test` is created +* The page is available under `http://127.0.0.1:8000/app_path/` From b923fef4a4ed79ca81e4932907ce6e98f9253a66 Mon Sep 17 00:00:00 2001 From: JensDiemer Date: Sat, 2 Apr 2022 20:41:49 +0200 Subject: [PATCH 7/8] remove double urls --- manifest.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/manifest.json b/manifest.json index 196ceea..a50c42f 100644 --- a/manifest.json +++ b/manifest.json @@ -10,8 +10,6 @@ "upstream": { "license": "GPL-3.0", "website": "https://github.com/jedie/django-fritzconnection", - "admindoc": "https://github.com/jedie/django-fritzconnection", - "userdoc": "https://github.com/jedie/django-fritzconnection", "code": "https://github.com/jedie/django-fritzconnection" }, "license": "GPL-3.0", From 83f4cec116c4c397408db3682cf4655a751c491b Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Sat, 2 Apr 2022 18:41:54 +0000 Subject: [PATCH 8/8] Auto-update README --- README.md | 72 ++++++++++++--------- README_fr.md | 178 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 219 insertions(+), 31 deletions(-) create mode 100644 README_fr.md diff --git a/README.md b/README.md index 91cade5..08c7467 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,34 @@ + + # django-fritzconnection for YunoHost -[![Integration level](https://dash.yunohost.org/integration/django-fritzconnection.svg)](https://dash.yunohost.org/appci/app/django-fritzconnection) [![CI Pipeline](https://ci-apps.yunohost.org/ci/badges/django-fritzconnection.status.svg)](https://ci-apps.yunohost.org/ci/apps/django-fritzconnection/) [![Maintain status](https://ci-apps.yunohost.org/ci/badges/django-fritzconnection.maintain.svg)](https://dash.yunohost.org/appci/app/django-fritzconnection) - -[![pytest](https://github.com/YunoHost-Apps/django-fritzconnection_ynh/actions/workflows/pytest.yml/badge.svg?branch=master)](https://github.com/YunoHost-Apps/django-fritzconnection_ynh/actions/workflows/pytest.yml) [![YunoHost apps package linter](https://github.com/YunoHost-Apps/django-fritzconnection_ynh/actions/workflows/package_linter.yml/badge.svg)](https://github.com/YunoHost-Apps/django-fritzconnection_ynh/actions/workflows/package_linter.yml) [![Coverage Status on codecov.io](https://codecov.io/gh/YunoHost-Apps/django-fritzconnection_ynh/branch/master/graph/badge.svg)](https://codecov.io/gh/YunoHost-Apps/django-fritzconnection_ynh) - +[![Integration level](https://dash.yunohost.org/integration/django-fritzconnection.svg)](https://dash.yunohost.org/appci/app/django-fritzconnection) ![](https://ci-apps.yunohost.org/ci/badges/django-fritzconnection.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/django-fritzconnection.maintain.svg) [![Install django-fritzconnection with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=django-fritzconnection) +*[Lire ce readme en français.](./README_fr.md)* + > *This package allows you to install django-fritzconnection quickly and simply on a YunoHost server. If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/install) to learn how to install it.* +## Overview + +Web based FritzBox management using Python/Django. + +**Shipped version:** 0.0.2.rc1~ynh1 + + + +## Disclaimers / important information + +[![pytest](https://github.com/YunoHost-Apps/django-fritzconnection_ynh/actions/workflows/pytest.yml/badge.svg?branch=master)](https://github.com/YunoHost-Apps/django-fritzconnection_ynh/actions/workflows/pytest.yml) [![YunoHost apps package linter](https://github.com/YunoHost-Apps/django-fritzconnection_ynh/actions/workflows/package_linter.yml/badge.svg)](https://github.com/YunoHost-Apps/django-fritzconnection_ynh/actions/workflows/package_linter.yml) [![Coverage Status on codecov.io](https://codecov.io/gh/YunoHost-Apps/django-fritzconnection_ynh/branch/master/graph/badge.svg)](https://codecov.io/gh/YunoHost-Apps/django-fritzconnection_ynh) + Pull requests welcome ;) ## Overview -[django-fritzconnection](https://github.com/jedie/django-fritzconnection) is a libre Web based FritzBox management using [Python](https://www.python.org/)/[Django](https://www.djangoproject.com/). - This package for YunoHost used [django-yunohost-integration](https://github.com/YunoHost-Apps/django_yunohost_integration) @@ -64,33 +78,9 @@ To check the effective settings, run this: * User Email, First / Last name will be updated from SSO data -## Links - - * Report a bug about this package: https://github.com/YunoHost-Apps/django-fritzconnection_ynh - * Report a bug about django-fritzconnection itself: https://github.com/jedie/django-fritzconnection - * YunoHost website: https://yunohost.org/ - --- -# Developer info - -## package installation / debugging - -Please send your pull request to https://github.com/YunoHost-Apps/django-fritzconnection_ynh - -Try 'main' branch, e.g.: -```bash -sudo yunohost app install https://github.com/YunoHost-Apps/django-fritzconnection_ynh/tree/master --debug -or -sudo yunohost app upgrade django-fritzconnection -u https://github.com/YunoHost-Apps/django-fritzconnection_ynh/tree/master --debug -``` - -Try 'testing' branch, e.g.: -```bash -sudo yunohost app install https://github.com/YunoHost-Apps/django-fritzconnection_ynh/tree/testing --debug -or -sudo yunohost app upgrade django-fritzconnection -u https://github.com/YunoHost-Apps/django-fritzconnection_ynh/tree/testing --debug -``` +# Yunohost developer commands To remove call e.g.: ```bash @@ -170,3 +160,23 @@ Notes: * SQlite database will be used * A super user with username `test` and password `test` is created * The page is available under `http://127.0.0.1:8000/app_path/` + +## Documentation and resources + +* Official app website: https://github.com/jedie/django-fritzconnection +* Upstream app code repository: https://github.com/jedie/django-fritzconnection +* YunoHost documentation for this app: https://yunohost.org/app_django-fritzconnection +* Report a bug: https://github.com/YunoHost-Apps/django-fritzconnection_ynh/issues + +## Developer info + +Please send your pull request to the [testing branch](https://github.com/YunoHost-Apps/django-fritzconnection_ynh/tree/testing). + +To try the testing branch, please proceed like that. +``` +sudo yunohost app install https://github.com/YunoHost-Apps/django-fritzconnection_ynh/tree/testing --debug +or +sudo yunohost app upgrade django-fritzconnection -u https://github.com/YunoHost-Apps/django-fritzconnection_ynh/tree/testing --debug +``` + +**More info regarding app packaging:** https://yunohost.org/packaging_apps \ No newline at end of file diff --git a/README_fr.md b/README_fr.md new file mode 100644 index 0000000..9b1f8dc --- /dev/null +++ b/README_fr.md @@ -0,0 +1,178 @@ +# django-fritzconnection pour YunoHost + +[![Niveau d'intégration](https://dash.yunohost.org/integration/django-fritzconnection.svg)](https://dash.yunohost.org/appci/app/django-fritzconnection) ![](https://ci-apps.yunohost.org/ci/badges/django-fritzconnection.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/django-fritzconnection.maintain.svg) +[![Installer django-fritzconnection avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=django-fritzconnection) + +*[Read this readme in english.](./README.md)* +*[Lire ce readme en français.](./README_fr.md)* + +> *Ce package vous permet d'installer django-fritzconnection rapidement et simplement sur un serveur YunoHost. +Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour savoir comment l'installer et en profiter.* + +## Vue d'ensemble + + + +**Version incluse :** 0.0.2.rc1~ynh1 + + + +## Avertissements / informations importantes + +[![pytest](https://github.com/YunoHost-Apps/django-fritzconnection_ynh/actions/workflows/pytest.yml/badge.svg?branch=master)](https://github.com/YunoHost-Apps/django-fritzconnection_ynh/actions/workflows/pytest.yml) [![YunoHost apps package linter](https://github.com/YunoHost-Apps/django-fritzconnection_ynh/actions/workflows/package_linter.yml/badge.svg)](https://github.com/YunoHost-Apps/django-fritzconnection_ynh/actions/workflows/package_linter.yml) [![Coverage Status on codecov.io](https://codecov.io/gh/YunoHost-Apps/django-fritzconnection_ynh/branch/master/graph/badge.svg)](https://codecov.io/gh/YunoHost-Apps/django-fritzconnection_ynh) + +Pull requests welcome ;) + +## Overview + +This package for YunoHost used [django-yunohost-integration](https://github.com/YunoHost-Apps/django_yunohost_integration) + + +## Settings and upgrades + +Almost everything related to django-fritzconnection's configuration is handled in a `"../conf/settings.py"` file. +You can edit the file `/opt/yunohost/django-fritzconnection/local_settings.py` to enable or disable features. + +Test sending emails: + +```bash +ssh admin@yourdomain.tld +root@yunohost:~# cd /opt/yunohost/django-fritzconnection/ +root@yunohost:/opt/yunohost/django-fritzconnection# source venv/bin/activate +(venv) root@yunohost:/opt/yunohost/django-fritzconnection# ./manage.py sendtestemail --admins +``` + +Background info: Error mails are send to all [settings.ADMINS](https://docs.djangoproject.com/en/2.2/ref/settings/#std:setting-ADMINS). By default the YunoHost admin is inserted here. +To check current ADMINS run: + +```bash +(venv) root@yunohost:/opt/yunohost/django-fritzconnection# ./manage.py sendtestemail --admins +``` + +If you prefere to send error emails to a extrnal email address, just do something like this: + +```bash +echo "ADMINS = (('Your Name', 'example@domain.tld'),)" >> /opt/yunohost/django-fritzconnection/local_settings.py +``` + +To check the effective settings, run this: +```bash +(venv) root@yunohost:/opt/yunohost/django-fritzconnection# ./manage.py diffsettings +``` + + +# Miscellaneous + + +## SSO authentication + +[SSOwat](https://github.com/YunoHost/SSOwat) is fully supported via [django-yunohost-integration](https://github.com/YunoHost-Apps/django_yunohost_integration): + +* First user (`$YNH_APP_ARG_ADMIN`) will be created as Django's super user +* All new users will be created as normal users +* Login via SSO is fully supported +* User Email, First / Last name will be updated from SSO data + + +--- + +# Yunohost developer commands + +To remove call e.g.: +```bash +sudo yunohost app remove django-fritzconnection +``` + +Backup / remove / restore cycle, e.g.: +```bash +yunohost backup create --apps django-fritzconnection +yunohost backup list +archives: + - django-fritzconnection-pre-upgrade1 + - 20201223-163434 +yunohost app remove django-fritzconnection +yunohost backup restore 20201223-163434 --apps django-fritzconnection +``` + +Debug installation, e.g.: +```bash +root@yunohost:~# ls -la /var/www/django-fritzconnection/ +total 18 +drwxr-xr-x 4 root root 4 Dec 8 08:36 . +drwxr-xr-x 6 root root 6 Dec 8 08:36 .. +drwxr-xr-x 2 root root 2 Dec 8 08:36 media +drwxr-xr-x 7 root root 8 Dec 8 08:40 static + +root@yunohost:~# ls -la /opt/yunohost/django-fritzconnection/ +total 58 +drwxr-xr-x 5 django-fritzconnection django-fritzconnection 11 Dec 8 08:39 . +drwxr-xr-x 3 root root 3 Dec 8 08:36 .. +-rw-r--r-- 1 django-fritzconnection django-fritzconnection 460 Dec 8 08:39 gunicorn.conf.py +-rw-r--r-- 1 django-fritzconnection django-fritzconnection 0 Dec 8 08:39 local_settings.py +-rwxr-xr-x 1 django-fritzconnection django-fritzconnection 274 Dec 8 08:39 manage.py +-rw-r--r-- 1 django-fritzconnection django-fritzconnection 171 Dec 8 08:39 secret.txt +drwxr-xr-x 6 django-fritzconnection django-fritzconnection 6 Dec 8 08:37 venv +-rw-r--r-- 1 django-fritzconnection django-fritzconnection 115 Dec 8 08:39 wsgi.py +-rw-r--r-- 1 django-fritzconnection django-fritzconnection 4737 Dec 8 08:39 settings.py + +root@yunohost:~# cd /opt/yunohost/django-fritzconnection/ +root@yunohost:/opt/yunohost/django-fritzconnection# source venv/bin/activate +(venv) root@yunohost:/opt/yunohost/django-fritzconnection# ./manage.py check +django-fritzconnection v0.8.2 (Django v2.2.17) +DJANGO_SETTINGS_MODULE='settings' +PROJECT_PATH:/opt/yunohost/django-fritzconnection/venv/lib/python3.7/site-packages +BASE_PATH:/opt/yunohost/django-fritzconnection +System check identified no issues (0 silenced). + +root@yunohost:~# tail -f /var/log/django-fritzconnection/django-fritzconnection.log +root@yunohost:~# cat /etc/systemd/system/django-fritzconnection.service + +root@yunohost:~# systemctl reload-or-restart django-fritzconnection +root@yunohost:~# journalctl --unit=django-fritzconnection --follow +``` + +## local test + +For quicker developing of django-fritzconnection in the context of YunoHost app, +it's possible to run the Django developer server with the settings +and urls made for YunoHost installation. + +e.g.: +```bash +~$ git clone https://github.com/YunoHost-Apps/django-fritzconnection_ynh.git +~$ cd django-fritzconnection_ynh/ +~/django-fritzconnection_ynh$ make +install-poetry install or update poetry +install install django-fritzconnection via poetry +update update the sources and installation +local-test Run local_test.py to run django-fritzconnection_ynh locally +~/django-fritzconnection_ynh$ make install-poetry +~/django-fritzconnection_ynh$ make install +~/django-fritzconnection_ynh$ make local-test +``` + +Notes: + +* SQlite database will be used +* A super user with username `test` and password `test` is created +* The page is available under `http://127.0.0.1:8000/app_path/` + +## Documentations et ressources + +* Site officiel de l'app : https://github.com/jedie/django-fritzconnection +* Dépôt de code officiel de l'app : https://github.com/jedie/django-fritzconnection +* Documentation YunoHost pour cette app : https://yunohost.org/app_django-fritzconnection +* Signaler un bug : https://github.com/YunoHost-Apps/django-fritzconnection_ynh/issues + +## Informations pour les développeurs + +Merci de faire vos pull request sur la [branche testing](https://github.com/YunoHost-Apps/django-fritzconnection_ynh/tree/testing). + +Pour essayer la branche testing, procédez comme suit. +``` +sudo yunohost app install https://github.com/YunoHost-Apps/django-fritzconnection_ynh/tree/testing --debug +ou +sudo yunohost app upgrade django-fritzconnection -u https://github.com/YunoHost-Apps/django-fritzconnection_ynh/tree/testing --debug +``` + +**Plus d'infos sur le packaging d'applications :** https://yunohost.org/packaging_apps \ No newline at end of file