2 Specification
Charlie Crossley edited this page 2023-08-02 23:25:39 +01:00

Specification

Here we set out the functional specification for the project.


Access

Primary model: User

See also: https://docs.djangoproject.com/en/4.2/topics/auth/customizing/#extending-the-existing-user-model

  • Authentication: The system must be able to authenticate users.
  • SMA: The system must be accessible concurrently by multiple users in multiple locations.
  • Permissions: The system must be able to restrict the abilities of certain users to perform certain functions.

Django handles the above out-of-the-box.

UX

  • Mobile-Friendly: The system must be just as easy to use from a phone as a computer.
    • Modern reactive CSS can handle almost all of this.
  • Consistent Menus: A basic scheme of separate "global" menu items and "contextual" menu items should be adopted.

Cave Data

Primary model: Cave

  • Survey Creation: The system must be able to parse survey data input to it via a webform.
  • Survey Upload: The system must be able to parse survey files (.svx).
  • Survey Viewing: The system must support searching for, browsing, and viewing survey (Survex) data.
  • Survey Editing: The system must support editing of survey (Survex) data via a web-form.
  • Survey Export: The system must be able to export survey files (.svx).
  • Drawing Upload: They system must support uploading of drawing (Tunnel/Therion) data

Expedition Logging

Primary model: Entry

  • Logbook Creation: The system must support creation of new expeditions/logbooks.
  • Logbook Entry Creation: The system must support creation of new logbook entries.
  • Logbook Entry Editing: The system must support editing of logbook entries.

Static Information

Primary model: django.contrib.flatpages.models.Flatpage

See also: https://docs.djangoproject.com/en/4.2/ref/contrib/flatpages/

  • Flatpages: The system must allow users to add/edit/delete etc. static pages.
    • Ideally, editing should be WYSIWYG first, with support for direct markup editing for power-users.
    • Alternatively, a third-party wiki app could simply be pulled into the project, cutting out the need to reinvent this particular wheel.

Development

  • Deployment Scripts: The development environment should be easy to set up on any system using a single dev_setup.sh script or similar
  • Test data: a set of test-data should be provided for the development environment to work on.