- changed status to open
django-postman + django-ajax-selects usage
So i have just started using django-postman==3.2.2 and i am trying to integrate auto-complete using django-ajax-selects==1.3.6 while using django-authtools==1.2.0 to have a custom user model with no luck.
settings.py
AJAX_LOOKUP_CHANNELS = {
'postman_users': dict(model='authtools.user', search_field='email'),
}
POSTMAN_AUTOCOMPLETER_APP = {
'arg_default': 'postman_users',
}
AUTH_USER_MODEL = 'authtools.User'
I tried changing from model='authtools.user to model='auth.user but it doesn't work.
urls.py
from ajax_select import urls as ajax_select_urls
url(r'^messages/lookups/',
include(ajax_select_urls)),
url(r'^messages/', include('postman.urls')),
I then go to the built in postman view http://localhost:8000/messages/write/ and when i fill the recipients input nothing happens.
What am i missing? Isn't this supposed to work with just these settings?
Comments (12)
-
repo owner -
repo owner Seems my previous comment is not enough. There is another change between django-ajax-selects 1.2.5 and 1.3.6. WIP.
-
reporter @psam i am willing to downgrade
django-ajax-selects
to a version that works that is compatible with Django 1.7 and works "out of the box". which one should i use? -
repo owner v1.2.5 does work on Django 1.5, but not more :(
I found a fix for a single entry. Now, for multiple entries as "user1, user2", the javascript has to be reviewed because all this part has been re-factored in version 1.3.
-
repo owner Fixed in dev. Grant me some time to finalize and update the documentation.
-
reporter Sure @psam ill be waiting :) thanks
-
repo owner - changed status to resolved
Done. Please adapt your code according to changes of the commit.
-
reporter - changed status to open
-
reporter @psam i installed the latest version on pip and i am still not able to get this working out of the box just by going to http://localhost:8000/messages/write/ and keeping the same settings as above.
i created a
postman/templates/autocomplete.html
and copied the code inautocomplete_postman_multiple_as1-3.html
to it. I even setup an aditional channel:AJAX_LOOKUP_CHANNELS = { 'postman_users': dict(model='authtools.user', search_field='email'), 'postman_multiple_as1-3': dict(model='authtools.user', search_field='email'), }
I guess i am still missing something. using
django-ajax-selects==1.3.6
anddjango-postman==3.3.0
By the way, i have
django-ajax-selects
working by itself in the admin -
repo owner You are the only one who can debug your configuration. Think back to my first comment.
Trace the request, both on browser side and server side, and you will find the lacks.
-
reporter @psam as a workaround i ended up using
django-autocomplete-light
which i found much easier to use and understand thandjango-ajax-selects
I then created my own extended form and passed to the write view:
class MyCustomWriteForm(BaseWriteForm): recipients = autocomplete_light.ChoiceField( 'UserAutocomplete', label='recipients') class Meta(BaseWriteForm.Meta): fields = ('recipients', 'subject', 'body')
in my urls.py:
url(r'^messages/write/(?:(?P<recipients>[^/#]+)/)?$', WriteView.as_view(form_classes=(MyCustomWriteForm, AnonymousWriteForm)), name='write'),
-
repo owner - changed status to closed
- Log in to comment
In simple lookup channel, quoted from ajax_selects site: "To ensure that nobody can get your data via json simply by knowing the URL. The default is to limit it to request.user.is_staff and raise a PermissionDenied exception.".
Set the is_staff flag on the User used for your try, to confirm this assertion.
Knowing this, for a production usage, you may have to build a custom lookup channel implementation.
Note: contrary to the site, the error code is 403, not 401.