Skip to content

4. Understanding ELVIS Database

juyaolongpaul edited this page May 5, 2018 · 9 revisions

This section was introduced in SIMSSA Tutorial Week on May 4th, 2018. Slides are available here.

Introduction

ELVIS Database is a website developed by Distributed Digital Music Archives and Libraries Lab DDMAL to search for symbolic music.

As a Django application, the website contains thousands of media files (symbolic music data, such as MEI, MIDI, MusicXML and Kern), which are linked with the corresponding piece and/or movement. Additionally, each piece/movement has a series of metadata, such as composer, date of composition, genres, collection, place of origin, etc.

ELVIS Database has a series of key functions, such as:

  • Registration
  • Login/logout
  • Search (General search with the name of composer/piece/movement, or advanced search)
  • Download and upload symbolic music
  • Personalised cart for downloading symbolic music in batch
  • ...

To understand how ELVIS Database implemented these functions and modified them can be overwhelming, especially for someone who is relatively new to the Web development. Therefore, this page is written as a detailed tutorial to understand ELVIS Database's infrastructure for future maintenance and development.

Tutorial

This tutorial contains two parts: The first part introduces the basic mechanism of a website, and a simple blog website will be introduced as an example, where each component and the interaction among the components will be explained in detail. After understanding the basics, the second part will introduce ELVIS Database as a whole, and explain how the advanced functions (e.g., serving a huge number of media files, search and personalized cart, etc.) work.

Part I: Basics

In Part I, a simple blog website will be used to explain the core elements of Django, where you can log in, log out, submit forms (posts), comments, drafts and so on. In the following sub-page, starting with 4.1 Start With A Single Click, I will explain each component of the website. The source code of the blog website is stored on dev_feature_jsymbolic branch, in blog_website_to_understand_Django folder.

How to set up the environment:

(1) git clone the whole project. (2) Create a virtual environment under the project folder blog_website_to_understand_Django. (3) Run pip install -r requirements.txt to install all the required packages (NOTE: Django version must be greater than 2.0!). (4) Run python manage.py runserver to run the project.

If the guidelines above do not make sense to you, you might need to start Django tutorial from the beginning until you understand the content of this file.

Note: To log in, use USERNAME: debug and PASSWORD:debugdebug to log in. If possible, I will develop a function for the users to register themselves as well.

To begin with the tutorial, please follow 4.1 Start With A Single Click, and the subsequence pages.

Part II: Advanced