PyAr / pyarweb

El sitio web de Python Argentina
http://python.org.ar
Apache License 2.0
81 stars 99 forks source link

Ofertas laborales: no anda la parte de Filtrar por etiqueta #359

Closed cmdelatorre closed 7 years ago

cmdelatorre commented 7 years ago

Basta con seleccionar algún tag, y apretar "Filtrar". El servidor responde:

Bad Request Request Line is too large (6380 > 4094)

La URL que se genera es demasiado larga:

http://www.python.org.ar/trabajo/?tag_bamboo=0&tag_manager=0&tag_jenkins_1=0&tag_nodejs_3=0&tag_svn_1=0&tag_years=0&tag_devops=0&tag_desarrollo-python=0&tag_css_1=0&tag_shotgun=0&tag_maya_1=0&tag_freeling=0&tag_postgresql_2=0&tag_javascript_1=1&tag_southpaw=0&tag_ui_1=0&tag_boostrap=0&tag_back-end=0&tag_webserver=0&tag_angularjs_1=0&tag_djangorestframework=0&tag_python_1=0&tag_pyramid_1=0&tag_computacion=0&tag_social=0&tag_postgresql_1=0&tag_agile=0&tag_infraestructura=0&tag_amazon-ec2=0&tag_realidad-aumentada=0&tag_sqalchemy=0&tag_ionic=0&tag_unit-testing=0&tag_frontend_1=0&tag_tornado=0&tag_gpsd=0&tag_test-automation=0&tag_css3=0&tag_drupal=0&tag_ubuntu=0&tag_tryton=0&tag_jquery=0&tag_java_2=0&tag_sass=0&tag_pyhton=0&tag_restful-api=0&tag_designer=0&tag_framework=0&tag_rest_1=0&tag_cooperativa-de-trabajo=0&tag_opencv=0&tag_etl=0&tag_bower=0&tag_argentina=0&tag_r=0&tag_ruby-on-rails_1=0&tag_analytics=0&tag_sql=0&tag_informatica=0&tag_nagios=0&tag_developer_3=0&tag_big-data=0&tag_qc=0&tag_django_3=0&tag_sas=0&tag_javascript_3=0&tag_caba=0&tag_aws_1=0&tag_start-up=0&tag_magento=0&tag_codigos-qr=0&tag_mysql=0&tag_chile=0&tag_shotgun_1=0&tag_java_1=0&tag_qa=0&tag_rails_1=0&tag_y-ruby=0&tag_programadores=0&tag_linux=0&tag_newrelic=0&tag_html5=0&tag_sqlalchemy=0&tag_pythonjava=0&tag_java=0&tag_cordova=0&tag_falcon_1=0&tag_aplicaciones=0&tag_cine=0&tag_sqlalchemy-orm=0&tag_zeromq=0&tag_pig=0&tag_cython=0&tag_coffeescript=0&tag_nginx_1=0&tag_iot=0&tag_performance=0&tag_redhat=0&tag_app=0&tag_arduino=0&tag_ajax_1=0&tag_nosql_1=0&tag_staff=0&tag_c_2=0&tag_reactjs=0&tag_nlp=0&tag_angularjs=0&tag_programador_1=0&tag_mobile=0&tag_devops_1=0&tag_remoto=0&tag_memcached=0&tag_bootstrap=0&tag_bi=0&tag_desarrollador=0&tag_health=0&tag_fullstack=0&tag_php=0&tag_rabbit_1=0&tag_css=0&tag_analyst=0&tag_web=0&tag_globant=0&tag_3=0&tag_webdriver=0&tag_gnu=0&tag_postgre=0&tag_uk=0&tag_devops_2=0&tag_nosqlis=0&tag_de=0&tag_ansible_1=0&tag_diseno-de-interfaz=0&tag_lenguaje-python=0&tag_nosql=0&tag_ingles_1=0&tag_buenos=0&tag_net_1=0&tag_mongodb=0&tag_unix=0&tag_stash=0&tag_javascript_2=0&tag_backbone_1=0&tag_junior=0&tag_soporte=0&tag_xml=0&tag_json=0&tag_junit=0&tag_capital-federal=0&tag_falcon=0&tag_scrum_1=0&tag_clasificado=0&tag_chef=0&tag_nodejs=0&tag_mision-satelital=0&tag_full-stack=0&tag_tecnologia=0&tag_swig-templates=0&tag_elasticsearch=0&tag_data=0&tag_android=0&tag_bash=0&tag_boto=0&tag_con=0&tag_analista=0&tag_series=0&tag_development_1=0&tag_json_2=0&tag_yowsup=0&tag_python_3=0&tag_datahousing=0&tag_celery_1=0&tag_sistemas=0&tag_postgresql=0&tag_perl_1=0&tag_objetos=0&tag_html_2=0&tag_analisis=0&tag_ingles=0&tag_r_1=0&tag_max=0&tag_maya=0&tag_ruby-on-rails=0&tag_puerto-serial=0&tag_spark=0&tag_scraping=0&tag_php_1=0&tag_restful=0&tag_3d=0&tag_tensorflow=0&tag_python_4=0&tag_3d_1=0&tag_pyramid=0&tag_html5_1=0&tag_paypal-api-integration=0&tag_uxui=0&tag_django-rest=0&tag_tdd=0&tag_growth-hacking=0&tag_e-commerce=0&tag_html=0&tag_max_1=0&tag_front-end=0&tag_raspberry=0&tag_flask_1=0&tag_responsive=0&tag_backbone=0&tag_saltstack=0&tag_android_1=0&tag_data-mining=0&tag_postgres_1=0&tag_web_3=0&tag_grunt=0&tag_swift=0&tag_plone=0&tag_automation=0&tag_developers=0&tag_testing=0&tag_networking=0&tag_mysql_2=0&tag_tv=0&tag_xml_1=0&tag_css_2=0&tag_net_3=0&tag_json_1=0&tag_data-science=0&tag_postgres=0&tag_londres_1=0&tag_threaded-programming=0&tag_software=0&tag_composicion=0&tag_mongo-db=0&tag_selenium=0&tag_angular_1=0&tag_angular=0&tag_mongo-db_1=0&tag_automation_1=0&tag_python=0&tag_descentralizado=0&tag_git_1=0&tag_machine-learning_1=0&tag_business=0&tag_nginx=0&tag_apis_1=0&tag_javascript=0&tag_c=0&tag_web_1=0&tag_mobile_1=0&tag_dataware=0&tag_test=0&tag_bitcoin=0&tag_virtualenv=0&tag_celery=0&tag_quickbooks=0&tag_codeigniter=0&tag_redis=0&tag_map-reduce=0&tag_raspberry-pi=0&tag_project=0&tag_django-rest-framework=0&tag_and=0&tag_mvc=0&tag_fabric=0&tag_rabbitmq=0&tag_design-patterns=0&tag_full-stack_1=0&tag_ios=0&tag_git=0&tag_supervisor=0&tag_application=0&tag_posgresql=0&tag_scrum=0&tag_wxpython=0&tag_software-libre_1=0&tag_desarrollo_1=0&tag_python_2=0&tag_animacion-3d=0&tag_cassandra=0&tag_redis_1=0&tag_programador=0&tag_gnulinux=0&tag_sentry=0&tag_experience=0&tag_jquery_3=0&tag_json-api=0&tag_django=0&tag_linux_2=0&tag_conocimientos-en-uml=0&tag_semisenior=0&tag_ruby_1=0&tag_lead_1=0&tag_frontend=0&tag_ansible=0&tag_djangorest=0&tag_automatizacion=0&tag_odoo=0&tag_data-science_1=0&tag_front=0&tag_net=0&tag_angular2=0&tag_full-stack_2=0&tag_rabbit=0&tag_seguridad=0&tag_bash_1=0&tag_backbonejs=0&tag_scikit=0&tag_test_1=0&tag_perl=0&tag_nodejs_2=0&tag_jquery_1=0&tag_desarrollo=0&tag_puppet=0&tag_puppet_1=0&tag_rest_2=0&tag_qt=0&tag_cloud=0&tag_publicidad=0&tag_gunicorn=0&tag_modelos-predictivos=0&tag_network=0&tag_angularjs_2=0&tag_ing=0&tag_tactic=0&tag_ruby=0&tag_html_1=0&tag_jenkins=0&tag_rest-api=0&tag_nltk=0&tag_cooperativismo=0&tag_gunicorn_1=0&tag_data-mining_1=0&tag_htmlcss=0&tag_oop=0&tag_s3=0&tag_git_2=0&tag_animacion=0&tag_musica=0&tag_mongodb_1=0&tag_apache-spark=0&tag_spss=0&tag_dev=0&tag_pylons=0&tag_video=0&tag_development=0&tag_google-cloud=0&tag_qt_1=0&tag_aws=0&tag_programacion=0&tag_less=0&tag_flask=0&tag_engineer_1=0&tag_php_2=0&tag_jbehave=0&tag_bootstrap_1=0&tag_phonegap=0&tag_jmater=0&tag_amazon-cloud=0&tag_websoporte=0&tag_rails=0&tag_sqlalchemy_1=0&tag_oop_1=0&tag_mongo=0&tag_scala=0&tag_software-libre=0&tag_engineer=0&tag_openerp=0&tag_developer_1=0&tag_api=0&tag_senior=0&tag_backend=0&tag_aires=0&tag_react=0&tag_seguridad-python=0&tag_developer=0&tag_based=0&tag_uwsgi=0&tag_tdd_1=0&tag_js=0&tag_bdd=0&tag_mysql_1=0&tag_twisted=0&tag_gateway-pagos=0&tag_backend_1=0&tag_opencv_1=0&tag_geoespacial=0&tag_clustering=0&tag_homework=0&tag_iphone=0&tag_pika=0&tag_plataforma=2&tag_shell-scripting=0&tag_end=0&tag_django-rest-framework_1=2&tag_jpmorgan=0&tag_phyton_1=0&tag_net_2=0&tag_django_1=0&tag_browserify=1&tag_freelance=0&tag_hadoop=0&tag_tryton_1=1&tag_graphics=0&tag_web_2=0&tag_unittest=0&tag_teamcity=1&tag_mysql_3=0&tag_c_1=0&tag_apache=0&tag_ui=0&tag_ajax=0&tag_tastypie=0&tag_pm=0&tag_distancia=0&tag_poo=0&tag_objective=0&tag_angularjs_3=0&tag_sql_1=0&tag_java_3=0&tag_apis=0&tag_jquery_2=0&tag_mysql_4=0&tag_dyango=0&tag_rest=0&tag_mssql=0&tag_lead=0&tag_cordoba=0&tag_nodejs_1=0&tag_aplicaciones_1=0&tag_chef_1=0&tag_apisrest=0&tag_linux_1=0&tag_=0&tag_impact=0

