overhangio / tutor-ecommerce Goto Github PK
View Code? Open in Web Editor NEWEcommerce plugin for Tutor
License: GNU Affero General Public License v3.0
Ecommerce plugin for Tutor
License: GNU Affero General Public License v3.0
I am setting up using tutor, version 16.1.7
with last two releases(16.0.1 & 16.0.2) of tutor-ecommerce, I encountered error when running tutor local launch
it shows:
Running init task in ecommerce
Error: Missing configuration value: 'tuple object' has no attribute 'name'
and the script exits and the site will show server error after login
When creating a course in eCommerce using Tutor 15, the procedure failed because it was using these variables to perform the API call SOCIAL_AUTH_EDX_OAUTH2_URL_ROOT and BACKEND_SERVICE_EDX_OAUTH2_PROVIDER_URL. There is no way to define them using tutor-ecommerce, so I had to manually set the appropriate value.
I have noticed that on the Coupon pages in the Course Admin Tool, the Enterprise Customers drop down box does not load data from the LMS.
Log entries show that the ecommerce plugin is trying to make API calls to localhost:8000, instead of the proper LMS address. By default, ENTERPRISE_SERVICE_URL = 'http://localhost:8000/enterprise/'
(https://github.com/edx/ecommerce/blob/master/ecommerce/settings/base.py)
Overriding both ENTERPRISE_SERVICE_URL
and ENTERPRISE_API_URL
in tutor.py is necessary to get this to work. I first tried to override only ENTERPRISE_SERVICE_URL
, but since ENTERPRISE_API_URL
exists in production.py and evaluates its value based off the baked in base.py value, it needs to be reset.
Note, for the enterprise API to work the ENABLE_ENTERPRISE_INTEGRATION
feature flag must be set to true in the LMS.
I think i can tweak my deployment to get past this, but more generally, it looks like ALLOWED_HOSTS in ecommerce is not automatically being set.
The complete log error is:
ERROR 11 [django.security.DisallowedHost] /openedx/venv/lib/python3.8/site-packages/django/core/handlers/exception.py:99 - Invalid HTTP_HOST header: 'store.mooc.moocweb.com'. You may n eed to add 'store.mooc.moocweb.com' to ALLOWED_HOSTS.
Documentation is missing a very important config value to switch Cybersource from sandbox to production.
The config key is the following: flex_run_environment
For Sandbox this is as default set to 'cybersource.environment.sandbox', and to switch to production this has to be changed set in the config to 'cybersource.environment.production'
I tested this since I am about to push my website to production and just got approved by Cybersource to use a live account, but it kept not working because this is not specified in the docs which was odd for me in the first place.
So I propose we change this:
cybersource:
merchant_id: SET-ME-PLEASE
flex_shared_secret_key_id: SET-ME-PLEASE
flex_shared_secret_key: SET-ME-PLEASE
soap_api_url: https://ics2wstest.ic3.com/commerce/1.x/transactionProcessor/CyberSourceTransaction_1.140.wsdl
transaction_key: SET-ME-PLEASE
paypal:
cancel_checkout_path: /checkout/cancel-checkout/
client_id: SET-ME-PLEASE
client_secret: SET-ME-PLEASE
error_url: /checkout/error/
mode: sandbox
receipt_url: /checkout/receipt/
To this:
cybersource:
merchant_id: SET-ME-PLEASE
flex_shared_secret_key_id: SET-ME-PLEASE
flex_shared_secret_key: SET-ME-PLEASE
soap_api_url: https://ics2wstest.ic3.com/commerce/1.x/transactionProcessor/CyberSourceTransaction_1.140.wsdl
transaction_key: SET-ME-PLEASE
flex_run_environment: [set as 'cybersource.environment.sandbox' as default, change to 'cybersource.environment.production' for use in production]
paypal:
cancel_checkout_path: /checkout/cancel-checkout/
client_id: SET-ME-PLEASE
client_secret: SET-ME-PLEASE
error_url: /checkout/error/
mode: sandbox
receipt_url: /checkout/receipt/```
If didn't have, then what I can do to achieve this?
The ecommerce job does not take upgrades into consideration. In my case the ecommerce database comes from a native installation of Lilac and contains considerable transaction data that i definitely do not want to have to attempt to migrate table-by-table given the complexity of the oscar db.
openedx/ecommerce-job raises the following error:
Traceback (most recent call last):
File "./manage.py", line 11, in <module>
execute_from_command_line(sys.argv)
File "/openedx/venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
utility.execute()
File "/openedx/venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 413, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/openedx/venv/lib/python3.8/site-packages/django/core/management/base.py", line 354, in run_from_argv
self.execute(*args, **cmd_options)
File "/openedx/venv/lib/python3.8/site-packages/django/core/management/base.py", line 398, in execute
output = self.handle(*args, **options)
File "/openedx/ecommerce/ecommerce/core/management/commands/create_or_update_site.py", line 206, in handle
partner.save()
File "/openedx/venv/lib/python3.8/site-packages/django/db/models/base.py", line 739, in save
self.save_base(using=using, force_insert=force_insert,
File "/openedx/venv/lib/python3.8/site-packages/django/db/models/base.py", line 776, in save_base
updated = self._save_table(
File "/openedx/venv/lib/python3.8/site-packages/django/db/models/base.py", line 858, in _save_table
updated = self._do_update(base_qs, using, pk_val, values, update_fields,
File "/openedx/venv/lib/python3.8/site-packages/django/db/models/base.py", line 912, in _do_update
return filtered._update(values) > 0
File "/openedx/venv/lib/python3.8/site-packages/django/db/models/query.py", line 802, in _update
return query.get_compiler(self.db).execute_sql(CURSOR)
File "/openedx/venv/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1559, in execute_sql
cursor = super().execute_sql(result_type)
File "/openedx/venv/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1175, in execute_sql
cursor.execute(sql, params)
File "/openedx/venv/lib/python3.8/site-packages/django/db/backends/utils.py", line 66, in execute
return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
File "/openedx/venv/lib/python3.8/site-packages/django/db/backends/utils.py", line 75, in _execute_with_wrappers
return executor(sql, params, many, context)
File "/openedx/venv/lib/python3.8/site-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
File "/openedx/venv/lib/python3.8/site-packages/django/db/utils.py", line 90, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/openedx/venv/lib/python3.8/site-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
File "/openedx/venv/lib/python3.8/site-packages/django/db/backends/mysql/base.py", line 73, in execute
return self.cursor.execute(query, args)
File "/openedx/venv/lib/python3.8/site-packages/MySQLdb/cursors.py", line 209, in execute
res = self._query(query)
File "/openedx/venv/lib/python3.8/site-packages/MySQLdb/cursors.py", line 315, in _query
db.query(q)
db.query(q)
File "/openedx/venv/lib/python3.8/site-packages/MySQLdb/connections.py", line 239, in query
_mysql.connection.query(self, query)
django.db.utils.IntegrityError: (1062, "Duplicate entry '1' for key 'default_site_id'")
Install the tutor-ecommerce plug-in and install it into the build open edx project environment using 'tutor local quickstart' as described in the document. What configuration did I neglect or what steps did I miss to cause the error?
The screenshot of the question is as follows:
Hi, I've tried to build ecommerce but it stops with an error related to mysql-python
tutor, version 3.7.4
Ubuntu 18.04.3 LTS
docker-compose version 1.17.1
Hi @regisb !When I deploy this plugin, there are some things I want to discuss with you.
alipay
.The new value of waffle switch about this processor should be created and actived(ecommerce document).I found the command is : ./manage.py waffle_switch payment_processor_active_alipay on
2.When I changed the default ecommerce repo to ours for building image,it got an error on this step:
RUN python manage.py compress --force
It printed:
But after i modified the assets.py
# from .base import *
from .production import *
Then this step is executed smoothly.
But:
RUN echo "{}" > /openedx/config.yml
ENV ECOMMERCE_CFG /openedx/config.yml
should be executed before the action of RUN make theme_static
3. There's some configuration should be set in tutor.py
SCAR_DEFAULT_CURRENCY = 'CNY'
CURRENCY_SYMBOL = '¥'
These configurations are generic but not required.
Do u have any suggestion of these configurations where to patch?
4. The reason of this PR as same as that.
See overhangio/tutor#1004 for the context.
I followed instructions here:
https://edx-ecommerce.readthedocs.io/en/latest/create_products/create_course_seats.html#create-course-seats
when creating a new course, it comes out with error says please fill in all required fields even I did
I tried on "Verified and Audit" and "Professional Education" but no luck on this
do you have any clue on this?
As mentioned on https://discuss.openedx.org/t/these-idas-will-not-be-upgraded-to-python-3-11-by-redwood/12755, ecommerce and ecommerce-worker are not prioritized for Python 3.11/3.12 upgrades and are free for community to pick them up. Since these are important repositories and their upgrades are blocking tutor-ecommerce upgrade (#68), Edly can take a dig at upgrading them. A note that these upgrade will be backwards compatible with 3.8.
Upstream issues
After installing the latest Tutor and enabling the discovery/e-commerce plugins, I navigated to E-Commerce Course Admin page (https://ecommerce.<LMS_ROOT>/courses/), and the "Courses" and "Coupons" tabs would randomly throw an error message about “DataTables warning: table id=courseTable - Ajax error." Inspecting the network requests in the browser’s devtools revealed that it was the API call to “/api/v2/courses?format=datatables…” that was returning 502 Bad Gateway error.
There were entries like this in the ecommerce log:
invalid request block size: 5104 (max 4096)...skip
ecommerce_1 | [uwsgi-http key: ecommerce.<lms_root> client_addr: 172.18.0.15 client_port: 21151] hr_instance_read(): Connection reset by peer [plugins/http/http.c line 647]
Then nginx log reported that “upstream prematurely closed connection while reading response header from upstream”.
It seems that we need to increase the buffer size for uwsgi, according to this: https://stackoverflow.com/questions/15878176/uwsgi-invalid-request-block-size. For Tutor it would mean adding "--buff:er-size=8196" to the following command in Dockerfile:
CMD uwsgi \
--static-map /static=/openedx/staticfiles/ \
--static-map /media=/openedx/media/ \
--http 0.0.0.0:8000 \
--thunder-lock \
--single-interpreter \
--enable-threads \
--processes=${UWSGI_WORKERS:-2} \
**--buffer-size=8196 \**
--wsgi-file ${SERVICE_VARIANT}/wsgi.py
The related discussions are captured here: https://discuss.overhang.io/t/e-commerce-course-admin-page-threw-datatable-ajax-errors/1216/4
Hello
I followed this https://overhang.io/tutor/plugin/ecommerce page to setup with cybersource sandbox keys
in the payment page, Its showing error HTTP 400 for http://ecommerce.local.edly.io/bff/payment/v0/capture-context/
and tutor local logs Ecommerce shows these message:
tutor_local-ecommerce-1 | CyberSource.rest.ApiException: (400)
tutor_local-ecommerce-1 | Reason:
tutor_local-ecommerce-1 | HTTP response headers: HTTPHeaderDict({'Strict-Transport-Security': 'max-age=31536000', 'Cache-Control': 'no-cache, no-store, must-revalidate', 'Pragma': 'no-cache', 'Expires': '-1', 'X-Download-Options': 'noopen', 'Digest': 'SHA-256=kcJGmEfpVx1KkQUJj3YNlGPU7vyl8tMwhbRLy67MM+c=', 'Content-Type': 'application/json;charset=UTF-8', 'Content-Length': '323', 'Date': 'Fri, 26 Jan 2024 07:20:49 GMT', 'X-Cnection': 'close', 'Connection': 'keep-alive', 'v-c-correlation-id': '59951d89-02d7-45cf-b347-407dfa607dc0'})
tutor_local-ecommerce-1 | HTTP response body: {"responseStatus":{"status":400,"reason":"VALIDATION_ERROR","message":"One or more validation errors occurred","correlationId":null,"details":[{"location":"targetOrigin","message":"Target Origin[0] cannot use http protocol unless the host is localhost"}],"_embedded":{}},"_links":{"self":null,"documentation":[],"next":[]}}
would you have idea how to fix this?
is it able to run a test environment in development (local.edly.io) mode? or it just need to be a production server?
See comment here: overhangio/tutor-mfe#164 (comment)
Both frontend-app-learner-dashboard and frontend-app-ecommerce use port 1996. How is this issue handled in the devstack?
We will probably have to update the ecommerce port here. Since the ecommerce MFE is called "payment" in Tutor, I suggest we use port 7296 (keypad value, which is what I usually do to select ports).
Meets error when run master branch for k8s environment (v1.14)
seems that tutorecommerce/templates/ecommerce/apps/tutor.py should be put under tutorecommerce/templates/ecommerce/apps/settings.
Bug description
With the introduction of the ecommerce mfe, the development command:
tutor dev runserver ecommerce
Now starts the ecommerce mfe and without starting the e-commerce service.
Solution
Change
"MFE_APP": {
"name": "ecommerce",
"repository": "https://github.com/edx/frontend-app-ecommerce",
"port": 1996,
},
to
"MFE_APP": {
"name": "ecommercemfe",
"repository": "https://github.com/edx/frontend-app-ecommerce",
"port": 1996,
},
@overhangio/tutor-developers what do you think?
Why my contact email contains white spaces?
In Django you can set an email to [email protected] or "My LMS <[email protected]>", the second format will use "My LMS" as the sender name instead of no-reply or [email protected].
Where is the function?
The init file is here
https://github.com/overhangio/tutor-ecommerce/blob/master/tutorecommerce/templates/ecommerce/tasks/ecommerce/init
It's run with tutor local launch
Solution
If this is an issue I think the solution is:
Change
--from-email={{ CONTACT_EMAIL }} \
--payment-support-email={{ CONTACT_EMAIL }} \
To (with double quotes)
--from-email="{{ CONTACT_EMAIL }}" \
--payment-support-email="{{ CONTACT_EMAIL }}" \
ps: I've tried to set CONTACT_EMAIL="My LMS [email protected]" but when I ran tutor config save double quotes were removed.
Bug description
A message "Server Error" is showing on the ecommerce site at ecommerce.mydomain.com . That same error is also showing at ecommerce.mydomain.com/accounts/profile/
I am able to login into the ecommerce site but the urls mentioned above are showing an error so no information is being displayed.
tutor local logs lms --tail=100
on ecommerce.mydomain.com/accounts/profile/ is showing:
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 199, in _render
ecommerce_1 | return self.nodelist.render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 990, in render
ecommerce_1 | bit = node.render_annotated(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 957, in render_annotated
ecommerce_1 | return self.render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/loader_tags.py", line 177, in render
ecommerce_1 | return compiled_parent._render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 199, in _render
ecommerce_1 | return self.nodelist.render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 990, in render
ecommerce_1 | bit = node.render_annotated(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 957, in render_annotated
ecommerce_1 | return self.render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/loader_tags.py", line 177, in render
ecommerce_1 | return compiled_parent._render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 199, in _render
ecommerce_1 | return self.nodelist.render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 990, in render
ecommerce_1 | bit = node.render_annotated(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 957, in render_annotated
ecommerce_1 | return self.render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/loader_tags.py", line 72, in render
ecommerce_1 | result = block.nodelist.render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 990, in render
ecommerce_1 | bit = node.render_annotated(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 957, in render_annotated
ecommerce_1 | return self.render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/loader_tags.py", line 72, in render
ecommerce_1 | result = block.nodelist.render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 990, in render
ecommerce_1 | bit = node.render_annotated(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 957, in render_annotated
ecommerce_1 | return self.render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/loader_tags.py", line 216, in render
ecommerce_1 | return template.render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 209, in render
ecommerce_1 | return self._render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 199, in _render
ecommerce_1 | return self.nodelist.render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 990, in render
ecommerce_1 | bit = node.render_annotated(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 957, in render_annotated
ecommerce_1 | return self.render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/loader_tags.py", line 63, in render
ecommerce_1 | result = self.nodelist.render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 990, in render
ecommerce_1 | bit = node.render_annotated(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 957, in render_annotated
ecommerce_1 | return self.render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/defaulttags.py", line 458, in render
ecommerce_1 | url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/urls/base.py", line 87, in reverse
ecommerce_1 | raise NoReverseMatch("%s is not a registered namespace" % key)
ecommerce_1 | NoReverseMatch: u'catalogue' is not a registered namespace
tutor local logs --tail=100 ecommerce on ecommerce.mydomain.com is showing
ecommerce_1 | bit = node.render_annotated(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 957, in render_annotated
ecommerce_1 | return self.render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/loader_tags.py", line 177, in render
ecommerce_1 | return compiled_parent._render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 199, in _render
ecommerce_1 | return self.nodelist.render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 990, in render
ecommerce_1 | bit = node.render_annotated(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 957, in render_annotated
ecommerce_1 | return self.render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/loader_tags.py", line 177, in render
ecommerce_1 | return compiled_parent._render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 199, in _render
ecommerce_1 | return self.nodelist.render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 990, in render
ecommerce_1 | bit = node.render_annotated(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 957, in render_annotated
ecommerce_1 | return self.render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/loader_tags.py", line 72, in render
ecommerce_1 | result = block.nodelist.render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 990, in render
ecommerce_1 | bit = node.render_annotated(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 957, in render_annotated
ecommerce_1 | return self.render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/loader_tags.py", line 72, in render
ecommerce_1 | result = block.nodelist.render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 990, in render
ecommerce_1 | bit = node.render_annotated(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 957, in render_annotated
ecommerce_1 | return self.render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/loader_tags.py", line 216, in render
ecommerce_1 | return template.render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 209, in render
ecommerce_1 | return self._render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 199, in _render
ecommerce_1 | return self.nodelist.render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 990, in render
ecommerce_1 | bit = node.render_annotated(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 957, in render_annotated
ecommerce_1 | return self.render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/loader_tags.py", line 63, in render
ecommerce_1 | result = self.nodelist.render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 990, in render
ecommerce_1 | bit = node.render_annotated(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/base.py", line 957, in render_annotated
ecommerce_1 | return self.render(context)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/template/defaulttags.py", line 458, in render
ecommerce_1 | url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
ecommerce_1 | File "/openedx/venv/local/lib/python2.7/site-packages/django/urls/base.py", line 87, in reverse
ecommerce_1 | raise NoReverseMatch("%s is not a registered namespace" % key)
ecommerce_1 | NoReverseMatch: u'catalogue' is not a registered namespace
ecommerce_1 | 2020-05-24 16:52:49,011 WARNING 147 [django.request] /openedx/venv/local/lib/python2.7/site-packages/django/core/handlers/base.py:152 - Not Found: /
ecommerce_1 | 2020-05-24 16:52:49,011 WARNING 147 [django.request] /openedx/venv/local/lib/python2.7/site-packages/django/core/handlers/base.py:152 - Not Found: /
ecommerce_1 | 2020-05-24 16:52:49,011 WARNING 147 [django.request] /openedx/venv/local/lib/python2.7/site-packages/django/core/handlers/base.py:152 - Not Found: /
How to reproduce
I followed all the steps in the documentation to enable the ecommerce plugin
tutor plugins enable discovery ecommerce
tutor config save
tutor local quickstart
Environment
Ubuntu 18.04 and the Tutor version v3.12.5
See instructions:
https://discuss.overhang.io/t/how-to-upgrade-a-tutor-plugin/1488
overhangio/tutor#920
Don't forget to push your changes to the demo server, similar to this PR: https://github.com/overhangio/openedx-release-demo/pull/33/files
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.