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.
Files changed (45) hide show
  1. tutor-credentials-16.0.0/MANIFEST.in +2 -0
  2. tutor-credentials-16.0.0/PKG-INFO +123 -0
  3. tutor-credentials-16.0.0/README.rst +101 -0
  4. tutor-credentials-16.0.0/pyproject.toml +2 -0
  5. tutor-credentials-16.0.0/setup.cfg +4 -0
  6. tutor-credentials-16.0.0/setup.py +57 -0
  7. tutor-credentials-16.0.0/tutor_credentials.egg-info/PKG-INFO +123 -0
  8. tutor-credentials-16.0.0/tutor_credentials.egg-info/SOURCES.txt +43 -0
  9. tutor-credentials-16.0.0/tutor_credentials.egg-info/dependency_links.txt +1 -0
  10. tutor-credentials-16.0.0/tutor_credentials.egg-info/entry_points.txt +2 -0
  11. tutor-credentials-16.0.0/tutor_credentials.egg-info/requires.txt +3 -0
  12. tutor-credentials-16.0.0/tutor_credentials.egg-info/top_level.txt +1 -0
  13. tutor-credentials-16.0.0/tutorcredentials/__about__.py +8 -0
  14. tutor-credentials-16.0.0/tutorcredentials/__init__.py +0 -0
  15. tutor-credentials-16.0.0/tutorcredentials/patches/.gitignore +0 -0
  16. tutor-credentials-16.0.0/tutorcredentials/patches/caddyfile +7 -0
  17. tutor-credentials-16.0.0/tutorcredentials/patches/k8s-deployments +37 -0
  18. tutor-credentials-16.0.0/tutorcredentials/patches/k8s-jobs +25 -0
  19. tutor-credentials-16.0.0/tutorcredentials/patches/k8s-services +12 -0
  20. tutor-credentials-16.0.0/tutorcredentials/patches/kustomization-configmapgenerator +3 -0
  21. tutor-credentials-16.0.0/tutorcredentials/patches/local-docker-compose-caddy-aliases +1 -0
  22. tutor-credentials-16.0.0/tutorcredentials/patches/local-docker-compose-dev-services +15 -0
  23. tutor-credentials-16.0.0/tutorcredentials/patches/local-docker-compose-jobs-services +7 -0
  24. tutor-credentials-16.0.0/tutorcredentials/patches/local-docker-compose-services +11 -0
  25. tutor-credentials-16.0.0/tutorcredentials/patches/mfe-env-development +1 -0
  26. tutor-credentials-16.0.0/tutorcredentials/patches/mfe-env-production +1 -0
  27. tutor-credentials-16.0.0/tutorcredentials/patches/openedx-lms-common-settings +0 -0
  28. tutor-credentials-16.0.0/tutorcredentials/patches/openedx-lms-development-settings +2 -0
  29. tutor-credentials-16.0.0/tutorcredentials/patches/openedx-lms-production-settings +2 -0
  30. tutor-credentials-16.0.0/tutorcredentials/plugin.py +213 -0
  31. tutor-credentials-16.0.0/tutorcredentials/templates/credentials/apps/.gitignore +0 -0
  32. tutor-credentials-16.0.0/tutorcredentials/templates/credentials/apps/credentials/settings/__init__.py +0 -0
  33. tutor-credentials-16.0.0/tutorcredentials/templates/credentials/apps/credentials/settings/development.py +12 -0
  34. tutor-credentials-16.0.0/tutorcredentials/templates/credentials/apps/credentials/settings/partials/common.py +96 -0
  35. tutor-credentials-16.0.0/tutorcredentials/templates/credentials/apps/credentials/settings/production.py +9 -0
  36. tutor-credentials-16.0.0/tutorcredentials/templates/credentials/build/.gitignore +0 -0
  37. tutor-credentials-16.0.0/tutorcredentials/templates/credentials/build/credentials/Dockerfile +188 -0
  38. tutor-credentials-16.0.0/tutorcredentials/templates/credentials/build/credentials/assets.py +13 -0
  39. tutor-credentials-16.0.0/tutorcredentials/templates/credentials/build/credentials/requirements/private-sample.txt +6 -0
  40. tutor-credentials-16.0.0/tutorcredentials/templates/credentials/tasks/.gitignore +0 -0
  41. tutor-credentials-16.0.0/tutorcredentials/templates/credentials/tasks/credentials/build +1 -0
  42. tutor-credentials-16.0.0/tutorcredentials/templates/credentials/tasks/credentials/init +14 -0
  43. tutor-credentials-16.0.0/tutorcredentials/templates/credentials/tasks/lms/init +57 -0
  44. tutor-credentials-16.0.0/tutorcredentials/templates/credentials/tasks/mysql/init +6 -0
  45. tutor-credentials-16.0.0/tutorcredentials/templates/credentials/tasks/mysql/sync_users +21 -0
@@ -0,0 +1,2 @@
1
+ recursive-include tutorcredentials/patches *
2
+ recursive-include tutorcredentials/templates *
@@ -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,2 @@
1
+ [build-system]
2
+ requires = ["setuptools", "wheel"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -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,2 @@
1
+ [tutor.plugin.v1]
2
+ credentials = tutorcredentials.plugin
@@ -0,0 +1,3 @@
1
+ tutor<17.0.0,>=16.0.0
2
+ tutor-discovery<17.0.0,>=16.0.0
3
+ tutor-mfe<17.0.0,>=16.0.0
@@ -0,0 +1 @@
1
+ tutorcredentials
@@ -0,0 +1,8 @@
1
+ __version__ = "16.0.0"
2
+
3
+ # Handle version suffix for nightly, just like tutor core.
4
+ __version_suffix__ = ""
5
+
6
+ if __version_suffix__:
7
+ __version__ += "-" + __version_suffix__
8
+
File without changes
@@ -0,0 +1,7 @@
1
+ # credentials service
2
+ {{ CREDENTIALS_HOST }}{$default_site_port} {
3
+ request_body {
4
+ max_size 10MB
5
+ }
6
+ import proxy "credentials:8000"
7
+ }
@@ -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,12 @@
1
+ ---
2
+ apiVersion: v1
3
+ kind: Service
4
+ metadata:
5
+ name: credentials
6
+ spec:
7
+ type: NodePort
8
+ ports:
9
+ - port: 8000
10
+ protocol: TCP
11
+ selector:
12
+ app.kubernetes.io/name: credentials
@@ -0,0 +1,3 @@
1
+ - name: credentials-settings
2
+ files:
3
+ - plugins/credentials/apps/credentials/settings/production.py
@@ -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 }}'
@@ -0,0 +1,2 @@
1
+ CREDENTIALS_PUBLIC_URL_ROOT = "http://{{ CREDENTIALS_HOST }}:8150"
2
+ CREDENTIALS_API_URL = CREDENTIALS_PUBLIC_URL_ROOT + "/api/v2"
@@ -0,0 +1,2 @@
1
+ CREDENTIALS_PUBLIC_URL_ROOT = "{% if ENABLE_HTTPS %}https{% else %}http{% endif %}://{{ CREDENTIALS_HOST }}"
2
+ CREDENTIALS_API_URL = CREDENTIALS_PUBLIC_URL_ROOT + "/api/v2"