{ "info": { "author": "ibaldin", "author_email": "ibaldin@renci.org", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# WP-DSO-Publish\n\n## Operation\n\n[Pyforms-based](https://pyforms-gui.readthedocs.io/en/v4/index.html) GUI that publishes to safe two workflow policies \n(one for Research and Infrastructure Approval, respectively) and a dataset policy that requires\nthat both are satisfied prior to granting access (via [Presidio](https://github.com/RENCI-NRIG/impact-presidio)).\nThis is consistent with SAFE ImPACT \n[MVP example](https://github.com/RENCI-NRIG/impact-docker-images/tree/master/safe-server/1.0.1).\n\nRequires Python3 and pip3. Install the package into a virtualenvironment (it *should* pull in all the dependencies):\n```bash\n$ mkvirtualenv wpdso\n(wpdso) $ pip install wp-dso-publish\n```\n\nRunning it as as simple as (it should be on the PATH by now)\n```bash\n(wpdso) $ wp-dso-publish.py\n```\n\nThe GUI presents two tabs - one with identifiers for the two workflows and the dataset, one with SAFE parameters.\nIdentifiers can either be filled in or auto-generated (GUIDs) using the 'Generate button'. SAFE server base\nURL is automatically filled in. SAFE *public* key name for the dataset owner principal must also be specified\n(typically has the .pub extension) via file browser. \n\n*Warning:* the public key pointed to must be one of the keys accessible to the SAFE server you are communicating\nwith (i.e. in its -kd key directory), otherwise you will get a `Selfie` error as follows:\n```bash\nError: POST failed due to error: Query failed with msg: safe.safelog.UnSafeException: cannot sign since principal (Selfie) not defined Set(StrLit(Self))\n```\n\nOnce all parameters are filled in, press the 'Push Combined Policy to SAFE' button and inspect the outcome. \n\nIf everything went according to plan, cut-and-paste the workflow identifiers when registering the workflows\nwith the Notary Service. Similarly cut-and-paste the dataset identifier when registering the dataset. \n\n## Saving settings\n\nThe app relies on confapp module to restore settings in the form of Python code from a file named \n'saved-settings.py', if it exists. Any filled in settings are saved when 'Saved Settings' button is\npressed and then automatically restored when the program is restarted next time. The file can be edited\nby hand if needed. The following parameters (as strings) need to be defined (example):\n```\nRESEARCH_APPROVAL_ID = '53f8e808-5d91-4eff-8ecf-ab7d2dcda4d3'\nINFRASTRUCTURE_APPROVAL_ID = 'cf6d4ef7-d07a-4a7f-8ff5-1ec925f8df9b'\nDATASET_ID = '05b88841-d14b-471d-8e0f-5da29bf8da68'\nPUBLIC_KEY_PATH = '/path/to/public/key/key.pub'\nSAFE_URL = 'http://localhost:7777/'\n```\n\n## Tweaking\n\nThe layout is partially hard-wired in the code (see the last line of `__main__.py`):\n```\nif __name__ == \"__main__\": pyforms.start_app(AppGUI, geometry=[100, 100, 500, 700])\n```\nwhich specifies the geometry of the main window. Couldn't find a more elegant way to do it.\n\nThe rest of the layout is contained in [style.css](wp_dso_publish/style.css) file in the same directory. \n\n## Building and posting to PyPi\n\nMake sure you have twine installed. Edit `setup.py` to up the version number, then (making\nsure you are in the right Python virtual environment) \n\n```bash\n$ rm -rf dist/ build/ wp_dso_publish.egg-info/; ./setup.py sdist; ./setup.py bdist_wheel --universal\n$ twine upload dist/*\n```\n\nThe proper PyPi location is https://pypi.org/project/wp-dso-publish/.\n\nFollow the install steps at the top, however remember there is a delay between pushing\nand the artifact being available (you can force the install version with `pip install wp-dso-publish==`.\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/RENCI-NRIG/impact-utils/tree/master/wp_dso_publish", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "wp-dso-publish", "package_url": "https://pypi.org/project/wp-dso-publish/", "platform": "", "project_url": "https://pypi.org/project/wp-dso-publish/", "project_urls": { "Homepage": "https://github.com/RENCI-NRIG/impact-utils/tree/master/wp_dso_publish" }, "release_url": "https://pypi.org/project/wp-dso-publish/0.27/", "requires_dist": [ "PyForms-GUI (==4.902)", "pycryptodome (==3.8.2)", "requests (==2.22.0)" ], "requires_python": "", "summary": "Utility to push SAFE policies for a specific dataset.", "version": "0.27" }, "last_serial": 5668347, "releases": { "0.23": [ { "comment_text": "", "digests": { "md5": "27275cdca8e7d32e11e14adb1ed872ba", "sha256": "b08a0c5882bc54cf9389e9febf86aa1851b5926581b0e748b71cb3d3382d4b1c" }, "downloads": -1, "filename": "wp_dso_publish-0.23-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "27275cdca8e7d32e11e14adb1ed872ba", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7653, "upload_time": "2019-07-12T13:47:19", "url": "https://files.pythonhosted.org/packages/ed/8d/12eee42f2d91a1ff346d6b0557ade53f535451af2340225925008c6c8d94/wp_dso_publish-0.23-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5b550b73618d7c200eb0838287335ded", "sha256": "f0be8314fd0426e70f10febea158566115c93ff8146d91bdb3724094afedebec" }, "downloads": -1, "filename": "wp_dso_publish-0.23.tar.gz", "has_sig": false, "md5_digest": "5b550b73618d7c200eb0838287335ded", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6094, "upload_time": "2019-07-12T13:47:20", "url": "https://files.pythonhosted.org/packages/e4/b6/114134b6df16b11667bd2a7c43102a0059302d0987ce25fc04f75173034b/wp_dso_publish-0.23.tar.gz" } ], "0.24": [ { "comment_text": "", "digests": { "md5": "e49142e212d65179f4dd3ce4318b816e", "sha256": "dfacfb7c32b7ec07d11170046f213f94f5e896aa19011369deb71bcc57671c89" }, "downloads": -1, "filename": "wp_dso_publish-0.24-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e49142e212d65179f4dd3ce4318b816e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7794, "upload_time": "2019-08-08T21:08:15", "url": "https://files.pythonhosted.org/packages/94/91/a0fecb053043dca6df13f25ad986274c54d7ce2bc5738784199b4666c8e0/wp_dso_publish-0.24-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c7dd54559b74cd9f24ff74e10b56f026", "sha256": "b7a414fb3560f8277afa92d302dd21fd6f273e5c9b7f42711874844399ff6852" }, "downloads": -1, "filename": "wp_dso_publish-0.24.tar.gz", "has_sig": false, "md5_digest": "c7dd54559b74cd9f24ff74e10b56f026", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6263, "upload_time": "2019-08-08T21:08:17", "url": "https://files.pythonhosted.org/packages/a2/d5/076a9b49dd76865bc7a1d7a67f0d8a43e9f5ef044de2aae6de53fac25ee4/wp_dso_publish-0.24.tar.gz" } ], "0.25": [ { "comment_text": "", "digests": { "md5": "50a6c4b8168739fc978deb3f451dadb3", "sha256": "296596167f679c495594e03c55efba77958d75b96c528dae91f5c8a01afd4f06" }, "downloads": -1, "filename": "wp_dso_publish-0.25-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "50a6c4b8168739fc978deb3f451dadb3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8435, "upload_time": "2019-08-08T21:30:39", "url": "https://files.pythonhosted.org/packages/4b/f1/92a07ad284ef38755ce42bae655e01b50dc78927824b478d53a2e127c37c/wp_dso_publish-0.25-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2f8035ec0ca98a66327258302abc4997", "sha256": "ad943741e56e212dbbc4e576d1d8599c52e7a5a8475055b3fbf5455a39d70e8f" }, "downloads": -1, "filename": "wp_dso_publish-0.25.tar.gz", "has_sig": false, "md5_digest": "2f8035ec0ca98a66327258302abc4997", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6618, "upload_time": "2019-08-08T21:30:41", "url": "https://files.pythonhosted.org/packages/27/fa/e2877048e828194d0018496b336151ebc7071d699ee09c2e703662dcf312/wp_dso_publish-0.25.tar.gz" } ], "0.26": [ { "comment_text": "", "digests": { "md5": "7cc15b0fbad304a0e17dcb823317f2cf", "sha256": "62038e536f8d5702dfa562275c7731ceb4639a1511449efe290112774869ec81" }, "downloads": -1, "filename": "wp_dso_publish-0.26-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7cc15b0fbad304a0e17dcb823317f2cf", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8698, "upload_time": "2019-08-08T23:17:14", "url": "https://files.pythonhosted.org/packages/2e/7a/d2ac6fb6e4a7f66f5db5878110315d3467da7c06406767155d288f1e936a/wp_dso_publish-0.26-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5ebcbb9497983204e30a9849fc9d2e01", "sha256": "382e6bedfdf9225b845254d2cbbf4e9560cfde66ffb6983cfb915609a0ccafbf" }, "downloads": -1, "filename": "wp_dso_publish-0.26.tar.gz", "has_sig": false, "md5_digest": "5ebcbb9497983204e30a9849fc9d2e01", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6870, "upload_time": "2019-08-08T23:17:15", "url": "https://files.pythonhosted.org/packages/91/d0/c11a87fa163e0b219406b9e4606e0bb6f83c479c257ab31ef5f8d632f846/wp_dso_publish-0.26.tar.gz" } ], "0.27": [ { "comment_text": "", "digests": { "md5": "df07f2fb9bba9945fab37245e0bfad39", "sha256": "90b8719a2d31ecc308ee91d454c0e2bbb2043dcc2f279fe5c46f9e9ababa5229" }, "downloads": -1, "filename": "wp_dso_publish-0.27-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "df07f2fb9bba9945fab37245e0bfad39", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8706, "upload_time": "2019-08-12T19:27:51", "url": "https://files.pythonhosted.org/packages/b3/21/abd0a22632569bd8b1f9e29df618773c71e2018e10c8e6165ccea4535ebe/wp_dso_publish-0.27-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "33cfc1e0908cbf46081eb88dfb857e80", "sha256": "6699611662b2073be24a454acb029f5c7c0dba32862db7e8f7826669509e9286" }, "downloads": -1, "filename": "wp_dso_publish-0.27.tar.gz", "has_sig": false, "md5_digest": "33cfc1e0908cbf46081eb88dfb857e80", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6852, "upload_time": "2019-08-12T19:27:53", "url": "https://files.pythonhosted.org/packages/d5/17/4ebe302dc3078e3d71cb7ba63f4072e885e7b7499e1c9bb669836cadf3c4/wp_dso_publish-0.27.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "df07f2fb9bba9945fab37245e0bfad39", "sha256": "90b8719a2d31ecc308ee91d454c0e2bbb2043dcc2f279fe5c46f9e9ababa5229" }, "downloads": -1, "filename": "wp_dso_publish-0.27-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "df07f2fb9bba9945fab37245e0bfad39", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8706, "upload_time": "2019-08-12T19:27:51", "url": "https://files.pythonhosted.org/packages/b3/21/abd0a22632569bd8b1f9e29df618773c71e2018e10c8e6165ccea4535ebe/wp_dso_publish-0.27-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "33cfc1e0908cbf46081eb88dfb857e80", "sha256": "6699611662b2073be24a454acb029f5c7c0dba32862db7e8f7826669509e9286" }, "downloads": -1, "filename": "wp_dso_publish-0.27.tar.gz", "has_sig": false, "md5_digest": "33cfc1e0908cbf46081eb88dfb857e80", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6852, "upload_time": "2019-08-12T19:27:53", "url": "https://files.pythonhosted.org/packages/d5/17/4ebe302dc3078e3d71cb7ba63f4072e885e7b7499e1c9bb669836cadf3c4/wp_dso_publish-0.27.tar.gz" } ] }