--
Ticket URL: <https://code.djangoproject.com/ticket/18682>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* cc: charette.s@… (added)
--
Ticket URL: <https://code.djangoproject.com/ticket/18682#comment:1>
* stage: Unreviewed => Accepted
Comment:
I've run into this on more than one occasion. In fact I've had data loss
because of this... though I suppose that probably doesn't qualify it as a
data loss bug. Human error and all that. Still, would be nice to see it
fixed.
--
Ticket URL: <https://code.djangoproject.com/ticket/18682#comment:2>
Comment (by amfarrell):
Does this ticket need to be re-triaged to determine if it is still
relevant in the era of native migrations and django1.7 ?
--
Ticket URL: <https://code.djangoproject.com/ticket/18682#comment:3>
Comment (by timo):
I believe it's still relevant as the behavior is the same with migrations.
The only change is that the handler now uses the `post_migrate` signal
rather than `post_syncdb`.
--
Ticket URL: <https://code.djangoproject.com/ticket/18682#comment:4>
* owner: nobody => speijnik
* status: new => assigned
--
Ticket URL: <https://code.djangoproject.com/ticket/18682#comment:5>
Comment (by speijnik):
Working on this at EP14 sprint.
Displaying the object count alone is doable and I actually do have code
doing just that already.
I guess it would be a good idea to actually show the number of objects
grouped by their type/model.
Without doing that this will most likely always show a non-zero count, as
permissions are always represented this way and
count towards that number.
Also, I believe that showing each individual object is a rather bad idea,
think of thousands of objects there...
So right now, the output looks like this:
{{{
The following content types are stale and need to be deleted:
app | a (29 objects remaining)
}}}
What I believe would be useful in this case, would be an output in the
form of
{{{
The following content types are stale and need to be deleted:
app | a
- permission objects to be deleted: 3
- [...] objects to be delted: 26
}}}
This way things are pretty clear. The exact formatting might need to look
different though.
--
Ticket URL: <https://code.djangoproject.com/ticket/18682#comment:6>
* has_patch: 0 => 1
Comment:
Just attached the patch.
Formatting is obviously up for discussion and probably not optimal.
Example:
{{{
The following content types are stale and need to be deleted:
app | a
- auth | permission objects to be deleted: 3
- app | genericrel objects to be deleted: 26
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/18682#comment:7>
* cc: speijnik (added)
--
Ticket URL: <https://code.djangoproject.com/ticket/18682#comment:8>
* needs_better_patch: 0 => 1
* needs_tests: 0 => 1
* needs_docs: 0 => 1
--
Ticket URL: <https://code.djangoproject.com/ticket/18682#comment:9>
Comment (by claudep):
#24546 was closed as a duplicate.
--
Ticket URL: <https://code.djangoproject.com/ticket/18682#comment:10>
* status: assigned => new
* owner: speijnik =>
--
Ticket URL: <https://code.djangoproject.com/ticket/18682#comment:11>
* owner: => erikr
* status: new => assigned
--
Ticket URL: <https://code.djangoproject.com/ticket/18682#comment:12>
* status: assigned => new
* needs_better_patch: 1 => 0
* owner: erikr =>
* needs_tests: 1 => 0
* needs_docs: 1 => 0
Comment:
I have submitted a new PR: https://github.com/django/django/pull/6869
This PR uses the Collector to determine which objects would be deleted.
This is the same collector that the admin uses to display which objects
might be deleted, so it should be very thorough.
I have also changed the wording away from "need to be deleted" as I've
been unable to find a basis for that claim of necessity. This was
introduced in the confirmation added in #12339, which built upon #5177 in
which the original (without confirmation) delete of stale types was added.
An example, as produced in the tests, now looks like this. Probably we can
still improve the language:
{{{
Some content types in your database are stale and can be deleted.
Any objects that depend on these content types will then also be deleted.
The content types, and the dependent objects that would be deleted, are:
- Content type for contenttypes_tests.Fake
- 1 object of type contenttypes_tests.post:
- post
This list does not include data that might be in your database
outside of Django's models.
Are you sure you want to delete these content types?
If you're unsure, answer 'no'.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/18682#comment:13>
* status: new => closed
* owner: => Florian Apolloner <apollo13@…>
* resolution: => fixed
Comment:
In [changeset:"8db889eaf7dce0cb715b075be32047c1b1b316da" 8db889ea]:
{{{
#!CommitTicketReference repository=""
revision="8db889eaf7dce0cb715b075be32047c1b1b316da"
Fixed #18682 -- Expanded explanation in stale content type deletion.
(#6869)
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/18682#comment:14>
Comment (by Tim Graham <timograham@…>):
In [changeset:"e2dfa81ff7489d97700604d634adacf1384af184" e2dfa81f]:
{{{
#!CommitTicketReference repository=""
revision="e2dfa81ff7489d97700604d634adacf1384af184"
Refs #18682 -- Edited explanation in stale content type deletion.
Follow up to 8db889eaf7dce0cb715b075be32047c1b1b316da.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/18682#comment:15>