Age | Commit message (Collapse) | Author | Files | Lines |
|
We had this set up as a unique ForeignKey before, which adds some
indirection due to the RelatedManager object being there. By making it a
OneToOneField, we can get the profile object directly, enforce uniqueness,
and also use it in select_related() calls to make our profiles page a bit
more efficient.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
|
|
Hide some columns when not logged in because they aren't relevant for the
general public, but this will work nicely as a base page for all of our
known mirrors.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
This needed a little sprucing up as it has grown quite organically over the
life of this script. Make things a bit more pythonic through the use of
iterators rather than collection indexing, and try to generalize the special
cases of things a bit.
Also catch encoding problems early and fail gracefully rather than blow up
the entire package parser. A failed decode of a file should cause us to just
skip it rather than stop the entire parser. Worst case, this leaves that
package out of the web interface.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
We need to do a little dropping into SQL to accomplish this, but it isn't
all that bad to actually do and we can do the whole thing in one query.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
When I have caught reporead behaving badly on the production box, I haven't
been able to successfully get a traceback without killing the process.
Hopefully using a different signal will allow me to actually capture some
data.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Just use a plain Exception instead since we don't get any added value by
subclassing.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
South actually makes this relatively painless if you get everything right,
so might as well start getting these out of the legacy main application to
eventually eliminate models being separate from their views.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Rather than the need to include RequestContext() calls directly, we can
just use direct_to_template to do all the work for us.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
We had a bunch of extra imports, non-conventional variable names, spacing
issues, etc. that were relatively low-hanging fruit to clean up. Fix them
and make the code a bit cleaner in the process.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Anything that it makes sense to add it to gets the treatment here. Anything
with pagination can wait as that will be tougher. We also need to deal with
odd/even formatting.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Every once in a while we see this command hanging on the main server but it
isn't making any system calls, so it is hard to tell where it is getting
stuck. Add a signal handler on SIGQUIT that will listen and print a
traceback when signaled.
This is the easiest thing to implement; future additions may need to be able
to hook up to a remote debugger (e.g. pdb) if this doesn't work.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
With suggestions from Jason Chu, make the code a bit less repetitive with
regards to exception handling and fallthrough to the next method of finding
the user.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Otherwise we get duplicate groups each time we update the package, and any
group removals would never actually happen.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
This is a bit more work than just a simple field addition. We attempt to map
packager specs (e.g. "A. U. Thor <author@example.com>") to actual Django
users in a relatively robust way- first try matching on User.email, then
fall back to UserProfile.public_email, then finally try a name-based match.
For those packages we can't generate a mapping, the raw string is still
stored so it can be displayed.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
They show up but aren't hotlinked to anything...just yet.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Implements FS#20081.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Now that we cache everything, we need to ensure anyone doing edits and
such gets the live data and not some cached version that was already
updated and is now stale. Add the never_cache decorator to any of the
CUD screens as well as a few others that might benefit from always being
regenerated.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Instead of putting 'www.archlinux.org' all over the place, use the Django
sites framework to pull the site name out of the database. Now these
amazing things will work if you are running locally and decide to change the
site!
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Rather than go to the database for every single package on something like a
files update, use the one we already have. Duh.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Apparently Django 1.1.1 let null fields pass right through but this now
causes reporead to blow up in 1.1.2. Fix the issue and get things working
again by allowing nulls where it probably makes sense and including a
migration to fix the issue, which for the real database will be a no-op.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
We weren't checking to see if the password form fields were empty before
setting the user password, causing it to get reset if anything was filled
out and submitted on this page. FS#19345.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
We had a situation where the last 'any' architecture package was present in
the [testing] repo and never got removed because we never did the
db_update() call on that architecture. Instead of looping all possible
architectures and only calling if len() > 0, always call db_update() for
both the primary architecture and the 'any' architecture.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
This allows some of our queries to get a lot simpler as well as removing the
pkgbase_safe property added earlier.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
And also add a data migration to add the value retroactively for anything
already in our database. We simply fall back to pkgname if pkgbase isn't
available.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
This is an attempt to fix our long-standing problems dealing with maintainer
information. Move the actual maintainer information off of the package model
into a PackageRelation object, which has some flexibility to later represent
more than just maintainership.
This solves multiple problems:
* If a package gets accidentally deleted, so did the maintainer info
* Testing packages have always shown up as orphans
* With split packages, it was easy to miss some of the sub-packages
This commit does not include the deletion of the original maintainer column;
that will come at a later time when I feel more confident that the data was
migrated correctly.
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 will allow files to be imported for all existing packages in the
database while not worrying about the files database being a touch out of
date. It utilizes the new files_last_update column to perform the insertion
and updating of file lists intelligently.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
This depends on some changes I made to our script that generates the file
list databases, but it allows us to treat the files databases in an almost
identical manner to a regular database. The only difference is the fact that
it contains 'files' entries.
One catch that will be addressed in a separate patch: if the files DB lags
behind the regular DB, running an update from it could cause packages in the
web interface to be downgraded. A 'no-add/remove' option could be helpful
for this case.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Otherwise a --force will clear out all our flagged packages. :/ Whoops.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Just ignore it if it is completely screwed up.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
I can't believe we still have some of these around, but they are relatively
straightforward to handle.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
This allows re-running repoadd on all packages in case of adding data or
fixing a bug without rendering the last_update values in the database
useless. For packages that aren't geting their version bumped, don't touch
last_update on a force import but do touch the rest of the fields.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
We can capture the build date, compressed size, and installed size when
reporead runs. Even if we don't show all of it, we should pull it in.
FS#14270 is requesting that the package size be shown on the website.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Since these timestamps will differ across repos and arches anyway (for a
total of 10 distinct timestamps currently per hour), it isn't really
necessary to only use one timestamp. Allow each package to get a unique
creation time.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Check the arch, check the filename for existence, etc.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Rather than struggle with getting the environment set up, let's make this a
custom Django admin command and use the flexibility that gives us. This is
the initial rough cut of making it happen; further commits should clean up
some of the rough edges.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Unnecessary, and lets us standardize on not using it everywhere.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
And honor the packager's notify flag, as Pierre pointed out.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
Signed-off-by: Evangelos Foutras <foutrelis@gmail.com>
[Dan: made a few other small touchups]
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
We also traverse relationships here, so select the associated items.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
|
* Add models.py required file to app
* Use user_passes_test instead of custom superuser checking in
new_user_form as it implements the same "next" redirection as
login_required
Signed-off-by: Ismael Carnales <icarnales@gmail.com>
|