Différences entre les versions de « Genida technical information »

De
Aller à la navigation Aller à la recherche
(added bugs and license columns)
(Annulation des modifications 3493 de F1 (discussion))
Ligne 2 : Ligne 2 :
  
 
== The Django Framework ==
 
== The Django Framework ==
 +
 +
== Django packages ==
  
 
{| class="wikitable sortable"
 
{| class="wikitable sortable"
 
|-
 
|-
! Name !! License !! Links !! Chosen for !! Bugs !! Previous choice(s)
+
! Name !! Links !! Chosen for !! Previous choice(s)
 
|-
 
|-
| django-ajax-selects ||  || <ul><li>Pypi [http://pypi.python.org/pypi/django-ajax-selects package]</li><li>Djangopackages [https://www.djangopackages.com/packages/p/ajax-selects/ page], [https://www.djangopackages.com/grids/g/auto-complete/ grid]</li><li>Repo [https://github.com/crucialfelix/django-ajax-selects GitHub]</li><li></li></ul> || <ul><li></li><li></li><li></li></ul> ||  || <ul><li></li><li></li><li></li></ul>
+
| django-ajax-selects || <ul><li>Djangopackages [https://www.djangopackages.com/packages/p/ajax-selects/ page], [https://www.djangopackages.com/grids/g/auto-complete/ grid]</li><li>Repo [https://github.com/crucialfelix/django-ajax-selects GitHub]</li><li></li></ul> || <ul><li></li><li></li><li></li></ul> || <ul><li></li><li></li><li></li></ul>
 
|-
 
|-
| django-appconf ||  || <ul><li>Djangopackages [https://www.djangopackages.com/packages/p/django-appconf/ page], [https://www.djangopackages.com/grids/g/configuration/ grid]</li><li>Repo [https://github.com/jezdez/django-appconf GitHub]</li><li>Documentation [https://readthedocs.org/projects/django-appconf/ ReadTheDocs]</li></ul> || <ul><li></li><li></li><li></li></ul> ||  || <ul><li></li><li></li><li></li></ul>
+
| django-appconf || <ul><li>Djangopackages [https://www.djangopackages.com/packages/p/django-appconf/ page], [https://www.djangopackages.com/grids/g/configuration/ grid]</li><li>Repo [https://github.com/jezdez/django-appconf GitHub]</li><li>Documentation [https://readthedocs.org/projects/django-appconf/ ReadTheDocs]</li></ul> || <ul><li></li><li></li><li></li></ul> || <ul><li></li><li></li><li></li></ul>
 
|-
 
|-
| django-autoslug ||  || <ul><li>Djangopackages [https://www.djangopackages.com/packages/p/django-autoslug/ page], [https://www.djangopackages.com/grids/g/fields/ grid]</li><li>Repo [https://bitbucket.org/neithere/django-autoslug BitBucket]</li><li>Documentation [https://readthedocs.org/projects/django-autoslug/ ReadTheDocs]</li></ul> || <ul><li></li><li></li><li></li></ul> ||  || <ul><li></li><li></li><li></li></ul>
+
| django-autoslug || <ul><li>Djangopackages [https://www.djangopackages.com/packages/p/django-autoslug/ page], [https://www.djangopackages.com/grids/g/fields/ grid]</li><li>Repo [https://bitbucket.org/neithere/django-autoslug BitBucket]</li><li>Documentation [https://readthedocs.org/projects/django-autoslug/ ReadTheDocs]</li></ul> || <ul><li></li><li></li><li></li></ul> || <ul><li></li><li></li><li></li></ul>
 
|-
 
|-
| django-avatar ||  || <ul><li>Djangopackages [https://www.djangopackages.com/packages/p/django-avatar/ page], [https://www.djangopackages.com/grids/g/avatars/ grid]</li><li>Repo [https://github.com/jezdez/django-avatar GitHub]</li><li>Documentation [https://readthedocs.org/projects/django-avatar/ ReadTheDocs]</li></ul> || <ul><li></li><li></li><li></li></ul> ||  || <ul><li></li><li></li><li></li></ul>
+
| django-avatar || <ul><li>Djangopackages [https://www.djangopackages.com/packages/p/django-avatar/ page], [https://www.djangopackages.com/grids/g/avatars/ grid]</li><li>Repo [https://github.com/jezdez/django-avatar GitHub]</li><li>Documentation [https://readthedocs.org/projects/django-avatar/ ReadTheDocs]</li></ul> || <ul><li></li><li></li><li></li></ul> || <ul><li></li><li></li><li></li></ul>
 
|-
 
|-
| django-axes ||  || <ul><li>Djangopackages [https://www.djangopackages.com/packages/p/django-axes/ page], [https://www.djangopackages.com/grids/g/anti-bots/ grid]</li><li>Repo [https://github.com/django-security/django-axes GitHub]</li><li></li></ul> || <ul><li>Good solution to prevent bruteforce attacks on users accounts passwords. Maybe a temporary solution before we set a security module.</li><li>Possibility to block IP address after X failed login attempts, for X amount of time (currently set to 5 and 15 minutes).</li><li>All attempts are recorded in the database and viewable by administrators.</li></ul> || || <ul><li></li><li></li><li></li></ul>
+
| django-axes || <ul><li>Djangopackages [https://www.djangopackages.com/packages/p/django-axes/ page], [https://www.djangopackages.com/grids/g/anti-bots/ grid]</li><li>Repo [https://github.com/django-security/django-axes GitHub]</li><li></li></ul> || <ul><li>Good solution to prevent bruteforce attacks on users accounts passwords. Maybe a temporary solution before we set a security module.</li><li>Possibility to block IP address after X failed login attempts, for X amount of time (currently set to 5 and 15 minutes).</li><li>All attempts are recorded in the database and viewable by administrators.</li></ul> ||  
 
|-
 
|-
| django-bootstrap-markdown ||  || <ul><li></li><li>Repo [https://github.com/aj-may/django-bootstrap-markdown GitHub]</li><li></li></ul> || <ul><li>Its capacity to upload images onto the server and reuse them! Bad integration in django-suit (left offset in admin pages, preview no more at the right of the text but below...).</li><li>We might consider using [https://www.djangopackages.com/packages/p/django-pagedown/ django-pagedown] instead, when it will be able to upload images and reuse them too. Since we do not use django-admin-bootstrapped, we do not need the "bootstrap" part in a markdown editor.</li></ul> ||  || <ul><li>[https://www.djangopackages.com/packages/p/django-summernote/ django-summernote]. '''Reason for switching:''' Summernote is a very good WYSIWYG editor, but it renders text in HTML, which is less secure than markdown, because we have to evaluate it unsafely in HTML templates. Markdown inputs are sanitized when displayed in HTML templates, currently with [https://www.djangopackages.com/packages/p/django-markdown-deux/ django-markdown-deux].</li></ul>
+
| django-bootstrap-markdown || <ul><li></li><li>Repo [https://github.com/aj-may/django-bootstrap-markdown GitHub]</li><li></li></ul> || <ul><li>Its capacity to upload images onto the server and reuse them! Bad integration in django-suit (left offset in admin pages, preview no more at the right of the text but below...).</li><li>We might consider using [https://www.djangopackages.com/packages/p/django-pagedown/ django-pagedown] instead, when it will be able to upload images and reuse them too. Since we do not use django-admin-bootstrapped, we do not need the "bootstrap" part in a markdown editor.</li></ul> || <ul><li>[https://www.djangopackages.com/packages/p/django-summernote/ django-summernote]. '''Reason for switching:''' Summernote is a very good WYSIWYG editor, but it renders text in HTML, which is less secure than markdown, because we have to evaluate it unsafely in HTML templates. Markdown inputs are sanitized when displayed in HTML templates, currently with [https://www.djangopackages.com/packages/p/django-markdown-deux/ django-markdown-deux].</li></ul>
 
|-
 
|-
| django-cities-light ||  || <ul><li>Djangopackages [https://www.djangopackages.com/packages/p/django-cities-light/ page], [https://www.djangopackages.com/grids/g/countries/ grid]</li><li>Repo [https://github.com/yourlabs/django-cities-light GitHub]</li><li>Documentation [https://readthedocs.org/projects/django-cities-light/ ReadTheDocs]</li></ul> || <ul><li>Command to prepopulate database fields from [http://www.geonames.org/ GeoNames]. Some fields are maybe unnecessary though.</li></ul> ||  || <ul><li></li><li></li><li></li></ul>
+
| django-cities-light || <ul><li>Djangopackages [https://www.djangopackages.com/packages/p/django-cities-light/ page], [https://www.djangopackages.com/grids/g/countries/ grid]</li><li>Repo [https://github.com/yourlabs/django-cities-light GitHub]</li><li>Documentation [https://readthedocs.org/projects/django-cities-light/ ReadTheDocs]</li></ul> || <ul><li>Command to prepopulate database fields from [http://www.geonames.org/ GeoNames]. Some fields are maybe unnecessary though.</li></ul> ||   
 
|-
 
|-
| django-datetime-widget ||  || <ul><li>Djangopackages [https://www.djangopackages.com/packages/p/django-datetime-widget/ page]</li><li>[https://github.com/asaglimbeni/django-datetime-widget GitHub]</li><li></li></ul> || <ul><li>The only one doing this. And it is doing it right!</li></ul> || || <ul><li></li><li></li><li></li></ul>
+
| django-datetime-widget || <ul><li>Djangopackages [https://www.djangopackages.com/packages/p/django-datetime-widget/ page]</li><li>[https://github.com/asaglimbeni/django-datetime-widget GitHub]</li><li></li></ul> || <ul><li>The only one doing this. And it is doing it right!</li></ul> ||  
 
|-
 
|-
| django-forms-bootstrap ||  || <ul><li>Djangopackages [https://www.djangopackages.com/packages/p/django-forms-bootstrap/ page], [https://www.djangopackages.com/grids/g/forms/ grid]</li><li>Repo [https://github.com/pinax/django-forms-bootstrap GitHub]</li><li></li></ul> || <ul><li>Very simple to use in templates. Bootstrap themed. It will surely be replaced by [https://www.djangopackages.com/packages/p/django-crispy-forms/ django-cripsy-forms] in the future.</li></ul> || || <ul><li></li><li></li><li></li></ul>
+
| django-forms-bootstrap || <ul><li>Djangopackages [https://www.djangopackages.com/packages/p/django-forms-bootstrap/ page], [https://www.djangopackages.com/grids/g/forms/ grid]</li><li>Repo [https://github.com/pinax/django-forms-bootstrap GitHub]</li><li></li></ul> || <ul><li>Very simple to use in templates. Bootstrap themed. It will surely be replaced by [https://www.djangopackages.com/packages/p/django-crispy-forms/ django-cripsy-forms] in the future.</li></ul> ||  
 
|-
 
|-
| django-imagekit ||  || <ul><li>Djangopackages [https://www.djangopackages.com/packages/p/django-imagekit/ page], [https://www.djangopackages.com/grids/g/thumbnails/ grid]</li><li>Repo [https://github.com/jdriscoll/django-imagekit GitHub]</li><li>Documentation [https://readthedocs.org/projects/django-imagekit/ ReadTheDocs]</li></ul> || <ul><li>It is a requirement for [https://github.com/aj-may/django-bootstrap-markdown django-bootstrap-markdown]. Since it uploads images to the server, in order to be reusable they are shown in admin interface app, and then needs thumbnailing and previewing.</li></ul> || || <ul><li></li><li></li><li></li></ul>
+
| django-imagekit || <ul><li>Djangopackages [https://www.djangopackages.com/packages/p/django-imagekit/ page], [https://www.djangopackages.com/grids/g/thumbnails/ grid]</li><li>Repo [https://github.com/jdriscoll/django-imagekit GitHub]</li><li>Documentation [https://readthedocs.org/projects/django-imagekit/ ReadTheDocs]</li></ul> || <ul><li>It is a requirement for [https://github.com/aj-may/django-bootstrap-markdown django-bootstrap-markdown]. Since it uploads images to the server, in order to be reusable they are shown in admin interface app, and then needs thumbnailing and previewing.</li></ul> ||  
 
|-
 
|-
| django-markdown-deux ||  || <ul><li>Djangopackages [https://www.djangopackages.com/packages/p/django-markdown-deux/ page], [https://www.djangopackages.com/grids/g/wysiwyg/ grid]</li><li>Repo [https://github.com/trentm/django-markdown-deux GitHub]</li><li></li></ul> || <ul><li>Recommended by Django Bootstrap Markdown author for displaying markdown in templates.</li></ul> || || <ul><li></li><li></li><li></li></ul>
+
| django-markdown-deux || <ul><li>Djangopackages [https://www.djangopackages.com/packages/p/django-markdown-deux/ page], [https://www.djangopackages.com/grids/g/wysiwyg/ grid]</li><li>Repo [https://github.com/trentm/django-markdown-deux GitHub]</li><li></li></ul> || <ul><li>Recommended by Django Bootstrap Markdown author for displaying markdown in templates.</li></ul> ||  
 
|-
 
|-
| django-modeltranslation ||  || <ul><li>Djangopackages [https://www.djangopackages.com/packages/p/django-modeltranslation/ page], [https://www.djangopackages.com/grids/g/model-translation/ grid]</li><li>Repo [https://github.com/deschler/django-modeltranslation GitHub]</li><li>Documentation [https://readthedocs.org/projects/django-modeltranslation/ ReadTheDocs]</li></ul> || <ul><li>Code is separated from the models code (translation.py)</li><li>Translation fields are stored in the same table (database performance)</li><li>The original field is kept (more robust and flexible, fall backs if no translations)</li></ul> ||  || <ul><li>[https://www.djangopackages.com/packages/p/django-easymode/ django-easymode]. '''Reason for switching:''' the original field was not kept, resulting in impossibility to use translatable fields for search, ordering or filter in admin interface. Sometimes even lead to server error. Bugs found in admin interface display (checkbox column appeared twice). Translation is not its main purpose.</li></ul>
+
| django-modeltranslation || <ul><li>Djangopackages [https://www.djangopackages.com/packages/p/django-modeltranslation/ page], [https://www.djangopackages.com/grids/g/model-translation/ grid]</li><li>Repo [https://github.com/deschler/django-modeltranslation GitHub]</li><li>Documentation [https://readthedocs.org/projects/django-modeltranslation/ ReadTheDocs]</li></ul> || <ul><li>Code is separated from the models code (translation.py)</li><li>Translation fields are stored in the same table (database performance)</li><li>The original field is kept (more robust and flexible, fall backs if no translations)</li></ul> || <ul><li>[https://www.djangopackages.com/packages/p/django-easymode/ django-easymode]. '''Reason for switching:''' the original field was not kept, resulting in impossibility to use translatable fields for search, ordering or filter in admin interface. Sometimes even lead to server error. Bugs found in admin interface display (checkbox column appeared twice). Translation is not its main purpose.</li></ul>
 
|-
 
|-
| django-rosetta ||  || <ul><li>Djangopackages [https://www.djangopackages.com/packages/p/django-rosetta/ page], [https://www.djangopackages.com/grids/g/i18n/ grid]</li><li>Repo [https://github.com/mbi/django-rosetta GitHub]</li><li></li></ul> || <ul><li>Provides an effective interface for translating site contents, and an easy integration with users and groups: each user in the group "translators" can have access to rosetta interface.</li></ul> || || <ul><li></li><li></li><li></li></ul>
+
| django-rosetta || <ul><li>Djangopackages [https://www.djangopackages.com/packages/p/django-rosetta/ page], [https://www.djangopackages.com/grids/g/i18n/ grid]</li><li>Repo [https://github.com/mbi/django-rosetta GitHub]</li><li></li></ul> || <ul><li>Provides an effective interface for translating site contents, and an easy integration with users and groups: each user in the group "translators" can have access to rosetta interface.</li></ul> ||
 
|-
 
|-
| django-simple-captcha ||  || <ul><li>Djangopackages [https://www.djangopackages.com/packages/p/django-simple-captcha/ page], [https://www.djangopackages.com/grids/g/captcha/ grid]</li><li>Repo [https://github.com/mbi/django-simple-captcha GitHub]</li><li>Documentation [https://readthedocs.org/projects/django-simple-captcha/ ReadTheDocs]</li></ul> || <ul><li>The simplest captcha app for Django, yet customizable, very easy to use.</li></ul> || || <ul><li></li><li></li><li></li></ul>
+
| django-simple-captcha || <ul><li>Djangopackages [https://www.djangopackages.com/packages/p/django-simple-captcha/ page], [https://www.djangopackages.com/grids/g/captcha/ grid]</li><li>Repo [https://github.com/mbi/django-simple-captcha GitHub]</li><li>Documentation [https://readthedocs.org/projects/django-simple-captcha/ ReadTheDocs]</li></ul> || <ul><li>The simplest captcha app for Django, yet customizable, very easy to use.</li></ul> ||
 
|-
 
|-
| django-suit ||  || <ul><li>Djangopackages [https://www.djangopackages.com/packages/p/django-suit/ page], [https://www.djangopackages.com/grids/g/admin-interface/ grid]</li><li>Repo [https://github.com/darklow/django-suit GitHub]</li><li>Documentation [https://readthedocs.org/projects/django-suit/ ReadTheDocs]</li></ul> || <ul><li>Customizable interface (tabs, apps, icons)</li><li>Inline sortables (lists of database objects can be reordered with arrows)</li><li>Beautiful design</li></ul> ||  || <ul><li>[https://www.djangopackages.com/packages/p/django-admin-bootstrapped/ django-admin-bootstrapped]. '''Reason for switching:''' takes too much space on screen, so much less functionnality than Django-Suit</li><li>Django basic admin interface. '''Reason for switching:''' wanted a design corresponding to the website one (using Twitter Bootstrap)</li></ul>
+
| django-suit || <ul><li>Djangopackages [https://www.djangopackages.com/packages/p/django-suit/ page], [https://www.djangopackages.com/grids/g/admin-interface/ grid]</li><li>Repo [https://github.com/darklow/django-suit GitHub]</li><li>Documentation [https://readthedocs.org/projects/django-suit/ ReadTheDocs]</li></ul> || <ul><li>Customizable interface (tabs, apps, icons)</li><li>Inline sortables (lists of database objects can be reordered with arrows)</li><li>Beautiful design</li></ul> || <ul><li>[https://www.djangopackages.com/packages/p/django-admin-bootstrapped/ django-admin-bootstrapped]. '''Reason for switching:''' takes too much space on screen, so much less functionnality than Django-Suit</li><li>Django basic admin interface. '''Reason for switching:''' wanted a design corresponding to the website one (using Twitter Bootstrap)</li></ul>
 
|}
 
|}
  

Version du 27 novembre 2014 à 12:19

Development with Python

The Django Framework

Django packages

Name Links Chosen for Previous choice(s)
django-ajax-selects
django-appconf
django-autoslug
django-avatar
django-axes
  • Good solution to prevent bruteforce attacks on users accounts passwords. Maybe a temporary solution before we set a security module.
  • Possibility to block IP address after X failed login attempts, for X amount of time (currently set to 5 and 15 minutes).
  • All attempts are recorded in the database and viewable by administrators.
django-bootstrap-markdown
  • Its capacity to upload images onto the server and reuse them! Bad integration in django-suit (left offset in admin pages, preview no more at the right of the text but below...).
  • We might consider using django-pagedown instead, when it will be able to upload images and reuse them too. Since we do not use django-admin-bootstrapped, we do not need the "bootstrap" part in a markdown editor.
  • django-summernote. Reason for switching: Summernote is a very good WYSIWYG editor, but it renders text in HTML, which is less secure than markdown, because we have to evaluate it unsafely in HTML templates. Markdown inputs are sanitized when displayed in HTML templates, currently with django-markdown-deux.
django-cities-light
  • Command to prepopulate database fields from GeoNames. Some fields are maybe unnecessary though.
django-datetime-widget
  • The only one doing this. And it is doing it right!
django-forms-bootstrap
  • Very simple to use in templates. Bootstrap themed. It will surely be replaced by django-cripsy-forms in the future.
django-imagekit
  • It is a requirement for django-bootstrap-markdown. Since it uploads images to the server, in order to be reusable they are shown in admin interface app, and then needs thumbnailing and previewing.
django-markdown-deux
  • Recommended by Django Bootstrap Markdown author for displaying markdown in templates.
django-modeltranslation
  • Code is separated from the models code (translation.py)
  • Translation fields are stored in the same table (database performance)
  • The original field is kept (more robust and flexible, fall backs if no translations)
  • django-easymode. Reason for switching: the original field was not kept, resulting in impossibility to use translatable fields for search, ordering or filter in admin interface. Sometimes even lead to server error. Bugs found in admin interface display (checkbox column appeared twice). Translation is not its main purpose.
django-rosetta
  • Provides an effective interface for translating site contents, and an easy integration with users and groups: each user in the group "translators" can have access to rosetta interface.
django-simple-captcha
  • The simplest captcha app for Django, yet customizable, very easy to use.
django-suit
  • Customizable interface (tabs, apps, icons)
  • Inline sortables (lists of database objects can be reordered with arrows)
  • Beautiful design
  • django-admin-bootstrapped. Reason for switching: takes too much space on screen, so much less functionnality than Django-Suit
  • Django basic admin interface. Reason for switching: wanted a design corresponding to the website one (using Twitter Bootstrap)

Documentation

  • Docstring