Re: [Django] #30538: Inconsistent slug generation behaviour of slugify() and prepopulated fields in Django Admin. (was: Inconsistent slug generation behaviour of slugify() and prepopulated fields in D

2019-06-03 Thread Django
#30538: Inconsistent slug generation behaviour of slugify() and prepopulated 
fields
in Django Admin.
-+-
 Reporter:  Loo Zheng Yuan   |Owner:  nobody
 Type:  Bug  |   Status:  closed
Component:  Utilities|  Version:  master
 Severity:  Normal   |   Resolution:  wontfix
 Keywords:  slugify  | Triage Stage:
  prepopulated fields|  Unreviewed
Has patch:  0|  Needs documentation:  0
  Needs tests:  0|  Patch needs improvement:  0
Easy pickings:  0|UI/UX:  0
-+-
Changes (by felixxm):

 * status:  new => closed
 * type:  Uncategorized => Bug
 * component:  Uncategorized => Utilities
 * version:  2.2 => master
 * resolution:   => wontfix


Comment:

 Thanks for this report. `slugify()` and `URLify` behave differently since
 their introduction in dd5320d1d56ca7603747dd68871e72eee99d9e67 and
 ed114e15106192b22ebb78ef5bf5bce72b419d13 in 2005. Changing this behavior
 would be backward incompatible, that's why I'm marking this as "wontfix"
 (see [https://docs.djangoproject.com/en/stable/internals/contributing
 /triaging-tickets/#closing-tickets follow triaging guidelines]). Please
 see
 [https://groups.google.com/forum/?utm_source=digest_medium=email#!searchin
 /django-developers/urlify|sort:date/django-
 developers/X2JZV7cMtD4/m8gtBmixXcsJ an old thread on the django-
 developers]. You can leave your comment there if you think that this
 behavior should be changed.

-- 
Ticket URL: <https://code.djangoproject.com/ticket/30538#comment:1>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/070.6f3709b0eb875705d7e8b99bc25aade8%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.


[Django] #30538: Inconsistent slug generation behaviour of slugify() and prepopulated fields in Django Admin

2019-06-02 Thread Django
#30538: Inconsistent slug generation behaviour of slugify() and prepopulated 
fields
in Django Admin
-+-
   Reporter: |  Owner:  nobody
  nomenklature   |
   Type: | Status:  new
  Uncategorized  |
  Component: |Version:  2.2
  Uncategorized  |   Keywords:  slugify
   Severity:  Normal |  prepopulated fields
   Triage Stage: |  Has patch:  0
  Unreviewed |
Needs documentation:  0  |Needs tests:  0
Patch needs improvement:  0  |  Easy pickings:  0
  UI/UX:  0  |
-+-
 Hi everyone. I wanted to highlight an inconsistent slug generation
 behaviour that I noticed.

 So, for generating slugs, there are two ways I can go about doing it. One
 way is by using the
 
[https://github.com/django/django/blob/dffa3e1992562ba60512d96d1eb58592ceb5/django/utils/text.py#L393
 django.utils.text.slugify()] function to create a slug. This behaviour
 allows us to create a default for a model field by modifying the save()
 function, etc. Another way, if you are using Model Admin, is by using the
 
[https://docs.djangoproject.com/en/2.2/ref/contrib/admin/#django.contrib.admin.ModelAdmin.prepopulated_fields
 prepopulated_fields] to generate a slug. The relevant javascript function
 seems to be found
 
[https://github.com/django/django/blob/dffa3e1992562ba60512d96d1eb58592ceb5/django/contrib/admin/static/admin/js/urlify.js#L161
 here].

 Interestingly, and pretty obviously after viewing the differences between
 the two codes, they result in slightly different slugs. For a string like
 `How To Maintain Coke Diet` will have the following inconsistencies:

 Via
 
[https://github.com/django/django/blob/dffa3e1992562ba60512d96d1eb58592ceb5/django/utils/text.py#L393
 django.utils.text.slugify()]: `how-to-maintain-coke-diet`
 Via prepopulated_fields: `how-maintain-coke-diet`

 On closer analysis, it seems that this was the case because of the
 following code in
 
[https://github.com/django/django/blob/dffa3e1992562ba60512d96d1eb58592ceb5/django/contrib/admin/static/admin/js/urlify.js#L161
 django/contrib/admin/static/admin/js/urlify.js]:

 {{{
 // Remove English words only if the string contains ASCII
 (English)
 // characters.
 if (!hasUnicodeChars) {
 var removeList = [
 "a", "an", "as", "at", "before", "but", "by", "for",
 "from",
 "is", "in", "into", "like", "of", "off", "on", "onto",
 "per",
 "since", "than", "the", "this", "that", "to", "up", "via",
 "with"
 ];
 var r = new RegExp('\\b(' + removeList.join('|') + ')\\b',
 'gi');
 s = s.replace(r, '');
 }
 }}}

 With that, I recognise that there may be reasons accounting for the
 inconsistencies. One could also argue that I can just stick to using the
 
[https://github.com/django/django/blob/dffa3e1992562ba60512d96d1eb58592ceb5/django/utils/text.py#L393
 django.utils.text.slugify()] function, but I value the ability to
 prepopulate slug fields from Django Admin (of course with a more
 standardised behaviour).

 Perhaps someone can weigh in on this and see if we can or should
 standardise the implementation of both?

-- 
Ticket URL: <https://code.djangoproject.com/ticket/30538>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/055.855864dbd900ca09800ca8f5c15facb7%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.