btenaglia commented 7 years ago

@cmdelatorre @angvp yo me encargo de esto.

El problema es que la URL no se banca tanta cantidad de caracteres que se le pasa por GET...hay que cambiarlo y ejecutar ese form con POST.

cmdelatorre commented 7 years ago

Otra opción es acortar la URL no incluyendo los parámetros que son &param=0 (se pueden tomar como default). Eso ayuda pero no soluciona el hecho de que alguien elija demasiados tags... Lo cual tampoco me parece que sea un caso de uso probable

mgaitan commented 7 years ago

sin dudas lo que está mal (porque no escala) es la construcción de la query GET en la que siempre se incluyen todos los tags con "tag_" cumpliendo un rol de inclusion/exclusion.

https://github.com/PyAr/pyarweb/blob/master/community/views.py#L67

creo que hay que refactorear eso (y el javascript asociado) para que los "tags" funcionen como simples checkboxes donde todos los valores seleccionados tienen la misma clave, y el valor es el pk del tag. por ejemplo. Los no seleccionados directamente se omiten

la query quedaria, por ejemplo, ?t=1&t=23&t=10

Luego, desde la vista, se procesa usando getlist()

cmdelatorre commented 7 years ago

A partir del release de ayer, hubo una regresión de este bug. El código del PR mencionado está incluído, así que habrá que revisar de nuevo.

cmdelatorre commented 7 years ago

Era un tema de cache del browser. Efectivamente está resuelto el issue.