We're using cookies to make this site more secure, featureful and efficient.

SCD Database News

Important database news and announcements are also posted to the my.strathspey social network. Find them here!

This page collects information about notable changes to the software backing this site and to the information available in the database.

23.182.1 (1 July 2023)

Rollup for June.

New features

  • “Multi-type” dances – i.e., dances which can be danced as a reel or jig, or strathspey or reel, … – are supported (at least the common combinations R/J, R/S, J/S, and R/J/S). This is implemented as additional dance types, rather than making the dance-to-type relationship m:n instead of 1:n, which would have been a major operation, and includes support in complex dance search and dance lists (where a dance type must “decay” to something specific). How to deal with dances which can be danced as, e.g., strathspeys and medleys is still an open question.
  • In addition to “Dance” and “Extra”, dance items in dance lists can now also be marked “Alternative”. This is to support lesson plans where one would like to have several options (e.g., depending on the makeup of the class), for which “Extra” is semantically inappropriate.
  • We’re using icons to mark dances as “extra” or “alternative” on PDF crib sheets. Previously this information was not available at all.
  • “Complex dance search” and “complex recording search” now support a less nerdy way of doing comparisons on the “bars” and “repetitions” fields. Instead of requiring users to enter mathematical comparison operators in text form, there is now a dropdown menu that offers the various comparisons.
  • The scratch-space switch on the dance list editing page now shows a count of items in the scratch space (this makes it easier to tell whether the scratch space is worth displaying).

Bug fixes

  • Dance/crib comment notification mails now have their Reply-To: header set to the e-mail address of the original comment submitter. This should result in fewer replies going to me instead of the person sending the original comment.
  • When editing dance lists, non-dance items no longer try to cycle through “Dance” and “Extra” (with detrimental results) if you click on the item type.

Internal stuff

  • The “Dances” and “Tunes” sections are no longer collapsed by default on publication admin pages. [Suggestion from Murrough P. Landon]
  • The “Composer” field on tune admin pages now does proper autocompletion. [Found by Murrough P. Landon]
  • The publication-adoption fields have been removed from the admin. This means that the feature is no longer visible at all, and we will be able to remove the database columns in due course.
  • Weasyprint is now up to the official version 59.0, which includes the fix needed for Anselm’s SVG diagrams, so we no longer need to get it directly from Github.

23.153.2 (2 June 2023)

New features

  • The database now supports the new Strathspey Video service, as an alternative for people who would rather not upload videos to YouTube or Vimeo. This is a conceptual replacement for the “Upload Video …” function on the old site, which seemed to never really work except for myself. Videos that have been uploaded to Strathspey Video can be added to dance entries in the usual manner, by using “Add Video …” and pasting the sharing link from Strathspey Video into the form (as you would for videos on YouTube). We may eventually streamline this process. – Strathspey Video is linked to my.strathspey, and all registered users of my.strathspey can upload videos there, after logging in with their my.strathspey credentials. (If you’re already logged into my.strathspey when you try to log into Strathspey Video, you won’t have to enter your credentials again.) Video submissions to Strathspey Video will be moderated for content to ensure that they actually relate to SCD; other stuff can go to YouTube as far as we’re concerned.
  • The template status of a dance list can now be changed from the “Change type” modal dialog on the list detail page.
  • Dance lists are now automatically re-read on all open edit pages if the list settings change. This lets the dance list owner control whether, e.g, item notes are being displayed.
  • The database emits a warning when you open a dance list for editing that has item notes but the display of item notes has been turned off.

Bug fixes

  • The system no longer asks for a date when entering the detail page for a dance list that is a template for functions or classes and has an empty date field (since the absence of a date on a dance list template is presumably intentional.)

23.150.4 (30 May 2023)

New features

  • Complex recording search now allows you to specify tunes (as regular expressions, so “Tushk[ea]r” will match either “Tushker” or “Tushkar”, and “^Reel of .*s, The$” will match any tune whose name starts with “The Reel of” and ends with “s”; note that “^The Reel of .*s$” doesn’t work because “^The” is not recognised as an article.) An expression like “Tushk[ea]r=1” locates all recordings that start with the tune. You can join patterns using “/” to locate recordings that contain tunes matching all given patterns, e.g., the pattern “Rain Dancin=1/Monday=3” finds recordings whose first tune matches “Rain Dancin” and whose third tune matches “Monday”. Note that the numbering of tunes in the database may or may not have anything to do with the order in which the tuens are played on the recording.
  • The results of a complex recording search now optionally show the tunes on the recordings, and feature an audio player if there is a 15-second clip for the recording. (This is roughly similar to what the “Recordings” tab on an album detail page does.)

Bug fixes

  • The asynchronous-notification feature mentioned in the previous update was restructured to make the system more stable. The original implementation would leak database connections to a point where no connections were available to handle page requests, which would block the server. The new implementation returns Django to synchronous mode under gunicorn’s gthread worker, rather than the asynchronous Uvicorn worker, and uses a dedicated asynchronous web server for the long-running SSE connections instead. Notifications are handled internally rather than through the PostgreSQL LISTEN/NOTIFY mechanism, so no database connections are required for the SSE feature.
  • The big JavaScript-to-HyperScript replacement drive broke the recording autocompletion popup on the add-music-to-dance-list-item modal. This has now been fixed.
  • The add-music-to-dance-list-item modal now has a minimum height of 400 pixels, which should make it work marginally better while we’re researching how to put the autocompletion suggestion box on top of the modal footer rather than below.

23.148.1 (28 May 2023)

