I'm testing the 1.4.0rc3 on the production platform I'm working with here, baby-stepping to Py3 support but today, still using Py2.
I did an in-place upgrade from the OctoPrint -> Settings area, having adjusted the Software Update -> gear icon settings.
2019-12-20 12:57:18,995 /home/pi/oprint/bin/python -m pip --disable-pip-version-check install https://github.com/foosel/OctoPrint/archive/1.4.0rc3.zip --no-cache-dir
2019-12-20 12:57:20,609 > Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
2019-12-20 12:57:20,611 > Collecting https://github.com/foosel/OctoPrint/archive/1.4.0rc3.zip
2019-12-20 12:57:31,620 > Downloading https://github.com/foosel/OctoPrint/archive/1.4.0rc3.zip
2019-12-20 12:57:56,636 > Collecting flask<0.13,>=0.12
2019-12-20 12:58:01,889 > Downloading https://files.pythonhosted.org/packages/2e/48/f1936dadac2326b3d73f2fe0a964a87d16be16eb9d7fc56f09c1bea3d17c/Flask-0.12.4-py2.py3-none-any.whl (81kB)
2019-12-20 12:58:01,890 > Requirement already satisfied: Jinja2<2.9,>=2.8.1 in ./oprint/lib/python2.7/site-packages (from OctoPrint==1.4.0rc3) (2.8.1)
2019-12-20 12:58:01,891 > Requirement already satisfied: tornado==4.5.3 in ./oprint/lib/python2.7/site-packages (from OctoPrint==1.4.0rc3) (4.5.3)
2019-12-20 12:58:01,891 > Requirement already satisfied: regex!=2018.11.6 in ./oprint/lib/python2.7/site-packages (from OctoPrint==1.4.0rc3) (2019.8.19)
2019-12-20 12:58:07,958 > Collecting Flask-Login<0.5,>=0.4.1
2019-12-20 12:58:25,233 > Downloading https://www.piwheels.org/simple/flask-login/Flask_Login-0.4.1-py2.py3-none-any.whl
2019-12-20 12:58:25,234 > Requirement already satisfied: Flask-Babel<0.13,>=0.12 in ./oprint/lib/python2.7/site-packages (from OctoPrint==1.4.0rc3) (0.12.2)
2019-12-20 12:58:25,234 > Requirement already satisfied: Flask-Assets<0.13,>=0.12 in ./oprint/lib/python2.7/site-packages (from OctoPrint==1.4.0rc3) (0.12)
2019-12-20 12:58:25,235 > Requirement already satisfied: blinker<1.5,>=1.4 in ./oprint/lib/python2.7/site-packages (from OctoPrint==1.4.0rc3) (1.4)
2019-12-20 12:58:25,235 > Collecting werkzeug<0.17,>=0.16
2019-12-20 12:58:25,235 > Downloading https://files.pythonhosted.org/packages/ce/42/3aeda98f96e85fd26180534d36570e4d18108d62ae36f87694b476b83d6f/Werkzeug-0.16.0-py2.py3-none-any.whl (327kB)
2019-12-20 12:58:25,235 > Requirement already satisfied: cachelib<0.2,>=0.1 in ./oprint/lib/python2.7/site-packages (from OctoPrint==1.4.0rc3) (0.1)
2019-12-20 12:58:25,236 > Requirement already satisfied: PyYAML<6,>=5.1 in ./oprint/lib/python2.7/site-packages (from OctoPrint==1.4.0rc3) (5.1.2)
2019-12-20 12:58:25,236 > Collecting markdown<3.2,>=3.1
2019-12-20 12:58:25,236 > Downloading https://www.piwheels.org/simple/markdown/Markdown-3.1.1-py2.py3-none-any.whl (87kB)
2019-12-20 12:58:25,236 > Requirement already satisfied: pyserial<3.5,>=3.4 in ./oprint/lib/python2.7/site-packages (from OctoPrint==1.4.0rc3) (3.4)
2019-12-20 12:58:25,236 > Requirement already satisfied: netaddr<0.8,>=0.7.19 in ./oprint/lib/python2.7/site-packages (from OctoPrint==1.4.0rc3) (0.7.19)
2019-12-20 12:58:25,237 > Requirement already satisfied: watchdog<0.10,>=0.9.0 in ./oprint/lib/python2.7/site-packages (from OctoPrint==1.4.0rc3) (0.9.0)
2019-12-20 12:58:25,237 > Requirement already satisfied: sarge==0.1.5post0 in ./oprint/lib/python2.7/site-packages (from OctoPrint==1.4.0rc3) (0.1.5.post0)
2019-12-20 12:58:25,237 > Requirement already satisfied: netifaces<0.11,>=0.10.9 in ./oprint/lib/python2.7/site-packages (from OctoPrint==1.4.0rc3) (0.10.9)
2019-12-20 12:58:25,237 > Requirement already satisfied: pylru<1.3,>=1.2 in ./oprint/lib/python2.7/site-packages (from OctoPrint==1.4.0rc3) (1.2.0)
2019-12-20 12:58:25,237 > Requirement already satisfied: rsa<5,>=4.0 in ./oprint/lib/python2.7/site-packages (from OctoPrint==1.4.0rc3) (4.0)
2019-12-20 12:58:25,238 > Requirement already satisfied: pkginfo<1.6,>=1.5.0.1 in ./oprint/lib/python2.7/site-packages (from OctoPrint==1.4.0rc3) (1.5.0.1)
2019-12-20 12:58:25,238 > Requirement already satisfied: requests<3,>=2.22.0 in ./oprint/lib/python2.7/site-packages (from OctoPrint==1.4.0rc3) (2.22.0)
2019-12-20 12:58:25,238 > Collecting semantic_version<2.9,>=2.8
2019-12-20 12:58:25,238 > Downloading https://www.piwheels.org/simple/semantic-version/semantic_version-2.8.3-py2.py3-none-any.whl
2019-12-20 12:58:26,654 > Collecting psutil<5.7,>=5.6.5
2019-12-20 12:58:26,654 > Downloading https://files.pythonhosted.org/packages/73/93/4f8213fbe66fc20cb904f35e6e04e20b47b85bee39845cc66a0bcf5ccdcb/psutil-5.6.7.tar.gz (448kB)
2019-12-20 12:58:29,657 > Requirement already satisfied: Click<8,>=7 in ./oprint/lib/python2.7/site-packages (from OctoPrint==1.4.0rc3) (7.0)
2019-12-20 12:58:29,659 > Requirement already satisfied: awesome-slugify<1.7,>=1.6.5 in ./oprint/lib/python2.7/site-packages (from OctoPrint==1.4.0rc3) (1.6.5)
2019-12-20 12:58:29,660 > Requirement already satisfied: feedparser<5.3,>=5.2.1 in ./oprint/lib/python2.7/site-packages (from OctoPrint==1.4.0rc3) (5.2.1)
2019-12-20 12:58:35,778 > Collecting future<0.19,>=0.18.2
2019-12-20 12:58:35,779 > Downloading https://files.pythonhosted.org/packages/45/0b/38b06fd9b92dc2b68d58b75f900e97884c45bedd2ff83203d933cf5851c9/future-0.18.2.tar.gz (829kB)
2019-12-20 12:58:37,117 > Requirement already satisfied: websocket-client<0.57,>=0.56 in ./oprint/lib/python2.7/site-packages (from OctoPrint==1.4.0rc3) (0.56.0)
2019-12-20 12:58:37,118 > Requirement already satisfied: wrapt<1.12,>=1.11.2 in ./oprint/lib/python2.7/site-packages (from OctoPrint==1.4.0rc3) (1.11.2)
2019-12-20 12:58:37,118 > Requirement already satisfied: emoji<0.6,>=0.5.4 in ./oprint/lib/python2.7/site-packages (from OctoPrint==1.4.0rc3) (0.5.4)
2019-12-20 12:58:37,119 > Requirement already satisfied: frozendict<1.3,>=1.2 in ./oprint/lib/python2.7/site-packages (from OctoPrint==1.4.0rc3) (1.2)
2019-12-20 12:58:37,620 ! WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', BadStatusLine('No status line received - the server has closed the connection',))': /simple/sentry-sdk/
2019-12-20 12:58:44,569 > Collecting sentry-sdk==0.13.2
2019-12-20 12:58:44,570 > Downloading https://www.piwheels.org/simple/sentry-sdk/sentry_sdk-0.13.2-py2.py3-none-any.whl (91kB)
2019-12-20 12:58:44,570 > Requirement already satisfied: filetype<2,>=1.0.5 in ./oprint/lib/python2.7/site-packages (from OctoPrint==1.4.0rc3) (1.0.5)
2019-12-20 12:58:44,570 > Collecting futures<3.4,>=3.3
2019-12-20 12:58:44,571 > Downloading https://files.pythonhosted.org/packages/d8/a6/f46ae3f1da0cd4361c344888f59ec2f5785e69c872e175a748ef6071cdb5/futures-3.3.0-py2-none-any.whl
2019-12-20 12:58:44,571 > Requirement already satisfied: monotonic<1.6,>=1.5 in ./oprint/lib/python2.7/site-packages (from OctoPrint==1.4.0rc3) (1.5)
2019-12-20 12:58:44,571 > Requirement already satisfied: scandir<1.11,>=1.10 in ./oprint/lib/python2.7/site-packages (from OctoPrint==1.4.0rc3) (1.10.0)
2019-12-20 12:58:44,571 > Requirement already satisfied: chainmap<1.1,>=1.0.3 in ./oprint/lib/python2.7/site-packages (from OctoPrint==1.4.0rc3) (1.0.3)
2019-12-20 12:58:44,571 > Requirement already satisfied: typing<4,>=3.7.4.1 in ./oprint/lib/python2.7/site-packages (from OctoPrint==1.4.0rc3) (3.7.4.1)
2019-12-20 12:58:44,572 > Requirement already satisfied: itsdangerous>=0.21 in ./oprint/lib/python2.7/site-packages (from flask<0.13,>=0.12->OctoPrint==1.4.0rc3) (1.1.0)
2019-12-20 12:58:44,572 > Requirement already satisfied: MarkupSafe in ./oprint/lib/python2.7/site-packages (from Jinja2<2.9,>=2.8.1->OctoPrint==1.4.0rc3) (1.1.1)
2019-12-20 12:58:44,572 > Requirement already satisfied: backports-abc>=0.4 in ./oprint/lib/python2.7/site-packages (from tornado==4.5.3->OctoPrint==1.4.0rc3) (0.5)
2019-12-20 12:58:44,572 > Requirement already satisfied: singledispatch in ./oprint/lib/python2.7/site-packages (from tornado==4.5.3->OctoPrint==1.4.0rc3) (3.4.0.3)
2019-12-20 12:58:44,573 > Requirement already satisfied: certifi in ./oprint/lib/python2.7/site-packages (from tornado==4.5.3->OctoPrint==1.4.0rc3) (2019.9.11)
2019-12-20 12:58:44,573 > Requirement already satisfied: Babel>=2.3 in ./oprint/lib/python2.7/site-packages (from Flask-Babel<0.13,>=0.12->OctoPrint==1.4.0rc3) (2.7.0)
2019-12-20 12:58:44,573 > Requirement already satisfied: webassets>=0.11.1 in ./oprint/lib/python2.7/site-packages (from Flask-Assets<0.13,>=0.12->OctoPrint==1.4.0rc3) (0.12.1)
2019-12-20 12:58:44,574 > Requirement already satisfied: setuptools>=36 in ./oprint/lib/python2.7/site-packages (from markdown<3.2,>=3.1->OctoPrint==1.4.0rc3) (41.5.1)
2019-12-20 12:58:44,574 > Requirement already satisfied: pathtools>=0.1.1 in ./oprint/lib/python2.7/site-packages (from watchdog<0.10,>=0.9.0->OctoPrint==1.4.0rc3) (0.1.2)
2019-12-20 12:58:44,574 > Requirement already satisfied: argh>=0.24.1 in ./oprint/lib/python2.7/site-packages (from watchdog<0.10,>=0.9.0->OctoPrint==1.4.0rc3) (0.26.2)
2019-12-20 12:58:44,574 > Requirement already satisfied: pyasn1>=0.1.3 in ./oprint/lib/python2.7/site-packages (from rsa<5,>=4.0->OctoPrint==1.4.0rc3) (0.4.7)
2019-12-20 12:58:44,574 > Requirement already satisfied: idna<2.9,>=2.5 in ./oprint/lib/python2.7/site-packages (from requests<3,>=2.22.0->OctoPrint==1.4.0rc3) (2.8)
2019-12-20 12:58:44,575 > Requirement already satisfied: chardet<3.1.0,>=3.0.2 in ./oprint/lib/python2.7/site-packages (from requests<3,>=2.22.0->OctoPrint==1.4.0rc3) (3.0.4)
2019-12-20 12:58:44,575 > Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in ./oprint/lib/python2.7/site-packages (from requests<3,>=2.22.0->OctoPrint==1.4.0rc3) (1.25.6)
2019-12-20 12:58:44,575 > Requirement already satisfied: Unidecode<0.05,>=0.04.14 in ./oprint/lib/python2.7/site-packages (from awesome-slugify<1.7,>=1.6.5->OctoPrint==1.4.0rc3) (0.4.21)
2019-12-20 12:58:44,575 > Requirement already satisfied: six in ./oprint/lib/python2.7/site-packages (from websocket-client<0.57,>=0.56->OctoPrint==1.4.0rc3) (1.12.0)
2019-12-20 12:58:44,575 > Requirement already satisfied: pytz>=2015.7 in ./oprint/lib/python2.7/site-packages (from Babel>=2.3->Flask-Babel<0.13,>=0.12->OctoPrint==1.4.0rc3) (2019.3)
2019-12-20 12:58:44,576 > Building wheels for collected packages: OctoPrint, psutil, future
2019-12-20 12:58:44,576 > Building wheel for OctoPrint (setup.py): started
2019-12-20 12:58:48,993 > Building wheel for OctoPrint (setup.py): finished with status 'done'
2019-12-20 12:58:48,993 > Created wheel for OctoPrint: filename=OctoPrint-1.4.0rc3-py2.py3-none-any.whl size=3105301 sha256=1502b201a2f42eb21ceae9691f90cd18a0f1a82ceb9ab94ef875331b8821be1b
2019-12-20 12:58:48,994 > Stored in directory: /tmp/pip-ephem-wheel-cache-eLnuAq/wheels/98/ff/4d/ae6e9513eb8d95395653ad7912629b7fd3c2540f34e0cfef9e
2019-12-20 12:58:48,994 > Building wheel for psutil (setup.py): started
2019-12-20 12:58:53,997 > Building wheel for psutil (setup.py): finished with status 'done'
2019-12-20 12:58:53,998 > Created wheel for psutil: filename=psutil-5.6.7-cp27-cp27mu-linux_armv7l.whl size=273436 sha256=4734cc1b578c4816b71f8c1dab3ddf4785a933a11fc670e286af0ef43b8fdcf9
2019-12-20 12:58:53,998 > Stored in directory: /tmp/pip-ephem-wheel-cache-eLnuAq/wheels/52/41/b0/bf50409fe2b1d3b79afa3eed71b54b3e30fe5b695db2c7ba2e
2019-12-20 12:58:53,999 > Building wheel for future (setup.py): started
2019-12-20 12:58:56,090 > Building wheel for future (setup.py): finished with status 'done'
2019-12-20 12:58:56,090 > Created wheel for future: filename=future-0.18.2-cp27-none-any.whl size=502568 sha256=2d8c378a14587a13a3e30f896b3b111218a294c66861c96040c5568b30a0b9c3
2019-12-20 12:58:56,090 > Stored in directory: /tmp/pip-ephem-wheel-cache-eLnuAq/wheels/8b/99/a0/81daf51dcd359a9377b110a8a886b3895921802d2fc1b2397e
2019-12-20 12:58:56,090 > Successfully built OctoPrint psutil future
2019-12-20 12:58:56,091 > Installing collected packages: werkzeug, flask, Flask-Login, markdown, semantic-version, psutil, future, sentry-sdk, futures, OctoPrint
2019-12-20 12:58:56,091 > Found existing installation: Werkzeug 0.15.6
2019-12-20 12:58:56,091 > Uninstalling Werkzeug-0.15.6:
2019-12-20 12:58:56,092 > Successfully uninstalled Werkzeug-0.15.6
2019-12-20 12:58:58,095 > Found existing installation: Flask 0.10.1
2019-12-20 12:59:01,380 > Uninstalling Flask-0.10.1:
2019-12-20 12:59:01,381 > Successfully uninstalled Flask-0.10.1
2019-12-20 12:59:01,381 > Found existing installation: Flask-Login 0.2.11
2019-12-20 12:59:01,381 > Uninstalling Flask-Login-0.2.11:
2019-12-20 12:59:01,381 > Successfully uninstalled Flask-Login-0.2.11
2019-12-20 12:59:01,382 > Found existing installation: Markdown 3.0.1
2019-12-20 12:59:01,382 > Uninstalling Markdown-3.0.1:
2019-12-20 12:59:01,382 > Successfully uninstalled Markdown-3.0.1
2019-12-20 12:59:01,382 > Found existing installation: semantic-version 2.6.0
2019-12-20 12:59:02,712 > Uninstalling semantic-version-2.6.0:
2019-12-20 12:59:02,713 > Successfully uninstalled semantic-version-2.6.0
2019-12-20 12:59:02,713 > Found existing installation: psutil 5.6.3
2019-12-20 12:59:02,714 > Uninstalling psutil-5.6.3:
2019-12-20 12:59:02,714 > Successfully uninstalled psutil-5.6.3
2019-12-20 12:59:02,715 > Found existing installation: future 0.17.1
2019-12-20 12:59:02,715 > Uninstalling future-0.17.1:
2019-12-20 12:59:02,715 > Successfully uninstalled future-0.17.1
2019-12-20 12:59:04,016 > Found existing installation: sentry-sdk 0.7.7
2019-12-20 12:59:04,017 > Uninstalling sentry-sdk-0.7.7:
2019-12-20 12:59:04,017 > Successfully uninstalled sentry-sdk-0.7.7
2019-12-20 12:59:04,018 > Found existing installation: futures 3.2.0
2019-12-20 12:59:04,018 > Uninstalling futures-3.2.0:
2019-12-20 12:59:04,018 > Successfully uninstalled futures-3.2.0
2019-12-20 12:59:04,018 > Found existing installation: OctoPrint 1.3.12
2019-12-20 12:59:04,019 > Uninstalling OctoPrint-1.3.12:
2019-12-20 12:59:04,019 > Successfully uninstalled OctoPrint-1.3.12
2019-12-20 12:59:08,022 > Successfully installed Flask-Login-0.4.1 OctoPrint-1.4.0rc3 flask-0.12.4 future-0.18.2 futures-3.3.0 markdown-3.1.1 psutil-5.6.7 semantic-version-2.8.3 sentry-sdk-0.13.2 werkzeug-0.16.0
- My user-add/remove features seem to work as expected.
- I had a problem initially with this code...
Before:
from octoprint.server import userManager
opUsers = userManager.get_all_users()
After:
from octoprint.server import userManager
opUsers = map(lambda user: user.as_dict(), userManager.get_all_users())
- I note that removing a user using the REST API results in the record being removed from the
~/.octoprint/users.yaml
file (no octoprint.log errors). The web interface prompts that a settings change has occurred. I choose the "all" button version of the two but the "bob" (ross) user is still shown. Closing the Settings page and returning still shows bob. Restarting OctoPrint now shows the absence of the bob user, as expected.