summaryrefslogtreecommitdiffstats
path: root/packages
AgeCommit message (Collapse)AuthorFilesLines
2014-10-19Use varied prime numbers for caching lengthsDan McGee1-2/+2
Signed-off-by: Dan McGee <dan@archlinux.org>
2014-10-18Merge branch 'jinja'Dan McGee3-92/+81
2014-10-18FS#30773: put exact matches at topDan McGee1-0/+6
There have been a few proposed solutions to this, but there really isn't anything without a drawback. Things break pagination, require loading the entire result set from the database, etc. Just plop a new table on the page if someone did a so-called "simple" search and we have a match. Only show on the first page of the search results. This results in a relatively fast experience for someone doing something like searching for the "perl" package. Signed-off-by: Dan McGee <dan@archlinux.org>
2014-10-18Add possible optimization as a TODO for laterDan McGee1-0/+7
2014-10-18Move maintainer/packager link code back into templateDan McGee1-26/+0
Signed-off-by: Dan McGee <dan@archlinux.org>
2014-10-18Break out Jinja2-specific template helpersDan McGee2-94/+99
Signed-off-by: Dan McGee <dan@archlinux.org>
2014-10-18Convert bulk of package details page to Jinja2Dan McGee1-9/+17
We wrap the whole thing in a Django template so we don't have to convert our base template to Jinja2 (or have one for each templating engine). This also simplifies the static stuff so we can just keep using the Django tags. Signed-off-by: Dan McGee <dan@archlinux.org>
2014-10-18Convert details sub-tempates to Jinja2Dan McGee1-5/+0
This is a start at improving performance of rendering the package details page, our most-visited and slowest page on the production website. The Django template system is not very efficient due to our heavy use of broken out templates and pulling of various attributes and such on related packages. Signed-off-by: Dan McGee <dan@archlinux.org>
2014-09-01Fix up some IP address field issuesDan McGee1-3/+1
Ensure we always coerce values to unicode in our __unicode__ method, and remove some now unneeded verbosity and comments since the upstream bug has been fixed. Signed-off-by: Dan McGee <dan@archlinux.org>
2014-09-01More changes for move to Django 1.7Dan McGee1-4/+1
The removal of the root `__init__.py` file is so the testing framework does consistent imports of our models now that the loading strategy has changed. Signed-off-by: Dan McGee <dan@archlinux.org>
2014-09-01Add auto-generated migrations from new Django migrations frameworkDan McGee1-0/+205
Signed-off-by: Dan McGee <dan@archlinux.org>
2014-09-01Remove old south migrationsDan McGee25-4561/+0
Django 1.7 has built-in migrations support, so we no longer want these around. All existing installs should be fully migrated at this point to the latest schema. Signed-off-by: Dan McGee <dan@archlinux.org>
2014-01-25Add 'Latest Update' column to stale package relationsDan McGee2-4/+8
This helps when doing the irregular cleanup of these things and making sure a relation has been stale for some time and not just a couple minutes or hours. Signed-off-by: Dan McGee <dan@archlinux.org>
2013-11-27Remove date_hierarchy from several package admin viewsDan McGee1-8/+4
I was never using this and it adds some pretty substantial overhead to each render of the admin page, so toss it. Add the simple date filter to the sidebar instead. Signed-off-by: Dan McGee <dan@archlinux.org>
2013-11-27Allow pkg_details_link to honor package flag stateDan McGee1-2/+5
This allows the tag to be used in a few more places we weren't already able to use it, and hopefully speeds up rendering a tad on the package differences page. Signed-off-by: Dan McGee <dan@archlinux.org>
2013-11-06Django 1.6 upgrade, deprecation cleanupDan McGee2-2/+2
PendingDeprecationWarning: commit_on_success is deprecated in favor of atomic. Signed-off-by: Dan McGee <dan@archlinux.org>
2013-11-06Django 1.6 upgrade, deprecation cleanupDan McGee1-2/+2
PendingDeprecationWarning: `queryset` method should be renamed `get_queryset` Signed-off-by: Dan McGee <dan@archlinux.org>
2013-04-23When retrieving signoff specs, select the arch object as wellrelease_2013-04-27Dan McGee1-1/+2
Otherwise we do one query per row in the signoff table to fetch the architecture and it's required_signoffs value, which is less than ideal. Signed-off-by: Dan McGee <dan@archlinux.org>
2013-04-22Use required_signoffs value when creating signoff specsDan McGee3-7/+15
And respect it elsewhere when we create a fake default specification because a real one does not exist yet. Signed-off-by: Dan McGee <dan@archlinux.org>
2013-04-20Fix parsing issues when query string keys contain unicodeDan McGee1-0/+6
This is dirty, but it works. There is probably a better and cleaner way to do all of this, but for now just fix it quickly. Signed-off-by: Dan McGee <dan@archlinux.org>
2013-04-16Various minor code cleanups and fixesrelease_2013-04-16Dan McGee5-9/+4
Most of these were suggested by PyCharm, and include everything from little syntax issues and other bad smells to dead or bad code. Signed-off-by: Dan McGee <dan@archlinux.org>
2013-04-16Add shortcut for HEAD requests on slower viewsDan McGee2-1/+6
We sometimes see some web bots and crawlers make HEAD requests to verify existence of certain pages in the application. However, they are less than kind as 20-50 requests might arrive at the same time, and package search and details pages are some of the slowest rendering pages we have due to the Django template engine. Rather than waste time generating the content only to throw it away, response as soon as we can with either a 404 or 200 response as appropriate, omitting the 'Content-Length' header completely, which seems to be acceptable by the HTTP spec. Signed-off-by: Dan McGee <dan@archlinux.org>
2013-04-16Use require_safe decorator rather than require_GETDan McGee1-3/+3
This was added in Django 1.4, and ensures both GET and HEAD requests, but not POST requests, are allowed through. Signed-off-by: Dan McGee <dan@archlinux.org>
2013-04-14Fix missing attribute error in replacment find codeDan McGee1-1/+2
Whoops. Just introduced this when ensuring we look for both the packgae in other repositories as well as any replacments. Signed-off-by: Dan McGee <dan@archlinux.org>
2013-04-13Show replacments for package if it has been removedDan McGee2-0/+11
This covers the case where we can't find the package in any other repositories, but it was removed recently enough that we have a found package update object. Signed-off-by: Dan McGee <dan@archlinux.org>
2013-04-13Add additional pg_trgm indexes for quicker searchesDan McGee1-0/+3
This allows our normal keyword-based search to be index-optimized rather than always doing full table scans. It requires the pg_trgm extension which is shipped out of the box with any sane install of PostgreSQL. Signed-off-by: Dan McGee <dan@archlinux.org>
2013-03-11Remove function caching in packages/utilsDan McGee1-3/+1
We don't see these called enough to make caching the data worth it. Signed-off-by: Dan McGee <dan@archlinux.org>
2013-02-26Use user.userprofile rather than user.get_profile()Dan McGee1-1/+1
The get_profile() function is deprecated as of Django 1.5. Signed-off-by: Dan McGee <dan@archlinux.org>
2013-02-26Fix ALPM unittest to run when ALPM isn't presentDan McGee1-2/+21
This gets some proper unittest skip decorator action now in addition to adding more testing around everything. Signed-off-by: Dan McGee <dan@archlinux.org>
2013-02-26Merge branch 'django-1.5'Dan McGee2-13/+9
Conflicts: requirements.txt requirements_prod.txt
2013-02-20Fix some fallout with moving page to query paramsDan McGee1-1/+3
Signed-off-by: Dan McGee <dan@archlinux.org>
2013-02-16Make page a query string parameter on package searchDan McGee2-1/+2
This is a bit silly to encode in the URL, or at least makes it much harder to screen out via robots.txt and other such things. Signed-off-by: Dan McGee <dan@archlinux.org>
2013-02-16Remove configurable pagination for package searchDan McGee1-37/+1
Switch it to a hardcoded value of 100 for all searches instead. It didn't make much sense having a page number be part of the URL and a limit value being part of the query string. Signed-off-by: Dan McGee <dan@archlinux.org>
2013-02-10Fix split packages sitemaprelease_2013-02-16Dan McGee1-1/+1
We had a ton of duplicate entries included due to the query implicitly including a 'GROUP BY' clause on the default sorting by pkgname. Fix it and cut the sitemap down to the correct size without duplicate entries. Signed-off-by: Dan McGee <dan@archlinux.org>
2013-02-09Use 'update_fields' model.save() kwargDan McGee1-1/+1
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>
2013-02-09Revert "Reduce query count when retrieving satisfiers and providers"Dan McGee1-12/+8
This reverts commit 20b64e42672d185821cc584dfa4b133ee259a144. Django 1.5 fixed this issue and now parent objects are automatically attached to their children when queries go through the related manager. See "Caching of related model instances" in the release notes. Signed-off-by: Dan McGee <dan@archlinux.org>
2013-02-08Remove package seach by 'Last Updated After'Dan McGee1-9/+0
It is a lot easier to just sort the list rather than mess with this particular field, which didn't even allow you to specify a range or direction to search in. Signed-off-by: Dan McGee <dan@archlinux.org>
2013-01-23Use more modern verison of string template formattingDan McGee1-6/+2
Signed-off-by: Dan McGee <dan@archlinux.org>
2013-01-23Use querysets for calls to get_object_or_404(Package)Dan McGee2-7/+7
This works better in most cases since we need the architecture and repository objects at some point during the view process. Signed-off-by: Dan McGee <dan@archlinux.org>
2013-01-22Slight optimization when searching for removed packageDan McGee1-1/+2
Signed-off-by: Dan McGee <dan@archlinux.org>
2013-01-22Override the default admin queryset for some modelsDan McGee1-0/+10
Because some attributes are optional or otherwise not auto-magically picked up by Django, we can help the performance of loading these pages a lot by forcing a select_related() on the queryset used by the admin. For something like signoff_specifications, this drops the query count from ~107 to 9 queries. Signed-off-by: Dan McGee <dan@archlinux.org>
2013-01-22Use a subquery rather than two queries in attach_maintainersDan McGee1-2/+6
Now that we are using a database that doesn't stink, it makes more sense to do all of the stuff we need to do down at the database level. This helps a lot when 500+ packages are in play at a given time, such as some of our larger rebuild todo lists. Signed-off-by: Dan McGee <dan@archlinux.org>
2013-01-18Use a set instead of list when gathering package differencesDan McGee1-10/+15
If we implement the __eq__ and __hash__ methods, we can use a set to gather package difference objects and make deduplication of objects a lot more efficient. Signed-off-by: Dan McGee <dan@archlinux.org>
2013-01-13Use content_type and not mimetype on HttpResponse()Dan McGee4-7/+7
Bug #16519 in Django deprecates mimetype, so update our code accordingly. Signed-off-by: Dan McGee <dan@archlinux.org>
2013-01-12Make packages JSON search more performantrelease_2013-01-12Dan McGee1-2/+6
We were peppering the database with a bunch of queries here; using prefetch_related and attach_maintainers can cut down the count significantly. Signed-off-by: Dan McGee <dan@archlinux.org>
2013-01-12Add get_associated_packages method to FlagRequestDan McGee1-0/+7
Signed-off-by: Dan McGee <dan@archlinux.org>
2012-12-28Reduce query count when retrieving satisfiers and providersDan McGee1-8/+12
Django doesn't attach the parent object to the child objects, even when queried through the related manager. This causes up to 3 extra queries: one to retrieve the package again, and one each for arch and repo retrieval. For a package like archboot, this drops the number of necessary queries for the package page from 805 to 222 (yes, this is still too high) and cuts the time spent waiting on the database from 505ms to 262ms. Signed-off-by: Dan McGee <dan@archlinux.org>
2012-12-28Allow pkg_details_link to return link title if package is missingDan McGee1-1/+1
For todolist packages that have had their package removed, this will allow the package name to continue to appear even after the linked package has been deleted. Signed-off-by: Dan McGee <dan@archlinux.org>
2012-12-28Make attach_maintainers null-safeDan McGee1-1/+3
Signed-off-by: Dan McGee <dan@archlinux.org>
2012-12-27Add some more tests for ALPM API stuffDan McGee1-0/+27
These are super-simple, but it is also trivial to test. Signed-off-by: Dan McGee <dan@archlinux.org>