New features

  • If you add a dance to a dance list using the “Add to list” button on the dance detail page, that dance shows up on the dance list editing screen in (near) real-time without an explicit page reload.
  • Group-visible dance lists can now be edited by all group members. Please exercise some caution if you’re doing this at the same time; if, e.g., person A deletes an item while person B is trying to move it elsewhere in the list, then something’s gotta give. But most operations should be safe. If you try this, let me know how you get on; also if you think a group read-only mode (where only the list owner gets to make changes) would be worth looking at.
  • The preceding two items made it necessary to restructure some of the underlying parts of the server (for those of you who are into this sort of thing, the server now uses “server-sent events” to communicate dance list changes to all browsers showing the dance list editing page; this required enabling “asynchronous” views in Django because the long-lived connections used to enable this would otherwise tie up server threads and eventually cause the server to block, but thanks to the power of Django 4.2.1, PostgreSQL and HTMX this was rather simpler to do than I used to assume).
  • Collections now support (read-only) group visibility, meaning that you can decide whether any of your collections should be “private” (only you can see it) or visible to the members of a designated user group. Group-visible collections will show up on the collection overview pages of all group members (in addition to their own collections), and the group members can look at them but not change them. (This should render sharing links mostly unnecessary, but we’re keeping these for the time being, on the off-chance, and to avoid forcing people to create groups for everything.)
  • Various messages that used to appear as banners across the top of the page are now shown as “toasts” in the lower right-hand corner of the window, where they will disappear automatically after a suitable delay. This avoids issues with synchronicity where messages would only show up long after the events they were talking about (because the top-of-the-page messages only appear after a full page reload, which could be changed but the toasts are nicer).

Bug fixes

  • “Add from List …” in the dance list editing “Manage …” menu now correctly copies associated recordings. This was an oversight and not intentional. [Found by Cord Walter.]
  • On the dance list editing page, most of the JavaScript code has been replaced by HTMX and HyperScript, resulting in a considerable simplification of the code. (The only good line of JavaScript is a line of JavaScript that isn’t there.) The same applies to most collection management operations.
  • The sharing link for collections was fixed. [Found by Murrough P. Landon and Viktor Lehmann]
  • The collection management menu now says “Edit Collection Settings” rather than “Edit List Settings”. [Found by Viktor Lehmann]
  • Some vestigial SVG-based Bootstrap icons were replaced by references to the Bootstrap icon font. This is more upgrade-proof and reduces the content length of some pages considerably.

14 May 2023

New features

  • Quick search now uses a combination of substring matching and trigram matching. All search results for one model are aggregated into a single list, so the “Exact match” vs “Approximate match” distinction no longer exists.
  • Dance lists can be made visible to a designated user group (only for reading).
  • Dance list types, dates, and visibility can now be changed by the list owner directly from the list detail page, without going to the dance list editing page and selectiong “Edit settings” from the “Manage” menu.
  • Dance lists with type “Unknown”, or with type “Function” or “Class” but without a date show the type or date dialogs, respectively, when accessed by their owner. This is to encourage list owners to specify these.
  • There is now a basic API for dance lists which lets external clients retrieve dance list information in JSON (rather than HTML). See this document for details.
  • Recording running times can be entered as “mm:ss” (rather than just seconds). [Suggested by Murrough Landon.]
  • All e-cribs and SCDDB contributed cribs are now stored internally in ACE Markdown format.
  • The “Steps”, “Formations”, and “Tunes” sections on the Django admin pages for dances are now no longer collapsed by default.
  • The dancediagram table is included in the daily dumps.
  • Updated Django to version 4.2.1.

Bug fixes

  • Fixed a problem with rendering lines in MiniCribs that start with numbers but are not “sub-dance-descriptions”.
  • Fixed another problem with generating ACE Markdown for MiniCribs where wrapped lines would sometimes start with characters that otherwise introduce bulleted lists in Markdown.
  • Fixed a bug where not giving a dance list expression on the “complex dance search” page caused output to be restricted to dances that appeared on any public dance list. [Found by Eric Ferguson and Murrough Landon.]
  • <<scddb-not-identical:…>> magic links are now rendered correctly again. This includes proper pluralization if several dance IDs are given.

7 May 2023

New features

  • The database now supports “gender-free” versions of e-Cribs, on an experimental basis. These are e-Cribs where the terms “man” and “lady/woman” are replaced by “lark” and “robin”, respectively. They are generated on the fly from the corresponding e-Cribs. Gender-free cribs must be explicitly enabled. See this page for details.

Bug fixes

  • Various bugs to do with recordings in dance lists have been fixed.

1 May 2023

New features

  • Bulk additions to a collection are executed in a single database transaction, so if there are problems with the CSV file the database will revert to a reasonable state.
  • Database editor get an “Add and Approve” button on the video upload page.

Bug fixes

  • The last-modification timestamp on collections is now also updated when the content of a collection is changed, not just when the metadata is changed.
  • Various small tweaks and fixes.

28 April 2023

  • You can now define dance list templates, which act like cookie cutters when making new dance lists, e.g., for a regular class.

27 April 2023

  • The database now supports gender-free crib sources (on an experimental basis).
  • The database supports the notion of “dance list types”.
  • The “Make List Active” button was removed from the dance list detail page. Dance lists now become active when they are (a) newly created, or (b) when their dance list editing page has been displayed. A dance list stays active until another dance list becomes active (in one of the two ways mentioned before) or until it is deleted (after which there is no active dance list until another dance list becomes active in one of the two ways mentioned before).

April 2023

  • The database code was updated for Python 3.9, Django 4.1, and Bootstrap 5 (among other things). We’ve mainly been aiming for feature parity but a few changes and improvements have been made here and there.
Recently seen

Sign in to see recent visitors!