A summary of changes made to the codebase, grouped per deployment.
2024-05-10 (#730)
- The apply button in the English header, which previously read "søk verv", has now been translated to English ("apply to MAKE")
- The Discord username field in the internal site's member form no longer enforces Discord's old username format
- Updated Django to 5.0.2
- Updated a ridiculous amount of packages
2023-05-10 (#654)
- Added a button for delaying hiding secrets for 30 seconds, in the secret list
- Added an
extra_view_permissions
field to secrets- This makes it possible to create secrets that not all MAKE members need to know
- Examples can be passwords of Google Workspace users that only exist for technical purposes, or credentials for the admin page of a physical router
- This makes it possible to create secrets that not all MAKE members need to know
- Added an "internal" ribbon label on internal articles and events
- Added a link to the Django admin change form at the bottom of the form of "content boxes" that have extra change permissions
(like the front page of the internal site)
- This is only visible to users who have permission to modify those content boxes through Django admin
- Changed cropping of images in article and event lists so that they always have equal proportions
- Added a title to the quota admin panel, and switched out the "Add new quota" button for a green plus button, like other admin panel pages
- Added an additional permission check for all admin pages (incl. API endpoints), that requires the user to have the
internal.is_internal
permission - When requesting to change a
ContentBox
on a subdomain its path is not registered on (like trying to change the "About us"ContentBox
on i.makentnu.no, or the "MAKE NTNU internsider"ContentBox
on makentnu.no), you're redirected to the proper subdomain, instead of being shown a "404 Not Found" page
- Fixed board members not being allowed to add, change and delete reservation rules (e.g. the reservation rules for 3D printers)
- Enabled automated code quality checks from Code Climate
- Restructured lots of URLs to comply with
the style guide
- The path segments (i.e.
/the-text-between-the-forward-slashes/
) now all have a more consistent structure, including prefixing all admin pages' paths withadmin/
and all API endpoints withapi/
- Permanent redirects have been added for the URLs deemed most relevant, to redirect from the old to the new URL; see a list of the added URLs in the code
- The path segments (i.e.
- Moved lots of views and forms around between files, to have them more practically organized
- Renamed lots of views, forms and templates to comply with the style guides
- Changed multiple pages' URLs to use query parameters,
instead of having multiple distinct paths for practically the same page
(see #650 for a list of all the URLs affected)
- Permanent redirects have been added for the URLs deemed most relevant, to redirect from the old to the new URL; see a list of the added URLs in the code
- Changed some URLs so that they all consistently use
add
(instead ofcreate
) andchange
(instead ofedit
orupdate
), to comply with the style guide - Temporarily disabled most of the "
checkin
" URLs (those related to user skills, registering cards and checking in), to reduce the risk of exposing potentially insecure or buggy code - Made the use of add/change verbs consistent among page titles and buttons, and some other parts of the website's UI
- Made some "Add" buttons green, to follow the convention that green means to add
- Code cleanup? Ye.
2023-03-30 (#615)
- Added the
django-constance
package, for adding dynamic settings - Added a dynamic setting for hiding/showing the apply ("Søk verv") button in the header
- Added two fields to event tickets: one for when the ticket was first created and one for when it was last reactivated/canceled, which can be useful for e.g. keeping statistics over when and how fast tickets were sold
- Made opening/closing the member modal in the member list change the browser URL
- This makes it possible to navigate backwards and forwards using e.g. the back/forward buttons on a mouse, or the back button on most Android devices. It also makes it easier to get the URL for linking directly to a specific member's info in the member list.
- Added history tracking to the
Member
andMachine
models, as well as the following many-to-many fields:ContentBox.extra_change_permissions
,Question.categories
andInheritanceGroup.own_permissions
- Note that the many-to-many selection for these fields are correctly saved, they're just currently not correctly displayed in the objects' history page in Django admin (the current M2M selection is always shown); see this issue
- Added links to the guides on what should be done when a member enrolls/retires/quits, in the member list
- These can be changed through the dynamic settings in Django admin
- Added GitHub Actions workflow for automatically labeling deployment PRs
- Made the
makemessages
management command automatically convert the path format of the file location comments in.po
files generated on Windows, to the format generated on Linux - i.e. forward slashes (/
) instead of backslashes (\
) and no leading.\
- so that developers using Windows don't have to do this manually anymore :)
- Updated Django to version 4.1
- Made it possible to search for all member fields in the member list - not just the ones visible in the list
- Started using new label names for each event type, which should be clearer with regard to their intended usage. Also made their description - shown when clicking / hovering over the yellow question marks in an event form - (hopefully) easier to understand
- Set the default value of event occurrences'
hidden
field toFalse
- Prevent registering for an event without any (past or future) occurrences
- Made the red "Canceled" ribbon on tickets transparent when clicking / hovering over it, to be able to read the text behind it
- Added a "help text" yellow question mark icon next to the "Discord username" field in member info forms (displayed when clicked / hovered over)
- Made the user dropdowns on both the quota admin page and the quota form page, function equally
- When changing machine type in the reservation creation form, made the first machine of that type be automatically selected
- Place files uploaded through CKEditor in a separate folder for each model
- Made all pages have a consistent (browser tab) title format
- Most pages will have " | MAKE NTNU" as suffix to the title; subpages of the admin panel have " | Admin panel | MAKE NTNU" as suffix
- Improved the design of the title text of the categories and questions on the FAQ page
- Improved the feedback of the toggle button for hiding each occurrence on an event admin page
- Made the description of the
hidden
field of articles and events not erroneously state that the articles/events will be visible to admin users when hidden - Replaced the
trans
template tag withtranslate
- Made the
user
field ofProfile
non-nullable - Added "and employees" to the end of the Open Graph description (shown in some search engines and when embedding pages from the website on sites like Facebook)
- Updated all of the self-hosted JavaScript libraries the website uses
- Fixed users being unable to mark reservations as finished when the machine's status is set to "Out of order" or "Maintenance"
- Fixed admins not being able to cancel other users' tickets
- Made the CKEditor file uploader work on all subdomains
- Fixed logging out not working on subdomains other than the "main" subdomain (https://makentnu.no/)
- Fixed logging out not automatically redirecting to the front page
- Fixed always auto-scrolling to the first toggle button when opening a member's info modal in the member list
- The modal should now instead open with the previous scroll position when hiding and re-showing it (even when showing a different member)
- Fixed missing card numbers being displayed as "None" instead of simply showing a blank field, in the member list
- Fixed displaying unpublished and hidden occurrences on multipart/standalone events
- Fixed showing the registration button on standalone events when they only had future occurrences that were either unpublished or hidden
- Fixed not loading a machine's page when using the keyboard to select a different machine in the dropdown on a machine detail page
- Fixed JavaScript errors when changing the machine or machine type in the reservation creation form
- Prevented CSRF attacks against the logout URL,
by requiring logout requests being sent using
POST
instead ofGET
- Fixed the "View site" button in the English Django admin not leading to the English front page
- Moved most Django-related code to a new top-level
src
folder- Refer to the new "PyCharm" section in the README (click "Click to expand" under the "Setup" section to make it visible) for instructions on which PyCharm settings need to be set to accommodate this new setup
- Set minimum required Python version to 3.10
- Renamed members'
gmail
field togoogle_email
, as the email address of a Google user can potentially belong to any host, not just "gmail.com" - Changed order of the apps listed on the Django admin index page
- Set a max length of 1000 characters to event ticket comments
- Updated the "social" config for authenticating with Dataporten
- Changed the CodeQL configuration to be scheduled to run just once a week
- Never-ending masses of code cleanup
2022-10-28 (#567)
- Added GitHub Actions workflows for automatically adding issues and PRs to the repo's project and setting adequate "Status" and "Date posted" values
- Improved wording and added image links to the emails sent to users after registering for an event
- Emails are printed to console instead of being sent, when testing or debugging
- Fixed event registration emails not being sent
- Fixed wrong comparison of
MultiLingualTextStructure
- Fixed
ContentBox.get_absolute_url()
not working - Fixed unable to submit required search select widgets
- Which are - among other places - used in the "Add New Member" form
2022-07-17 (#478)
- Added a URL which always links to the current week for a machine reservation calendar
- This URL can be copied by right-clicking the "View in calendar" button for a machine on the machine list page, and selecting "Copy link address"
- Made machine streams work with the new Raspberry Pi setup
- Also, only the visible streams are connected to;
once the page is scrolled so that a stream image is no longer rendered, the stream for that machine is disconnected,
which makes the machine list page use considerably less data (depending on how the page is scrolled)
- This does not apply to the machine detail (calendar) page, as there is always only one stream on the page
- Also, only the visible streams are connected to;
once the page is scrolled so that a stream image is no longer rendered, the stream for that machine is disconnected,
which makes the machine list page use considerably less data (depending on how the page is scrolled)
- Loading the member list has been made slightly faster
- Renamed a lot of templates (and CSS and JavaScript files) to comply with the style guide
- Improved word breaking (splitting a word between two lines, often using a hyphen) multiple places, like in titles and descriptions
- Added translations to the spreadsheet containing course registrations, that can be downloaded from the course registrations page
- Improved the permission check for the admin panel
- Added edit and delete buttons on the machine detail (calendar) page
- On the history page for a documentation page (on docs.makentnu.no), the current version link is now a permalink to that specific version
- Fixed endless redirect loop when a logged-in user visited a page that required a permission that the user didn't have
- Fixed error messages for multilingual form fields (like the event "Content" field) not showing
- Previously, editing CKEditor fields (like the event "Content" field) did not prevent the user from leaving the page; this has now been fixed
- Fixed sometimes being unable to close fullscreen machine streams, when clicking the close ("X") button
- Fixed old page version warning when visiting the URL for a specific documentation page version which is the current version of that page
- Added setup instructions to the project's README file
- Much code cleanup, yes
2022-06-07 (#461)
- Added table on the profile page which displays the completion status of all available courses
- Also, the profile button in the user dropdown is now visible to all users - not just MAKE members
- Added an internal page titled "The History of MAKE NTNU"
- This can be found under the new "Misc."/"Diverse" dropdown in the header on the internal site
- Added list of contents to the equipment list
- Added a "Notes" field to machines
- This is only for internal use and is not displayed anywhere - except for in the machine change form itself, naturally
- Added an "Internal" field to machines
- This makes machines only visible to and reservable by MAKE members
- Added an "Info message" field to machines
- This is for displaying information that's useful to know before using the machine, e.g. the filament that the 3D printer uses, the needle that's currently inserted in the sewing machine, or just the machine's current state/"mood"
- Added an SLA 3D printer machine type, and an "SLA course" checkbox to course registrations
- SLA 3D printers are always visible to MAKE members, but only visible to other users after they have taken the SLA course
- Added "bulletin boards" for each committee on the internal site
- These can e.g. contain notices, instructions, and links to common resources, and can act as a "hub" for each committee
- Added an
.editorconfig
file, to make it easier to configure a text editor to format code to (roughly) fit the style guide
- Made secrets only use one language
- Made the place/location text of events more visible
- This will hopefully reduce the number of people who meet at Makerverkstedet for 3D printer courses, because they didn't see the event's location
- Sorted the news-related templates into folders, and refactored the event detail template into multiple sub-templates
- Improved image sizing and text layout in the equipment and article lists
- Some minor improvements to the layout of the information text, action buttons and stream image on each machine detail page
- Fixed the machine status text times ("Available for X hours, XX minutes") not being translated to Norwegian
- Renamed the "Advanced course" checkbox to "Raise3D course", and renamed the "Special 3D printers" machine type to "Raise3D printers"
- This reflects the fact that the course in question is only really for Raise3D printers specifically
- It also reduces the potential for confusion after having added the SLA course / machine type (which can technically also be classified as an "advanced" course / "special" machine type)
2022-05-20 (#453)
- Added a Docker container for development purposes
- Added changelog, issue template and pull request template to our GitHub page
- Added button for selecting all shown course registrations
- Added page for searching through all event participants
- Significantly improved page performance when watching streams that fail to connect (most notably on the machine list)
- Added warning message when there are gaps between the reservation rules of a machine type
- Reordered admin panel buttons
- The code that reduces the size of uploaded images, now does not use the "reduced" image if it's not actually smaller - which could happen with some images
- Fixed server error when users tried to change or delete quotes that they themselves had created
- Fixed a bug that didn't update an end calendar's focused date when changing the date of the start calendar (e.g. the start/end time fields on the page for creating a new occurrence for an event)
- Fixed a bug after having selected a time in a calendar popup, which would cause nothing to happen when clicking the input field again
- Fixed server error while reducing the size of an uploaded image that was larger than 2.5 MB
- Fixed server error when uploading an image to an object that had its previous image file deleted - without also updating the database
- Made the front page of the internal site editable
- This only uses Norwegian (not English), and allows editing the HTML source code for extra customization possibilities
- Added an internal page for quotes
- Added more info fields to members (Gmail and MAKE email addresses, starting semester at NTNU, and GitHub, Discord and Minecraft usernames)
- Added history tracking to several models
(
ContentBox
,Question
,Committee
,Secret
,MachineUsageRule
,Event
,Article
andInheritanceGroup
)- Admins can view this through the Django admin site
- Added translations to the Django admin site
- Added the
django-extensions
anddjango-debug-toolbar
packages
- Updated Django to version 4.0
- Reordered the buttons in the user dropdown menu
- Added some extra buttons to the CKEditor toolbar
- Most change forms now have a more consistent design, by using the same generic template
- Changed some of the news URLs
- Redirect URLs have been added for the paths that are commonly linked to from elsewhere
- Redesigned the language button
- Improved the
alt
text (mainly for screen readers) of image links - Added reduction of the quality of uploaded JPEG files to additional models, like
Equipment
- Made privileged users always able to register for an event, event if it's sold out
- Made event tickets also display the provided language and comment
- Removed
EventTicket
's legacy_name
and_email
fields - Event tickets are reactivated instead of recreated
- Added proper title field to content boxes
- The ID of the edited object (e.g. article or event) is now prefixed to the filename when uploading an image
- Added more specific permissions for internal URLs
- Made fonts self-hosted
- Improvements to the change lists and forms of some of the Django admin pages
- Made the course registration list load faster
- Fixed hidden buttons for adding/changing/deleting reservation rules, and for the committee admin panel
- Never-before-seen quanta of code cleanup
2022-01-10 (#402)
- Added new favicon with better color contrast, and different favicons for the
i
/internal
/internt
andadmin
subdomains - Made "dirtied" (modified) forms prevent the user from leaving
- Added an image description field to articles and events, which is useful for people using screen readers
- Added priority field to secrets
- Added an automatically updated "last modified" field to various models
- Added "Skip to main content" button for navigation using Tab
- Articles and events are now stored fully in their own separate tables, instead of storing the common fields in a third table
- Small improvements to the design of the event and article pages
- Improved using Tab for navigating the buttons in the header
- SEO improvements (see #401)
- Fixed members being unable to have international phone number
- A barely impressive volume of code cleanup
2021-10-29 (#389)
- Added an admin page for FAQ categories
- For machines with streams: Added a new "no stream" image, in addition to images that are shown when the stream is down and the machine has either status "Maintenance" or "Out of order"
- Improved layout of the FAQ page and the FAQ question admin page
- Made "My reservations" and "Find free reservation slots" buttons visible when not logged in
- Added Django admin button to user dropdown (visible to users with the "Is staff" status)
- Fixed wrong sorting of members' date joined
- Images for articles, events, etc. are now actually removed on the server when uploading a new image
- Fixed occasionally disappearing course registration rows, which happened when clicking rows after the page had initially loaded
- Fixed a bug that caused the
start_time
field on the "New reservation" form to not be parsed correctly on some iPhones - Fixed ribbon label on events being displaced by a few pixels
- A respectable quantity of code cleanup
- Machines now have a separate
stream_name
field, for specifying the name that's used to connect to their stream - Added button for manually hiding shown secrets
- Made the "Rules" buttons on the machine list page more visible
- Change system accesses directly from the member modal
- Improved layout of secrets page
- Improved layout of ticket list
- Improved layout of the reservation list on the "My reservations" and "MAKE NTNU reservations" pages
- MAKE reservations are listed among the creator's own reservations
- Delete/finish reservations without reloading the page
- Added login link to the "New reservation" button
- Improved feedback when reservation is denied
- Made the formatting of times and dates more consistent
- The occurrences of repeating events are not listed one by one anymore on the front page, but are instead listed in a "collapsed" fashion
- Added a "More events" button on the front page, for when there exist more than 4 future events
- Fixed error after registering for an event, which prevented ticket emails from being sent
- Large amounts of code cleanup
- Added code style guide and guideline for code smells
- Added a "Special 3D printers" machine type
- This is listed on the machine list (reservations) page when one or more machines of this type have been added
- Added an "Advanced course" checkbox to course registrations
- Checking this checkbox will grant users permission to create reservations for the special 3D printers
- The course registration form now checks whether the submitted card number is actually (by accident) the phone number of NTNU's Building security
- Changed the URL for the email lists from /email to /about/contact
- Added a counter at the bottom of the member list and course registration list, that shows how many members and course registrations are displayed, respectively
- Articles, events, profile pictures and other things you can upload images for, now support GIFs
- Updated Django to version 3.2
- Visiting old URLs that have previously been changed, will redirect to the new URL
- This applies e.g. to makentnu.no/rules, which is written in the old 3D printer course contracts; see the full URL list in the code
- (Finally) fixed the course registration list not showing updated info when one or more registrations were modified
- Fixed a bug that prevented sorting and filtering of the member list from both working simultaneously
- Fixed seeing the 404 page when visiting the English "About us" page
- Lots of code cleanup
2021-04-13 (#349)
- It's now possible to search for users by name in the member list
- An error message is now shown when uploading an image that is too large
- Fixed the recently discovered issue preventing new users' name from being stored in the database
- Both filtering and sorting the member list simultaneously does currently not work
2021-03-10 (#343)
- Added an internal home page (currently blank)
- Added an FAQ page, including the ability to add questions through the admin page
- Fixes for reservations
- Fixes for searching course registrations
- Fixes of other parts of the code
- Code cleanup
2020-11-20 (#334)
- Added an internal secrets page
- Added dedicated page for email lists
- Added support for copying the email addresses of event ticket holders
- Added priority field to equipment
- A lot of fixes