zestedesavoir / zds-site

Cœur du projet technique de Zeste de Savoir
https://zestedesavoir.com
Other
268 stars 161 forks source link

L'autocomplétion ne marche pas pour certains membres particuliers #2298

Open firm1 opened 9 years ago

firm1 commented 9 years ago

Je suis allé voir le profil de ce monsieur au pseudo très interessant : &.

Je voulais lui écrire un MP. J'ai cliqué sur "Envoyer un message privé", mais je ne le vois pas dans la liste des participants. Et là je tente de commencer à saisir son pseudo, mais l'autocomplétion ne me renvoit rien qui correspond à son pseudo.

Le pauvre n'a donc pas un pseudo facile a porter :)

Eskimon commented 9 years ago

Quand on regarde dans la sidebar, on peut penser qu'il est banni et que le badge bug (autre ticket a rouvrir). S'il n'etait pas banni ca marcherait ?

firm1 commented 9 years ago

Ah mais en fait il n'était pas actif.

Je l'ai activé, et toujours rien.

Eskimon commented 9 years ago

Yep je confirme tout cela...apparemment c'est le & qui gêne (je verrais bien ca du cote de la bdd qui filtre mal)...

Eskimon commented 9 years ago

Bon... j'ai deux soucis...

J'invoque donc @sandhose et @Situphen pour le premier point et @GerardPaligot pour le second ^^

GerardPaligot commented 9 years ago

Secondo, un truc merde dans l'autocompletion car ca bombarde de requetes et comme cette derniere est pluggue sur l'API je me suis retrouve en un rien de temps sur des erreurs 429. Et ca ca ne va pas !!

Plusieurs pistes :

Quand j'avais regardé à l'époque, il me semble qu'il était peut-être possible de configurer la dernière pistes. Je peux refaire des recherches si tu veux.

Eskimon commented 9 years ago

En n'imaginant que l'API couvre tout les modules du site, le semble solution qui ne semble enisageable a long terme c'est la dernière. Si tu as un peu de temps pour creuser ca ce serait cool oui :)

(mais il n'en reste pas moins que le javascript d'auto-completion semble buggue)

GerardPaligot commented 9 years ago

(mais il n'en reste pas moins que le javascript d'auto-completion semble buggue)

Suite aux récents problèmes que nous avons eu avec le serveur, il semble y avoir des problèmes avec le cache. J'ai déjà pingé @SpaceFox à ce sujet sur une autre issue (je ne sais plus laquelle) mais je le refais ici.

Eskimon commented 9 years ago

Nan je pense que c'est plus lie au code, j'avais deja eu le souci a l'epoque de l'elaboration de l'API mambre mais je m'etais dit que ca venait de moi...

GerardPaligot commented 9 years ago

Alors il faudra être plus précis que "il semble y avoir un bug". :)

Situphen commented 9 years ago

Le front envoie une requête à chaque frappe, c'est normal, non ? Effectivement, c'est anonyme.

Eskimon commented 9 years ago

Justement, j'ai pas fait autant de frappe que de limite throttling et pourtant j'ai atteint cette limite. En tapant a la main il y a un moment ou ca lag aussi (le retour de frappe arrive pas vite, ca doit etre quand les requetes s'affolent). Il me semble que ca m'arrive quand j'ai fait un copier/coller dans la barre de participant

GerardPaligot commented 9 years ago

Il me semble que ca m'arrive quand j'ai fait un copier/coller dans la barre de participant

ping @sandhose. Je lui avais déjà remonté ce bug mais il n'arrivait pas à le reproduire.

SpaceFox commented 9 years ago

Suite aux récents problèmes que nous avons eu avec le serveur, il semble y avoir des problèmes avec le cache. J'ai déjà pingé @SpaceFox à ce sujet sur une autre issue (je ne sais plus laquelle) mais je le refais ici.

Ca ne me dit absolument rien comme problème, si tu peux me retrouver le ticket qui en parle vraiment...

GerardPaligot commented 9 years ago

Ouaip, c'est sur cette issue : https://github.com/zestedesavoir/zds-site/issues/2596

firm1 commented 9 years ago

@Eskimon le problème que tu décris est identifié ici #2386

Eskimon commented 9 years ago

Oui et non car j'ai deux soucis:

firm1 commented 9 years ago

Le premier c'est effectivement que je comprend pas pourquoi le site devrait passer par l'API

Avant le json de l'autocomplétion était servi par les vues django (sans limite). Ce n'est plus le cas maintenant, c'est fait par l'API, donc l'autocomplétion qui est une application en JS, doit, comme n'importe quel client d'une API, se connecter à celle-ci pour l'utiliser pleinement. En tout cas, c'est ainsi que ça marche dans les apps que je connais.

Le second c'est que j'ai un vrai bug quand je fais un copier/coller.

ça c'est un autre problème en effet

Eskimon commented 9 years ago

Je trouve que c'est un non-sens que le site lui-meme, coeur de l'ouvrage, puisse se retrouver limite par son propre throttling...

GerardPaligot commented 9 years ago

https://github.com/zestedesavoir/zds-site/issues/2386#issuecomment-76385582

Eskimon commented 9 years ago

Ouai j'ai vu ca, mais soit j'ai pas compris (et alors tant mieux :) ), soit on est toujours soumis a la barre haute du throttling non ?

