Accepted mini-buildd 1.9.90 (source) into experimental
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Format: 1.8
Date: Mon, 11 Oct 2021 10:17:04 +0200
Source: mini-buildd
Architecture: source
Version: 1.9.90
Distribution: experimental
Urgency: medium
Maintainer: Stephan Sürken <absurd@debian.org>
Changed-By: Stephan Sürken <absurd@debian.org>
Changes:
mini-buildd (1.9.90) experimental; urgency=medium
.
Summary:
* Make work for django 3.2 (now compatible 2.2-3.2).
* New structure for internal store dirs "events" and "builds".
* New "setup" API call (replacing "wizards"), now including some
maintenance capabilities.
* Quite a lot of testing && micro changes, especially for the WEB UI.
.
Details:
* [bf04c89] base.html: api, doc, admin links: complete via config.
* [255261a] config.py: Mv all "accounts" uris to config.
* [0c05fdd] config.py, fstab: Just use one directory ('var/shared': to
be shared with chroots). Replaces "var/spool", "var/chroots-libdir".
* [7a757d5] config.py: Update id "spool" to "builds" (under new
'var/share').
* [bc1c2f6] config.py: Renaming "chroots_lib"->"libdir".
* [389745b] config.py: Fix some "acounts" uris: Should be relative.
* [dfdc54d] urls.py: Fix: Use config for account profile, not hardcoded.
* [0866407] httpd.py (HttpD._add_static_route): Support url hierarchy.
* [63c3969] config.py: (Temporary) fix for static compat log.
* [6650c4a] config.py: Cease using "home.html", always use "index.html"
(as default template).
* [67293a7] snippets/events.html: Fix event log links.
* [c74a4fa] devel (restart): Give up after 5 tries to call status (don't
loop forever on error).
* [0e4c565] django_settings.py (configure): Fix: Don't hardcode
STATIC_URL.
* [41a248b] api_view/show.html: Fix wrong mbd_uri call.
* [d4005a4] views.py (ExceptionMiddleware.__error): Log middleware
exceptions (else no chance to debug template errors).
* [7a2a02c] *.html: Various get -> getabs fixes ;(...
* [8192ccc] config.py: Rename "events-log" "events" (uri && dir).
* [de0bf01] events/log.html: Fix static link.
* [b14448b] models/repository.py (Repository.mbd_get_apt_line): Fix: Use
URIS config for repo url.
* [dc3d34d] devel: Update tidy test.
* [be14c68] config.py: Just use "attach" for event attach location.
* [d6d4b7f] httpd.py (FileResource): Move "doc missing" support to
FileResource.
* [3d63fcd] httpd.py (HttpD): Generalize route support (so we can add
events the same way).
* [c318c12] changes.py: Add "timecode" support: Once generated in
Upload, propagated through to buildrequest/result.
* [1b4032b] builder.py: Don't remove build dir port-building.
* [65d779e] packager.py (Packager): Fix: Log exception on unexpected
fail.
* [bc04a5b] views.py (API.dispatch): Fix: Log exception when api call
fails.
* [3cae7ec] events.py (Event.from_changes): Add timecode from changes to
events.
* [af570de] changes.py, packager.py: Fix "move_to_pkglog": Dump special
treatment for rejected/installed && any purge action.
* [e8c3699] builder.py (Build.run_deferred): With purging removed, dump
clean() and just remove buildrequest directly.
* [2f91ea4] changes.py: Upgrade LogPath implementation-
* [e5ca5ca] changes.py (Changes.get_spool_dir): Now obsolete, removed.
* [7c37202] changes.py (Changes): Remove "spool_hash" support: No longer
needed.
* [c83d629] net.py (reactor): Comment some debug logs (occur too often,
even for debug).
* [857fe6a] builder.py (Build.build): Remove safeguard code to remove
"live buildlog" due to possibly same sha1sum (we use timecode now).
* [6c4a0e0] config.py: Move 'static options' to config (and fully
automate static routes).
* [f6f04f1] config.py: Add Uris for "builds" (analog to "events").
* [52206aa] config.py (Home.__init__): STATIC, DOC global resources no
longer needed.
* [871c0ea] config.py: Resource, Home -> Route, Routes.
* [bf92fdf] httpd.py: Add custom directory indexer: Home, "up",
automated "view" link.
* [ef42ff2] base.html: Main menu: Add events, repositories and builds
(static) links.
* [d9641b1] views.py: Rename "buildlog" view "plain".
* [74e5350] views.py: New generic EventsView.
* [5db086d] views.py: Update/fix PlainView to work w/ events.
* [ab3f111] views.py: Rm obsoleted EventLog views.
* [a0fa305] urls.py: builds: Add buildlog view.
* [51d89b2] urls.py: Fix: Give route str ids only (ROUTES may not be
configured at import time).
* [79ea4ab] events|plain.html: block title should not have html tags.
* [298d284] builder.py: Remove extra "live buildlog" support (we now
just use 'builds' dir).
* [7151b1a] httpd.py: Allow multiple static routes (for compat routes).
* [570196f] config.py: Put all "static" routes (i.e., handled by httpd
directly) below '/static/' (avoids uri pollution / possible conflicts
with django apps).
* [0309ee4] config.py: Introduce StaticUri: Fix repetition of static
prefix && fix option handling.
* [a558d53] httpd.py (DirectoryLister.mbd_header): Use
StaticUri.uri2view to convert to view uri in directory listing hack.
* [f5d849b] config.py: Remove obsoleted "buildlogs" route.
* [b7ece38] packager.py (Package.auto_ports): Add log_exeptionif
auto_port fails && protect erro handling.-
* [c9e9ab9] config.py: Compat: Add "/repositories/" compatibility route.
* [920ae0f] config.py: Add "log_v10x" compat URI.
* [725da8c] changes.py (Changes): Get rid of extra properties:
file_name, file_path.
* [d04a3cf] changes.py: Get rid of superfluous is_new() method.
* [51efe1b] changes.py: Create path only when needed && simplify save().
* [60ac468] changes.py (Changes): Make file_name + is_new properties
(prepare for file_path to be None).
* [a04eb8f] changes.py (Changes): Allow initialization via dict.
* [dcd0c40] events.py: Log via logchanges() only, and with actual
'Changes' objects.
* [54b136d] config.py (StaticUri): Make options with kwargs.
* [e213198] httpd.py: Directory listing: Put "up" button before
directory (so it does not move).
* [6a335f9] snippets/repositories.html: Put old-style (per repo!) compat
link to repositories, not events.
* [535332b] snippets/repositories.html: Only one "browse repo" link (no
need for separate dist/ and pool/ links).
* [09ba836] config.py (StaticUri): Regex: Auto-prepend uri to regex &&
fix repository regex (i.e., allow conf/, db/ down in the tree).
* [42f1c20] config|httpd.py: Compile regex early (StaticUri), and don't
call at all if not given.
* [181c14b] httpd.py (FileResource): Use (one) dict for options && put
defaults & 'docs' to config.
* [e69800e] config.py: Rename option "with_cache" -> "cache_ttl" (and
support configuting the actual TTL (max-age) value).
* [4f4bedf] includes/mbd_events.html: Don't display "migrate", "remove"
on events page.
* [a4171f9] includes/mbd_events.html: Always show events link.
* [9379b09] templates/includes/mbd_sbuild_status.html: Remove newline at
EOF (make mbd_sbuild_status tag really spaceless).
* [85fbadf] templates/includes/mbd_events.html: Move crucial info to
'Details' only, remove redundancies.
* [04c6634] events.py (Event): Simplify extra_info() -> error(): Not
used any more.
* [596bab4] events.html: Use "All" as title if path is empty && add "up"
link.
* [e951e93] changes.py (DebianFileName): New class -- upcoming one-stop
for all debian file names.
* [a5040a5] changes.py (Changes): New precondition: Any object must
already have Source, Version, Distribution.
* [f81a67c] changes.py (Changes): Add "dfn" (DebianFileName) class var
(possible w/ new precondition).
* [4e86187] changes.py: Obsolete gen_changes_file_name, gen_file_name,
gen_dsc_file_name, dsc_name (all handled by DebianFileName now).
* [26c7618] changes.py: Obsolete get_buildlog_name (handled by
DebianFileName now).
* [791b46d] changes.py (Changes): Rename dsc_file_name -> dsc_file_path,
and un-property it.
* [2bb9af9] includes/mbd_events.html: Add static (browse) Events link.
* [40c1cab] changes.py (DebianFileName): Update to one generig generator
method (gen), and fixup json type.
* [15fb0b1] events.py (Event.save): Update to use DebianFileName.
* [dae6ed0] changes.py (DebianFileName): Do apdxes w/o leading slash.
* [e2d6884] devel: Add "fishy-words" test (just output, don't fail).
* [6098b30] files.py: Add 'Tar' helper class.
* [3136f94] changes.py (gen_buildrequests): Use DSC and its files for
buildrequest tar (instead of excluding from uploaded changes).
* [1732203] changes.py (Changes): Use files.Tar for tar, untar && remove
obsoleted functionality.
* [7a9a1f6] includes/mbd_events.html: Always show error in summary.
* [bd9e08c] repository.py: Fix: Don't log MIGRATE event on error-
rollback (due to failed binary install).
* [fc6a109] changes.py (Changes): Add get_files_path helper.
* [5bc9be0] config.py (Uri.getabs): Guess if uri is dir, and append "/"
in that case.
* [47c010c] mini_buildd.js: Add mbd_event (test code only).
* [fcee1dd] mini_buildd.js: Add some missing 'EOL-semicolons'.
* [7815d34] urls.py: api_view/, not api_view.
* [24d1570] doc: Don't use mini-build.css, fix logo paths to use twisted
static, and remove mini-buildd's static files.
* [6c7f6d7] devel (MBD_CODEVERSION): Fix bullseye: ~BULLSEYE, not 11
(still not released yet).
* [dabd18c] config.py: Rename 'static/events' -> 'static/events.attach'
(better name, and marks it "non-dir" for uris).
* [f2f0c66] events.py: Add new events: BUILDING and PACKAGING (to
eventually replace packaging/building display support).
* [78811e1] html: Remove 'packaging', 'building': Events only.
* [8a61b77] base.html: 'Events' not needed in header menu.
* [fd73331] *.html: Make all snippets (except events) normal templates.
* [175f07f] index.html: 'Un-snippet' events. Events are just on the
index page now (autoreload yourself if needed ;).
* [3231c64] mini_buildd.js: Rm all snippet-related code.
* [a6320be] includes/mbd_snippet.html: Rm, no longer used.
* [87801ec] mini_buildd.css: Rm snippet-related css code.
* [8b130fa] builtins.py: Rm mbd_snippet and mbd_next.
* [5114e65] changes.py: Move DebianFileName to 'files' module.
* [f63bdf9] changes.py: Mv *LogPath, Log to module "files".
* [0cc2622] config.py: Mv "Path" to module "files".
* [ae767e6] includes/mbd_events.html: POC: Try to prevent table
'changing design' after page/script load is complete.
* [c28749d] builtins.py: Generalize/simplify datatables javascript code
via template tag.
* [a18df9e] devel: Add "compat.*only" to fishy words.
* [ad3feae] files.py (Path): "merge" (sort-of) functionality of LogPath
into Path.
* [fb01495] files.py: Replace obsoleted "LogPath" by Path.
* [2b45f65] setup.cfg (max_line_length): Sync w/ prospector value.
* [2d5e6ad] changes.py (Changes): Temporary fix for temporary
get_buildlog_uri.
* [2418622] includes/mbd_events.html: Fix for events view uris: Use sub,
not path.
* [8805f2c] files.py: Update EventsPath to be used in events view.
* [4e2f3bd] models/repository.py (Repository.mbd_get_dsc_path): Simplify
code (after Path update).
* [288294e] files.py (Log): Rm onsolete Log class (and temporarily
comment/mark api call "retry").
* [e0af21d] devel: Help the elderly to better find errors by unasked-for
ridiculous terminal log eye-candy.
* [2a88e31] devel: Don't fail if tput fails.
* [05ff676] events.py (Event.save): Fix file_path for type BUILDING
(missing arch).
* [b034454] packager.py: Log PACKAGING event _before_ uploading
buildrequests -- else BUILDING events may be logged first if building
is on the same instance.
* [3eae9f5] events.py: Events: Add "running": Only PACKAGING/BUILDING
events that have not finished.
* [0c795da] mini_buildd/index.html: Only show "running" events on index
page.
* [743134f] misc.py (measure): Helper to log run time of functions (dev
only).
* [f851fe9] events.py (Events.log): Use only one method to log (events).
* [49ec769] devel: fishy-words: Add "deprecated".
* [17df869] mbd_events.html: Add microseconds to datatables timestamp
'data-order' (fixes sorting for events within same second).
* [d73acf4] misc.py (load_json): Add helper.
* [8d6aaee] files|daemon.py: Get events data on startup from events
directory (making 'pickled_data' workaround now completely unused).
* [3a68a91] files.py (Path.expire): Add "expire support" for Path.
* [6038ff8] daemon.py: Use Path.expire for 'expire cronjobs', and use
genrically expire 'builds' and 'events' paths.
* [5e55e5e] config.py: Make "log" URIS non-depcrecated again (deprecate
1.0.x compat uri only).
* [b33a2b6] httpd.py (HttpD._add_route): Use config.Uri (not plain str)
as argument.
* [f55e897] httpd.py (FileResource): Use Path, Uri objects as arguments.
* [f805b66] httpd.py (FileResource): Set 'defaultType' per constructor.
* [515f762] config.py (Route): Make 'uris' class var "never-none" (but
empty dict).
* [81ba6d4] httpd.py (HttpD.__init__): Actually loop over ROUTES to add
routes (simplifes code).
* [a08d027] config.py (StaticUri): Get rid of the implicit prefix (in
the end, it does make things more confusing).
* [d3533fd] config.py (Uri): Merge StaticUri into Uri (we want to use
options for both later).
* [6d19b38] config.py (Uri): Just use std pyway for options (no need for
extra options dict any more).
* [32872ca] config.py: Fix repositories compat path.
* [be1382b] config.py (Auth): Mv "auth" support code here from api.py
(so it can be used anywhere).
* [8c87101] views.py (context): Add pydoc.
* [f4ed52a] views.py: Update class based views to simply override get(),
not get_context_data().
* [bbb73cc] config.py (Uri): Add "auth" to options.
* [875f65b] config.py (Auth): Add check() (does throw on unauthorized).
* [604705a] httpd.py (FileResource): Add "auth" support.
* [2cd86e1] config.py (Auth.auth_err): Allow special case (user=None,
auth=NONE).
* [a3601e2] base.html: Generate all uri links from all routes to menu.
* [5b655d5] config.py (Uri): Update methods to naming scheme similar to
Path (mark compat methods).
* [d60ed69] views.py (API.dispatch): Update to auth.check().
* [0ffef65] config.py: Route 'log': Add (staff-protected) uris.
* [903e86a] httpd.py (FileResource.getChild): Add better (but still
secure) regex-does-not-match error page.
* [8052af2] config.py: Route "log": Rm 'static_v10x' compat uri (this
does not really work w/ twisted routes, and is not really needed).
* [c1b33ac] config.py: "repositories" uris: Use 'static_v10x', not
'static-v10x' (keep it accessible in templates).
* [a683fcf] django_settings.py: Strip down context_processors to django
(2.2.20) defaults.
* [46046e0] base.html: Rather use URIS (not ROUTES) for "site map".
* [2a3d338] config.py: Fixup URIS and ROUTES ordering.
* [d4efd1b] files.py: Mv EventsPath.uri_static to Routes.static_uri.
* [b554904] views.py (RouteView): New view (will eventually do all views
for configured ROUTES).
* [0435398] views.py: Switch to RouteView for builds and events
(obsoletes PlainView, EventsView).
* [d02faa8] views.py: RouteView: Add general tpl "route.html" (already
replaceing "builds.html" and "events.html"; but prefering specific
still).
* [f6bb222] views.py (RouteView): Add dirs && files (browsing).
* [3fec99b] views.py: RouteView: Rename "items"->"entries" (avoids
hickup when django resolves to dict.items()).
* [56e5e44] config.py (Uri.getabs): Update all code to new abs_join, and
remove.
* [7dd494c] config.py (Uri.url): Update all code to new url_join, and
remove.
* [e3b8603] mini_buildd/index.html: "running" include: Update to
"entries".
* [f8dc4d6] config.py (Uri.get): Update all code to new join, and
remove.
* [80d09bb] files.py (Path.get): Update all code to new join, and
remove.
* [01530bd] mini_buildd/route.html: Don't use "tiny" (tidy error, not
html 5 (?)).
* [99e3c7a] config.py: Add "menu" Uri option, add "sitemap" and auto-
produce menu.
* [cabba91] mini_buildd/plain.html: Rm, no longer needed.
* [98090cf] views.py (RouteView): Add ".log" to extension list (to show
"plain", for log/*).
* [fa7a78c] includes/mbd_events.html: Rm extra (non-script) css include
(was only needed for snippet support).
* [54eb265] includes/mbd_datatable.html: Auto-hide table while setting
up (avoids "table flicker").
* [3f5971a] *.html: Set mbd_datatables inside the table tag (i.e., avoid
"table-flicker" w/o breaking non-javascript browsers).
* [258618e] config.py: Minor menu re-order.
* [31ded8b] views.py: "chroots": Update to generic "route.html".
* [8a61f53] views.py: "repositories": Update to generic "route.html".
* [4adf0a8] views.py: "remotes": Update to generic "route.html".
* [1f96d77] urls.py: Fix: Special routes must come 1st.
* [3a7204d] views.py: "crontab": Update to generic "route.html".
* [c38b87c] sitemap.html: Upgrade design from utterly unreadable to
ugly.
* [d24e8d8] config.py: repositoreis, chroot, remotes, crontab: Update to
dir-based uri.
* [b965c30] devel (tidy): Mute TAG_NOT_ALLOWED_IN: Cries about "<script>
isn't allowed in <table>", but this isn't true for HTML5 afaik. And me
wants!
* [a06dbc7] api.py: Rm "logcat" (can now be viewed as superuser via
browser only).
* [c8adf3e] devel: shapshot version: Make dch fast for long stints (use
only last couple commits).
* [11a213b] misc.py (timecode): Make it work for any given stamp, not
now only.
* [cda2bca] *.py: Fix handful of literal "utf.*8" (instead of config)
uses.
* [3845480] files.py: Missing (explicit) import.
* [920ec08] cron.py: Make cron status persistent (log 20 runs).
* [a27aaa3] mini_buildd.css: lightblue -> mediumslateblue (much better
contrast).
* [fb3ad44] cron.py (_Job.readlog): Fix: We need to strip lines.
* [13a64be] index.html: Add initial "problem indicator" block (crontab
only for now).
* [4a49623] index.html: Rm event links (are in main menu already now).
* [1d999a0] __init__.py (open_utf8): Move to 'files' module.
* [0c759d6] httpd.py (DirectoryLister.render): bytes() was missing
encoder.
* [0eb595f] urls.py: Properly order account profile route.
* [623ff16] config.py: Update "sitemap" to "dir URI" && RouteView.
* [37b86ed] urls.py: extra "section" for API routes.
* [03173dd] views.py (RouteView): Use standard (non-re) <path> in
urls.py, do parsing in view.
* [bc5fe37] config.py: Update "home" uri to dir based.
* [f69a288] views.py (API, APIView): Override get(), not dispatch().
* [f1b9bef] views.py (RouteView): Rather use TemplateReponse directly,
not shortcut.
* [0953aed] config.py: Update "api_view" to "dir URI".
* [3b798c6] views.py: Merge Api + APIView classes; 'api/' as generic uri
(drop 'api_view/').
* [df6500d] views.py (APIView): Don't use class var for api_cmd (and
remove all pylint ignores).
* [f3dcf40] views.py: Eliminate PathView.
* [91e73ba] devel (tidy): Update check to test all (public django) uris.
* [fc90c2c] mbd_repositories.html: Fix some tidy errors.
* [44faa8b] config.py: Get rid of extra "api" uri.
* [ae33a70] config|files.py: Uri|Path: Add __str__() (similar to
pathlib.Path).
* [63930a1] config.py: Make all (dir) uris natively have trailing
slashes.
* [695f40b] config.py: Make all (dir) uris natively have leading
slashes.
* [c619bea] views.py (APIView.get): Fix template names (html view).
* [76e1955] mini_buildd.js: Fix api uri (trailing slash).
* [993fdd5] urls.py: Completely abandon any hardcoded paths (all from
config instead).
* [c3d0cac] config.py (Auth.test): Test method to be used w/ django
later.
* [29c4e61] urls|views.py: RouteView: Do auth automatically (as per
config.py) and via django (as per user_passes_test).
* [7569c4f] views.py (APIView): Fix error response in when output="html"
(to html error, not json).
* [a9c7b60] views.py: Mv 'api index' to RoutesView.
* [25b5e88] builtins.py (mbd_api): Default action to 'html' (not 'ajax')
for now.
* [663399e] api.py (Command): Add helper uri(): (Upcoming) api command
uri.
* [5330629] urls.py: APIView: Give each call its own uri ('/api/<cmd>/')
&& do auth automatically (as per config.py) and via django (as per
user_passes_test).
* [a077ae0] mini_buildd.js: Update to new API uris.
* [f763652] client.py (Client.api): Update to new API uri.
* [c0d66bb] mbd_api_submit.html: Don't disable command on auth_err (now,
django will do auto-login).
* [df50a3a] mini_buildd.js: aoi call: Add try/catch on result handling
(catch unexpected errors).
* [8fb932c] mbd_api.html: Update to new API uri.
* [3879fdc] api: Remove support for "command" parameter (add command
class directly as view parameter).
* [0e9cc0b] views.py: APIView: Use django decorator 'require.GET', rm
obsolete index support && simplify code.
* [26224b6] views.py: RouteView: Override get_contex_data() only (now we
do auth elsewhere).
* [95402d1] views.py (RouteView): get_context_data: Use (known) args
directly, not kwargs.
* [a9920f9] views.py (APIView): get: Use (known) args directly, not
args, kwargs.
* [189e366] views.py (AccountProfileView): Fix impl order.
* [dcd1bf1] Rename all include files for builtin tags
(mbd_tag_<name>.html), and remove API extra handling in RouteView.
* [dc314e3] files.py (load_json): Move here from misc.py.
* [dcc9459] files.py (find): Add recursive 'find' based on os.scandir().
* [d66816c] files.py (EventsPath.files): Use find, not glob (factor ~2
speed gain in our test setup).
* [a19f0fe] httpd.py: Directory listings: Fix home uri (just use / now).
* [6edaddf] files.py (EventsPath): Limit methods to events(), drop
files(), jsons() (not needed).
* [977382e] config.py (Routes): Allow "None" path for Route, and allow
for more diversified route adding in Routes.
* [2635ccf] config.py: remotes, sitemap, api: Make these "None-Paths"
(fixes unneeded directory creation).
* [76650f0] config.py, *.py: "events": Use EventsPath in ROUTES, and
always use that very object (instead of creating new 'Path's).
* [6c6db8c] files.py (load_json): Rm, not used any more.
* [67d1736] events.py (Event): Add LRU cache for events load from file
path (via functools).
* [29bed7a] misc.py (datetime_parse_since): Move here to other datetime
tools (from events cli).
* [fb1267a] misc.py: Put all datetime support functions in own class
(somewhat nicer at least).
* [0880ea9] setup.py: More diff-friendly notation.
* [42001d4] misc.py: Date parsing: Switch from datutil to dateparser
(allows for "2 weeks ago" and such).
* [b7d4f7e] devel: mbd_api, mbd_events, mbd_dput: Remove "full command
debug" support (would not work with space-separated args, what we now
need).
* [91c2f42] misc.py (Datetime): Update parse(): Default value, EPOCH
(not "all" for since values), move all doc/support here.
* [649a7c7] views.py: Add "since" support for route (for now, "events"
only).
* [32c6fc5] mini-buildd-events: --since: Use user doc from
misc.Datetime.parse.
* [c98139b] models/source.py: Update valid_until code.
* [baeba73] html: Initial HTML fixups: css, home, route.
* [aa8fa8a] views.py: route: Fix (plain) file display for events.
* [5eb4115] route.html: Put "Index" to nav.
* [44a2559] html: Improve route && index.
* [ad6aa25] includes/mbd_events.html: Generate (datatable) table id.
* [7d44fe5] cron.py: Rename "problem"->"attention", and return actual
problem string.
* [c749704] daemon.py (Daemon.attention): Add attention map support to
Daemon && generic context.
* [0c2abde] base.html: Display possible problems via attention map in
menu.
* [f9747bc] templates/includes/mbd_builds.html: Initial impl.
* [89f141a] urls.py: Add "names" for our paths (so they can be
potentially used w/ builtin 'url' ttag).
* [f8cca4a] includes/mbd_events.html: Update to builtin "url"; remove
static links as these are already elsewhere.
* [6256751] urls.py: Add static routes here, too, just so we can access
them via django's 'url' builtin.
* [8e6fe95] base.html: Update all "account" urls to use django's builtin
'url'.
* [4be2e1e] mbd_repsoitories, api/show.html: Fix some links && upgrade
last 'mbd_uri' to builtin 'url'.
* [9455b5b] builtins.py: Rm obsoleted mbd_uri, mbd_uri_home.
* [772d639] changes.py: move_to_pkglog -> move_to_events.
* [406b240] route.html: Add alternate updater using html "date" input.
* [8a11693] changes.py: Make "Architecture" mandatory.
* [479af78] changes.py (Incoming[Build]Changes): To better maintain
common code.
* [41cc255] includes/mbd_events.html: Fix terminate links (was swapped).
* [0afaa6c] devel (fishy-words): Print file name.
* [fd7d6de] changes.py: Initial code partition into new class skeletons.
* [e797a0d] changes.py: Fix timeocode impl for new multi-class setup.
* [7a01bf7] changes.py: Changes: "subpath", "events_path", "builds_path"
as class variables.
* [e151d39] changes.py (Upload.gen_buildrequests): Rm extra 'cset' of
timecode.
* [bc1f036] changes.py: Fix up 'buildlog' values.
* [0ea6d13] changes.py (Upload.get_builders): Merge breq generation &&
upload into Upload.request_builds().
* [b5d2825] daemon.py: Move Changes.get_builders() to
Daeomon.get_builders_for().
* [6f44141] daemon.py (Daemon.get_builders_for): Just do
'local_endpoint' automatically.
* [5fea5dd] changes.py (Changes): key, bkey: From property to class var
&& use the (now timecoded) paths.
* [c201b10] packager.py (Package.add_buildresult): Rm 'extra.log': No
longer used or needed.
* [9587b0c] packager.py (Package.add_buildresult): Merge
'move_to_events' to finally clause.
* [cd08a26] prospector.yaml (pylint): Allow slightly more local vars.
* [ffd2747] events.py: get json event file path from changes (and remove
extra, redundant code).
* [860a040] changes.py (Upload.request_builds): Remove redundancy by
putting all files in a dict 1st.
* [fa27546] changes.py: buildreqeust: Move all config files to subdir
".config/".
* [decef28] changes.py: request_builds(): Update path to files.Path.
* [a09e891] changes.py (Upload.request_builds): Should create in events
path, not builds path.
* [66f5c87] daemon.py (Daemon._port): Fix: Use Base changes to upload.
* [6c51784] packager.py (Packager.run_event): Fix: Use Base changes for
cleanup.
* [5db0bb3] changes.py: Simplify 'timecode' code, remove __str__ support
(mostly unused, rather confusing than helping).
* [2f840b2] mini-buildd-self-signed-certificate (usage): Don't use
actual default values (Fixes: Builder hostname ends up in man page).
* [18a2a29] changes.py (Buildrequest.gen_buildresult): Rm unused path
arg && simplify code.
* [2272022] changes.py: Simplify save support: Base.save_as (generic),
Changes.save_to (to path, auto file name, auto-sign).
* [89cc980] changes.py: Don't re-use buildrequest files.
* [7b22bb7] files.py: Update 'Tar' to not write to file on add -- write
on new save_as() only.
* [1ed6fb8] changes.py (Base.save_as): Fix: Update 'file_path' on save.
* [3799fd2] changes.py: Get rid of (manually) set file_path && update to
new Tar class.
* [44c5456] changes.py (Buildrequest.gen_buildresult): Simplify.
* [a6a30a6] changes.py (Changes): Upgrade "distribution" to actual class
car && and remove double impl.
* [53a7e9d] changes.py (Upload.Options): Fix doc tests to use Base
changes (else 'fail', configured django would be needed)
* [506c003] changes.py: Remove remove(), use new move_to() only
(effectively, buildrequests now get stored in 'builds', not just
removed).
* [fc415b9] builder.py (Build.__init__): Only use bkey for Builder
thread name (not whole contents of changes file).
* [02bd4c0] builder.py (Build.run_deferred): Properly handle
build/upload (Fixes: No buildresult reporting after internal error in
build).
* [1d565f0] events.py: from_changes, log: Add support for "exception"
arg.
* [70ec8d4] changes.py: to_json -> to_event_json, and move all (but
packager) context there.
* [b3d0830] packager.py (Packager.run_event): Improve REJECTED/Bogus
error handling.
* [bd9727c] packager.py (Package.add_buildresult): Move success check to
changes.Buildresult.
* [69be510] packager.py (Package): Use class dict vars 'buildrequest' +
'buildresults' symmetrically for code clarity.
* [4e02b98] packager.py: Rm "success", "failed" class vars (obsoleted by
buildresults dict).
* [55f5168] packager.py (Package): 'status' should not be class var.
* [f6d2563] packager.py (Package): 'extra' should not be class var.
* [6139828] packager.py (Package): Separate finish() from
add_buildresult().
* [d54e9dc] packager.py (Package): Rm "running": not used.
* [4f7600b] packager.py: Code order && cosmetics.
* [aa85c8c] builder.py: Log BUILT event after build, not upload; alsa
log BUILT w/ 'error' on 'internal error'.
* [8105b29] builder.py (Build.__init__): Do "libdir" support via
files.Path.
* [8687289] builder.py (Build.run_deferred): Log 'BUILDING' when build
actually starts (not in constructor).
* [bbdffc2] builder.py: No need for class var "config".
* [6b668f8] builder.py: No need for class var "sbuild_cmd".
* [5f09757] builder.py (Build): Use "builds_path" as shortcut for
'breq.builds_path', not builds_dir.
* [876058a] builder.py (Build.__init__): Cosmetics/ordering.
* [422ec5c] builder.py: No need for class var "setup".
* [65925a5] files.py (DebianName): Add "upload" file type.
* [b71834a] changes.py (Buildrequest.gen_buildresult): Load existing
(builds) file if exists.
* [b24e67f] changes.py: Buildrequest: Add status flags based on builds
dir: needs_build() (no buildresult file), needs_upload() (no upload
file).
* [f2f2d38] builder.py: Use new breq status flags.
* [53a7ce9] builder.py (Build.run_deferred): 'BUILT': When buildrequest
is built && uploaded.
* [2305ee3] builder.py: Move all sbuild stuff to class 'SBuild' in
sbuild.py.
* [bfb2585] sbuild.py (SBuild.__init__): No need to separate 'setup
parts', one beastly constructor is just fine.
* [b82b7d1] sbuild.py (SBuild): Add shortuct for config_path (get rid of
quite some redundancy).
* [d697987] sbuild.py: SBuild class: Rename 'sbuild_cmd' 'cmdline'.
* [a357140] builder.py (Build): Code simplification && some obsolete
class vars removed.
* [abe4592] sbuild.py: Also move actual sbuild call && buildlog parsing
here (from builder).
* [bda00ca] events.py: Simplify "running" dict handling to use
'changes.bkey' as key (already is unambiguous).
* [b648462] sbuild.py (SBuild): buildlog2buildresult: Make regex
precompiled once (as class attr).
* [b43720f] builder.py (Build.run_deferred): Remove wrong/forgotten
extra BUILT event log.
* [2e214bb] sbuild.py (SBuild.buildlog2buildresult): Fix RST syntax in
doc (now relevant for sphinx as method is no longer private).
* [0f91b93] changes.py (Changes.to_event_json): Add key && bkey to
events.
* [179e343] sbuild.py (SBuild.__init__): Update some class var naming
for now-class-solution.
* [9f179a5] sbuild.py: Little re-modelling of Sbuild/Build classes to
allow terminate() to work again.
* [8dbd62c] client.py (Client.api): Fix: Don't set "command" in http
args (commands now have their own uri).
* [832812d] api.py: Use call "cancel" to terminate running build. Drop
termination of whole package.
* [dcf5fcf] builder.py, api.py: Misc code cleanups.
* [864bc85] changes.py: Fix 'self.distribution': Only for "Upload"
(mapping && integrity) and "Buildrequest" (integrity).
* [43084b0] changes.py (Upload): Fix: Use "initial_value" on all
constructors.
* [d5332ed] devel: testsuite: Add test "bogus-ftp-uploads".
* [13819d0] api.py (SetupDaemon): Fix usage of obsoleted mbd_sync arg
(ssl only).
* [2c92f4c] changes.py (Changes.__init__): Improve && make "key missing"
check error public.
* [8788bc0] changes.py (Changes): Make MANDATORY a dict (i.e., add
optional 'hint' text for the public error string).
* [895c0cd] changes.py (Upload): Add 'Changed-By' to MANDATORY (with
hint) -- obsoleting extra check.
* [91f8c2d] builder.py: Handle "Internal-Error" custom header "like
exception" when creating event json.
* [2a2842f] static/data.svg: New svg from opencliparts.
* [382bcf5] builtins.py (Plain.cat): Support json file filter.
* [1e38f4a] events.py (Event.json_file_name): Gen json file name in
events directly (will make this available in templates later).
* [1d7fa41] mini_buildd/route.html: Leave out whole 'entries' section
when not needed.
* [2cad227] mbd_events.html: Fixes && Simplification. Drop json inline,
just go with link to json file.
* [7396970] builtins.py (PlainFilter): Plain -> PlainFilter, improve
extensibility.
* [3cd760b] builtins.py: PlainFilter: Add default filter.
* [edcb276] views.py (RouteView.get_context_data): Add 'static_uri' to
context, drop 'route', 'fullpath'.
* [e73af15] __init__.py (HTTPNotFound): Add (shortcut for) 404 error.
* [18bd8d7] views.py (RouteView.get_context_data): Add 404 error.
* [0ae3a5b] config.py (Routes.__init__): "builds" should also use the
dedicated class (files.BuildsPath).
* [b76fca1] misc.py: Datetime: Better name "stamp"->"now".
* [cd6f672] misc.py (Datetime): Add "file" helper (get ts from file).
* [616f6cf] misc.py (Datetime): Add .from_stamp().
* [d53797e] views.py: Generalize "since" support && add entries
(buildlogs) for builds.
* [e222c02] mbd_builds.html: Properly show new buildlog entries.
* [0d528c6] events.py: Add common events loader (Fixes possibly
different events queue order after restart).
* [53d8c1d] files.py: Make "find" Path.ifiles, and simplify other code.
* [4da28ee] route.html: Fix typo (fixes entries for non-since variants).
* [aff7582] views.py (RouteView): Use "lambda map" for entries variants
(rather than big if-else tree).
* [22d6036] events.py: Use i<name> for iters not <name>_iter.
* [37ccaf6] views.py (RouteView.get_context_data): Fix "builds" entry
uris.
* [667e02b] client.py (Client.api): Use "FIXME" on code cleanup note/py
> 3.7 (so we find it w/ fisyh-words).
* [96fcb1a] models/base.py: Add mbd_class_name (get class names in
templates).
* [8b7389f] mbd_chroots.html: Update to datatables and fixup to usable
state.
* [b123203] views.py: Provide index for "events" and "builds" only.
* [9ab93e1] includes/mbd_scandir.html: Display os.scandir().
* [9b93ddd] views.py, route.html: Update to scandir.
* [6cd76c7] mbd_chroots.html: Add 'Status', fix 'Admin" link.
* [d45ff6e] includes/mbd_remotes.html: Update/Fix to make initially
usable.
* [d02111b] views.py: Procude scandir for "logs".
* [4ef6fd3] views.py (RouteView.get_context_data): Add default entry
producer (emtpy list).
* [7b022b2] builtins.py (PlainFilter.regex_filter): Generalized filter
for other uses later.
* [a7952b2] builtins.py (PlainFilter): buildlog toc heuristic: Add
"critical" errors detection.
* [c3ae608] builtins.py (PlainFilter): Add "log" filter: TOC for levels
'warning' and up.
* [584842e] daemon.py (Daemon): Add models() method as future access
vehicle for all code "django".
* [cfe4885] daemon.py (Daemon): Remove get_active_chroots() (replaced by
generic models()).
* [f9683eb] daemon.py (Daemon): Remove get_active_repositories()
(replaced by generic models()).
* [2c549d2] daemon.py (Daemon): Remove get_suites() (replaced by generic
models()).
* [29a50a5] daemon.py (Daemon): Remove
get_active_or_auto_reactivate_remotes() (replaced by generic
models()).
* [1d74263] daemon.py (Daemon.get_active_codenames): Should not use
models() inside daemon.py.
* [c3ec178] models/repository.py (Repository.mbd_icodenames): Add
iterator to all codenames from a repository.
* [e8a422b] daemon.py (Daemon): Remove get_active_codenames() (replaced
by generic models()).
* [62451e9] daemon.py (Daemon): Remove get_subscription_objects()
(replaced by generic models()).
* [ce4c790] package.py (KeyringPackage.__init__): Use models(), not
import of models.
* [f7c58b4] devel (importchecker): Exemption for deamon.py.
* [b63f2ff] views.py: repository, chroots, remotes: show all (not active
only).
* [e25472b] config.py: Cosmetic: Put "api" (menu) before "log" &&
cosolidate map order in view.
* [663713c] models/gnupg.py (Remote.__str__): Fix: Really should not
call status on remote.
* [29adebb] client.py (Client.api): Improve user error handling (use
public exceptions where due).
* [2d524e9] static/configure.svg: Add from openclipart.
* [7501f05] config.py: No need to make uri class var private.
* [4e9bfa9] New generic "builders support" (in models/gnupg.py). html:
Improve && update "remotes" section to "builders".
* [46992d6] mbd_repositories.html: Rple two top-level "details" by plain
h3, h4 headers.
* [023ae6b] changes.py: Create builds/event paths on demand/when needed
only (fixes some superflous empty dirs).
* [d91297e] config.py: AUTH: Upgrade to proper enum; eliminates
AUTH_STRING extra code.
* [8e86907] mini_buildd.css, api: Add mbd-auth-* classes.
* [bf8b816] builtins.py: Rm "auth_err" (string) support in 'mbd_api' tag
(we now have auto-auth via django views).
* [6beb736] httpd.py (FileResource): Add (commented) auth-redirect code;
don't use 'auth_err' string.
* [29df24f] config.py (Auth): Drop 'auth_err string' && check, simplify
to just have is_authorized().
* [489d4e2] views.py: Add ouput "html-snippet" for API calls.
* [be862ed] includes/mbd_tag_api.html, base.html: Move HTML for 'ajaxed
api results' from individual API code to one static place in base.
* [d6ba91e] mini_buildd.js, api tag: Simplify JS to use load() in api
result html snippet.
* [2849016] builtins.py (mbd_api): Default to action "ajax" again.
* [3a96307] builtins.py (mbd_api): Add is_authorized context, resp. css
and force form action to 'login' on unauthorized.
* [914fd4d] includes/mbd_api_submit.html: Merge into mbd_tag_api.html.
* [26b92fb] mbd_tag_api.html: Make 'output' real hidden input (rather
than hidden by css).
* [3d0f463] mbd_tag_api.html: Make hiddens args actual hidden inputs
(instead of hiding by css && calling mbd_api_arg).
* [645ba50] mbd_tag_api.html: Fix login detour via link inside a button,
and use 'url' tag for login uri.
* [003d7dc] builtins.py: Rm "reload" from context (unused now).
* [e052ac1] views.py: API: output=json|snippet|page && get rid of
"action" option.
* [7ecdfb3] base_api.html: Remove, is now obsolete.
* [999e4f7] api.py (List, Show): New command class attr PREFER_PAGE_VIEW
(for web templates only).
* [e60495c] API form submit: Really fix the script/noscript dilemma;
remove all former css workarounds.
* [c22fa14] builtins.py (mbd_api): Remove 'output' arg (now obsolete).
* [b5184b5] builtins.py (mbd_api): Update context dict notation to diff-
friendly.
* [bdbd486] *.html: urlencode on get_full_path does not seem to be
necessary for some time (see
https://code.djangoproject.com/ticket/18456).
* [839c93d] mini_buildd.js: api: Add initial error handling && progress
bar.
* [d736c9e] mbd_api_show.html: Add "remove" only if exists.
* [7f7394b] Revert "*.html: urlencode on get_full_path does not seem to
be necessary for some time (see
https://code.djangoproject.com/ticket/18456)."
* [357e22d] events.py: Reword events.Events -> events.Queue (to not
confuse w/ "events" (log directory)).
* [b1ee5fd] daemon.py: Move cronjob methods to cron.py.
* [56f4d01] setup.py: Ignore mildly annoying 'snapshot version warning'
from setuptools.dist.
* [3e1e54b] devel: Make MBD_KEEP disable all "on exit" runs, not just
some.
* [93873b9] Add (empty) '__init__.py' for models sub package.
* [6a9c104] daemon.py: Move "port" functions to package.py.
* [afaeaa3] views.py: API: Minor restructuring so we can have generic
code for both, page and snippet (DRY).
* [804c9e6] builtins.py (mbd_plain): Show "as_detail" support.
* [8d1ad0a] mbd_api_call.html: Show cmd as "full" && add plain (json).
* [f951a29] django structure: Move includes into app dir (includes ->
mini_buildd/includes).
* [4d7a6ed] django structure: Move "base.html", "error.html" into app
dir (*.html -> mini_buildd/*.html).
* [c32623b] django structure: Tag includes: Remove 'mbd_tag_' file
prefixes and move to "tags/" (mbd_tag_*.html ->
mini_buildd/tags/*.html).
* [60a3f0d] django structure: API call includes: Remove 'mbd_api_' file
prefixes and move to "api/" (mbd_api_*.html ->
mini_buildd/api/*.html).
* [e71494c] django structure: Other includes: Remove 'mbd_' file
prefixes (mbd_*.html -> *.html).
* [72f8271] api.py: Fix one forgotten update from previous code move to
package.py.
* [c4c5959] devel: Rm "deprecated" from list of fishy words (only non-
fishy uses ;).
* [9026913] show: Add "architecture=source" for both, reprepro &&
repository show() variants (makes results suitable for Changes).
* [8856de5] repository.py (Repository.mbd_package_show): Use dict (not
tuple) for codename.
* [6a2d4ef] models/repository.py (Repository.mbd_package_show): Make
distributions dict, not list.
* [38d20e8] models/repository.py (Repository.mbd_package_show): Simplify
code.
* [37ca3c9] repository.py (Repository._mbd_package_migrate): Fix MIGRATE
distribution.
* [17d3f9e] reprepro.py: show(): Add 'component' to results && iterator
variant (ishow).
* [2df43f0] repository.py: get_dsc_path -> find_dsc_uri, components list
as parameter.
* [fca6d7f] api.py (Find._run): Accommodate pyflakes (W504, line break
after binary operator).
* [ad2b4c7] models/repository.py, api.py: Move "show" code to API, used
only there.
* [5aacfa4] reprepro.py: Move "package_find" methods here from
repository.py (these are reprepro only).
* [4bf85e5] reprepro.py, repository.py: Make private find variants
public.
* [b347bb5] devel (tidy): Fix API call URIs.
* [e9eca8d] api.py (show): Show all existing repos && update result to
have repository options (active).
* [ef02e7a] includes/api_results.html: Add api results include.
* [cb7685b] mini_buildd.js: api load function: Give form element
directly.
* [665f6dd] tags/api.html: Update to use from.action again (not multiple
submit buttons).
* [3e18efd] builtins.py: Drop extra builtin for 'api_arg'.
* [21c91d2] models/repository.py (Repository.mbd_icodenames): Sort list
of codenames.
* [4a9a032] includes/tags/api.html: Put api result back here, with ids
(enables more than one result per page).
* [7637fcb] tags/api.html: Move api results html back into api tag (we
need it only here).
* [2ae137d] includes/tracker.html. *: Add initial "tracker" route.
* [c23a1f2] mini_buildd.js: API submit: Use jquery hide()/show() && hide
"directly" via onclick=...
* [bb409b8] mini_buildd.js, tags/api.html: Rather use 'onsubmit' for js
submit.
* [878bd72] mini_buildd.js: api_form_submit: Code clean up.
* [5c2d43c] views.py: Pre-compute dict of available api command
templates.
* [24708e2] includes/api/call.html: Eliminate extra "call.html" (just
use page, snippet templates).
* [5456eac] views.py: Eliminate "repositories" from cmd context (really
not needed any more).
* [f4cd80c] api.py, tags/api.html: Drop PREFER_PAGE_VIEW (aiming for
extra tracker page).
* [4291f16] mini_buildd.css (div.mbd-api-results-content): Minor
padding/margin fixups.
* [54961c4] tags/api.html: 'close': Fix: Re-add class.
* [797c5c9] tags/api.html: JS API: Support choosing "popup" or "embed"
CSS variants.
* [d5c834c] includes: Mv all include templates used as "route" to
"routes/" subdir.
* [c2c9e18] includes/track.html: Add "track" include, use in base and
events.
* [91d2f72] includes/track.html: Hide source if given.
* [07af85b] includes/routes/tracker.html: Use "embed" css variant.
* [36a6d91] api.py: show(source) -> show(repository, codename, source)
* [4e40329] api.py (Show._run): No such rep error handling.
* [5d42fea] .prospector.yaml: Also customize argument-regex (same as
variable-regex).
* [30be31d] devel (tidy): Log complete URLs (so we can click on it to
debug quickly).
* [1c7c574] devel: testsuite: Updates for changed show() api call.
* [70036f3] reprepro.py (Reprepro): show() -> ils(), make versatile.
* [a8102c8] devel (testsuite): Tidy tests should run after auto-setup
(make show work).
* [8d8c801] reprepro.py (Reprepro.find_in): Fix: Rather use 'is None'.
* [d58e04c] api.py (Show._run): Minor code fixes.
* [95e83c8] api.py (Show._run): dsc_path -> dsc_uri.
* [fb29bdb] models/repository.py (get): Add generic getter helper.
* [57a5c06] api.py: Update dist / diststr parse functions.
* [b8a67f5] devel: Return of pylint standalone test.
* [6d09f03] devel: Return of pyflakes standalone test.
* [6113596] devel: Return of pydocstyle standalone test.
* [971745e] devel: Return of pycodestyle standalone test.
* [06fc7d4] admin.py (AdminSite): Fix two trivial pydocstyle warnings.
* [11c5d87] devel: Drop "prospector": Hardly helped, forced pip user
installs, no updates, stuck to old versions of checkers.
* [5af8165] devel: Reorder static tests && add new 1st 'build_py' static
test (instead of calling 'build_py' on any test again.)
* [457ab0b] devel (mbd_installdjango): Rm, outdated, not needed.
* [0abb12e] devel (mbd_installdeps): pycodestyle/pyflakes: From Debian.
* [0ee9ae8] devel (MBD_PYPATH): Make PYTHONPATH export global, rm
'pyenv' extra function.
* [709a7af] setup.cfg (ignore): D416 does not seem to exist (any more).
* [75f2625] devel: Drop fishy-words, configure pylint's "fixme" to do
the same.
* [fab0b79] *.py: Do 'raise from e' for all wrapped exceptions (pylint
2.5->2.7, W0707).
* [6dbd1e5] .pylintrc (extension-pkg-whitelist): Add 'apt_pkg', used in
super-portext (pylint 2.5->2.7, I1101).
* [7827073] api.py: Fix inconsistent return statement (pylint 2.5->2.7,
R1710).
* [b21d80e] distribution.py: Make sbuild check modes uppercase (pylint
2.5->2.7, R0103).
* [0ab1126] devel: Add term color for warn log.
* [0296153] api/snippet.html: debug: Add links for page && json output.
* [ae0637f] debian/control: Limit to python >= 3.6 (fstrings).
* [ea2291c] views.py: API: Put auth back to explicit view code (fixes
'output=json' error handling).
* [dcfe093] views.py (ExceptionMiddleware.error): Add html snippet
error.
* [1b9c605] templates/mini_buildd/error_snippet.html: Use 'rfc8707'
object directly.
* [59e54a2] .pylintrc (notes): Add "workaround" to 'noteable' strings.
* [d62ffce] daemon.py: Remove workaround for
https://github.com/PyCQA/pylint/issues/3742 (fixed in pylint 2.7.2).
* [bce699f] devel (mbd_pylintgeneratedmembers): Update (this semi-
automation) to use sll code (not just modesl) and directly append to
'.pylintrc' in the desired notation.
* [fcb5554] .pylintrc (generated-members): Update w/ adapted semi-
automation. Adds "destroy" exemption (from Singleton metaclass).
* [2ef23eb] __init__.py (PyCompat): Add python (now 3.6) 'compat class'.
* [d54b212] views.py (RouteView.get_context_data): Use py 3.6 compat for
'removeprefix' (3.9 only).
* [56d6063] call.py (Call._call2shell): Jail shlex.join to PyCompat
(fixes: Run again w/ py 3.6/buster).
* [e2e9fff] control (Build-Depends): Upgrade p-d-registration deps to
2.2-5~ (fixes: Breakage w/ newer django versions).
* [b3462aa] gnupg.py (PublicKeyCache): Add key2id() support (fixes
adding manual apt keys).
* [92203d1] control (Build-Depends): Add dep on python3-attr (>=19) (for
twisted; fixes buster ports).
* [a7d3be5] devel (mbd_installdeps): Fix pylint3->pylint (former is
virtual only).
* [667f4aa] gnupg.py (BaseGnuPG.get_colons): Make public since we use it
outside class.
* [677f13d] models/repository.py (Repository.mbd_sorted_distributions):
Reverse order (newest dist 1st).
* [8d22df8] static/mini_buildd.css (body): Rm now-unecessary config for
details.
* [a9e7493] includes/tags/api*.html: Only use "required" when
authorized.
* [2b2289b] static/mini_buildd.js: Move "lengthMenu" default to
datatable tag.
* [de2c0c3] static/mini_buildd.css: Make main header (navbar) sticky.
* [4fcb17e] mini_buildd.css; Make forms inline in datatable (track).
* [9396a1d] mini_buildd.css: API: get rid of extra colors for api-auth
status.
* [104b034] tags/api.html: Move result div out of form.
* [d8eea61] mini_buildd.css: API: Remove some configs interfering w/
embed.
* [999a5a8] builtins.py (mbd_api): Use popup=bool, not css=embed|popup
(fixes redundant display=none).
* [c09fc39] tags/api.html, js: API: In script mode, do confirmation via
js confirm().
* [b5bc945] mini_buildd.css: Put border around "embedded" api result.
* [5b0c859] routes/tracker.html: Rather loop dists (not codenames), and
do it sorted.
* [158b1b8] models/repository.py: Use mbd_sorted_distributions wherever
appropriate.
* [b97f4c6] tags/api.html: Show home, reload on 'popup' only.
* [1dd958a] api/snippet.html: Show debug links on webapp 'debug' only.
* [fedb737] mini_buildd.css: datatables: Also make "details" td elements
inline.
* [9f56801] django_settings.py (STATIC_URL): We can simply use .uri now
(not join() && explicitly add /).
* [2fd9327] tags/api.html: Fix: URLs in form input must *not* be
explicitly urlencoded.
* [06ca00b] config.py: accounts.profile: Set to default
'accounts/profile'.
* [610e7a1] views.py: Add custom LoginView (url "login" =
"accounts/login").
* [f3aac23] django_settings.py (configure): Remove explicit
LOGIN_REDIRECT_URL, but set LOGIN_URL explicitly.
* [9562657] html: Use "login" (new custom LoginView), not "admin:login".
* [d714eb5] views.py: Rm custom LoginView again (turns out this will not
solve any problems ;(.
* [540eb62] base.html: Remove remaining (logout, password_change) refs
to admin namespace.
* [f920c7b] builtins.py: Add new tag mbd_accounts.
* [84f30c5] base.html: Re-do "accounts" menu: Use 'mbd_accounts' && some
style updates.
* [964b7de] mini_buildd.css: OMG: Make all submit buttons 'roundish'.
* [6a47ecb] routes/api.html: Embed api calls.
* [7359b86] builtins.py (mbd_accounts): Add support to add extra css
class(es) for form.
* [176e98c] tags/api.html: Use 'mbd_accounts login' if unauthorized.
* [f2e63fa] tags/api*.html: Remove uneeded parts from the now authorized
'branch".
* [c27e767] builtins.py (mbd_accounts): Cleverly guess "next" if not
given; especially, use REFERER if we have a snippet request.
* [01453de] base.html: Improve accounts menu (Fixes tidy error: no forms
allowed in summary).
* [e261976] api.py: setup*: Update to Daemon.models() (obsoletes
Daemon.meta()).
* [8916dd5] api.py: get_key->pub_key.
* [f4760b6] api.py: status: Result cleanup: Rm obsoleted "remotes,
packaging, building, crontab, events".
* [92b233c] api.py: get_sources_list->sources_list.
* [5b9bcbd] devel: get_dput_conf->dput_conf.
* [547707e] api.py: activate, deactivate: Make confirm-able.
* [82bb4e8] Rename module: distribution.py -> dist.py.
* [3245990] dist.py: Rename class Distribution -> Dist.
* [86320dd] changes.py (Changes): Fix self.distribution -> self.dist.
* [19ad5ef] dist.py: Update 'Dist' to new nomenclature && add doc.
* [acf8d0e] devel: pylint: Disable "fixme" for general check && fail on
any issue; add extra check to (just show) 'fixme' warnings.
* [6ad0833] cli.py: Put 'auth_log' hack to m-b.cli (fixes duplicate code
in m-b-ssh-* commands).
* [515578a] devel (pylint): Add extra run to show 'locally-disabled'
(in-code exceptions).
* [d391a26] Distribution, Source, Component: Rm __hash__() from (sort
support): Does not seem to be necessary.
* [b3674e8] Fixed in pylint: Remove false-positive workarounds for
https://github.com/PyCQA/pylint/issues/1553
* [f76d3ba] gnupg.py: Remove workaround for pylint crash:
https://github.com/PyCQA/pylint/issues/3742.
* [75782a0] pylint: Rm 'too-many-ancestors' locally-disabled (incr 'max-
parents' instead).
* [25fa737] models/base.py (Model.save): Rm unneeded signature-differs
local disabled.
* [2764cb8] mini-buildd-ssh-uploader-command (CLI.runcli): Improve
comment wording (so it's no pylint "fixme").
* [03e8ca6] client.py (Client.api): Convert 'in-code fixme' to 'doc
todo'.
* [eb1d7b3] __init__.py: Move NEWLINE helper to 'mini_buildd' with
proper docs.
* [46c154f] threads.py (DeferredThread.run): Re-add info log ('wtf note'
does not seem to apply any more).
* [d187696] setup.py (Scripts.__init__): Improve doc on Debian files
creation (don't label as "workaround").
* [8d874aa] .pylintrc (disable): pylint 2.7: logging-format-
interpolation, f-string-without-interpolation: No longer needed.
* [bcc2f01] api.py: Rename "show"->"ls".
* [006225a] api.py (snapshot calls): Prefix "snapshot" && improve
naming.
* [1dd7694] api.py: Use Mixins for command options (AUTH,
NEEDS_RUNNING_DAEMON, CONFIRM).
* [806d51a] api.py (SetupDaemon): Remove all GroupXXX from actual
commands.
* [69362f6] tags/accounts.html: Don't filter name as title.
* [000ff04] base.html: Accounts menu: Add custom name for all entries.
* [aa5521e] API: Get rid of old-style grouping altogether.
* [e2f85b7] builtins.py (mbd_api): Make 'full' default to False.
* [c69e4de] api.py (RepoSup): Remove, move tool to KeyringPackages
command.
* [98a93d6] api.py (StatusResult): Remove, merge into Status command.
* [07faab8] routes/api.html: details per cmd.
* [78dd192] models/source.py, dist.py: Add Ubuntu "hirsute".
* [6352572] builtins.py (mbd_datatable): Add 'page_length' option &&
default to 10.
* [ac15b60] mini_buildd.js: Confirm API call: Show args.
* [7dba714] tags/api.html: Fix: Hidden values need to use raw_value.
* [c5f7d8a] models/source.py (Archive.clean): Improve exception error
text.
* [8b979cd] models/source.py: Move vendor archives "lib" to dists.py.
* [7fc00f9] models/source.py, api.py: Move
Archive.meta_add_debian|ubuntu -> api.py.
* [1397939] models/source.py, api.py: Move Archive.meta_add_loacl ->
api.py.
* [85ac34c] api.py (SetupSources): --with-vendor-archives=Bool ->
--vendor-archives=List.
* [a2257e3] models/source.py, dist.py: Move apt keys to dist.py.
* [bb3d4eb] dist.py, models/source.py: Move sources setup data to
dist.CODENAME_SETUP.
* [827d552] dist.py: CODENAME_SETUP: Separate by vendor.
* [a7c66d7] api.py (MultiSelectArgument._r2v): Filter out empty items
from (comma-) separated list.
* [94c9b9e] models/source.py, api.py (setup_sources): Move
meta_add_debian|ubuntu to api.py, and make setup call codename-based.
* [c4b3b42] tags/api_arg.html: Typo fix ('unknown').
* [3a4ca6f] tags/api_arg.html: Better wording for multiselect custom
input.
* [61ec5cf] models/source.py: Move _get_or_create (setup) code to
api.py.
* [c989e91] models/source.py (PrioritySource.Admin): Move
mbd_meta_add_extras (setup code) to api.py.
* [9c56920] net.py (ClientEndpoint.login): Don't log csrf security
token.
* [803d3a5] api.py (SetupSources): Default to 'empty' for vendors
options; rename '--with-local-archives' -> '--guess-local-archives'.
* [7636011] devel (testsuite): Only use computed MBD_CODENAME for tests
(drops internal port test).
* [ec6b0d9] devel: Drop MBD_ARCHIVES, MBD_VENDORS in favor of MBD_SETUP
(args to API call setup).
* [b095f80] api.py (SetupSources): Apt cacher 'guess support' as
separate option.
* [1465c54] devel (MBD_SETUP_DESC): Default to guess local apt-cacher
only for archives.
* [9ac9435] devel (mbd_supertestall): Update for new MBD_SETUP.
* [a38e85f] devel (profile): Rm 'allvendors' doc (option is no more).
* [31170f8] devel (profile): Rm "testkeyring" option (not used, can now
easily be called manually).
* [3d30031] devel (profile): Rm "testpackage" option (not used, can now
easily be called manually).
* [becb657] devel: Remove (now unneeded) RESTART_HOOK support.
* [109c0e2] dist.py: Move "config" structures top.
* [7b2f6e5] client.py (Client.api): Error handling: Just use Rfc7807
object (no json extra step needed).
* [025e601] client.py (Client.api): No need for extra error logging.
* [ba7a67d] client.py (Client.api): Simplify interactive code (always
retry after action).
* [e369027] client.py (Client.api): Further simplify error handling.
* [d595920] admin/mini_buildd.html: "setup" api call should offer full
options.
* [9c7ddeb] api.py (SetupSources.update_object): New method to replacing
get_or_create.
* [1b5d2ac] models/base.py: Remove extra mbd_get_or_create (just to show
a log).
* [de48fb6] models/repository.py: Move meta ("wizard") methods to api.py
(setup).
* [344f348] chroot.py; Use _mbd_meta_add_base_sources() in api.py
directly, drop all per-Class variants.
* [ed11433] models/chroot.py: Move to meta method to api.py.
* [b7fbd2a] models/distribution.py; Move meta add_base_sources to
api.py.
* [9437b56] .pylintrc (max-module-lines): Update to 1500.
* [578bee7] models/distribution.py: Move to meta.*defaults method to
api.py.
* [e0da26f] .pylintrc: Consistently use 'x=y' format (not 'x: y').
* [856b4c6] setup.cfg: Move .pylintrc here.
* [2edf81a] setup.cfg: Remove empty pylint sections.
* [85597d0] *.py: mbd_meta_pca_all -> mbd_pca_all.
* [b13845f] api.py: setup: Use 'update_object' (instead of
'get_or_create') everywhere.
* [c2b95cd] templates/admin/base_site.html: Overwrite some strange CSS
values from django admin (fixes 'select' api display)
* [649055a] models/chroot.py (Chroot.mbd_get_backend): Simplify &&
document.
* [ca3a064] models/chroot.py: LVM backends: Add user error if LVM is not
installed.
* [9fb3978] models/chroot.py (Chroot.__str__): Don't append backend info
(only works when instance is saved).
* [cfc26fa] models/distribution.py (Distribution.__str__): Switch to
diff-friendly notation.
* [237cf1c] models/distribution.py (Distribution.__str__): Simplify,
only show base source + archs.
* [81a649c] api.py (SetupRepositories): Layout: Update to setup dict.
* [70761ae] api.py (SetupRepositories): Separate suite/layout config
dicts && cover debdev layout.
* [0121e74] api.py (SetupRepositories): Update SUITE_SETUP to use
'options'.
* [0c0057b] api.py (SetupRepositories): Add dict-like config for
REPOSITORIES.
* [fa1385c] api.py (SetupRepositories): Remove *meta* calls (merge into
run)
* [fb121c7] api.py (SetupRepository): Rename (singular).
* [e920b0f] api.py_ setup_repositories->setup_repository, make id &&
preset freely configurable.
* [560635b] api.py: Move repository setup dicts to dist.py.
* [3f59a08] dist.py: Merge all "setup" to one big dict (dist.SETUP).
* [ba6cd6b] api.py: setup_chroots: Merge last meta method.
* [56e8791] api.py: Merge all setup calls.
* [dc620ed] api.py (Setup): Better wording for archive && codename
arguments.
* [e1340e5] api.py (Setup): Add --update option (noop for now).
* [d6bd55c] api.py: setup: update_object->x_or_create (implements '--
update' functionality).
* [78ace8d] api.py (Setup): Sources: Update apt_keys on --update.
* [9d69950] api.py: Add mbd_is_security to Source (greatly simplifying
priority source setup).
* [de20e2c] dist.py: Update SETUP format.
* [fcd30cb] api.py (SetupRepositories): Put default_components into
dist.SETUP.
* [544d81c] dist.py: Update SETUP format: Option to add more options per
codename.
* [f8ca3f4] dist.py: Add "supported" setting for codename setup.
* [339809b] dist.py: Add get_codenames() helper && [SUPPORTED_]CODENAMES
(replacing CODENAME_SETUP_BY_CODENAME).
* [b8450bc] changes.py (Upload.request_builds): "dist" var should be
"distribution".
* [c61676d] dist.py: Move Dist.apt_allow_unauthenticated -> SETUP
(jessie workaround).
* [7d10aa6] dist.py: Move Codename.arch_optional -> SETUP (Ubuntu
workaround).
* [b910f15] gnupg.py (PublicKeyCache): Fix: Also import Ubuntu archive
keyrings if installed.
* [772bfd5] dist.py: Move Dist.produces_ddeb_appendix -> SETUP (Ubuntu
workaround).
* [2768026] dist.py: Re-add squeeze apt keys.
* [0f1028c] dist.py: (Re-)add squeeze as unsupported codename.
* [530be71] dist.py: (Re-)add lenny apt keys.
* [a199e69] dist.py: (Re-)add lenny codename (as unsupported).
* [052baab] models/source.py (Source.mbd_is_security): Move to dist &&
fix after SETUP update.
* [2d7a14a] dist.py: Move "no_lintian_suppress" to SETUP.
* [4a8986f] dist.py: Remove 'Codename' class (obsolete now everything
has moved to SETUP).
* [d3f844e] dist.py: Update module doc wording.
* [f3cfe29] api.py (Setup._run): Move "needs_uname_26" (lenny) to SETUP.
* [d7adeef] dist.py: Move "usually used mirror paths" to SETUP/per
vendor.
* [7c1b6f5] dist.py: Move "distro info" instances to SETUP.
* [ec622fd] api.py (Setup._run): Add && use shortcuts for all model
classes.
* [90456b0] api.py (Setup._run): Use x_or_create() for Daemon.
* [c93c1a3] api.py (Setup.x_or_create): Fix default instance creation
code (even though currently commented).
* [6245916] api.py (Setup.x_or_create): Update to dict-based result.
* [a37eaf9] setup.cfg (generated-members): mbd_check was listed twice.
* [1aabf27] devel (mbd_pylintgeneratedmembers): Fix: Remove manual
addition of 'mbd_check'.
* [47bcc2c] devel (mbd_pylintgeneratedmembers): Update to now write to
setup.cfg.
* [d4f9a67] setup.cfg (generated-members): Update via ./devel
pylintgeneratedmembers (django 'Model._meta')
* [15d2146] models/base.py (Model): Add (experimental) mbd_diff().
* [66a478c] api.py: setup: x_or_create(): Add diff to result.
* [ba30511] devel (testsuite): 'auto-setup'->'setup' && split keyring-
and testpackages in own test cases.
* [3f42656] api.py (setup): suite option: Omit unnecessary dummy
variables.
* [3502972] api.py (setup): Continue on --update=Yes even if not created
(for suite, layout, distribution).
* [0fe2508] api.py (setup): Add comment why not using x_or_create when
updating sources apt keys.
* [82fb6e3] api.py (setup): Conforming naming convention for the
distribution setup code.
* [5a92af0] dist.py: SETUO(layout): Add "stable" and "testing" to
"Debian Developer" (els eit won't work w/ default suites).
* [e0e8fac] api.py (setup): Fix SuiteOption creation.
* [ca06f5b] models/base.py (Model): Add helper to get a field's default
value.
* [4c0132c] api.py (setup): Distribution: Mv
"apt_allow_unauthenticated", "lintian_mode" to x_or_create args.
* [ec10bec] api.py (setup): Distribution: Mv "extra_options" to
x_or_create args.
* [b8e2afa] api.py (setup): Distribution: components/prio source: Use
set/filters instead of manually adding.
* [cedb92a] api.py (setup): Add "setup" shortcut and sync some naming
conventions.
* [b712aeb] api.py (setup): Distribution: Mv "architecture_option" to
x_or_create().
* [6b838da] api.py (setup): Change order: Setup chroots before
repository.
* [a75e8bb] api.py (setup): "--codenames" -> "--sources".
* [5b7b00e] api.py (setup): Add (for now, dummy) methods for setup
parts.
* [6cff03d] api.py (status): Remove no-op __init__.
* [2785152] api.py: Separate setup code.
* [a8962b6] api.py (setup): "setup" shortcut as class attribute.
* [89783ea] api.py (setup): Make "chroots" fully configurable
(--chroots, --chroots-from-sources).
* [8bd37b6] api.py (setup): repositories: Give list of repo/preset
tuples to create (default to empty).
* [d43c72b] models/base.py (mbd_diff): Only compare fields actually
given.
* [1e82280] api.py (Setup.setup_sources): Generate prio sources directly
in loop for sources.
* [3029596] devel (mbd_supertestall): Adapt args (after setup change).
* [ce76cde] httpd.py (Events): Spurious disconnects on SSL: Identify
direct cause (in twisted) && add workaround.
* [e9bf658] dist.py: Get "supported" flag from distro_info.
* [a70b8ad] __init__.py: Shortcuts: Move 'm_b.Daemon.models()' to
'm_b.mdls()'.
* [9f6335e] api.py (setup): Remove 'variable shortcuts' for model
classes.
* [2d0c14c] api.py (setup): Get rid of some unneeded comments.
* [ff21704] config.py: HOSTNAME now unqualified, add HOSTNAME_FQDN &&
properly set values from --hostname arg && and use these values
everywhere.
* [b49d70d] api.py (Setup.setup_daemon): Add "identity" arg.
* [273caef] api.py (Setup.setup_archives): Rm MsgLog about netselect-apt
(rather confusing than helpful).
* [00b0c1c] api.py (Setup.setup_repositories): Simplify 'suite option'
code.
* [2edf936] api.py (Setup.setup_sources): Cosmetic: Update comment.
* [d590ba0] api.py (Setup.setup_repositories): Simplify distribution
setup code.
* [7edc2e5] api.py (setup): Simplify repository+chroot setup code.
* [1198f21] api.py (setup): Fix order (repositories last).
* [cbb1158] api.py (setup): Only run repository setup (layout, dists,
repos) if repo ids given.
* [3efcc08] dist.py: APT_KEYS: Vendor keys should be capitalized.
* [97a5fc2] config.py (default_ftp_endpoint): Move code to compute
default ftpd_bind to config.py.
* [191c358] models/daemon.py (get): Create model instance singleton with
computed ftpd_bind default.
* [bf9b36a] api.py: Argument refac I: r2v/v2r => s2v/s2r, classmethod
only.
* [3d0e0e8] api.py: Argument refac II: Get rid of 'raw_value'.
* [8b34c44] api.py: Argument refac III: Add 'given' value && compute
actual 'value' via method/property.
* [dbdee1a] api.py: Argument refac IV: argparse support as method only.
* [e7e3083] api.py: ident->id_list for specialized Argument classes.
* [18aa777] config.py: Move 'DEFAULT_HTTP_ENDPOINTS' to config.py.
* [8439fb8] __init__.py (PyCompat): Improve doc for 'PyCompat' class.
* [7a114de] config.py: Make config.HTTP_ENDPOINTS str (description)
only.
* [0193a06] models/daemon.py (get): Fix: 'ftpd_bind' must given as
default only, not as id.
* [1bdf12a] models/daemon.py (Daemon.clean): Add (django) validation for
ftpd_bind.
* [8357612] api.py (Argument): Let "default" optionally be a callable;
add magic value '<server_default>' to make this accessible from
clients.
* [1eba57b] api.py (Setup): Add --ftp-endpoint (with callback default).
* [01ebcf3] api.py (Setup): '--identity': Update to callable (server)
default.
* [c97d51f] api.py (Argument): default(), value(), strvalue(): No need
to be property.
* [bd7f360] mini_buildd.css: API: Remove image from 'setup' call.
* [525cf00] mini_buildd.css: Add 'mbd-boxed' class.
* [33dab34] routes/api.html: Just use a boxed div to separate commands,
and don't embed (rather popup) results.
* [ef2c60d] api.py (Setup): Update doc && move doctests to module level.
* [4d1f007] devel: Add MBD_SETUP_COMMON && update supertestall.
* [a2b3a7d] devel (profile): Drop (redundant) defaults.
* [47051dd] devel: Drop mbd_setup and mbd_profile (less is indeed more).
* [e408be7] api.py (Setup.setup_sources): Use set() to iterate over
codenames (avoids unnecessary duplicate runs).
* [e96626d] dist.py (DistroInfo): Add custom classes for Debian/Ubuntu
to abstract new method mbd_supported(with_lts=X).
* [1d44bb5] dist.py (get_codenames): Update to use new mbd_supported(),
and support 'with_lts'.
* [f08fe9a] api.py (Setup): sources: Add '--sources-from-vendor-with-
lts'.
* [0b8dc5d] devel (mbd_supertestall): Use 'lts' sources (add 'wheezy'
(non-LTS) manually for now).
* [c811269] tags/api_arg.html: Fix: Don't display 'select' if there are
no choices.
* [7785310] api.py: Arguments: Add "header" support to archive some sort
of grouping when commands have many args.
* [52f6940] api.py (Setup): Add argument headers (web display only).
* [690ca1f] static: Rename debian_swirl.svg -> debian.svg.
* [9c293c7] tags/api_arg.html: Fix: Add value to non-choices
[multi]select input.
* [c5dbe5f] static/ubuntu.svg: Add Ubuntu "Circle Of Friends" logo
(seems fine, see https://ubuntu.com/legal/intellectual-property-
policy).
* [98ee164] api.py: Move generic option(s) top (with header).
* [e0e0a12] api.py: Add "default setup" constants (Default, Debian,
Ubuntu)
* [564a1a2] index.html: Add default setups to main page (for now).
* [96c8385] HTML menus (WCAG): Use <ul> for all menus.
* [7f3cdb4] HTML menus (WCAG): Use 'aria-labelledby' (both main menus
for now).
* [27cf273] HTML menus (WCAG): Only use one nav-element (with nested
"<ul>s").
* [e94a935] mini_buildd.css: (Re-)add mbd-float-right class.
* [4254adf] HTML menus (WCAG): Adapt base.html && CSS to work with ul
tree (including dropdown menus)
* [c5deea6] mini_buildd.css: Purge old header setup (with few merges).
* [0280af7] base.html/CSS: Use global 'mbd' class for body, update
header stuff.
* [1efd827] mini_buildd.css: Update (most) configs to 'body.mbd style'.
* [c70ed75] base.html: Menu: Remove {{uri.class}} (this does no longer
exist).
* [9a249f0] base.html: Menu: Update 'attention' class add code to use
'yesno'.
* [6acbf58] config.py: Add new MENU dict (replacing extra 'URI.menu'
flag).
* [0a2197f] mini_buildd.css: Menu: Avoid right cutoff for submenus.
* [293ee48] config.py: MENU: Update to list of dicts (prepare for
various types).
* [633d0ba] api.py (Power): Replace commands "activate", "deactivate" by
"power".
* [ea2d8a3] config.py: MENU: Support 'href', and move homepage link
there.
* [fa602e9] includes/menu_item.html: Outsource menu items display to
include.
* [7fe9b6b] admin/mini_buildd.html: Fix: Update to new api call "power".
* [821ae36] config.py: MENU: Support submenus && add "Documentation",
"Admin" submenus.
* [113ec7c] mini_buildd.css: Menu: Fix/improve submenu display.
* [52098fd] menu_item.html: Auto-add 'mbd-active' for active URI menu
items.
* [adbf8e3] mini_buildd.css: menu: Can't use margin on submenus.
* [bcaf1c7] route.html: Update to new "nav style".
* [4242236] mini_buildd.css: Bring 'grid' to all headers, not just main.
* [2e9ffc4] menu: Two navs for main menu && update menu aria labels.
* [24c7971] mini_buildd.css: Remove mbd-float-right again.
* [e6f6537] base.html: Add "triangle down" for submenus.
* [b234a3b] mini_buildd/setup.html: Add new location
'mini_buildd/setup.html'.
* [82b65df] __init__.py (is_alive): Add shortcut (may also be used to
avoid importing django early).
* [a985647] api.py (Power): Make this toggle by default (with new
is_alive shortcut as default).
* [e42f13c] includes/menu_item.html: Support "api" menu items.
* [b51db75] config.py: "power" menu item via config.MENU.
* [5530a12] api.py (SelectArgument.argparse_kvsargs): Allow positional
args to be actually optional, if we have a default.
* [2431112] api.py (Power): Switch to select arg "to_state" (allows nice
``power [on|off]`` notation w/ toggle when not given).
* [17e95ac] includes/menu.html: Macro to spew out whole (static) menus.
* [5e6b387] config.py: MENU->MENUS as dict, update macros (prepare for
multiple static menus).
* [f190103] base.html: User menu: Rather use "Logged Off" than django
default "AnonymousUser".
* [17bb615] includes/menu.html: Include the "nav" container (and aria
label) here.
* [4ccbb4d] config.py: MENUS: Rm "api" support again, update main menu.
* [5c7bc98] base.html: Add aria label for account menu.
* [20021c4] base.html: Retreat: Skip 'menu as config' idea (really
causes way more pain than it helps).
* [07289b2] More main menu improvements.
* [726d79c] base.html (menu): Move "power" to admin menu.
* [2aa10c4] config.py: More consistently rename "documentation" ->
"doc".
* [abd2edd] daemon.py (Daemon.attention): Add stubs for all possible
"attention" candidates, and improve tooltip.
* [3dfa8c6] models/base.py (StatusModel): Add mbd_attention: HR-string
if any object is inactive.
* [10a19d4] daemon.py (Daemon): Attention: Update implementation && add
support for builders, chroots and respositories.
* [4304222] base.html: "Box" the account/user menu.
* [3487460] mini_buildd.css: Restrict header config to main header
(body.header).
* [d9d99ea] html: Sync headers in all page-like htmls.
* [dbbd9b0] mini_buildd.css (body.mbd>header): Merge dupped config.
* [d13d1c7] base.html: Fix footer (grid setup).
* [d493849] index.html, setup.html: Omit section, main content should be
just in main.
* [b0270c8] mini_buildd.css (body.mbd>main): Add main header config.
* [52e7774] route.html: Put nav to main header.
* [b36f6ac] views.py (RouteView): Default to None (not []) if there are
no entries.
* [29b5f1b] route.html: Fix for "no entries"; add (sort of) TOC.
* [4ef7541] net.py (Endpoint.geturl): Add support for a custom user
name.
* [06b71a8] api.py (Command.command_line): Add command line generator.
* [0440eb6] mini-buildd-api (CLI): Initial support to parse API command
line strings.
* [14d093a] api.py: Support to parse API command line strings.
* [3d15109] api.py (parse_command_line): Make argparse raise only (not
exit) on error. See https://bugs.python.org/issue41255
* [61c1bf2] views.py: Make "SetupView" accessible by superuser only.
* [c269183] views.py: Switch to use non-absolute imports for django
decorators.
* [04deac4] views.py: Make login_required for AccountProfile view.
* [b9d228c] builtins.py: (Re-)add 'mbd_next' tag.
* [c00814d] tags/api.html: Unauthorized: Be sure to use the same HTML
elements/classes here, to make CSS styling look the same.
* [d727df5] daemon.py (Daemon): Add set|get_setup() (hide that we
(mis)use 'pickled_data' for it).
* [bed4a6e] api.py: Update && fix setup command globals; add function to
get saved setup.
* [ba98b82] daemon.py (Daemon.sync): Don't blank out pickled_data (we
use it again now).
* [a835f07] setup.html: Fix mixed up headers/titles.
* [eb05f9e] api.py (Command.from_command_line): Constructor from command
line.
* [210e1f9] models/base.py,daemon.py: Make pickled_data (mis)use for
'setup' visible/documented via django.
* [54b703c] models/daemon.py (Daemon.clean): Add validation for
'pickled_data' field now used as command line setup.
* [f7ac00b] api.py (Argument): Add VALUE_TYPE, validation && ivalue (for
command line).
* [aef9af1] api.py (RaisingArgumentParser): Fix pydocstyle warning
(missing .).
* [0f655c9] api.py (Setup): Add --set (save command line).
* [d284ff6] daemon.py (Daemon.__init__): Add heuristic when to blank
pickled_data.
* [7e9f7a7] models/daemon.py (Daemon.clean): Remove "setup" validation
(not a good idea after all).
* [12cc762] api.py: set=True, update=True for predefined setups.
* [b18c685] api.py: --set -> --save.
* [944ccda] api.py (Command.__init__): Use dict comprehension for
self.args.
* [3ef2765] api.py (Command.__init__): Simplify args gathering code.
* [755fe0f] api.py (Command.__init__): Improve debug logs (and enable
for now).
* [3788e14] api.py (Command.__init__): args handling: Yet another
cleanup of current code (before real fix).
* [d570ede] devel (MBD_SETUP_COMMON_DESC): --save setup.
* [6f8abcf] net.py (Endpoint.geturl): Run urlencode with doseq=True (no
need for comma-separate lists).
* [4fbd9f8] client.py (Client.api): Add debug log to see command args.
* [0026fba] mini-buildd-api: Update to upcoming "from_argparse()".
* [298c1a6] views.py: APIView: Update to upcoming "from_request()".
* [46033d6] api.py (KeyringPackages): Update --distributions to "server
default"-style.
* [2e6d04b] api.py (Command): Add from_request, from_argparse
(obsoleting api_args).
* [45837f7] api.py: Rm obsoleted django import.
* [3e2046d] builtins.py, api.py: Command: Add from_templatetag() for
mbd_api templatetag.
* [1fbdcee] api.py (Argument): Simplify: Drop validate(), default() &&
misc fixups.
* [ddc7091] api.py (Command): Add/sync doc for all "from"-Constructors.
* [a2ca0ad] api.py (Command.from_argparse): Fix: Rather use cli_value we
already have.
* [395bbdc] api.py (Argument.__str__): Add for convenience (debug).
* [78d2985] api.py (Command.from_argparse): Distinguish between "str"
and other value types.
* [e4a9406] api.py (Command.from_templatetag|argparse): Fix: Use 'is
None'-style for value.
* [a7e9015] api.py: Let BoolArgument be 'false' by default.
* [cb16849] api.py (BoolArgument): Make default=false mandatory (so we
can use it naturally as --option in command lines).
* [f6476a5] api.py (BoolArgument): Command line: Make normal option
again ('--with-foo', not '--with-foo True').
* [232019b] api.py (BoolArgument): Web: Make (bool) options 'checkbox'
again.
* [3e42b89] api.py (Power): Use 'OnOff' enum; result to
state/previous_state instead of status.
* [c4d213d] api.py (BoolArgument): Use TRUE,FALSE (str) constants.
* [b2969c7] api.py: Move STATUS_RESULT_DOC to status only.
* [4eb77b4] api.py: Move all "set" code from update() methods (to server
defaults).
* [7d3c8b7] api.py (Argument.choices): Allow choices via function.
* [7eca1cc] api.py: Move all run-time value functions to one place.
* [7569e49] api.py: Remove RepositoryPattern class (not used).
* [47d5495] api.py (Repository, RepositoryRegex): Update to choices via
function.
* [d99431b] api.py (MultiSelectArgument.argparse_kvsargs): Fix: Don't
call choices().
* [4d25b77] api.py (Distribution): Update all 'dist' special arg classes
to 'choice functions'.
* [dae6509] api.py: Update 'codename, suite, sources' special arg
classes to 'choice functions'.
* [910e5df] api.py (Power._run): Result: previous_state -> state_pre.
* [908440c] api.py (Argument): Remove support for update().
* [2fdadb8] MsgLog removal: Bulk-replace all calls to MsgLog() by LOG.
* [8305c85] MsgLog removal: Fix all errors w/ static checkers (`devel
check`).
* [aad942f] MsgLog removal: models: Remove "request" from all (custom)
methods.
* [92be18a] MsgLog removal: api.py: Remove 'request' from all custom
model calls.
* [7989450] models/msglog.py: Delete MsgLog impl.
* [e4de753] models/base.py,source.py: Remove three now unneeded extra
LOG calls.
* [03fd642] css, html: Remove all support for messages.
* [59a8b88] daemon.py, webapp.py: Fixup mbd_action calls.
* [332b65d] django_settings.py: Remove django message loglevel
configuration (messages now only used by admin).
* [ef924d1] cron.py (_Job): Log exception on cron error.
* [21fcee6] client.py (Client.api): non-interactive: If possible, raise
API's RFC 7807 result (improves error handling).
* [5ea6cbd] api.py (Argument): Add "allow_none" (value) option; add
validate() method.
* [33501c5] api.py (SourceVersion): Use 'allow_none=True' (removes fixme
"false2none").
* [523bcc9] devel (MBD_SETUP_DESC): Default to none (i.e., setup for
current dist only).
* [b108c54] api.py (Setup.setup_repositories): Get 'with_rollback' from
layout, not suite setup (Fixes: Rollbacks per setup).
* [66ac74e] api.py: Update Repositories/Codenames special arg classes.
* [f0da8ac] api.py (Argument.argparse_kvsargs): help: Add server default
hint (the name of the function).
* [f504936] api.py: Update naming of (some) value functions.
* [f7f6ede] api.py: Update Distribution(s) special arg classes.
* [fe37c05] api.py:Repositories, Codenames special args: Back to
'id_list' as arg.
* [22e8232] api.py (power_toggle): Update all run value functions to
meaningful names (shown to the user).
* [47e04f6] api.py (Status): Remove (commented) debug code line for
MsgLog (which is no more).
* [b513db3] api.py (Status): Simplify code (status result no longer used
elsewhere).
* [8b985da] api.py (Status): Update doc, json result && simplify code.
* [53ddcd9] daemon.py (Daemon.get_status): Remove (no longer used).
* [e1842e7] api.py (Power): No need to state server default extra (it's
automatic now).
* [4555f4e] api.py (Cancel): Add choices && result.
* [a297503] api.py (PubKey, DputConf, GetUploaders): Update API doc.
* [19edaa1] api.py (Uploaders): Rename from GetUploaders.
* [7d97c84] repositories.html: Update 'sources_list' call args.
* [741ddad] api.py: Make "Status" very 1st command.
* [a1ecdaf] api.py: Re-oder all api commands (sort of 'light to heavy').
* [b011240] api.py: Add headers "Consume, Contribute, Maintain": Roughly
categorize api commands (for api overview only).
* [f2aad28] devel (apt-getters): Update && extend test calls.
* [9fe309d] mini_buildd.js: Add support to show actual command args.
* [3a99810] api.py (SourcesList): --suite -> --suites as multiselect.
* [7416006] api.py (Command.from_request): Rather 'unconsider' None, not
bool(http_value).
* [fa09766] api.py (SourcesList): options, snapshot, mirror options: Use
'allow_none'.
* [1d18f8d] api.py: Update doc notation ("Capitalize, end with .") up to
sources_list.
* [bf2c6c6] tags/api_arg.html: text: Properly deal w/ new allow_none.
* [83024d8] tags/api_arg.html: Argument.value|choices|default may run
code to determine resp. values; running these only once via 'with'
variables does speed things up.
* [37c152b] misc.py (singularize): Add poor man's singularize().
* [97410d8] api.py (MultiSelectArgument.argparse_kvsargs): Let's metavar
be singular.
* [813be54] misc.py (singularize): Add "s" plural (Huts -> Hut).
* [3876c99] api.py (Ls): Update doc.
* [5b969d6] api.py (Argument.__init__): argparse_is_positional() ->
is_positional().
* [ec3dd51] builtins.py (mbd_api): Make positional mandatory (don't call
value here).
* [87eeb0a] api.py (List): Update arguments and doc.
* [ce2db70] api.py: Put 'Find' after 'Ls'.
* [5a02f69] tags/api_arg.html: text: Always make required when
positional.
* [a9c7ecf] api.py: Update/fix "version" arguments (doc && code).
* [87f2c75] api.py: Sync specialized arg classes (kwargs).
* [51f402d] reprepro.py: Improve 'find' code && fix: check for None not
bool.
* [fada36f] api.py (Command.from_request): Improve code && fix: Discard
empty values (from form submit).
* [3adaaab] api.py (Ls): Add --version, --minimal-version limiters.
* [0f33321] api.py (Find): Be literally 'Ls', but failing on no results.
* [81acd08] routes/api.html: Misuse fieldset for box w/ label.
* [0caa023] api.py: Run values: Use general distribution helper, add
migratable_distributions.
* [828e0ea] api.py (Migrate): Update dist choices to migratable only.
* [784ea8f] api.py (UploadOptions): Remove in-method import.
* [642ca64] api.py (Argument): Make _s2v, _v2s non-private (de-facto
public, and no reason not to be).
* [6483555] api.py (Retry): Fix arg order && make version non-
positional.
* [dbe6c3e] package.py (_port): upload(): Rather use force=True
(although when porting, we should have a clear tmp directory).
* [ffea722] events.py, api.py (last_failed_bkeys): Add more convenience
tool functions (later needed for 'retry').
* [4035fc5] api.py (Retry): Rewrite to work with new events dir/bkey.
* [6ff82d7] api.py, events.py: Move convenience run-value functions to
api.py (only used there, and they are whacky).
* [8fa0dd3] misc.py (attempt): Extent to allow for return values.
* [e795591] api.py: Protect run-value convenience functions for events
via attempt.
* [fa1e054] api.py (Retry): Rewrite implementation again, now with over-
the-top validation ;).
* [dea4f09] api.py (Argument): Add "required" flag ("needs user input").
* [bb17405] api_arg.html: Update HTML 'required' to be set via
arg.required.
* [0474153] api_arg.html: select: Always make required (hardcoded).
* [f838fc9] api.py: Bulk-sync ARGUMENT notation for all API calls (and
yes, we love long lines).
* [33b84ce] views.py (AccountProfileView): Add user subscriptions to
context.
* [b876ab3] builtins.py (mbd_api): Show positional arguments as
mandatory only if value is not given.
* [4a5aa73] mini_buildd.css (div.mbd-api-results-container): Explicitly
set 'text-align: left;' (it can implicitly be otherwise).
* [2fc9e9e] api.py (Command.__init__): update() must be called last
(after self.request is set).
* [5eda23a] api.py (Argument.required): Change to function, not class
var (may change if value is set).
* [fe74ace] api.py: Replace "Subscription" by re-implementations
"Subscribe", "Unsubscribe".
* [b8b1125] account_profile.html: Update subscriptions to new
subscribe/unsubscribe (now more coneniently shows list of subs in
datatable).
* [37dd35f] routes/tracker.html: Update to "subscribe".
* [c8aea8b] tracker.html: Update to new 'ls' syntax.
* [f44c7fa] api.py (Distribution, Source): Add support for extra doc
string (use for subscribe).
* [c041b05] api.py (Command): Remove "update" support. Only used for
'port' (and not really a huge benefit there).
* [4302727] api_arg.html: text: If value is None, use "" as form value,
not "None".
* [a8097f8] api.py (Argument.v2s): If value is None, use "" as strvalue,
not "None".
* [4a09d36] api.py (Argument): Better (correct) name: ivalue() ->
icommand_line_value().
* [4c3b0c4] api.py (get_setup): Fix: Show usable log when saved setup
can't be parsed.
* [93c83b5] api.py (BoolArgument.icommand_line_value): Empty generator
(bool are now simple --with-foo options -- fixes computed command
lines).
* [e1108ca] src/mini-buildd-backup: Add tool to backup && restore (to a
fresh installation) a mini-buildd instance.
* [42f9b01] devel (MBD_CODENAME): Update bullseye codeversion (11), add
bookworm.
* [bc1a331] dist.py: bullseye release: Add new apt keys: archive,
release, security.
* [919febc] dist.py: bullseye release: Add 'buster-backports-sloppy' for
default buster setup.
* [6bd2721] dist.py: bullseye release: Add 'bullseye-security',
'bullseye-backports' for default bullseye setup.
* [5faf485] dist.py: APT_KEYS dict: Use better notation.
* [e7391b2] dist.py: Update SETUP w/ "lintian_options" (to be used next)
&& add doc about findings on "--fail-on[-warnings]" option.
* [2db315a] dist.py (get_lintian_options): Add function to get lintian
options (with fallback).
* [36c2b5e] dist.py: SETUP: Debian codenames: Order newest first.
* [5f2f611] dist.py: SETUP: Ubuntu codenames: Order newest first.
* [b271861] dist.py: Update lintian_options to be lists, handled with
shlex.join. Drop "no_lintian_suppress".
* [105c682] dist.py: SETUP: Correctly setup "warnfail" f.a. (older)
codenames.
* [6a7ed31] dist.py: Fixup all keys for all sources post-bullseye (i.e.,
definitely covers all current signatures, removes unused where found).
* [cbd5851] api.py (Setup): Add --sources-from-vendor-with-all option.
* [62ac7b4] gnupg.py, models/source.py: Improve per-source signature
logging.
* [3249f43] models/base.py, daemon.py: Move the description of 'setup'
use of pickled_data to Daemon model.
* [cc492b2] models/*.py: Exclude 'pickled_data' from 'prominent' Models.
* [f907ca6] models/daemon.py (Daemon): Update default keyserver:
pool.sks-keyservers.net (dead) -> keyserver.ubuntu.com.
* [75dd08f] gnupg.py: Move 'keyserver support' to 'PublicKeyCache'
completely (also properly errors out now when --recv-keys skips import
on 'newer' servers).
* [37e5638] api.py: get_setup(): Return None if there is none, not some
default.
* [2f83b56] api_arg.html: multiselect: Only 'require' if arg.required is
set.
* [8180e43] api.py (Argument): Add default method.
* [546a71c] api.py (Argument.set): Make bool expression more readable;
add log.
* [46ebb52] api.py (default_chroot_backend): Add run value for chroot
backend.
* [2226ed9] api_arg.html, *.py: select, multiselect: Always use html
input "text" (w/ datalist).
* [61f7333] api.py (Setup): Fix argument convenience header.
* [97d5d37] api_arg.html: text: Remove "multiple" attribute.
* [561983d] api_arg.html: Fix value for checkbox/bool.
* [379bb5a] api_arg.html: Add convenience button to clear text value
(js).
* [fbf96cc] api_arg.html: textarea: Use given as value.
* [aa88503] api_arg.html: Only "prefetch" choices.
* [010b553] api.py (Argument): Add strdefault, update strvalue.
* [0646a91] api.py: Simplify from_request, from_templatetag.
* [3ef1f2e] api.py (Command.__init__): Remove option that given_args may
be Arguments themselves (not used).
* [27d7167] api.py (Argument): Handle all value details is
Argument.set(), simplify && remove redundancies from_* constructors.
* [b6f1c40] api.py: Xommand: from_* constructors no longer necessary.
* [9f11622] models/daemon.py: Move "setup handling" completely to model.
* [8efc771] api.py (Setup): Fix: --chroots must accept any chroot, not
supported only.
* [5fc5d3b] api.py (Command.icommand_line): Fix: Rather use 'not None'.
* [8ff6547] api_arg.html: Add per-text-arg convenience buttons: reset,
default.
* [e7c02bf] api.py: Better names to all *Argument classes.
* [736aa35] api.py (ListArgument.s2v, v2s): Use "" as None.
* [f3d905b] models/daemon.py: Doc: Fix rst syntax (hard sphinx error).
* [277e460] api.py: Remove allow_none, just use default for that.
* [6d36e3a] api.py: required -> needs_value and other cleanups.
* [9a624f2] api.py: Add doc for generic Argument class && some code
fixes.
* [0fb467a] api.py: Add strgiven (always use that in forms), validate in
value().
* [44c40c6] api_arg.html: input: Use 'placeholder' to hint default when
value is empty.
* [c3373c7] api.py (ChoiceArgument.value): Add actual choice validator.
* [4e608f4] client.py (Client.api): Make it take a full Command instance
(not name && args).
* [f61a3b5] builtins.py (mbd_api): No need to check for empty values w/
new Arguments.
* [f1206a3] api.py (Command): Remove some obsoleted code.
* [f604e47] api.py (Argument.set): Fix: yield "None" on empty list.
* [d153cbc] api.py (Setup): Fix silly use of mutable objects from
arguments (would mysteriously change argument defaults ;).
* [5975aed] api.py (ListArgument.icommand_line_value->given): Fix: We
should yield from given, not value.
* [8e3f8ee] api.py (Command): Introduce iarguments() as (future)
replacement for ARGUMENTS (obsoletes copy).
* [0ec4d69] api.py: Bulk-update all Commands from ARGUMENTS ->
iarguments().
* [8d0baec] api.py: Remove ARGUMENTS completely.
* [5f699bd] api_arg.html: checkbox/bool: Fix 'True' value.
* [460857d] api_arg.html: "Default" button obsolete (we see default now
when cleared).
* [e009f16] api.py: Add doctest (Setup from command line and back).
* [f4e8a51] api.py (Argument.set()): Also set to None on False bool
value.
* [1aae965] api.py (Argument.__str__): Improve (debug).
* [c9c6d88] changes.py (Base._upload): Rather use "ftp_cls" not "FTP"
(get rid of the unnecessary local check disable).
* [5416051] api_arg.html: text: If there is strdefault/placeholder,
adapt size to it.
* [f2c5def] api_arg.html: Revive Default button (still useful); only
show buttons if action makes sense.
* [1daf0bc] mini_buildd.css: Some rather random adaptions to make api
forms look better (or at least different).
* [6478f02] builtins.py: Update helpers to access/set vars in templates:
mbd_get() ('identity function'), mbd_dict_get ('get value from dict').
* [37da13f] api.py (get_setup): Update to deliver dict w/ 'saved' info
&& deliver Setup() default on non-saved.
* [cc886f8] setup.html: Update to new get_setup && initial new 'common
main HTML strcuture'.
* [f2fc361] mini_buildd.css: Drop extra 'mbd-boxed' class in favor of
structural boxing of sections.
* [09a3830] route.html: Update to new main layout w/ sections.
* [a56ba16] index.html: Update to new main layout w/ sections.
* [74dd87c] mini_buildd.css: Put box around *any* section beneath main.
* [06d9e26] routes/api.html: Update to new main layout w/ sections;
generalize special "api header" (cmd && arg) support.
* [c0ec844] mini_buildd.css: "aside" no longer used.
* [de6f25c] mini_buildd.css: Re-order, some cleanup.
* [3a043f3] mini_buildd.css (div.mbd-api-results-container-popup): Don't
border "embed".
* [350d871] routes/tracker.html: Properly use sections.
* [69902cd] api.html, css: Minimize use of classes: 1 unused, 4
obsoleted.
* [70e9684] mini_buildd.css|js, api.html: Minimize use of classes and
ids.
* [161e5e8] tags/api.html: Container: Make proper nav (with ul &&
label).
* [b9e366e] tags/plain.html: Update to proper nav (label, ul).
* [42f269c] builtins.py (mbd_plain): Remove support for "as_detail".
* [1d0ef6f] mini_buildd.css: Make 'new style api css' to only act on
'body.mbd'.
* [70d42e8] tracker.html: Update to proper nav (ul, label).
* [222d58c] builders.html: Update navs (ul, label).
* [18ca492] api.html: Better id: container -> api-result-container.
* [9c5bc1d] static: Add close.svg, update reload.svg (from openclipart).
* [0a9147f] api.html: Make results not popup here.
* [bda74a6] tags/api.html: Always use Close + Reload, both w/ image.
* [9c7dafe] mini_buildd.css: Colors: Go with 6 (named) colors only.
* [b254a8b] mini_buildd.css: One segment for all 6 "log" levels.
* [1ee7562] admin/mini_buildd.html: Drop placing api call directly here,
rather hint to /setup. Also fixes GUI quirk.
* [80ee7db] mini_buildd.css (:root): Add base --bg-color (analog to
--color).
* [2841bcd] mini_buildd.css (:root): Fixup bg colors; downgrade to 4.
* [1fd6f00] /mini_buildd.css: Rm wrong 'api args' config (not really
improves things anyway).
* [537f806] mini_buildd.css: Cosmetic: Update doc comments for API.
* [805109d] mini_buildd.css (:root): Use hsl() (not hex) for greys &&
base fg color.
* [0dabf7a] mini_buildd.css (:root): More color updates/simplifications.
* [52dc1d6] builtins.py (mbd_api): Fix: Use needs_value() for mandatory.
* [9239ffb] tags/plain.html: Don't use extra 'section' here.
* [f8f3742] mini_buildd.css: Add generic classes (mbd-foo) for the six
'states'.
* [65439c6] mini_buildd.css: mbd-hidden: Unused, remove.
* [82a7dc4] builtins.py (PlainFilter): Update to generic css 'state'
classes.
* [fbe034f] builtins.py (Css): Add mbd_cssmap: Mapper helper for css.
* [fb84164] Update 'sbuild_status' to css mapper.
* [9bd1dba] Update 'sbuild_check' to css mapper.
* [4a0a197] Update 'events' to css mapper.
* [0d8ac91] builtins.py: mbd_cssify: no longer used, remove.
* [128b586] admin/mini_buildd/change_list.html: Move js-Hack to html.
* [6a8eba6] Update 'admin_actions' to css mapper (mapping in js for this
hack).
* [b8eb866] Update 'model_status' to css mapper.
* [82d8df6] Update 'mbd-dist-*' classes to generic ones.
* [df29793] Update 'mbd-[in]active' classes to generic ones.
* [a92667e] mini_buildd.css (:root): Update notation, order.
* [4683f1c] mini_buildd.css: Improve drop down menu.
* [5ff8871] mini_buildd.css: dropdown nav fixups: Also highlight
dropdown items, don't conflict with api html container.
* [2a7908d] models/daemon.py (Daemon.mbd_setup_v10x2v20x): Fix
(previously not-updated) save call.
* [70dde69] control: Make lintian a recommendation, and add piuparts,
autopkgtest.
* [18805ed] mini_buildd.css: Get rid of all extra margins/paddings.
* [6b55365] mini_buildd.css (form.mbd-api): No need for extra setup for
select/textarea.
* [b993ee3] mini_buildd.css (:root): Re-order colors.
* [272e154] mini_buildd.css: Obsolete class 'mbd-datatable'.
* [5907ff6] mini_buildd.css: Bulk-prefix (body.mbd) remaining parts.
* [6954c0c] mini_buildd.css (:root): Order && doc update again.
* [78e430d] routes/crontab.html: Update to new css.
* [7c5cecb] account_profile.html: Update to new css.
* [46fee68] *.html: Bulk-update to new (limited) css classes.
* [5193298] mini_buildd.css (body.mbd>header): Fix stray comment close.
* [c9dddd8] mini_buildd.css: Fix: Always use 'background-color', never
background (shortcut).
* [d2f5738] base|index.html: Move "power" menu from main (admin) menu to
home.
* [8729a92] mini_buildd.css: +mbd-highlight, mbd-unauthorized->mbd-dim.
* [9203375] images: Add power_on|off svgs (from openclipart).
* [4aa38c2] index.html: Power state via images. Obsoletes mbd-stopped
class.
* [f980774] mini_buildd.css: Cosmetics, reordering.
* [7d57c99] mini_buildd.css (body.mbd>main>header): Obsolete explicit
nav config.
* [0e26b0f] mini_buildd.css (:root): More cosmetics, some fixes.
* [6f00992] mini_buildd.css (:root): Move body-header color to var.
* [3883d41] mini_buildd.css: Add mbd-body-menu-active.
* [39787e9] mini_buildd.css (body.mbd a): Inherit colors for anchors.
* [58df184] mini_buildd.css: Simplify img handling: Omit mbd-logo, go
with mbd-icon only.
* [e94e07c] builtins.py (mbd_img): Fix clipboard: Get rid of clipboard
arg, use button.
* [67a243a] builtins.py (mbd_img): Remove "onclick" arg (rather use
button around img for that).
* [52e078b] builtins.py: Rm href support from 'mbd_img'; remove
'mbd_home'.
* [11fa83d] routes/events.html: Update "Action" to menu.
* [0c15df9] routes/events.html: Simplify: Type+Details->Results, one
menu.
* [5f20d49] tags/sbuild_status.html: Don't use 'spaceless' in tag.
* [5a7172d] mini_buildd.css: Datatables: No need for extra form/input
setup (nav already does this).
* [7390dee] api/ls.html: Update to nav, Migration && Menu coloms.
* [c554974] api.py (Ls.run): (Initial) fix for buggy rollbacks/json.
* [a48c24a] mini_buildd.js: api: Add helper vars: container,
args_serialized, get_uri.
* [421be7e] mini_buildd.js: api: Omit redundant 'form' argument.
* [fd4199e] mini_buildd.js: Discard empty api form arguments.
* [bcf35ad] mini_buildd.js: api: Explicitly use output=snippet on js api
calls.
* [270625e] tags/api.html: Use menu item w/ complete "Page Call" instead
of mere extra args display.
* [d31ac48] api call:: Misc code cosmetics.
* [3ba67ad] dist.py: Add doctest: get(rollback=False).
* [57be9b0] reprepro.py (Reprepro.ils): Fix result dict to 'recommended'
order: distribution,source,version.
* [4263de9] api.py: Add "Ls2": Simplified, will eventually replace Ls.
* [02c86ab] api/ls.html: Fix title (update to new ls args).
* [b3c5d5e] api/snippet.html: Simplify, rm debug.
* [f01494a] api/page.html: Fix title.
* [31e2463] mini_buildd.css: Configure "aside": Box, float right.
* [c522c30] api/snippet.html (Refine Call): Add as "aside".
* [f2e23ae] api/ls.html: Remove "Component" from table.
* [b218641] api.py: Ls2: Add "uri".
* [d8167ce] api/ls.html: Fix: Only show event link if we have a version.
* [21f0f6f] api.py (Ls2): Add uploadable, migrates_to, is_migrated.
* [8be4dd5] tags/api.html: Don't use empty href -- lintian dont like...
* [3a77736] api.py (Ls2.run): Fix: use bool for 'is_migrated'.
* [4edd91d] api.py: Make Ls2 the real Ls (ls apt display mostly works).
* [09083d5] api/ls.html: Make rollbacks display functional again.
* [38bb4c0] api/ls.html: Put rollbacks in its own table.
* [f1008c1] api/ls.html: Make rollbacks table dataTable.
* [b2f7fb6] mini_buildd.css: Drop custom dataTables styles -- we should
be fine just with the builtin style classes.
* [77fd5ef] mini_buildd.js: api: urldecode params (for confirmation
text).
* [7bb7566] mini_buildd.js: Instead of decoding previously encoded,
rather produce human-readable text from args array directly.
* [3bfd8c5] mini_buildd.js: Oops -- them javascript variables are global
by default...
* [3c65d17] api/snippet.html: Simplify.
* [1272300] routes/tracker.html: Simplify && add ls call for "all".
* [223f663] api/ls.html: Update table to have
Migration,Extra,Rollbacks,Menu as 'non-data' columns.
* [5fd883a] api/ls.html: Don't use section here.
* [8f54671] routes/tracker.html: Fix missing section close tag.
* [84a1a84] api/snippet.html: Don't use section here.
* [cda4f30] html: Remove ARIA labels for now.
* [cd18434] html: Get rid of any '/>' (element close) shorthand
(presumably cargo-cult, we dontwant ;).
* [0e0f976] api/ls.html: Extra: Fix order/wording.
* [ae18f96] builtins.py (mbd_api): Replace "full=False" by
"hide_options=False" (i.e., rather show options by default).
* [6027619] api/ls.html: Update "Migrate" column.
* [baf2043] builtins.py (mbd_datatable): Update to support no ordering.
* [9feef98] api/ls.html: Make table non-ordering.
* [a74ae5b] base.html: Fix noscript warning (class, wording).
* [8d0c1a3] builtins.py (mbd_api): Args: Drop "popup" in favor of
"output".
* [ecc6f7f] html: Drop extra "tracker". Just 'ls' will do fine.
* [1096c70] builtins.py (mbd_datatable): Add support for
searching,paging,info options.
* [869983e] api/ls.html: Minimize rollbacks datatable (no order, no
searching, no info, no paging).
* [9f02182] builtins.py: Add mbd_api_popup: Shortcut (for HTML) to
create a popup.
* [1696aa8] html: Bulk-update api candidates to "popup" variant.
* [ea3a708] devel (mbd_curl_admin): Add function to run request logged-
in (curl).
* [5ab91f6] devel (tidy): Switch to use logged-in requests.
* [3410f09] html: Fix three errors found w/ tidy logged-in.
* [30dcb77] devel (tidy): Add more tests.
* [8a90fb0] mini_buildd.css: Make body menu sticky.
* [9826c5c] base.html: Move api-result-container to base template (have
it once per page, not once per command).
* [d75dcfb] setup.html: Make api setup calls popups.
* [ccfa8db] devel: curl_admin -> curl-admin.
* [f4da8a1] builtins.py (mbd_api): Make token / element ids mostly
obsolete.
* [1201204] devel (mbd_changes): Use time for final logged-in curl call
(for debug).
* [88273a4] api/js/css: Popup: Make truly centered && dynamic size.
* [ba7b93b] mini_buildd.css: Grid class 'mbd-grid-lcr' (rather than
repeating it).
* [6769c3c] mini_buildd.css: Cosmetics, order.
* [ff962c4] mini_buildd.css (:root): Make all colors hsl-colors.
* [3201ea3] mini_buildd.css: Sync notation.
* [045ed10] mini_buildd.css: Rename api-result-container->api-popup &&
use section for popup snippet.
* [8a3446a] mini_buildd.css: Simplify popup css.
* [39d380b] mini_buildd.css: Simplify api header css.
* [6358a6b] mini_buildd.css: Deprecate mbd-api-header class.
* [d2955bf] mini_buildd.css: More CSS cleanups, removals, comments.
* [232f54f] tags/api_arg.html: Update wording for X,D,R value buttons.
* [580164e] mini_buildd.css (:root): Fix sticky header to not move; make
footer sticky as well; fixed bg for sections based on level.
* [a4835b5] mini_buildd.css: popup: Add max height (and width) and
enable scrolling.
* [5b2a068] html: Update API page, snippet, ls.
* [8d90382] devel: mbd_hack-html: Bad hack to hack HTML.
* [53c6756] html: plain, routes, builds, scandir: Some basic adaptions.
* [d534d5c] mini_buildd.css (body.mbd header): "a" config for headers
only.
* [f5873c6] mini_buildd.css (body.mbd): Add bg for "pre".
* [eacdfac] svg: Rename data->file, browse->dir.
* [e4b34d3] plain.html: Fix when doenload_uri is None, add browse menu.
* [a401f02] svg: Add builds, events (from openclipbaord for now).
* [3a45d40] models/repository.py: mbd_find_dsc_uri->mbd_find_dsc_path
(updates for api.py, package.py).
* [f636b27] api/ls.html: Update to new svgs && dsc_path.
* [83ed7e7] svg: Obsolete download, vanilla.
* [33cddb8] routes/builders.html: Proper header.
* [8206ca8] mini_buildd.css: Uff, some cssfiddle once again.
* [387dcef] svg: Update various svgs (from openclipart for now).
* [b695038] svg: Rm "start.svg" (not used).
* [6ca5ffc] routes/events.html: Update dataTable config.
* [55dc6c9] routes/builds.html: Update dataTable config.
* [b4e3792] changes.py: Add changes (path) to events.
* [4ed7d6c] routes/events.html: ls: Limit to this version only, hide
options.
* [60984fc] base.html: popup: Use ids again, actually use header for
header, add home again && reorder header menus.
* [8f4c8e1] mini_buildd.css (body.mbd>header): Remove bottom line again.
* [c0b9e14] mini_buildd.css (body.mbd>header): Rm padding.
* [68b5d0f] routes/events.html: ls only on INSTALLED.
* [0154c5b] values.py: New module: On-demand cached values.
* [4a02269] * src/mini_buildd/values.py: Add vget() helper.
* [a5757ce] api.py (Argument): Support default/choices to be
'values.Name'.
* [465c891] api.py (OnOff): Move OnOff class to values.
* [b8ba7a1] api.py: Move all "run values" to values.py.
* [e49eab4] api.py: Remove (now obsolete) support for callables.
* [edeaa3a] debian/mini-buildd.lintian-overrides (mini-buildd): Update
for new lintian version.
* [3524c28] api.py: Two more items moved to values; make them all non-
cached by default.
* [6b79b2a] testsuite packages: Add "copyright" files (error with newer
lintian).
* [abdfe15] tags/api.html: Revert to use id for form
('document.currentScript' would not work when used as snippet).
* [3ea53a4] httpd.py: Directory Listing: Add HTML template with similar
look-and-feel as the django pages.
* [fb7e43b] mini_buildd.css: Make table captions and column headers
align left.
* [ea2fc91] httpd.py: Directory Listing: Simplify header.
* [2c98159] devel (tidy): Add static events+builds tests.
* [f63fbd4] httpd.py (DirectoryLister.render): Code cosmetics.
* [e15dbab] httpd.py (DirectoryLister.render): Don't use (maybe not
stable) private methods from twisted class.
* [776d189] httpd.py (DirectoryLister.render): Use normal py templating
for template.
* [cd295d0] httpd.py (DirectoryLister): Rm (now-wrong) method doc.
* [5cd9264] mini_buildd.css: Config for directory listings.
* [1b8e066] files.py (Path.removeprefix): Add helper method.
* [ca0c9ba] httpd.py (DirectoryLister.render): Fix: Use configured char
encoding (rather than hardcoded 'utf-8')
* [af1977c] httpd.py (DirectoryLister.render): Make file links got to
"view".
* [aaa3d58] views.py (DefaultView): Add (again) (we already had s.th.
similar as PathView previously).
* [81f6d54] views.py, urls.py: Replace HomeView by DefaultView.
* [2d3dc75] views.py: Update AccountProfileView to DefaultView.
* [e283a6a] views.py (SetupView): Update to DefaultView.
* [f5a5d7f] views.py: API (index) back to non-route DefaultView.
* [c06d35a] views.py: Sitemap to non-route DefaultView.
* [7cb1749] views.py: Crontab to non-route DefaultView.
* [a547264] views.py: Builders to non-route custom View.
* [c6a7429] views.py: Chroots to non-route custom View.
* [0f32b48] crontab/index.html: Fix page layout.
* [80c7512] views.py: Update RouteView to DefaultView.
* [a6f8a30] html: events, builds, repositories: Add header+nav back
(from soon obsoleted route.html).
* [56c9493] html: API popup: Add JSON link.
* [7444710] close.svg: Update with more transparent variant (from
opencliparts).
* [918aca2] devel (mbd_installdeps): Add curl.
* [3f28be1] devel (tidy): curl: Fix: Make curl fail when HTTP request
fails (!= 200).
* [5167183] views.py, ...: Update error templates.
* [0783ffc] builders/index.html (Builders): Fix remote status link.
* [2042719] urls.py: Only add explicit "routes". Skip adding static
routes.
* [637eb46] views.py: Update RouteView to do file/dir again.
* [8404f8b] urls.py: Fix route adding to work for doctests.
* [62cb303] repositories/index.html: Fix "browse" link.
* [f11034e] webapp.py (WebApp): Add (commented) code to show
'diffsettings' (for debugging).
* [22cd3a8] builtins.py (PlainFilter): Fix (non-existing) 'mbd-critical'
CSS class to 'mbd-error'.
* [482c741] views.py (DirView): Add DirView, and update "log" to use it.
* [c4e661f] urls.py: Add events-dir, builds-dir, repositories-dir
(browsable).
* [bbd01a9] urls.py: Rm auth support (auth now should be in views.py
only, not needed for events,builds,repositories).
* [96d1516] urls.py: Rm route object from RouteView.
* [49efbf8] urls.py: Simplify code.
* [bda357d] views.py (RouteView.get): Rm support for dir/file.
* [5bf50b2] includes/events.html: Update to events-dir.
* [624da60] views.py (TemplateView): Add generic parent template class;
move 'since support'.
* [a416d2b] views.py: events, builds, repositories: Each get separate
view class.
* [03ad4e2] urls.py (mbd_uri): Add URI helper && make code more
readable.
* [9771cb0] svg: Add 'up' (from opencliparts).
* [e7d4473] views.py (EventsView): Update "events" to new class based
regime w/ setup().
* [0484426] views.py (BuildsView): Update "builds" to new class based
regime w/ setup().
* [28785bb] views.py: events/builds view: No need for extra "name" class
attribute.
* [afd2944] views.py (RouteView): Common view class for builds, events,
repositories.
* [3674de1] views.py (RepositoriesView): Update "repositories" to new
class based regime w/ setup().
* [29e546b] views.py: Update all remaining views to new class based
regime w/ setup().
* [28a4036] mini_buildd.css (body.mbd): Add left/right margins.
* [eeb4442] urls.py: Add 'name' arg for *all* mini_buildd/ urls but API.
* [7921bb6] crontab/index.html: Update header scheme.
* [a129102] builders/index.html: Fix bogus h2 close.
* [aea62bf] api: Cleanup template handling (snippets must be in
includes, add/use default snippet include).
* [1ca6d0f] views.py: Make 'defined-outside-init' pylint exception
module-global (and add some notes).
* [eb1e52d] views.py (APISnippets): Rename class, move outside View.
* [4639723] views.py (APIView): Update to use setup().
* [32f6c20] views.py: APIView: Update to use view class vars, not
context.
* [9877831] views.py (APIView): Move ApiSnippets back to APIView as
Snippets.
* [cd66c49] views.py (APIView.setup): Code cosmetics.
* [4aab930] templates: Remove obsoleted routes.html, file/index.html.
* [e66935e] httpd.py: Switch back to plain twisted DirectoryLister (now
that we have django DirView).
* [3842fcd] httpd.py: Actually remove all custom DirectoryLister code.
* [58f518a] devel (tidy): Rm pure static tests -- is now native twisted,
does not comply and we can't fix it.
* [f2a5f83] devel (tidy): Add tests for new self-made DirView routes.
* [60503e4] django 3.2: Add SECRET_KEY for pseudo-config as well.
* [8ba72c4] builds,repositories,events/index.html: Sync headers to be
generic.
* [1627de5] dir/index.html: Fix "Up" menu.
* [84dfbcc] dir/index.html: Fix file view (partly).
* [646218f] base_path.html: Add base template for
builds,events,repositories (common main title/header).
* [437b0ff] log/index.html: Rm, now done with DirView.
* [a0ff9a6] dir/index.html: Cosmetic fixes.
* [2c770d4] dir/index.html: Merge includes/dir.html (only used here).
* [4a23e7a] templates: dir/index.html -> dir.html (this is no explicit
route).
* [aacb3e2] dir.html: Skip section header.
* [5178bb5] html/templates: Rename "plain" -> "file".
* [44e9045] tags/file.html: "download_uri" -> uri (no special 'download'
support any more).
* [d754e81] tags/file.html: No need for default contents value.
* [74d966f] svg: Add "download" (from openclipart).
* [0bae45c] tags/file.html: "Raw File" -> Download.
* [fe1d05b] dir.html: Fix uri of file.
* [526c757] tags/file.html: Use "a", not button for clipboard (make menu
items same layout).
* [c3f55d1] views.py, builtins.py: Fixup plain view.
* [4c6480a] config.py: Add new Uri kind "dir".
* [6b48845] urls.py: Rename "name" kwargs (per default also template
context) to "route".
* [40ef4d9] urls.py, config.py (Uri): Move support for 'django path
regex' to Uri class.
* [438a1e4] config.py: Document special meanings of 'view', 'dir' and
'static' uris.
* [4e18231] builtins.py (PlainFilter): doc fixes for sphinx build.
* [7289b96] urls.py: Use mbd_path for mini_buildd paths.
* [9440b3a] base.html: Use django's "url" where possible.
* [714a9f7] tags/datatable.html: Set style/classes (once) via js.
* [6fd8842] builtins.py: mbd_dirname -> mbd_parent, properly 'implement'
w/ pathlib.
* [23684b1] svg: Add top (from opencliparts), rename index->view.
* [f2e7cf4] urls.py: Update route/dir menus.
* [1f4cc19] builtins.py: Add helper: mbd_fromtimestamp.
* [ead4a95] dir.html: Add 'size' && 'modified' columns to table.
* [b100f22] dir.html: Only use add 'view' link if it exists.
* [ebbc2d4] tags/datatable.html: Generally enable the "stateSave"
option.
* [387631d] builtins.py: Add mbd_hash: To create persistent but HTML/JS
compatible id strings.
* [fb97c4b] events: Use mbd_hash for datatable id's (makes state
actually persistent).
* [110511f] builds/index.html: Update to mbd_hash (effectively makes
datatable state persistent).
* [06a035a] changes.py (Changes.to_event_json): Fix "changes" (for
changes w/ multiple archs).
* [074138a] since param: Simplify && only use the browser builtin.
* [431adb6] html: Update base.html once again: Include main header, make
configurable via blocks.
* [381e004] views.py (BuildsView.setup): Fixup buildlog uris.
* [b213b26] base, dir.html: Fix dir menus.
* [70ca15d] repositories/index.html: Fixup main menu.
* [2dd6536] repositories/index.html: Upgrade to datatables && major
general fixes.
* [43fa532] repositories/index.html: Fix title (this view does not use
path).
* [ffc9f2a] repositories/index.html: Fixup datatable search options.
* [8c25110] tags/file.html: Remove link to 'real-raw' static browse.
* [560a8dc] tags/file.html: Improve content display handling when None.
* [2fd3d54] base.html: Menu: Don't show 'view switch' when file is
displayed.
* [339649d] devel (hack-html): start: Sufficient to only restart
service.
* [990adf2] html: Fix power on/off indicators.
* [3efc240] crontab/index.html: Rm menu 'remote' (falsely copied).
* [d2e413c] django_settings.py: django 3.2: Add DEFAULT_AUTO_FIELD to
settings.
* [02befd2] base.html: django 3.2: Drop (two) uses if 'ifequal' (now
depcrecated).
* [a8be4fc] admin/base_site.html: Use url tag for home uri.
* [ab1a45f] mini_buildd.css (img.mbd-icon): Make icon size slightly
bigger.
* [e295722] Revert "Distribution, Source, Component: Rm __hash__() from
(sort support): Does not seem to be necessary."
* [57e2eaf] distribution, source, component models: Simplify __hash__
impl (also avoids pylint same-code warnings).
* [ae5db3b] models/base.py: Add feedback (via messages) for admin
actions.
* [8fab58a] api.py (Status): Re-add 'remotes' to status (fixes remote
linking).
* [ec9a339] distribution.py (ArchitectureOptionInline): Fix: Hide
'pickled_data'.
* [2f17dba] files.py (Path.create): Add create() function.
* [0e18250] changes.py (Changes.move_to): Fix: Create path path before
moving files.
* [f4728fb] mini_buildd.js: API call progress bar: Display api call info
&& make look somewhat better on ff.
* [a14bb27] mini_buildd.css: minimal padding in section.
* [6026b8f] gnupg.py (Builders): Skip extra generator.
* [ca5ec57] models/gnupg.py (Builders): Add "ourselves" flag.
* [6187a65] builders/index.html: Update remote status, error handling &&
action.
* [db81fde] client.py (Client.api): Improve error handling for non-HTTP
urllib exceptions.
* [a586676] chroots/index.html: Fix actions to menu && fix link to
change specific item directly.
* [a4cd5cd] mini_buildd.css: Make 'a' inherit color 'everywhere mbd'.
* [5785519] builders/index.html: Add direct per-object configure link.
* [f37e2c9] builders/index.html: Update to new status meanings &&
general improvements.
* [ceb25ae] values.py: Add ALL_REMOTES.
* [9fe11a1] base.html: Instance id to footer (do we can identify the
instance on any page).
* [2c9990f] models/gnupg.py (Remote): Enable "wake_command".
* [a8efbf6] api.py: Add "wake" API call (wake remotes).
* [910cf48] builders/index.html: Add wake (remote) API call.
* [0617681] builders/chroots/repositories/index.html: Add convenience
configure links.
* [54aed90] *.html: Update all "admin" links to url template.
* [82eb1d9] devel (mbd_installdeps): (buster convenience) Install ftp if
ftp-ssl fails.
* [c8ab55d] debian/control (Build-Depends): We need version 1.0 of
distro-info (for lts options).
* [aac0fd4] pylint 2.11: Cosmetic (use fstring).
* [e211fbf] pylint 2.11: Update mbd_action call (fixes --remove-system-
artifacts).
* [02879f6] pylint 2.11: models/base.py: Improve comparison.
* [e248636] pylint 2.11: Daemon.check(): Update mbd_action call (fixes
check cronjob).
* [fd24a28] devel: Generalize pip installs (via MBD_PIPINSTALL global
config).
* [4b44301] devel (mbd_pipinstall): Remove "importchecker" check.
* [b030f08] devel: Update notes for MBD_PIPINSTALL.
* [ca6584d] cron.py (_Job.id): Add id (name+type) for jobs && a getter
from id.
* [5d93ca8] values.py: Add value: ALL_CRONJOBS.
* [9430066] cron.py: Add run() (for arbitrary runs outside of schedule).
* [6acf657] cron.py (_Job.__run): Protect from running in parallel.
* [245e9a7] api.py (Cronjob): Add new API call 'cronjob'.
* [25d407b] crontab/index.html: Improve view && add cronjob API call
(arbitraryily call cron job).
* [0905f11] crontab/index.html: Use dataTables to show logs.
* [68d4096] files.py: Move open_utf8() -> __init__.
* [babcfee] __init__.py (fopen): open_utf8() -> fopen().
* [af4bf14] pylint 2.11: Update all 'open' to use 'mini_buildd.fopen'
(fixes open-without-encoding).
* [7739c37] pylint 2.11: Fixup multiple 'open-like' calls to use "with".
* [89ed0e7] mini_buildd.css: Add !important to basic 'indicator'
classes.
* [5c01199] net.py (ClientEndpoint.urlopen): Support timeout.
* [648ff6f] client.py (Client.api): Support timeout.
* [c18e10b] gnupg.py (Remote.mbd_get_status): Limit retrieval time to 2
seconds.
* [b5dea5d] builtins.py (mbd_file): Add support for custom title (and
default to "Data", not "Plain").
* [b85f107] builders/index.html: Fix bogus table order (we just want no
default order).
* [6faaded] builders/index.html: Provide status (json) data as details,
omit extra status call.
* [875211f] models/gnupg.py (Remote.mbd_get_status): Put all the wake
logic here.
* [2840a38] models/gnupg.py (Builders): Add "wake support".
* [64f3829] changes.py (Upload.request_builds): Wake remotes on builds.
* [cbbeb93] api.py (Wake): Don't use list of remotes (--remotes ->
--remote), use new mbd_get_status().
* [f956e8e] models/gnupg.py (Remote.mbd_api): Add helper mbd_api().
* [8b9f8f9] api.py (Setup): Add support for remotes.
* [d081d6b] models/gnupg.py (Remote): Wake on prepare and check.
* [5068904] api.py (Setup.setup_remotes): Fix: Don't call mbd_pca_all()
in loop.
* [e73827c] setup.cfg (generated-members): Add mbd_pca_all().
* [6ce3796] devel.localhost: Add script to create "second" instance.
* [d315e20] devel (mbd_installdeps): Add piuparts, autopkgtest.
* [20ed90c] builders/index.html: Remote link: Directly jump to
'builders/' (not home).
* [93d2736] devel: Fix number of places where $(hostname) was used
instead of ${MBD_HOSTNAME}.
* [8d17b21] devel (bash-completion): Add ./devel.localhost to completion
commands.
* [13c4ef9] devel (MBD_SETUP_COMMON_DESC): Add localhost:8068 as remote
to setup.
* [bb5290f] devel (testsuite-packages): Skip skipping rebuilding
packages when already built.
* [7abbb1a] devel.hostname: Add extra script for hostname (two instances
on same network stack for testing).
* [8a2d416] devel (testsuite-packages): Clean out possible debris via
git.
* [44318f2] debian/source/lintian-overrides: Workaround (temporary) for
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=995498.
* [0f3376f] api.py (Argument.set): Improve error message on failed type.
* [fa754fb] gnupg.py (BaseGnuPG.verify2_bare): Add verify2_bare() (for
general (non-apt source) verifications).
* [facb9c5] gnupg.py (BaseGnuPG.sign2): Add message signing support via
py3-gpg.
* [b63025c] models/gnupg.py (GnuPGPublicKey.mbd_verify): Add standalone
message verification.
* [4dad019] daemon.py (Daemon.handshake_message): Add signed handshake
message generator.
* [77d2c5e] api.py (Handshake): Add API command to realize a (gnupg)
handshake.
* [7c57246] models/gnupg.py (Remote.mbd_check): Add (gnupg) handshake.
* [6b8097f] gnupg.py: Get rid of odd '*2 names', rather prefix w/
'gpgme_'.
* [7d4e987] gnupg.py (BaseGnuPG.gpgme_verify): Provide public errors on
GPG verify errors.
* [7de7802] gnupg.py: make all gpg_* methods expect 'str' (&& do
conversions internally only).
Checksums-Sha1:
8ba7c825f92b3a8b9a004b35a4d881b452b5a576 2325 mini-buildd_1.9.90.dsc
dd02b14212243d219f85a07ff844b7d9794e16b3 516788 mini-buildd_1.9.90.tar.xz
714677dff355798ba740e7cb07cb2355e4b390f6 10987 mini-buildd_1.9.90_source.buildinfo
Checksums-Sha256:
57c3baf6fb968c01fe2a2273e46739814f5861bfd64fd544f95ab2ea927b4d2a 2325 mini-buildd_1.9.90.dsc
5399522ebcc7078892caec4cc9a55923458ca741820508451d0e2ebd3c48842b 516788 mini-buildd_1.9.90.tar.xz
76d43238b5137574c81fa8f46f7dfc7716fcfe60b69df4c84cebf18da9bceaa5 10987 mini-buildd_1.9.90_source.buildinfo
Files:
a7775c874cd9a37b4a8ffc1e70be5961 2325 devel optional mini-buildd_1.9.90.dsc
268436c54de1f52db59f00e802989041 516788 devel optional mini-buildd_1.9.90.tar.xz
d6bea6ff7f45aa5804cb206621b0b00d 10987 devel optional mini-buildd_1.9.90_source.buildinfo
-----BEGIN PGP SIGNATURE-----
iQJGBAEBCgAwFiEEVOttCJ+jfBmmRZCzBm3oAX4rYdkFAmFj90cSHGFic3VyZEBk
ZWJpYW4ub3JnAAoJEAZt6AF+K2HZzD8P/iurkqze7FdU4eOQS+Osq9GkZN/b7C1i
zIGq0BlVz+M8ZDNv+7MfbUoCaun5In9+1J5E+msAEPnR6X11sYjKdyElMy7jFFXr
lIsZmUpwjdgYse6INNQWFtY6C+TTCajgbv/mYCHXIvmlOwL6HKb/JQ+ejLpLIQ4R
nqht3c+TU8RkqA5BunGm+uLjRdfle3+xjsnRz099zxYRAdYg9UK7+S87/kBG36oK
rXJtpe3VC829AP0crK2TFgG/cDLlZoQ2nQIaapQcOgBPq24wjoOKGCkGl/MKKsW/
0XfaG4vBnz3Z3aOo5DwpoqZ8xqHeH5X8Zivf8Yf2cShgjNnuoWfdo8JusfvW8SYk
s7WzRzap0h2RCDcX6lyZyegjGVU98ml2Lf61fk5Iz8VZFGvrtdW2jDdRlX3vZhBG
Lc/pV/Lp4nyaFDEvNcPvBd1E17/LI5ms8ZXU6eIEDncJxgkYdBUBywy0maTCTkt3
4fBGRhyegtHD1o3aKgsTY6oWhgnaSIKG8hFbziS4es1SR1v63as/bF1/EQd+sf8h
89lJLZB7LscyFsLC0k4hwVhqN8gChwFGCwaHJ6q/UHsElbBpK8MD/MrvEYQnBreG
8t7ogJKbyD2dp2ycmRS7N5eYZiiYCwMWdxQuEMfUhhQ/Aws8rnp1KPh8SQi7Stx4
7tup6DiVWJAF
=iIVP
-----END PGP SIGNATURE-----