Before bootstrap-select is loaded, a small JS piece replaces the
class for the pickers with the appropriate bootstrap-select classes.
If there is no JS, the dropdowns will stay as form-control.
* Implement torrent nuking ability for mods
This deletes all torrents of a specific user.
A current caveat is that it will delete both sukebei and nyaa torrents,
but will only leave a log entry in the current flavour's log.
Also did some bootstrap untangling on the user view page.
* Per-flavour logging
Hopefully this works. Maybe.
* Tracker API: chunk into 100-element sublists
* isort
* Restrict nuking to superadmins
Also do a lint.sh.
* Implement upload ratelimit for non-trusted uploaders
Users may upload X torrents in Y minutes after which they
will have to wait Z minutes between uploads.
* Show torrent period count when ratelimited
* Only ratelimit new accounts
Previously, people couldn't quite tell you needed to give a report
reason. Now we disable the submit button until there is a reason,
and flask.flash() if someone manages to submit an empty reason
anyway.
Disables all POSTs, optionally allowing users to log in (without updating last login date)
Blocked POSTs will redirect to the GET endpoint if possible, otherwise to referrer or in last case, home page.
API requests will get a plaintext message with 405 status code.
This changes the tracker announce URL message to be one of those
bootstrap alert bubbles, and adds an additional warning which tells
people to read the rules and not upload off-topic crap.
* Admin log added
* Add admin log to top bar
* Fixed some admin log bugs
* Remove comment_id column because comments die when they are killed
* Fix tabs in admin log template
* Fixed sort of admin logs to be created_time desc
* Fix navbar wrapping to a new line
when 992px <= width <= 1200px
* Put reports and admin log in "Admin" dropdown
Applied ./lint.sh fixes
Fixed long lines
* Updated log to be text instead of id based to account for future deletions
* Small fix in log message formatting
The responsive table actually does *worse* in narrow layouts because
the action column fucks off out of view and needs to be scrolled to
if the report reason is long. With a normal table you may not get
consistent row heights, but at least you don't have to horizontally
scroll to perform an action.
Also fixed a goof where I used a style attribute instead of making
the max-width for the action column a class.