GerardPaligot commented 9 years ago

La documentation ne donne aucune information à ce sujet et impossible de le tester en local, j'ai jamais réussi à faire fonctionner le throttling chez moi.

Anto59290 commented 7 years ago

Alors j'ai jete un coup d'oeil de ce cote. Le code de la prod fait un appel sur : https://zestedesavoir.com/api/membres/?search=%&a quand on fait une recherche avec &a comme destinataire. Avec https://zestedesavoir.com/api/membres/?search=%26a on retrouve bien le bon resultat. En terme de correstion de bug peut etre que encoder la chaine du pseudo en UTF8 avant de le passer a l'API serrait suffisant pour obtener le bon resultat.

vhf commented 7 years ago

https://sentry.sandhose.fr/zeste-de-savoir/backend-l7/issues/741/

Anto59290 commented 7 years ago

@vhf Je crois que je n'ai pas les droits ;)

vhf commented 7 years ago

Oui normal, c'était pour référence.

Ici la stacktrace :

UnicodeDecodeError: 'utf8' codec can't decode byte 0xb2 in position 19: invalid start byte
  File "django/core/handlers/base.py", line 132, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "django/views/decorators/csrf.py", line 58, in wrapped_view
    return view_func(*args, **kwargs)
  File "django/views/generic/base.py", line 71, in view
    return self.dispatch(request, *args, **kwargs)
  File "rest_framework/views.py", line 466, in dispatch
    response = self.handle_exception(exc)
  File "rest_framework/views.py", line 454, in dispatch
    self.initial(request, *args, **kwargs)
  File "rest_framework/views.py", line 376, in initial
    self.perform_authentication(request)
  File "rest_framework/views.py", line 310, in perform_authentication
    request.user
  File "rest_framework/request.py", line 353, in __getattribute__
    return super(Request, self).__getattribute__(attr)
  File "rest_framework/request.py", line 193, in user
    self._authenticate()
  File "rest_framework/request.py", line 316, in _authenticate
    user_auth_tuple = authenticator.authenticate(self)
  File "oauth2_provider/ext/rest_framework/authentication.py", line 18, in authenticate
    valid, r = oauthlib_core.verify_request(request, scopes=[])
  File "oauth2_provider/oauth2_backends.py", line 167, in verify_request
    valid, r = self.server.verify_request(uri, http_method, body, headers, scopes=scopes)
  File "oauthlib/oauth2/rfc6749/endpoints/base.py", line 64, in wrapper
    return f(endpoint, uri, *args, **kwargs)
  File "oauthlib/oauth2/rfc6749/endpoints/resource.py", line 68, in verify_request
    request = Request(uri, http_method, body, headers)
  File "oauthlib/common.py", line 380, in __init__
    self.headers = CaseInsensitiveDict(encode(headers or {}))
  File "oauthlib/common.py", line 376, in <lambda>
    encode = lambda x: to_unicode(x, encoding) if encoding else x
  File "oauthlib/common.py", line 322, in to_unicode
    return dict(((to_unicode(k, encoding), to_unicode(v, encoding)) for k, v in data))
  File "oauthlib/common.py", line 322, in <genexpr>
    return dict(((to_unicode(k, encoding), to_unicode(v, encoding)) for k, v in data))
  File "oauthlib/common.py", line 308, in to_unicode
    return unicode_type(data, encoding=encoding)
Anto59290 commented 7 years ago

Sur une install locale ca ne cause pas d'erreur et fonctionne bien. Est ce que ca peut venir de la base de donnees et ou de l'infra ?