tutor-credentials 16.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- tutor-credentials-16.0.0/MANIFEST.in +2 -0
- tutor-credentials-16.0.0/PKG-INFO +123 -0
- tutor-credentials-16.0.0/README.rst +101 -0
- tutor-credentials-16.0.0/pyproject.toml +2 -0
- tutor-credentials-16.0.0/setup.cfg +4 -0
- tutor-credentials-16.0.0/setup.py +57 -0
- tutor-credentials-16.0.0/tutor_credentials.egg-info/PKG-INFO +123 -0
- tutor-credentials-16.0.0/tutor_credentials.egg-info/SOURCES.txt +43 -0
- tutor-credentials-16.0.0/tutor_credentials.egg-info/dependency_links.txt +1 -0
- tutor-credentials-16.0.0/tutor_credentials.egg-info/entry_points.txt +2 -0
- tutor-credentials-16.0.0/tutor_credentials.egg-info/requires.txt +3 -0
- tutor-credentials-16.0.0/tutor_credentials.egg-info/top_level.txt +1 -0
- tutor-credentials-16.0.0/tutorcredentials/__about__.py +8 -0
- tutor-credentials-16.0.0/tutorcredentials/__init__.py +0 -0
- tutor-credentials-16.0.0/tutorcredentials/patches/.gitignore +0 -0
- tutor-credentials-16.0.0/tutorcredentials/patches/caddyfile +7 -0
- tutor-credentials-16.0.0/tutorcredentials/patches/k8s-deployments +37 -0
- tutor-credentials-16.0.0/tutorcredentials/patches/k8s-jobs +25 -0
- tutor-credentials-16.0.0/tutorcredentials/patches/k8s-services +12 -0
- tutor-credentials-16.0.0/tutorcredentials/patches/kustomization-configmapgenerator +3 -0
- tutor-credentials-16.0.0/tutorcredentials/patches/local-docker-compose-caddy-aliases +1 -0
- tutor-credentials-16.0.0/tutorcredentials/patches/local-docker-compose-dev-services +15 -0
- tutor-credentials-16.0.0/tutorcredentials/patches/local-docker-compose-jobs-services +7 -0
- tutor-credentials-16.0.0/tutorcredentials/patches/local-docker-compose-services +11 -0
- tutor-credentials-16.0.0/tutorcredentials/patches/mfe-env-development +1 -0
- tutor-credentials-16.0.0/tutorcredentials/patches/mfe-env-production +1 -0
- tutor-credentials-16.0.0/tutorcredentials/patches/openedx-lms-common-settings +0 -0
- tutor-credentials-16.0.0/tutorcredentials/patches/openedx-lms-development-settings +2 -0
- tutor-credentials-16.0.0/tutorcredentials/patches/openedx-lms-production-settings +2 -0
- tutor-credentials-16.0.0/tutorcredentials/plugin.py +213 -0
- tutor-credentials-16.0.0/tutorcredentials/templates/credentials/apps/.gitignore +0 -0
- tutor-credentials-16.0.0/tutorcredentials/templates/credentials/apps/credentials/settings/__init__.py +0 -0
- tutor-credentials-16.0.0/tutorcredentials/templates/credentials/apps/credentials/settings/development.py +12 -0
- tutor-credentials-16.0.0/tutorcredentials/templates/credentials/apps/credentials/settings/partials/common.py +96 -0
- tutor-credentials-16.0.0/tutorcredentials/templates/credentials/apps/credentials/settings/production.py +9 -0
- tutor-credentials-16.0.0/tutorcredentials/templates/credentials/build/.gitignore +0 -0
- tutor-credentials-16.0.0/tutorcredentials/templates/credentials/build/credentials/Dockerfile +188 -0
- tutor-credentials-16.0.0/tutorcredentials/templates/credentials/build/credentials/assets.py +13 -0
- tutor-credentials-16.0.0/tutorcredentials/templates/credentials/build/credentials/requirements/private-sample.txt +6 -0
- tutor-credentials-16.0.0/tutorcredentials/templates/credentials/tasks/.gitignore +0 -0
- tutor-credentials-16.0.0/tutorcredentials/templates/credentials/tasks/credentials/build +1 -0
- tutor-credentials-16.0.0/tutorcredentials/templates/credentials/tasks/credentials/init +14 -0
- tutor-credentials-16.0.0/tutorcredentials/templates/credentials/tasks/lms/init +57 -0
- tutor-credentials-16.0.0/tutorcredentials/templates/credentials/tasks/mysql/init +6 -0
- tutor-credentials-16.0.0/tutorcredentials/templates/credentials/tasks/mysql/sync_users +21 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: tutor-credentials
|
|
3
|
+
Version: 16.0.0
|
|
4
|
+
Summary: A Tutor plugin for Open edX Credentials service
|
|
5
|
+
Home-page: https://github.com/overhangio/tutor-credentials.git
|
|
6
|
+
Author: Lawrence McDaniel
|
|
7
|
+
Author-email: lpm0073@gmail.com
|
|
8
|
+
License: AGPLv3
|
|
9
|
+
Project-URL: Code, https://github.com/overhangio/tutor-credentials.git
|
|
10
|
+
Project-URL: Issue tracker, https://github.com/overhangio/tutor-credentials.git/issues
|
|
11
|
+
Project-URL: Community, https://discuss.overhang.io
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Programming Language :: Python
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Requires-Python: >=3.8
|
|
22
|
+
|
|
23
|
+
Credentials plugin for `Tutor <https://docs.tutor.overhang.io>`__
|
|
24
|
+
===================================================================================
|
|
25
|
+
|
|
26
|
+
This is a plugin for `Tutor <https://docs.tutor.overhang.io>`_ that integrates the `Credentials <https://github.com/openedx/credentials/>`__ application in an Open edX platform.
|
|
27
|
+
Credentials application supports course and program certificates. This plugin offers an admin panel where user can do configurations for the certificates of his course and program.
|
|
28
|
+
|
|
29
|
+
Note that user will have to create the course/program using `Discovery plugin <https://github.com/overhangio/tutor-discovery>`__. Then Credentials plugin will be used for certificates configurations.
|
|
30
|
+
|
|
31
|
+
.. image:: https://github.com/overhangio/tutor-credentials/blob/main/doc/django-admin-screen-shot.png
|
|
32
|
+
:alt: Django Admin
|
|
33
|
+
|
|
34
|
+
Installation
|
|
35
|
+
------------
|
|
36
|
+
|
|
37
|
+
::
|
|
38
|
+
|
|
39
|
+
pip install https://github.com/overhangio/tutor-credentials.git
|
|
40
|
+
|
|
41
|
+
Note that this plugin is compatible with `Kubernetes integration <http://docs.tutor.overhang.io/k8s.html>`__.
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
For further instructions on how to setup Credentials with Open edX, check the `Official Credentials documentation <https://readthedocs.org/projects/edx-credentials/>`__.
|
|
45
|
+
|
|
46
|
+
Usage
|
|
47
|
+
-----
|
|
48
|
+
|
|
49
|
+
::
|
|
50
|
+
|
|
51
|
+
pip install tutor-credentials
|
|
52
|
+
tutor plugins enable discovery mfe credentials
|
|
53
|
+
tutor local launch
|
|
54
|
+
|
|
55
|
+
Using Django Admin
|
|
56
|
+
~~~~~~~~~~~~~~~~~~
|
|
57
|
+
|
|
58
|
+
The credentials user interface will be available at http://credentials.local.overhang.io for a local instance, and at ``CREDENTIALS_HOST`` (by default: ``http(s)://credentials.<your lms host>``) in production. In order to run commands from the UI login with an admin user at: http://credentials.local.overhang.io/admin/. User should be able to authenticate with the same username and password that he used for his lms.
|
|
59
|
+
|
|
60
|
+
Configuration
|
|
61
|
+
-------------
|
|
62
|
+
|
|
63
|
+
Application configuration
|
|
64
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
65
|
+
|
|
66
|
+
- ``CREDENTIALS_HOST`` (default: ``"credentials.{{ LMS_HOST }}"``)
|
|
67
|
+
- ``CREDENTIALS_MYSQL_DATABASE`` (default: ``"credentials"``)
|
|
68
|
+
- ``CREDENTIALS_MYSQL_USERNAME`` (default: ``"credentials"``)
|
|
69
|
+
- ``CREDENTIALS_MYSQL_PASSWORD`` (default: ``"{{ 8|random_string }}"``)
|
|
70
|
+
- ``CREDENTIALS_CATALOG_API_URL`` (default: ``"{{ LMS_HOST }}"``)
|
|
71
|
+
- ``CREDENTIALS_DOCKER_IMAGE`` (default: ``"{{ DOCKER_REGISTRY }}overhangio/openedx-credentials:{{ CREDENTIALS_VERSION }}"``)
|
|
72
|
+
- ``CREDENTIALS_EXTRA_PIP_REQUIREMENTS`` (default: ``[]``)
|
|
73
|
+
- ``CREDENTIALS_PRIVACY_POLICY_URL`` (default: ``"LMS_HOST/pricacy-policy"``)
|
|
74
|
+
- ``CREDENTIALS_SITE_NAME`` (default: ``"LMS_HOST"``)
|
|
75
|
+
- ``CREDENTIALS_TOS_URL`` (default: ``"{{ LMS_HOST }}/tos"``)
|
|
76
|
+
|
|
77
|
+
Marketing & Theming
|
|
78
|
+
~~~~~~~~~~~~~~~~~~~
|
|
79
|
+
|
|
80
|
+
- ``CREDENTIALS_LOGO_TRADEMARK_URL`` (default: ``"https://edx-cdn.org/v3/default/logo-trademark.svg"``)
|
|
81
|
+
- ``CREDENTIALS_LOGO_TRADEMARK_URL_PNG`` (default: ``"https://edx-cdn.org/v3/default/logo-trademark.png"``)
|
|
82
|
+
- ``CREDENTIALS_LOGO_TRADEMARK_URL_SVG`` (default: ``"https://edx-cdn.org/v3/default/logo-trademark.svg"``)
|
|
83
|
+
- ``CREDENTIALS_LOGO_URL`` (default: ``"https://edx-cdn.org/v3/default/logo.svg"``)
|
|
84
|
+
- ``CREDENTIALS_LOGO_URL_PNG`` (default: ``"https://edx-cdn.org/v3/default/logo.png"``)
|
|
85
|
+
- ``CREDENTIALS_LOGO_URL_SVG`` (default: ``"https://edx-cdn.org/v3/default/logo.svg"``)
|
|
86
|
+
- ``CREDENTIALS_LOGO_WHITE_URL`` (default: ``"https://edx-cdn.org/v3/default/logo-white.svg"``)
|
|
87
|
+
- ``CREDENTIALS_LOGO_WHITE_URL_PNG`` (default: ``"https://edx-cdn.org/v3/default/logo-white.png"``)
|
|
88
|
+
- ``CREDENTIALS_LOGO_WHITE_URL_SVG`` (default: ``"https://edx-cdn.org/v3/default/logo-white.svg"``)
|
|
89
|
+
- ``CREDENTIALS_FAVICON_URL`` (default: ``"https://edx-cdn.org/v3/default/favicon.ico"``)
|
|
90
|
+
- ``CREDENTIALS_THEME_NAME`` (default: ``"edx-theme"``)
|
|
91
|
+
|
|
92
|
+
Backend authentication
|
|
93
|
+
~~~~~~~~~~~~~~~~~~~~~~~
|
|
94
|
+
|
|
95
|
+
- ``CREDENTIALS_BACKEND_SERVICE_EDX_OAUTH2_KEY`` (default: ``"credentials-backend-service-key"``)
|
|
96
|
+
- ``CREDENTIALS_BACKEND_SERVICE_EDX_OAUTH2_SECRET`` (default: ``"{{ CREDENTIALS_OAUTH2_SECRET }}"``)
|
|
97
|
+
- ``CREDENTIALS_BACKEND_SERVICE_EDX_OAUTH2_PROVIDER_URL`` (default: ``"http://lms:8000/oauth2"``)
|
|
98
|
+
- ``CREDENTIALS_OAUTH2_KEY`` (default: ``credentials-backend-service-key"``)
|
|
99
|
+
- ``CREDENTIALS_OAUTH2_SECRET`` (default: ``"CHANGE-ME"``)
|
|
100
|
+
|
|
101
|
+
Application Third party authentication
|
|
102
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
103
|
+
|
|
104
|
+
- ``CREDENTIALS_SOCIAL_AUTH_REDIRECT_IS_HTTPS`` (default: ``{% if ENABLE_HTTPS %}True{% else %}False{% endif %}``)
|
|
105
|
+
- ``CREDENTIALS_SOCIAL_AUTH_EDX_OAUTH2_ISSUER`` (default: ``"{% if ENABLE_HTTPS %}https{% else %}http{% endif %}://{{ LMS_HOST }}"``)
|
|
106
|
+
- ``CREDENTIALS_SOCIAL_AUTH_EDX_OAUTH2_URL_ROOT`` (default: ``"http://lms:8000"``)
|
|
107
|
+
- ``CREDENTIALS_SOCIAL_AUTH_EDX_OAUTH2_KEY`` (default: ``"credentials-sso-key"``)
|
|
108
|
+
- ``CREDENTIALS_SOCIAL_AUTH_EDX_OAUTH2_SECRET`` (default: ``"credentials-sso-secret"``)
|
|
109
|
+
- ``CREDENTIALS_SOCIAL_AUTH_EDX_OAUTH2_LOGOUT_URL`` (default: ``"{{ SOCIAL_AUTH_EDX_OAUTH2_ISSUER }}/logout"``)
|
|
110
|
+
|
|
111
|
+
Funding
|
|
112
|
+
-------
|
|
113
|
+
|
|
114
|
+
.. image:: https://www.academiacentral.org/wp-content/uploads/2019/05/academia-nobeta.png
|
|
115
|
+
:alt: Academia Central
|
|
116
|
+
:target: https://www.academiacentral.org/
|
|
117
|
+
|
|
118
|
+
This plugin was initially developed and open sourced to the community thanks to the generous support of `Academia Central <https://www.academiacentral.org/>`_. Thank you!
|
|
119
|
+
|
|
120
|
+
License
|
|
121
|
+
-------
|
|
122
|
+
|
|
123
|
+
This software is licensed under the terms of the AGPLv3.
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
Credentials plugin for `Tutor <https://docs.tutor.overhang.io>`__
|
|
2
|
+
===================================================================================
|
|
3
|
+
|
|
4
|
+
This is a plugin for `Tutor <https://docs.tutor.overhang.io>`_ that integrates the `Credentials <https://github.com/openedx/credentials/>`__ application in an Open edX platform.
|
|
5
|
+
Credentials application supports course and program certificates. This plugin offers an admin panel where user can do configurations for the certificates of his course and program.
|
|
6
|
+
|
|
7
|
+
Note that user will have to create the course/program using `Discovery plugin <https://github.com/overhangio/tutor-discovery>`__. Then Credentials plugin will be used for certificates configurations.
|
|
8
|
+
|
|
9
|
+
.. image:: https://github.com/overhangio/tutor-credentials/blob/main/doc/django-admin-screen-shot.png
|
|
10
|
+
:alt: Django Admin
|
|
11
|
+
|
|
12
|
+
Installation
|
|
13
|
+
------------
|
|
14
|
+
|
|
15
|
+
::
|
|
16
|
+
|
|
17
|
+
pip install https://github.com/overhangio/tutor-credentials.git
|
|
18
|
+
|
|
19
|
+
Note that this plugin is compatible with `Kubernetes integration <http://docs.tutor.overhang.io/k8s.html>`__.
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
For further instructions on how to setup Credentials with Open edX, check the `Official Credentials documentation <https://readthedocs.org/projects/edx-credentials/>`__.
|
|
23
|
+
|
|
24
|
+
Usage
|
|
25
|
+
-----
|
|
26
|
+
|
|
27
|
+
::
|
|
28
|
+
|
|
29
|
+
pip install tutor-credentials
|
|
30
|
+
tutor plugins enable discovery mfe credentials
|
|
31
|
+
tutor local launch
|
|
32
|
+
|
|
33
|
+
Using Django Admin
|
|
34
|
+
~~~~~~~~~~~~~~~~~~
|
|
35
|
+
|
|
36
|
+
The credentials user interface will be available at http://credentials.local.overhang.io for a local instance, and at ``CREDENTIALS_HOST`` (by default: ``http(s)://credentials.<your lms host>``) in production. In order to run commands from the UI login with an admin user at: http://credentials.local.overhang.io/admin/. User should be able to authenticate with the same username and password that he used for his lms.
|
|
37
|
+
|
|
38
|
+
Configuration
|
|
39
|
+
-------------
|
|
40
|
+
|
|
41
|
+
Application configuration
|
|
42
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
43
|
+
|
|
44
|
+
- ``CREDENTIALS_HOST`` (default: ``"credentials.{{ LMS_HOST }}"``)
|
|
45
|
+
- ``CREDENTIALS_MYSQL_DATABASE`` (default: ``"credentials"``)
|
|
46
|
+
- ``CREDENTIALS_MYSQL_USERNAME`` (default: ``"credentials"``)
|
|
47
|
+
- ``CREDENTIALS_MYSQL_PASSWORD`` (default: ``"{{ 8|random_string }}"``)
|
|
48
|
+
- ``CREDENTIALS_CATALOG_API_URL`` (default: ``"{{ LMS_HOST }}"``)
|
|
49
|
+
- ``CREDENTIALS_DOCKER_IMAGE`` (default: ``"{{ DOCKER_REGISTRY }}overhangio/openedx-credentials:{{ CREDENTIALS_VERSION }}"``)
|
|
50
|
+
- ``CREDENTIALS_EXTRA_PIP_REQUIREMENTS`` (default: ``[]``)
|
|
51
|
+
- ``CREDENTIALS_PRIVACY_POLICY_URL`` (default: ``"LMS_HOST/pricacy-policy"``)
|
|
52
|
+
- ``CREDENTIALS_SITE_NAME`` (default: ``"LMS_HOST"``)
|
|
53
|
+
- ``CREDENTIALS_TOS_URL`` (default: ``"{{ LMS_HOST }}/tos"``)
|
|
54
|
+
|
|
55
|
+
Marketing & Theming
|
|
56
|
+
~~~~~~~~~~~~~~~~~~~
|
|
57
|
+
|
|
58
|
+
- ``CREDENTIALS_LOGO_TRADEMARK_URL`` (default: ``"https://edx-cdn.org/v3/default/logo-trademark.svg"``)
|
|
59
|
+
- ``CREDENTIALS_LOGO_TRADEMARK_URL_PNG`` (default: ``"https://edx-cdn.org/v3/default/logo-trademark.png"``)
|
|
60
|
+
- ``CREDENTIALS_LOGO_TRADEMARK_URL_SVG`` (default: ``"https://edx-cdn.org/v3/default/logo-trademark.svg"``)
|
|
61
|
+
- ``CREDENTIALS_LOGO_URL`` (default: ``"https://edx-cdn.org/v3/default/logo.svg"``)
|
|
62
|
+
- ``CREDENTIALS_LOGO_URL_PNG`` (default: ``"https://edx-cdn.org/v3/default/logo.png"``)
|
|
63
|
+
- ``CREDENTIALS_LOGO_URL_SVG`` (default: ``"https://edx-cdn.org/v3/default/logo.svg"``)
|
|
64
|
+
- ``CREDENTIALS_LOGO_WHITE_URL`` (default: ``"https://edx-cdn.org/v3/default/logo-white.svg"``)
|
|
65
|
+
- ``CREDENTIALS_LOGO_WHITE_URL_PNG`` (default: ``"https://edx-cdn.org/v3/default/logo-white.png"``)
|
|
66
|
+
- ``CREDENTIALS_LOGO_WHITE_URL_SVG`` (default: ``"https://edx-cdn.org/v3/default/logo-white.svg"``)
|
|
67
|
+
- ``CREDENTIALS_FAVICON_URL`` (default: ``"https://edx-cdn.org/v3/default/favicon.ico"``)
|
|
68
|
+
- ``CREDENTIALS_THEME_NAME`` (default: ``"edx-theme"``)
|
|
69
|
+
|
|
70
|
+
Backend authentication
|
|
71
|
+
~~~~~~~~~~~~~~~~~~~~~~~
|
|
72
|
+
|
|
73
|
+
- ``CREDENTIALS_BACKEND_SERVICE_EDX_OAUTH2_KEY`` (default: ``"credentials-backend-service-key"``)
|
|
74
|
+
- ``CREDENTIALS_BACKEND_SERVICE_EDX_OAUTH2_SECRET`` (default: ``"{{ CREDENTIALS_OAUTH2_SECRET }}"``)
|
|
75
|
+
- ``CREDENTIALS_BACKEND_SERVICE_EDX_OAUTH2_PROVIDER_URL`` (default: ``"http://lms:8000/oauth2"``)
|
|
76
|
+
- ``CREDENTIALS_OAUTH2_KEY`` (default: ``credentials-backend-service-key"``)
|
|
77
|
+
- ``CREDENTIALS_OAUTH2_SECRET`` (default: ``"CHANGE-ME"``)
|
|
78
|
+
|
|
79
|
+
Application Third party authentication
|
|
80
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
81
|
+
|
|
82
|
+
- ``CREDENTIALS_SOCIAL_AUTH_REDIRECT_IS_HTTPS`` (default: ``{% if ENABLE_HTTPS %}True{% else %}False{% endif %}``)
|
|
83
|
+
- ``CREDENTIALS_SOCIAL_AUTH_EDX_OAUTH2_ISSUER`` (default: ``"{% if ENABLE_HTTPS %}https{% else %}http{% endif %}://{{ LMS_HOST }}"``)
|
|
84
|
+
- ``CREDENTIALS_SOCIAL_AUTH_EDX_OAUTH2_URL_ROOT`` (default: ``"http://lms:8000"``)
|
|
85
|
+
- ``CREDENTIALS_SOCIAL_AUTH_EDX_OAUTH2_KEY`` (default: ``"credentials-sso-key"``)
|
|
86
|
+
- ``CREDENTIALS_SOCIAL_AUTH_EDX_OAUTH2_SECRET`` (default: ``"credentials-sso-secret"``)
|
|
87
|
+
- ``CREDENTIALS_SOCIAL_AUTH_EDX_OAUTH2_LOGOUT_URL`` (default: ``"{{ SOCIAL_AUTH_EDX_OAUTH2_ISSUER }}/logout"``)
|
|
88
|
+
|
|
89
|
+
Funding
|
|
90
|
+
-------
|
|
91
|
+
|
|
92
|
+
.. image:: https://www.academiacentral.org/wp-content/uploads/2019/05/academia-nobeta.png
|
|
93
|
+
:alt: Academia Central
|
|
94
|
+
:target: https://www.academiacentral.org/
|
|
95
|
+
|
|
96
|
+
This plugin was initially developed and open sourced to the community thanks to the generous support of `Academia Central <https://www.academiacentral.org/>`_. Thank you!
|
|
97
|
+
|
|
98
|
+
License
|
|
99
|
+
-------
|
|
100
|
+
|
|
101
|
+
This software is licensed under the terms of the AGPLv3.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import io
|
|
2
|
+
import os
|
|
3
|
+
from setuptools import setup, find_packages
|
|
4
|
+
|
|
5
|
+
HERE = os.path.abspath(os.path.dirname(__file__))
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def load_readme():
|
|
9
|
+
with io.open(os.path.join(HERE, "README.rst"), "rt", encoding="utf8") as f:
|
|
10
|
+
return f.read()
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def load_about():
|
|
14
|
+
about = {}
|
|
15
|
+
with io.open(
|
|
16
|
+
os.path.join(HERE, "tutorcredentials", "__about__.py"),
|
|
17
|
+
"rt",
|
|
18
|
+
encoding="utf-8",
|
|
19
|
+
) as f:
|
|
20
|
+
exec(f.read(), about) # pylint: disable=exec-used
|
|
21
|
+
return about
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
ABOUT = load_about()
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
setup(
|
|
28
|
+
name="tutor-credentials",
|
|
29
|
+
version=ABOUT["__version__"],
|
|
30
|
+
url="https://github.com/overhangio/tutor-credentials.git",
|
|
31
|
+
project_urls={
|
|
32
|
+
"Code": "https://github.com/overhangio/tutor-credentials.git",
|
|
33
|
+
"Issue tracker": "https://github.com/overhangio/tutor-credentials.git/issues",
|
|
34
|
+
"Community": "https://discuss.overhang.io",
|
|
35
|
+
},
|
|
36
|
+
license="AGPLv3",
|
|
37
|
+
author="Lawrence McDaniel",
|
|
38
|
+
author_email="lpm0073@gmail.com",
|
|
39
|
+
description="A Tutor plugin for Open edX Credentials service",
|
|
40
|
+
long_description=load_readme(),
|
|
41
|
+
packages=find_packages(exclude=["tests*"]),
|
|
42
|
+
include_package_data=True,
|
|
43
|
+
python_requires=">=3.8",
|
|
44
|
+
install_requires=["tutor>=16.0.0,<17.0.0", "tutor-discovery>=16.0.0,<17.0.0", "tutor-mfe>=16.0.0,<17.0.0"],
|
|
45
|
+
entry_points={"tutor.plugin.v1": ["credentials = tutorcredentials.plugin"]},
|
|
46
|
+
classifiers=[
|
|
47
|
+
"Development Status :: 3 - Alpha",
|
|
48
|
+
"Intended Audience :: Developers",
|
|
49
|
+
"License :: OSI Approved :: GNU Affero General Public License v3",
|
|
50
|
+
"Operating System :: OS Independent",
|
|
51
|
+
"Programming Language :: Python",
|
|
52
|
+
"Programming Language :: Python :: 3.8",
|
|
53
|
+
"Programming Language :: Python :: 3.9",
|
|
54
|
+
"Programming Language :: Python :: 3.10",
|
|
55
|
+
"Programming Language :: Python :: 3.11",
|
|
56
|
+
],
|
|
57
|
+
)
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: tutor-credentials
|
|
3
|
+
Version: 16.0.0
|
|
4
|
+
Summary: A Tutor plugin for Open edX Credentials service
|
|
5
|
+
Home-page: https://github.com/overhangio/tutor-credentials.git
|
|
6
|
+
Author: Lawrence McDaniel
|
|
7
|
+
Author-email: lpm0073@gmail.com
|
|
8
|
+
License: AGPLv3
|
|
9
|
+
Project-URL: Code, https://github.com/overhangio/tutor-credentials.git
|
|
10
|
+
Project-URL: Issue tracker, https://github.com/overhangio/tutor-credentials.git/issues
|
|
11
|
+
Project-URL: Community, https://discuss.overhang.io
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Programming Language :: Python
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Requires-Python: >=3.8
|
|
22
|
+
|
|
23
|
+
Credentials plugin for `Tutor <https://docs.tutor.overhang.io>`__
|
|
24
|
+
===================================================================================
|
|
25
|
+
|
|
26
|
+
This is a plugin for `Tutor <https://docs.tutor.overhang.io>`_ that integrates the `Credentials <https://github.com/openedx/credentials/>`__ application in an Open edX platform.
|
|
27
|
+
Credentials application supports course and program certificates. This plugin offers an admin panel where user can do configurations for the certificates of his course and program.
|
|
28
|
+
|
|
29
|
+
Note that user will have to create the course/program using `Discovery plugin <https://github.com/overhangio/tutor-discovery>`__. Then Credentials plugin will be used for certificates configurations.
|
|
30
|
+
|
|
31
|
+
.. image:: https://github.com/overhangio/tutor-credentials/blob/main/doc/django-admin-screen-shot.png
|
|
32
|
+
:alt: Django Admin
|
|
33
|
+
|
|
34
|
+
Installation
|
|
35
|
+
------------
|
|
36
|
+
|
|
37
|
+
::
|
|
38
|
+
|
|
39
|
+
pip install https://github.com/overhangio/tutor-credentials.git
|
|
40
|
+
|
|
41
|
+
Note that this plugin is compatible with `Kubernetes integration <http://docs.tutor.overhang.io/k8s.html>`__.
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
For further instructions on how to setup Credentials with Open edX, check the `Official Credentials documentation <https://readthedocs.org/projects/edx-credentials/>`__.
|
|
45
|
+
|
|
46
|
+
Usage
|
|
47
|
+
-----
|
|
48
|
+
|
|
49
|
+
::
|
|
50
|
+
|
|
51
|
+
pip install tutor-credentials
|
|
52
|
+
tutor plugins enable discovery mfe credentials
|
|
53
|
+
tutor local launch
|
|
54
|
+
|
|
55
|
+
Using Django Admin
|
|
56
|
+
~~~~~~~~~~~~~~~~~~
|
|
57
|
+
|
|
58
|
+
The credentials user interface will be available at http://credentials.local.overhang.io for a local instance, and at ``CREDENTIALS_HOST`` (by default: ``http(s)://credentials.<your lms host>``) in production. In order to run commands from the UI login with an admin user at: http://credentials.local.overhang.io/admin/. User should be able to authenticate with the same username and password that he used for his lms.
|
|
59
|
+
|
|
60
|
+
Configuration
|
|
61
|
+
-------------
|
|
62
|
+
|
|
63
|
+
Application configuration
|
|
64
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
65
|
+
|
|
66
|
+
- ``CREDENTIALS_HOST`` (default: ``"credentials.{{ LMS_HOST }}"``)
|
|
67
|
+
- ``CREDENTIALS_MYSQL_DATABASE`` (default: ``"credentials"``)
|
|
68
|
+
- ``CREDENTIALS_MYSQL_USERNAME`` (default: ``"credentials"``)
|
|
69
|
+
- ``CREDENTIALS_MYSQL_PASSWORD`` (default: ``"{{ 8|random_string }}"``)
|
|
70
|
+
- ``CREDENTIALS_CATALOG_API_URL`` (default: ``"{{ LMS_HOST }}"``)
|
|
71
|
+
- ``CREDENTIALS_DOCKER_IMAGE`` (default: ``"{{ DOCKER_REGISTRY }}overhangio/openedx-credentials:{{ CREDENTIALS_VERSION }}"``)
|
|
72
|
+
- ``CREDENTIALS_EXTRA_PIP_REQUIREMENTS`` (default: ``[]``)
|
|
73
|
+
- ``CREDENTIALS_PRIVACY_POLICY_URL`` (default: ``"LMS_HOST/pricacy-policy"``)
|
|
74
|
+
- ``CREDENTIALS_SITE_NAME`` (default: ``"LMS_HOST"``)
|
|
75
|
+
- ``CREDENTIALS_TOS_URL`` (default: ``"{{ LMS_HOST }}/tos"``)
|
|
76
|
+
|
|
77
|
+
Marketing & Theming
|
|
78
|
+
~~~~~~~~~~~~~~~~~~~
|
|
79
|
+
|
|
80
|
+
- ``CREDENTIALS_LOGO_TRADEMARK_URL`` (default: ``"https://edx-cdn.org/v3/default/logo-trademark.svg"``)
|
|
81
|
+
- ``CREDENTIALS_LOGO_TRADEMARK_URL_PNG`` (default: ``"https://edx-cdn.org/v3/default/logo-trademark.png"``)
|
|
82
|
+
- ``CREDENTIALS_LOGO_TRADEMARK_URL_SVG`` (default: ``"https://edx-cdn.org/v3/default/logo-trademark.svg"``)
|
|
83
|
+
- ``CREDENTIALS_LOGO_URL`` (default: ``"https://edx-cdn.org/v3/default/logo.svg"``)
|
|
84
|
+
- ``CREDENTIALS_LOGO_URL_PNG`` (default: ``"https://edx-cdn.org/v3/default/logo.png"``)
|
|
85
|
+
- ``CREDENTIALS_LOGO_URL_SVG`` (default: ``"https://edx-cdn.org/v3/default/logo.svg"``)
|
|
86
|
+
- ``CREDENTIALS_LOGO_WHITE_URL`` (default: ``"https://edx-cdn.org/v3/default/logo-white.svg"``)
|
|
87
|
+
- ``CREDENTIALS_LOGO_WHITE_URL_PNG`` (default: ``"https://edx-cdn.org/v3/default/logo-white.png"``)
|
|
88
|
+
- ``CREDENTIALS_LOGO_WHITE_URL_SVG`` (default: ``"https://edx-cdn.org/v3/default/logo-white.svg"``)
|
|
89
|
+
- ``CREDENTIALS_FAVICON_URL`` (default: ``"https://edx-cdn.org/v3/default/favicon.ico"``)
|
|
90
|
+
- ``CREDENTIALS_THEME_NAME`` (default: ``"edx-theme"``)
|
|
91
|
+
|
|
92
|
+
Backend authentication
|
|
93
|
+
~~~~~~~~~~~~~~~~~~~~~~~
|
|
94
|
+
|
|
95
|
+
- ``CREDENTIALS_BACKEND_SERVICE_EDX_OAUTH2_KEY`` (default: ``"credentials-backend-service-key"``)
|
|
96
|
+
- ``CREDENTIALS_BACKEND_SERVICE_EDX_OAUTH2_SECRET`` (default: ``"{{ CREDENTIALS_OAUTH2_SECRET }}"``)
|
|
97
|
+
- ``CREDENTIALS_BACKEND_SERVICE_EDX_OAUTH2_PROVIDER_URL`` (default: ``"http://lms:8000/oauth2"``)
|
|
98
|
+
- ``CREDENTIALS_OAUTH2_KEY`` (default: ``credentials-backend-service-key"``)
|
|
99
|
+
- ``CREDENTIALS_OAUTH2_SECRET`` (default: ``"CHANGE-ME"``)
|
|
100
|
+
|
|
101
|
+
Application Third party authentication
|
|
102
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
103
|
+
|
|
104
|
+
- ``CREDENTIALS_SOCIAL_AUTH_REDIRECT_IS_HTTPS`` (default: ``{% if ENABLE_HTTPS %}True{% else %}False{% endif %}``)
|
|
105
|
+
- ``CREDENTIALS_SOCIAL_AUTH_EDX_OAUTH2_ISSUER`` (default: ``"{% if ENABLE_HTTPS %}https{% else %}http{% endif %}://{{ LMS_HOST }}"``)
|
|
106
|
+
- ``CREDENTIALS_SOCIAL_AUTH_EDX_OAUTH2_URL_ROOT`` (default: ``"http://lms:8000"``)
|
|
107
|
+
- ``CREDENTIALS_SOCIAL_AUTH_EDX_OAUTH2_KEY`` (default: ``"credentials-sso-key"``)
|
|
108
|
+
- ``CREDENTIALS_SOCIAL_AUTH_EDX_OAUTH2_SECRET`` (default: ``"credentials-sso-secret"``)
|
|
109
|
+
- ``CREDENTIALS_SOCIAL_AUTH_EDX_OAUTH2_LOGOUT_URL`` (default: ``"{{ SOCIAL_AUTH_EDX_OAUTH2_ISSUER }}/logout"``)
|
|
110
|
+
|
|
111
|
+
Funding
|
|
112
|
+
-------
|
|
113
|
+
|
|
114
|
+
.. image:: https://www.academiacentral.org/wp-content/uploads/2019/05/academia-nobeta.png
|
|
115
|
+
:alt: Academia Central
|
|
116
|
+
:target: https://www.academiacentral.org/
|
|
117
|
+
|
|
118
|
+
This plugin was initially developed and open sourced to the community thanks to the generous support of `Academia Central <https://www.academiacentral.org/>`_. Thank you!
|
|
119
|
+
|
|
120
|
+
License
|
|
121
|
+
-------
|
|
122
|
+
|
|
123
|
+
This software is licensed under the terms of the AGPLv3.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
MANIFEST.in
|
|
2
|
+
README.rst
|
|
3
|
+
pyproject.toml
|
|
4
|
+
setup.py
|
|
5
|
+
tutor_credentials.egg-info/PKG-INFO
|
|
6
|
+
tutor_credentials.egg-info/SOURCES.txt
|
|
7
|
+
tutor_credentials.egg-info/dependency_links.txt
|
|
8
|
+
tutor_credentials.egg-info/entry_points.txt
|
|
9
|
+
tutor_credentials.egg-info/requires.txt
|
|
10
|
+
tutor_credentials.egg-info/top_level.txt
|
|
11
|
+
tutorcredentials/__about__.py
|
|
12
|
+
tutorcredentials/__init__.py
|
|
13
|
+
tutorcredentials/plugin.py
|
|
14
|
+
tutorcredentials/patches/.gitignore
|
|
15
|
+
tutorcredentials/patches/caddyfile
|
|
16
|
+
tutorcredentials/patches/k8s-deployments
|
|
17
|
+
tutorcredentials/patches/k8s-jobs
|
|
18
|
+
tutorcredentials/patches/k8s-services
|
|
19
|
+
tutorcredentials/patches/kustomization-configmapgenerator
|
|
20
|
+
tutorcredentials/patches/local-docker-compose-caddy-aliases
|
|
21
|
+
tutorcredentials/patches/local-docker-compose-dev-services
|
|
22
|
+
tutorcredentials/patches/local-docker-compose-jobs-services
|
|
23
|
+
tutorcredentials/patches/local-docker-compose-services
|
|
24
|
+
tutorcredentials/patches/mfe-env-development
|
|
25
|
+
tutorcredentials/patches/mfe-env-production
|
|
26
|
+
tutorcredentials/patches/openedx-lms-common-settings
|
|
27
|
+
tutorcredentials/patches/openedx-lms-development-settings
|
|
28
|
+
tutorcredentials/patches/openedx-lms-production-settings
|
|
29
|
+
tutorcredentials/templates/credentials/apps/.gitignore
|
|
30
|
+
tutorcredentials/templates/credentials/apps/credentials/settings/__init__.py
|
|
31
|
+
tutorcredentials/templates/credentials/apps/credentials/settings/development.py
|
|
32
|
+
tutorcredentials/templates/credentials/apps/credentials/settings/production.py
|
|
33
|
+
tutorcredentials/templates/credentials/apps/credentials/settings/partials/common.py
|
|
34
|
+
tutorcredentials/templates/credentials/build/.gitignore
|
|
35
|
+
tutorcredentials/templates/credentials/build/credentials/Dockerfile
|
|
36
|
+
tutorcredentials/templates/credentials/build/credentials/assets.py
|
|
37
|
+
tutorcredentials/templates/credentials/build/credentials/requirements/private-sample.txt
|
|
38
|
+
tutorcredentials/templates/credentials/tasks/.gitignore
|
|
39
|
+
tutorcredentials/templates/credentials/tasks/credentials/build
|
|
40
|
+
tutorcredentials/templates/credentials/tasks/credentials/init
|
|
41
|
+
tutorcredentials/templates/credentials/tasks/lms/init
|
|
42
|
+
tutorcredentials/templates/credentials/tasks/mysql/init
|
|
43
|
+
tutorcredentials/templates/credentials/tasks/mysql/sync_users
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
tutorcredentials
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
apiVersion: apps/v1
|
|
3
|
+
kind: Deployment
|
|
4
|
+
metadata:
|
|
5
|
+
name: credentials
|
|
6
|
+
labels:
|
|
7
|
+
app.kubernetes.io/name: credentials
|
|
8
|
+
spec:
|
|
9
|
+
selector:
|
|
10
|
+
matchLabels:
|
|
11
|
+
app.kubernetes.io/name: credentials
|
|
12
|
+
template:
|
|
13
|
+
metadata:
|
|
14
|
+
labels:
|
|
15
|
+
app.kubernetes.io/name: credentials
|
|
16
|
+
spec:
|
|
17
|
+
securityContext:
|
|
18
|
+
runAsUser: 1000
|
|
19
|
+
runAsGroup: 1000
|
|
20
|
+
containers:
|
|
21
|
+
- name: credentials
|
|
22
|
+
image: {{ CREDENTIALS_DOCKER_IMAGE }}
|
|
23
|
+
ports:
|
|
24
|
+
- containerPort: 8000
|
|
25
|
+
env:
|
|
26
|
+
- name: DJANGO_SETTINGS_MODULE
|
|
27
|
+
value: credentials.settings.tutor.production
|
|
28
|
+
volumeMounts:
|
|
29
|
+
- mountPath: /openedx/credentials/credentials/settings/tutor/production.py
|
|
30
|
+
name: settings
|
|
31
|
+
subPath: production.py
|
|
32
|
+
securityContext:
|
|
33
|
+
allowPrivilegeEscalation: false
|
|
34
|
+
volumes:
|
|
35
|
+
- name: settings
|
|
36
|
+
configMap:
|
|
37
|
+
name: credentials-settings
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
apiVersion: batch/v1
|
|
3
|
+
kind: Job
|
|
4
|
+
metadata:
|
|
5
|
+
name: credentials-job
|
|
6
|
+
labels:
|
|
7
|
+
app.kubernetes.io/component: job
|
|
8
|
+
spec:
|
|
9
|
+
template:
|
|
10
|
+
spec:
|
|
11
|
+
restartPolicy: Never
|
|
12
|
+
containers:
|
|
13
|
+
- name: credentials
|
|
14
|
+
image: {{ CREDENTIALS_DOCKER_IMAGE }}
|
|
15
|
+
env:
|
|
16
|
+
- name: DJANGO_SETTINGS_MODULE
|
|
17
|
+
value: credentials.settings.tutor.production
|
|
18
|
+
volumeMounts:
|
|
19
|
+
- mountPath: /openedx/credentials/credentials/settings/tutor/production.py
|
|
20
|
+
name: settings
|
|
21
|
+
subPath: production.py
|
|
22
|
+
volumes:
|
|
23
|
+
- name: settings
|
|
24
|
+
configMap:
|
|
25
|
+
name: credentials-settings
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
- {{ CREDENTIALS_HOST }}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
credentials:
|
|
2
|
+
environment:
|
|
3
|
+
DJANGO_SETTINGS_MODULE: credentials.settings.tutor.development
|
|
4
|
+
command: ./manage.py runserver 0.0.0.0:8150
|
|
5
|
+
ports:
|
|
6
|
+
- "127.0.0.1:8150:8150"
|
|
7
|
+
stdin_open: true
|
|
8
|
+
tty: true
|
|
9
|
+
volumes:
|
|
10
|
+
# editable requirements
|
|
11
|
+
- ../plugins/credentials/build/credentials/requirements:/openedx/requirements
|
|
12
|
+
networks:
|
|
13
|
+
default:
|
|
14
|
+
aliases:
|
|
15
|
+
- "{{ CREDENTIALS_HOST }}"
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
credentials-job:
|
|
2
|
+
image: {{ CREDENTIALS_DOCKER_IMAGE }}
|
|
3
|
+
environment:
|
|
4
|
+
DJANGO_SETTINGS_MODULE: credentials.settings.tutor.production
|
|
5
|
+
volumes:
|
|
6
|
+
- ../plugins/credentials/apps/credentials/settings:/openedx/credentials/credentials/settings/tutor:ro
|
|
7
|
+
depends_on: {{ [("mysql", RUN_MYSQL)]|list_if }}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
credentials:
|
|
2
|
+
image: {{ CREDENTIALS_DOCKER_IMAGE }}
|
|
3
|
+
environment:
|
|
4
|
+
DJANGO_SETTINGS_MODULE: credentials.settings.tutor.production
|
|
5
|
+
restart: unless-stopped
|
|
6
|
+
volumes:
|
|
7
|
+
- ../plugins/credentials/apps/credentials/settings:/openedx/credentials/credentials/settings/tutor:ro
|
|
8
|
+
depends_on:
|
|
9
|
+
- lms
|
|
10
|
+
- discovery
|
|
11
|
+
{% if RUN_MYSQL %}- mysql{% endif %}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
CREDENTIALS_BASE_URL='http://{{ CREDENTIALS_HOST }}:8150'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
CREDENTIALS_BASE_URL='{% if ENABLE_HTTPS %}https{% else %}http{% endif %}://{{ CREDENTIALS_HOST }}'
|
|
File without changes
|