Age | Commit message (Collapse) | Author | Files | Lines |
|
We were seeing this in production:
IntegrityError: duplicate key value violates unique constraint "todolists_todolistpackage_todolist_id_700d1b623414814c_uniq"
DETAIL: Key (todolist_id, pkgname, arch_id)=(206, ruby-cairo, 2) already exists.
This is due to a corner case where a package was originally on a
todolist and the underlying package object disappeared, so the todolist
entry was unlinked and pkg_id set to NULL. Later, this package came
back, but our get_or_create tried to create an object that violated our
unique constraint because of the missing pkg_id.
Call get_or_create with the minimum necessary bits to find the todolist
package object, and pass the rest of the values via defaults to avoid
this problem. Additionally, relink any todolist entries up to a package
in the repositories if one is available.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Conflicts:
requirements.txt
requirements_prod.txt
|
|
This was added in Django 1.5 and allows saving only a subset of a
model's fields. It makes sense in a few cases to utilize it.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
This is for the public view page; we had no order_by() call so lists
could be displayed in seemingly random order.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
If one exists, it is easy enough to show it here so in-progress
todolists can easily be cross-checked with the current state of the
repository.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
This moves most migrations to the v2 format that have been presenting
some issues. One missing depends_on relationship has been added, and we
allow an index to not be dropped if it does not exist due to the
shittyness in sqlite3 actually keeping indexes across DDL on that table.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Bug #16519 in Django deprecates mimetype, so update our code
accordingly.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
This will allow us to see who last changed the status of a todolist
item.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
This makes it easier to see the progression of a todolist and its
contents easier since we are no longer losing the data.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Due to pgp_signature being added to the Package model, we need to depend
on this later change as well.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
This will be utilized to soft-delete items from the list if the packages
are modified, rather than deleting them outright.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
A lot like skipping fetching of the news content; we definitely don't
need this just to list the todolists on index pages.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Given the way we retrieve certain related objects, it makes more sense
to use a custom tag here rather than our generic package details link
tag. When viewing a large todolist, this saves significantly on the
number of queries we need to build the page.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
This is ripped off from commit 7c92ddbd3c86d when we added slugs to
News objects.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
This will be used to make more descriptive URLs for our todolists. The
`null=True` bit will be removed once a data migration is added to add
slugs to all previously created todolists.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
This is a short-term fix before adding a slug field to todo lists as we
did to news a while back.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
This is a rather widespread set of changes converting usage to the new
todo list and todo list package model recently introduced. The data
migration is not included in this commit. After this commit, the old
model should no longer be referenced anywhere.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
This moves the data from the old models into the new ones. Note that IDs
are not preserved across the move, but we do store the old ID in the
old_id column so we don't break every link out there.
Links will become slugs in a future commit, so there should be no
ambiguity when linking via number vs string.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Move the todolist model from main to the todolists application, and make
a few minor tweaks to field names along the way. Also add a 'raw' field
that will hold the originally input text data from the creator or last
modifier of the todolist.
Add pkgname, pkgbase, arch, and repo fields to a new todolist package
model, which will supplement the former foreign key to an actual package
object. This will prevent todolist package objects from ever being
deleted as they can be now, which is not intuitive.
Also change the current boolean 'complete' flag to a 'status' enum that
can hold other values. For now, we add 'In-progress' to the mix.
Finally, add a 'user' field, and a 'comments' field that will be
utilized later by the UI.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Use some standard SQL and split the query into two different parts to
save a lot of unnecessary sorting and field retrieval at the database
level. The `CASE WHEN complete THEN 1 ELSE 0 END` syntax should be
accepted by any database that implements proper SQL; it was tested in
PostgreSQL and sqlite3 without issues.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
This matches what we do on signoffs. Also beef up the styling a bit and
add the dynamically updated package count info.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Now that Django actually provides a concise way to use a RequestContext
object without instantiating it, we can use that rather than the old
function-based generic view that worked well to do the same.
Additionally, these function-based generic views will be gone in Django
1.5, so might as well make the move now.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
This is a field shown on the general_form.html, and shows up as
@@@INVALID@@@ in development environments.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
As of Python 2.6, this is a builtin module that has all the same
functions and capabilities of the Django simplejson module. Additionally
simplejson is deprecated in the upcoming Django 1.5 release.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Otherwise the queryset returns nonsensical results. I find the design of
this less than obvious but so be it; we can ensure the results work
regardless of a default ordering on the model.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
We can push this down to the database if we know in advance we only need
the incomplete lists. This helps our call on the developer dashboard
quite a bit; the time of the single query in question drops from >1300ms
to around 40ms.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
This is a bit of a hack, but makes the resulting resultset returned from
the database a lot smaller and kills off all the columns we don't care
about and would never look at.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Until Django 1.3, the functions include(), patterns() and url() plus
handler404, handler500 were located in a django.conf.urls.defaults
module.
In Django 1.4, they live in django.conf.urls.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Remove never_cache from many places now that we don't actually need it
since we aren't caching by default. Adjust our cache_function decorator
times be shorter values, and also randomize them a bit to make cache
invalidations not all line up.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
This is for use after rebuilds when moving packages out of the staging
and testing repositories.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
This is rather sick to look at. Sorry, Django gives me no other choice.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Customize each email on a per-maintainer basis and list all the relevant
packages inside, rather than spamming people.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
So we do all of the work at once and don't let things leak out before
the list is completely added or updated.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Things are a bit cleaner now.
Signed-off-by: Dan McGee <dan@archlinux.org>
|