cant create a new course with ott eCommerce

706 views
Skip to first unread message

Protocol Six Consulting

unread,
Nov 29, 2015, 7:08:51 PM11/29/15
to General Open edX discussion
Hi,

I have the Otto eCommerce service running at http://127.0.0.1:8002

When I try to add a new course at http://127.0.0.1:8002/courses, it will not save the course. (Error! An error occurred while saving the data.)

The stacktrace says "RelatedObjectDoesNotExist: Site has no siteconfiguration." but I created a site and partner per documentation
(http://open-edx-ecommerce-guide.readthedocs.org/en/latest/partner_config.html#site-configuration-model-django-admin)

Any thought what might be happening?

-----
Full stack trace below:

2015-11-29 18:44:16,812 ERROR 2277 [django.request] base.py:256 - Internal Server Error: /api/v2/publication/
Traceback (most recent call last):
  File "/home/edx_ecommerce/otto.venv/lib/python2.7/site-packages/django/core/handlers/base.py", line 132, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/edx_ecommerce/otto.venv/lib/python2.7/site-packages/django/utils/decorators.py", line 145, in inner
    return func(*args, **kwargs)
  File "/home/edx_ecommerce/otto.venv/lib/python2.7/site-packages/django/views/decorators/csrf.py", line 58, in wrapped_view
    return view_func(*args, **kwargs)
  File "/home/edx_ecommerce/otto.venv/lib/python2.7/site-packages/django/views/generic/base.py", line 71, in view
    return self.dispatch(request, *args, **kwargs)
  File "/home/edx_ecommerce/otto.venv/lib/python2.7/site-packages/rest_framework/views.py", line 466, in dispatch
    response = self.handle_exception(exc)
  File "/home/edx_ecommerce/otto.venv/lib/python2.7/site-packages/rest_framework/views.py", line 463, in dispatch
    response = handler(request, *args, **kwargs)
  File "/home/edx_ecommerce/otto.venv/ecommerce/ecommerce/extensions/api/v2/views/publication.py", line 25, in post
    return self._save_and_publish(request.data)
  File "/home/edx_ecommerce/otto.venv/ecommerce/ecommerce/extensions/api/v2/views/publication.py", line 35, in _save_and_publish
    serializer = self.get_serializer(data=data)
  File "/home/edx_ecommerce/otto.venv/lib/python2.7/site-packages/rest_framework/generics.py", line 110, in get_serializer
    kwargs['context'] = self.get_serializer_context()
  File "/home/edx_ecommerce/otto.venv/ecommerce/ecommerce/extensions/api/v2/views/publication.py", line 21, in get_serializer_context
    context['partner'] = get_partner_for_site(self.request)
  File "/home/edx_ecommerce/otto.venv/ecommerce/ecommerce/extensions/partner/shortcuts.py", line 12, in get_partner_for_site
    return site.siteconfiguration.partner
  File "/home/edx_ecommerce/otto.venv/lib/python2.7/site-packages/django/db/models/fields/related.py", line 470, in __get__
    self.related.get_accessor_name()
RelatedObjectDoesNotExist: Site has no siteconfiguration.



Clinton Blackburn

unread,
Nov 30, 2015, 5:52:53 PM11/30/15
to General Open edX discussion
What values are you using for your site and site configuration? What is the ID of the site?

I suspect that your site is linked to your real hostname, so your local instance on host 127.0.0.1 is not being found, and defaulting to the default site ID, 1, which is tied to example.com, unless you changed it.

You can either change the SITE_ID setting to the appropriate and/or replace the default Django example.com site with the correct values. I recommend the latter to avoid future confusion and having an irrelevant site in your database.

Protocol Six Consulting

unread,
Dec 4, 2015, 4:16:22 PM12/4/15
to General Open edX discussion
Thanks Clinton,

Option # 2, which you outlined, helped me fix the problem.

I now can create the course as a "verified" course in Otto and set a price, etc.
----

However when I enroll in the course via my EdX LMS and then try to purchase the "verified" option by clicking on the button I get taken to the following LMS page, which shows a 500 error.

http://www.exampledomain.com/verify_student/upgrade/mycoursel/2186bch-an001-op/course/ and the console on otto says:

[04/Dec/2015 06:16:16] "GET /api/v2/courses/?page_size=50 HTTP/1.1" 200 470
2015-12-04 06:18:04,561 DEBUG 31658 [ecommerce.extensions.api.authentication] authentication.py:52 - Incorrect authentication credentials.

The API credentials (REST api) work via Curl, so I know they're not wrong.

Any thoughts about that issue? 

I feel I'm close to making all this work.

:-)


