1

'Callback invoke error: error' Again

When on a question page, I get the 'Callback invoke error: error' message on the following actions: 'delete', 'flag offensive', and vote up and vote down.

I would appreciate any pointers on how to resolve this. It seems to be related to using the wrong encoding at some level of the system, but I'm not sure which part. My messages are localized to Arabic, but I'm not mixing languages, so in settings.py

USE_I18N = True
LANGUAGE_CODE = 'ar'

I have included the log from the dev server for a short session:

#$ python manage.py runserver `hostname -i`:8000
/usr/local/lib/python2.6/dist-packages/django/db/__init__.py:19: DeprecationWarning: settings.DATABASE_* is deprecated; use settings.DATABASES instead.
  DeprecationWarning
/usr/local/lib/python2.6/dist-packages/django/db/__init__.py:60: DeprecationWarning: Short names for ENGINE in database configurations are deprecated. Prepend default.ENGINE with 'django.db.backends.'
  DeprecationWarning
/usr/local/lib/python2.6/dist-packages/django/db/__init__.py:19: DeprecationWarning: settings.DATABASE_* is deprecated; use settings.DATABASES instead.
  DeprecationWarning
/usr/local/lib/python2.6/dist-packages/django/db/__init__.py:60: DeprecationWarning: Short names for ENGINE in database configurations are deprecated. Prepend default.ENGINE with 'django.db.backends.'
  DeprecationWarning
Validating models...

0 errors found
Django version 1.3.1, using settings 'askbotqa.settings'
Development server is running at http://127.0.1.1:8000/
Quit the server with CONTROL-C.
/usr/local/lib/python2.6/dist-packages/django/contrib/auth/__init__.py:26: DeprecationWarning: Authentication backends without a `supports_object_permissions` attribute are deprecated. Please define it in <class 'askbot.deps.django_authopenid.backends.AuthBackend'>.
  DeprecationWarning)
/usr/local/lib/python2.6/dist-packages/django/contrib/auth/__init__.py:31: DeprecationWarning: Authentication backends without a `supports_anonymous_user` attribute are deprecated. Please define it in <class 'askbot.deps.django_authopenid.backends.AuthBackend'>.
  DeprecationWarning)
/usr/local/lib/python2.6/dist-packages/django/contrib/auth/models.py:393: DeprecationWarning: The user messaging API is deprecated. Please update your code to use the new messages framework.
  category=DeprecationWarning)
/usr/local/lib/python2.6/dist-packages/django/core/context_processors.py:27: DeprecationWarning: The context processor at `django.core.context_processors.auth` is deprecated; use the path `django.contrib.auth.context_processors.auth` instead.
  DeprecationWarning