Clinton Blackburn

unread,
Dec 4, 2015, 5:09:10 PM12/4/15
to edx-...@googlegroups.com
The logs you provided aren't much to go on.

The checkout page makes a call to Otto to get the available payment processors. This call is authenticated via JWT. Authentication fails if your JWT issuer or signing key is invalid. See the links below.


Note that the issuer should be the oauth2 endpoint of your LMS (e.g. https://courses.stage.edx.org/oauth2).

Clinton

Protocol Six Consulting

unread,
Dec 6, 2015, 9:00:02 AM12/6/15
to General Open edX discussion
Hi,

I made sure that my JWT_ISSUERS and secrets, etc. are all correctly matched between otto and lms, but to no avail.

The error merely changed to:

2015-12-05 19:48:07,286 DEBUG 12275 [ecommerce.extensions.api.authentication] authentication.py:52 - Error decoding signature.
[05/Dec/2015 19:48:07] "GET /api/v2/payment/processors/ HTTP/1.1" 401 38

I tried to change my signing keys to simple strings (as a troubleshooting method), but no luck.

It seems that lms may be sending a malformed JWT?


Clinton Blackburn

unread,
Dec 6, 2015, 9:18:40 AM12/6/15
to edx-...@googlegroups.com
Share a copy of your settings for both apps. Omit the database and SECRET_KEY values. 
--
You received this message because you are subscribed to a topic in the Google Groups "General Open edX discussion" group.
To view this discussion on the web visit https://groups.google.com/d/msgid/edx-code/601d6721-4c0b-4013-be02-e7ffbe8a1ca7%40googlegroups.com.


--
Clinton Blackburn

John Swope

unread,
Dec 21, 2015, 11:14:16 AM12/21/15
to General Open edX discussion
Hi Clinton, 

Thank you for these tips. They were extremely helpful getting me started with Otto. 

I'd like to add to this thread, as I'm facing the same issue as Protocol Six. Here are my selected, and cleaned settings. Many things are cleaned, but I tried to write down where I triple-checked that they are matching. 

****BEGIN local.py (cleaned for urls and private keys)******

"""Development settings and globals."""

from __future__ import absolute_import


import os

from os.path import join, normpath


from ecommerce.settings import get_lms_url

from ecommerce.settings.base import *

from ecommerce.settings.logger import get_logger_config



# DEBUG CONFIGURATION

# See: https://docs.djangoproject.com/en/dev/ref/settings/#debug

DEBUG = True

# END DEBUG CONFIGURATION


# EMAIL CONFIGURATION

# See: https://docs.djangoproject.com/en/dev/ref/settings/#email-backend

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

# END EMAIL CONFIGURATION



# DATABASE CONFIGURATION

# See: https://docs.djangoproject.com/en/dev/ref/settings/#databases

DATABASES = {

    'default': {

        'ENGINE': ‘omitted’,

        'NAME': omitted,

        'USER': ‘omitted’,

        'PASSWORD': ‘omitted’,

        'HOST': ‘omitted’,

        'PORT': ‘omitted’,

        'ATOMIC_REQUESTS': True,

    }

}

# END DATABASE CONFIGURATION



# CACHE CONFIGURATION

# See: https://docs.djangoproject.com/en/dev/ref/settings/#caches

CACHES = {

    'default': {

        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',

    }

}

# END CACHE CONFIGURATION



# TOOLBAR CONFIGURATION

# See: http://django-debug-toolbar.readthedocs.org/en/latest/installation.html#explicit-setup

if os.environ.get('ENABLE_DJANGO_TOOLBAR', False):

    INSTALLED_APPS += (

        'debug_toolbar',

    )


    MIDDLEWARE_CLASSES += (

        'debug_toolbar.middleware.DebugToolbarMiddleware',

    )


    DEBUG_TOOLBAR_PATCH_SETTINGS = False


http://django-debug-toolbar.readthedocs.org/en/latest/installation.html

INTERNAL_IPS = ('127.0.0.1',)

# END TOOLBAR CONFIGURATION



# URL CONFIGURATION

ECOMMERCE_URL_ROOT = 'http://[my_site]:8002'


LMS_URL_ROOT = 'http://[my_site]'


# The location of the LMS heartbeat page

LMS_HEARTBEAT_URL = get_lms_url('/heartbeat')


# The location of the LMS student dashboard

LMS_DASHBOARD_URL = get_lms_url('/dashboard')


OAUTH2_PROVIDER_URL = get_lms_url('/oauth2')


COMMERCE_API_URL = get_lms_url('/api/commerce/v1/')

# END URL CONFIGURATION



# AUTHENTICATION

# Set these to the correct values for your OAuth2/OpenID Connect provider (e.g., devstack)

SOCIAL_AUTH_EDX_OIDC_KEY = '0b55d11db7c80221524f'

SOCIAL_AUTH_EDX_OIDC_SECRET = ‘omitted, but verified same as Django Admin>Oauth2>Clients>Client Secret’

SOCIAL_AUTH_EDX_OIDC_URL_ROOT = OAUTH2_PROVIDER_URL

SOCIAL_AUTH_EDX_OIDC_ID_TOKEN_DECRYPTION_KEY = SOCIAL_AUTH_EDX_OIDC_SECRET

JWT_AUTH.update({

    'JWT_SECRET_KEY': ‘Omitted, but verified same as LMS.AUTH.JSON ECOMMERCE_API_SIGNING_KEY,

    'JWT_ISSUERS': (OAUTH2_PROVIDER_URL,),

})

# END AUTHENTICATION



# ORDER PROCESSING

ENROLLMENT_API_URL = get_lms_url('/api/enrollment/v1/enrollment')

ENROLLMENT_FULFILLMENT_TIMEOUT = 15  # devstack is slow!


EDX_API_KEY = 'Omitted, but verified same as lms.auth.json EDX_API_KEY'

# END ORDER PROCESSING



# PAYMENT PROCESSING

PAYMENT_PROCESSOR_CONFIG = {

    'cybersource': {

        'soap_api_url': 'https://ics2wstest.ic3.com/commerce/1.x/transactionProcessor/CyberSourceTransaction_1.115.wsdl',

        'merchant_id': ‘omitted’,

        'transaction_key': ‘omitted’,

        'profile_id': ‘omitted’,

        'access_key': ‘omitted’,

        'secret_key': ‘omitted’,

        'payment_page_url': 'https://testsecureacceptance.cybersource.com/pay',

        'receipt_page_url': get_lms_url('/commerce/checkout/receipt/'),

        'cancel_page_url': get_lms_url('/commerce/checkout/cancel/'),

    },

    'paypal': {

        'mode': 'sandbox',

        'client_id': ‘omitted’,

        'client_secret': ‘omitted’,

        'receipt_url': get_lms_url('/commerce/checkout/receipt/'),

        'cancel_url': get_lms_url('/commerce/checkout/cancel/'),

        'error_url': get_lms_url('/commerce/checkout/error/'),

    },

}

# END PAYMENT PROCESSING



# CELERY

BROKER_URL = 'amqp://'


# Uncomment this to run tasks in-process (i.e., synchronously).

# CELERY_ALWAYS_EAGER = True

# END CELERY



ENABLE_AUTO_AUTH = True

LOGGING = get_logger_config(debug=DEBUG, dev_env=True, local_loglevel='DEBUG')


#####################################################################

# Lastly, see if the developer has any local overrides.

if os.path.isfile(join(dirname(abspath(__file__)), 'private.py')):

    from .private import *  # pylint: disable=import-error


******END local.py*********



******BEGIN selected lms.env.json settings ******


    "ECOMMERCE_API_URL": "http://[my_site]:8002/api/v2/",

    "ECOMMERCE_PUBLIC_URL_ROOT": "http://[my_site]:8002/",


    "JWT_EXPIRATION": 30,

    "JWT_ISSUER": "http://[my_site]/oauth2",


    "OAUTH_ENFORCE_SECURE": false,

    "OAUTH_OIDC_ISSUER": "http://[my_site]/oauth2",



    "FEATURES": {

        "AUTH_USE_OPENID_PROVIDER": true,

        "AUTOMATIC_AUTH_FOR_TESTING": false,

        "CERTIFICATES_ENABLED": true,

        "EMBARGO": true,

        "ENABLE_COMBINED_LOGIN_REGISTRATION": true,

        "ENABLE_CORS_HEADERS": false,

        "ENABLE_COUNTRY_ACCESS": false,

        "ENABLE_CROSS_DOMAIN_CSRF_COOKIE": false,

        "ENABLE_DISCUSSION_HOME_PANEL": false,

        "ENABLE_DISCUSSION_SERVICE": false,

        "ENABLE_EDXNOTES": false,

        "ENABLE_INSTRUCTOR_ANALYTICS": false,

        "ENABLE_MKTG_SITE": false,

        "ENABLE_ONLOAD_BEACON": false,

        "ENABLE_OAUTH2_PROVIDER": true,

        "ENABLE_S3_GRADE_DOWNLOADS": true,

        "ENABLE_SYSADMIN_DASHBOARD": true,

        "ENABLE_THIRD_PARTY_AUTH": false,

        "ENABLE_VIDEO_BEACON": false,

        "ENABLE_VIDEO_UPLOAD_PIPELINE": false,

        "PREVIEW_LMS_BASE": "",

        "SUBDOMAIN_BRANDING": false,

        "SUBDOMAIN_COURSE_LISTINGS": false,

        "USE_CUSTOM_THEME": false,

        "ENABLE_SHOPPING_CART": false,

        "ENABLE_PAID_COURSE_REGISTRATION": false

    },


****END selected lms.env.json settings******




****BEGIN selected lms.auth.json settings*****

LMS.AUTH.JSON

    "ECOMMERCE_API_SIGNING_KEY": “Omitted, but verified same as Commerce local.py JWT_SECRET_KEY”,

    "EDX_API_KEY": "Omitted, but verified same as local.py EDX_API_KEY",

****END selected lms.auth.json settings*******

David Baumgold

unread,
Dec 21, 2015, 12:29:21 PM12/21/15
to John Swope, edx-...@googlegroups.com
John, in the future, it would be much better to use a pastebin service like GitHub Gist for this sort of thing. It makes your code much easier to read, and with Gist, you can specifically include multiple different files in one gist, as well.

David Baumgold
You received this message because you are subscribed to the Google Groups "General Open edX discussion" group.
To view this discussion on the web visit https://groups.google.com/d/msgid/edx-code/8added59-bef6-43ae-b9ab-096c0cfe0aae%40googlegroups.com.

Clinton Blackburn

unread,
Dec 21, 2015, 5:30:03 PM12/21/15
to General Open edX discussion, jo...@johnswope.com
Those settings all appear correct. Make sure that ECOMMERCE_API_SIGNING_KEY (for LMS), and SOCIAL_AUTH_EDX_OIDC_SECRET and JWT_SECRET_KEY (for Otto) all match.

Generally decoding errors occur for one of three reasons:

  1. Invalid signing key
  2. Invalid issuer
  3. Clock skew
Make sure the time is in sync for both systems.

On Monday, December 21, 2015 at 12:29:21 PM UTC-5, David Baumgold wrote:
John, in the future, it would be much better to use a pastebin service like GitHub Gist for this sort of thing. It makes your code much easier to read, and with Gist, you can specifically include multiple different files in one gist, as well.

David Baumgold

Protocol Six Consulting

unread,
Dec 22, 2015, 12:26:37 PM12/22/15
to General Open edX discussion, jo...@johnswope.com
Hi Clinton,

If I hit

lms_url/api/commerce/v1/ with my browser, I get a "Page Not found"

Should I be able to see something at that location?

If so, is there an LMS feature I might have failed to enable?

Protocol Six Consulting

unread,
Dec 22, 2015, 12:54:55 PM12/22/15
to General Open edX discussion, jo...@johnswope.com
Also, interestingly

When I make

ECOMMERCE_API_SIGNING_KEY (for LMS = SOCIAL_AUTH_EDX_OIDC_SECRET (OTTO) = JWT_SECRET_KEY (Otto)  ==>  [ecommerce.extensions.api.authentication] authentication.py:52 - Error decoding signature

but if

ECOMMERCE_API_SIGNING_KEY (LMS) = JWT_SECRET_KEY (Otto) != SOCIAL_AUTH_EDX_OIDC_SECRET   ==>  [ecommerce.extensions.api.authentication] authentication.py:52 - Incorrect authentication credentials.

Clinton Blackburn

unread,
Dec 22, 2015, 1:02:51 PM12/22/15
to General Open edX discussion, jo...@johnswope.com
Here are the settings I use: https://gist.github.com/clintonb/c45f4136c26c03d1f4ed

Clinton

Protocol Six Consulting

unread,
Dec 22, 2015, 1:18:22 PM12/22/15
to General Open edX discussion, jo...@johnswope.com
Thanks.

I had seen those previously and based on them I enabled

FEATURES["ENABLE_CREDIT_API"] = True
FEATURES["ENABLE_CREDIT_ELIGIBILITY"] = True
FEATURES["ENABLE_MOBILE_REST_API"] = True

But that made no difference.

Also, I notice in your settings:

ECOMMERCE_API_SIGNING_KEY (for LMS) and JWT_SECRET_KEY (for Otto) *DO NOT* match SOCIAL_AUTH_EDX_OIDC_SECRET.

Thus that must not be a true requirement, right?

John Swope

unread,
Dec 31, 2015, 9:37:27 AM12/31/15
to General Open edX discussion, jo...@johnswope.com
Hi All,
I ended up changing the authenticate method in ecommerce/extensions/api/authentication.py. It is working now. 

Protocol Six Consulting

unread,
Jan 1, 2016, 1:01:24 PM1/1/16
to General Open edX discussion, jo...@johnswope.com

Thanks John,

Your code changes work for me too!

Now Paypal transactions finally succeed against the sandbox.

The only problem remaining for me is that after successful payment the receipt page is not generated properly in lms and the course does not appear on the dashboard (i.e. user is not enrolled in course)

I'm thinking Otto does not like "/" delimiter in course names. Clinton, Is Otto picky about that?

If not any thoughts what might be happening?

See debug info below:

Otto STOUT
---------------
2016-01-01 12:13:45,796 INFO 10472 [ecommerce.extensions.payment.processors.paypal] paypal.py:209 - Success
fully executed PayPal payment [PAY-4N502827UR556492WK2DLHNI] for basket [9].
2016-01-01 12:13:45,798 INFO 10472 [ecommerce.extensions.analytics.utils] utils.py:87 - payment_received: a
mount="7.00", basket_id="9", currency="USD", processor_name="paypal", reference="PAY-4N502827UR556492WK
2DLHNI", user_id="4"
2016-01-01 12:13:45,847 INFO 10472 [ecommerce.extensions.analytics.utils] utils.py:87 - order_placed: amoun
t="7.00", basket_id="9", currency="USD", order_number="STORE-100009", user_id="4"
2016-01-01 12:13:45,860 INFO 10472 [ecommerce.extensions.fulfillment.api] api.py:39 - Attempting to fulfill
 products for order [STORE-100009]
2016-01-01 12:13:45,867 INFO 10472 [ecommerce.extensions.fulfillment.modules] modules.py:149 - Attempting t
o fulfill 'Seat' product types for order [STORE-100009]
2016-01-01 12:13:45,871 DEBUG 10472 [ecommerce.extensions.fulfillment.modules] modules.py:173 - Seat [6] ha
s no credit_provider attribute. Defaulted to None.
2016-01-01 12:13:45,914 ERROR 10472 [ecommerce.extensions.fulfillment.modules] modules.py:224 - Unable to f
ulfill line [5] of order [STORE-100009] due to a server-side error: No course 'MyCoolOrganization/BCH-AN001
-OP/2015_Fall' found for enrollment
2016-01-01 12:13:45,918 INFO 10472 [ecommerce.extensions.fulfillment.modules] modules.py:237 - Finished ful
filling 'Seat' product types for order [STORE-100009]
2016-01-01 12:13:45,919 ERROR 10472 [ecommerce.extensions.fulfillment.api] api.py:73 - There was an error w
hile fulfilling order [STORE-100009]
2016-01-01 12:13:45,922 INFO 10472 [ecommerce.extensions.fulfillment.api] api.py:78 - Finished fulfilling o
rder [STORE-100009] with status [Fulfillment Error]


lms website:
-----------
An error occurred while creating your receipt.
If your course does not appear on your dashboard, contact bil...@example.com.


/edx/var/log/lms/edx.log
------------------------
Entering verified workflow for user '15', course 'course-v1:MyCoolOrganization+BCH-AN001-OP+2015_Fall', wit
h current step 'None'.
Jan  1 17:13:20 ip-172-31-57-163 [service_variant=lms][requests.packages.urllib3.connectionpool][env:sandbo
x] INFO [ip-172-31-57-163  26012] [connectionpool.py:180] - Starting new HTTP connection (1):
mycoolorganization.site
Jan  1 17:13:23 ip-172-31-57-163 [service_variant=lms][requests.packages.urllib3.connectionpool][env:sandbo
x] INFO [ip-172-31-57-163  26015] [connectionpool.py:180] - Starting new HTTP connection (1):
mycoolorganization.site
Jan  1 17:13:25 ip-172-31-57-163 [service_variant=lms][commerce.utils][env:sandbox] INFO [ip-172-31-57-163
 26015] [utils.py:34] - checkout_requested:
course_id="course-v1:MyCoolOrganization+BCH-AN001-OP+2015_Fall", mode="verified", processor_name="paypal",
user_id="15"
Jan  1 17:13:45 ip-172-31-57-163 [service_variant=lms][enrollment.data][env:sandbox] WARNING [ip-172-31-57-
163  26015] [data.py:167] - Requested enrollment information for unknown course
MyCoolOrganization/BCH-AN001-OP/2015_Fall
Jan  1 17:13:45 ip-172-31-57-163 [service_variant=lms][lms.djangoapps.commerce.utils][env:sandbox] INFO [ip
-172-31-57-163  26015] [utils.py:34] - enrollment_change_requested: actual_activation="None",
actual_mode="None", course_id="MyCoolOrganization/BCH-AN001-OP/2015_Fall", requested_activation="True", req
uested_mode="verified", user_id="15


Clinton Blackburn

unread,
Jan 1, 2016, 1:05:02 PM1/1/16
to edx-...@googlegroups.com
Otto doesn't care about the characters in a course ID.

The reason for the failure is in your LMS logs:
Jan  1 17:13:45 ip-172-31-57-163 [service_variant=lms][enrollment.data][env:sandbox] WARNING [ip-172-31-57-163  26015] [data.py:167] - Requested enrollment information for unknown course MyCoolOrganization/BCH-AN001-OP/2015_Fall

You may have the wrong course ID set for the purchased product.

Clinton Blackburn

--
You received this message because you are subscribed to a topic in the Google Groups "General Open edX discussion" group.

Protocol Six Consulting

unread,
Jan 2, 2016, 3:18:31 PM1/2/16
to General Open edX discussion
Fixed the above, and now there is a new otto error:

Unable to fulfill line [13] of order [STORE-100017] due to a server-side error: The course mode 'honor' is not available for course BLAH.

What attribute in otto maps to the LMS course mode?

lms course mode_slug => otto variant title, certificate_type or course_key?

Please advise.




Renzo Lucioni

unread,
Jan 2, 2016, 4:16:10 PM1/2/16
to General Open edX discussion
Taken together, Otto's certificate_type and id_verification_required attributes are equivalent to the LMS' course modes.

Your error suggests that the course mode Otto expects doesn't exist on the LMS. I recommend using the Course Administration Tool (CAT) hosted by Otto at /courses to configure your products and course modes. For more, see here.

Protocol Six Consulting

unread,
Jan 2, 2016, 6:10:22 PM1/2/16
to General Open edX discussion
Hi Renzo,

Thanks for that hint.
Everything is working great now that I deleted and recreated my course in otto/courses.
My course had been setup a while ago as a verified course but without the honors option.

Thanks again!


melvin bautista

unread,
Jan 5, 2016, 8:30:32 AM1/5/16
to edx-...@googlegroups.com

Hi i have the Otto eCommerce service running at x.x.x.x:18130 and the gui shows up.

​is the otto gui is correct?
And then when i try to go to x.x.x.x:18130/courses it will direct to me to the http://x.x.x.x/oauth2/authorize/xxxxxx/xxxxxx/xxx

and it says page not found.

I already configure the cliend key and client secret.. but i dont know why im directed to the page not found.


Regards,
Melvs

--
You received this message because you are subscribed to the Google Groups "General Open edX discussion" group.
To view this discussion on the web visit https://groups.google.com/d/msgid/edx-code/389e5d51-f85a-4b13-9d4d-0bb65ee0d464%40googlegroups.com.

Clinton Blackburn

unread,
Jan 5, 2016, 8:34:51 AM1/5/16
to edx-...@googlegroups.com
Melvin,

We are happy to help. However, unless you have an issue related to the Course Administration Tool (CAT), please start a new thread. 

Thanks,
Clinton Blackburn




You received this message because you are subscribed to a topic in the Google Groups "General Open edX discussion" group.
To view this discussion on the web visit https://groups.google.com/d/msgid/edx-code/CAOb9m_GNY8cDO3%2BRMWfvqdVAgxnyzSO3Z7KT4hiqQqQnB606Tw%40mail.gmail.com.

melvin bautista

unread,
Jan 5, 2016, 8:44:02 AM1/5/16
to edx-...@googlegroups.com
Hi Clinton,
Sorry for that.I'm creating a new thread regarding for my issue.

Thanks,
Melvin

Nishant Dixit

unread,
Aug 7, 2016, 9:13:02 AM8/7/16
to General Open edX discussion
@Clinton Could you take a look at this thread and help me please - https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!topic/openedx-ops/CbC3Jzlnqe0
Reply all
Reply to author
Forward
0 new messages