[20/Jan/2012 21:01:06] "GET /%D8%B3%D8%A4%D8%A7%D9%84/3/d-twl-lbhth-n-lls-lhqyqy-lsrq-lhdhy HTTP/1.1" 200 22799
[20/Jan/2012 21:01:07] "GET /m/default/media/style/style.css?v=7 HTTP/1.1" 304 0
[20/Jan/2012 21:01:07] "GET /m/common/media/js/wmd/wmd.css?v=7 HTTP/1.1" 304 0
[20/Jan/2012 21:01:07] "GET /m/common/media/js/jquery-1.4.3.js?v=7 HTTP/1.1" 304 0
[20/Jan/2012 21:01:07] "GET /m/common/media/js/utils.js?v=7 HTTP/1.1" 304 0
[20/Jan/2012 21:01:07] "GET /jsi18n/ HTTP/1.1" 200 13955
[20/Jan/2012 21:01:07] "GET /m/common/media/js/editor.js?v=7 HTTP/1.1" 304 0
[20/Jan/2012 21:01:07 ...
(more)
Basel Shishani's avatar
197
Basel Shishani
asked 2012-01-21 01:50:17 -0600
Evgeny's avatar
13.2k
Evgeny
updated 2012-01-21 06:29:57 -0600
edit flag offensive 0 remove flag close merge delete

Comments

Could you clarify - where did you obtain the source code for askbot and which version are you using?

Evgeny's avatar Evgeny (2012-01-21 06:31:13 -0600) edit

The version is 0.7.38. I obtained it using pip for the the first time, then pip --update later.

Basel Shishani's avatar Basel Shishani (2012-01-21 07:28:41 -0600) edit

The url translation is broken, looking into it now, will be fixed in the next version.

Evgeny's avatar Evgeny (2012-01-21 08:01:43 -0600) edit

I think we should not be supporting non-ascii urls. I've checked a bunch of non-ascii sites: aljazeera, xinhua, baidu and none of them show unicode characters in the urls. Could you point me to some famous blogs in Arabic? I'd like to know how they handle urls and slugs.

Evgeny's avatar Evgeny (2012-01-21 09:17:08 -0600) edit
add a comment see more comments

2 Answers

1

I will expand a bit on this topic. (Please note in the following that I'm new to the Python/Django scene.)

With regards to the handling of url's and slugs:

  • the majority of top tier sites do not use url encoding (percent encoding) for the slugs. Some just use English titles, most use articles id's.

  • few of the top tier sites do use URL encoding for the slugs - some examples (providing them in the ugly encoded form):

http://sayedmokhtar.maktoobblog.com/1633941/%D8%AF%D9%83%D8%AA%D9%88%D8%B1-%D8%B3%D9%8A%D8%AF-%D9%85%D8%AE%D8%AA%D8%A7%D8%B1-%D9%8A%D9%83%D8%AA%D8%A8-%D8%AB%D9%88%D8%B1%D8%A9-%D8%B4%D8%B9%D8%A8%D9%8A%D8%A9-%D9%82%D8%A7%D8%AF%D9%85%D8%A9/

http://fr-fr.facebook.com/pages/%D8%A7%D9%84%D8%AB%D9%88%D8%B1%D8%A9-%D8%A7%D9%84%D8%B4%D8%B9%D8%A8%D9%8A%D8%A9-%D8%A7%D9%84%D9%85%D8%BA%D8%B1%D8%A8%D9%8A%D8%A9-%D8%A7%D9%84%D9%82%D8%A7%D8%AF%D9%85%D8%A9/188865831132687

  • few use Romanized slugification - couldn't find examples in my quick search - but it's out there.

Using percent encoding with Arabic comes with its pros and cons:

Cons: because of implementation issues and inconsistencies among different browsers, issues arise like:

  • url's look ugly when copied around.
  • bidi issues (mis-arrangement).

Pros: would help with SEO (possible)

Now to Askbot; I can see it's using both Romanization for article slugs and percent encoding for the section names in the path segment. I'm not sure where the slugification is happening (Askbot level or Django level) - this is just a sample url from a test site where the encoded segment is the 'questions' section:

http://127.0.1.1:8000/%D8%B3%D8%A4%D8%A7%D9%84/5/brkt-mwzfy-wzrth-lmlyn-fy-mktb-lkhdm-ljtmy

The slugify function is rather crude and removes some characters that don't have latin counterparts, thus it would be better to override it. Informal transliterated writing is in common use for Arabic (and other languages), for example in chat, sms and in cases where there are technical issues - see http://en.wikipedia.org/wiki/Arabic_chat_alphabet - so the slugification option makes good sense, but there are conventions in mapping the letters between the two languages, so it also makes sense that different languages can have different mappings or even different translation functions.

I would also like to have the choice to get rid of percent encoding in the path segment of the URL (because of the url encoding issues mentioned above), and replace it with either a Romanized form or the original English strings (ie 'questions' segment remains the same even when the locale is set to something not English). (not sure how to get the original English strings with gettext ... (more)

Basel Shishani's avatar
197
Basel Shishani
answered 2012-01-25 03:29:55 -0600, updated 2012-01-25 03:35:01 -0600
edit flag offensive 0 remove flag delete link

Comments

add a comment see more comments
1

Fixed this bug in the repository, will be available in 0.7.40.

It was possible to fix this without losing the ability to show unicode urls in the browsers. The downside of using non-ascii characters in the urls is that older browsers won't display them properly.

Evgeny's avatar
13.2k
Evgeny
answered 2012-01-21 21:36:11 -0600
edit flag offensive 0 remove flag delete link

Comments

Looking forward to it, thanks.

Basel Shishani's avatar Basel Shishani (2012-01-25 02:25:24 -0600) edit
add a comment see more comments