-
Notifications
You must be signed in to change notification settings - Fork 8
Setup
This guide will help you run Malasakit on your local machine.
You should have basic knowledge of the git version control system and access to a UNIX-like machine or emulator (for Windows, try Git Bash).
To download a copy of Malasakit, navigate to your directory of choice, then run
$ git clone https://github.com/BerkeleyAutomation/malasakit.git
Malasakit is written in the Python and JavaScript programming languages.
To run Malasakit, your machine must have a web browser and a Python 2 interpreter (preferably Python 2.7).
Python is typically shipped with most UNIX-like systems, including macOS and Linux.
You can check your version of Python by running python -V from the command line.
Malasakit also requires additional packages not included in a base Python installation.
| Name | Description | Version |
|---|---|---|
django |
A "batteries-included" web application framework | 1.11.3 |
django-htmlmin |
Django plugin for minifying HTML (reduces page size) | 0.10.0 |
django-settings-export |
Makes Django settings available to the templater |
1.2.1 |
twilio |
Simplifies interfacing with Twilio's REST API | latest |
openpyxl |
Library for reading and writing Excel spreadsheets | 2.4.7 |
numpy |
Scientific computing library to simplify some analysis | 1.12.1 |
MySQL-python |
Python interface for MySQL, a SQL implementation | 1.2.5 |
pylint |
Code style evaluator | 1.7.1 |
pylint_django |
pylint plugin aware of Django-specific conventions |
0.7.2 |
pyyaml |
Library for parsing YAML files | 3.12 |
unicodecsv |
Wrapper around Python's default csv library |
0.14.1 |
selenium |
Browser automation library (requires ChromeDriver) |
3.4.3 |
decorator |
Library for maniulating Python decorators | latest |
sphinx |
Library for generating HTML documentation from docstrings | latest |
sphinxcontrib-napoleon |
sphinx extension to support Google-style docstrings |
latest |
First, install pip, the standard Python package manager.
Next, install virtualenv by running:
$ pip install virtualenv
virtualenv is a tool that allows you to simulate isolated Python environments.
Since this command installs virtualenv globally, you may need to prepend this command with sudo.
From the top level of the repository, run:
$ virtualenv -p python2 venv
This creates an environment inside the directory malasakit/venv that uses Python 2.
Environments can be "activated" or "deactivated". Once "activated", any packages installed within the virtual environment become available to the Python interpreter. Therefore, any time you work on or run Malasakit, you should activate the virtual environment we just created by running:
$ source venv/bin/activate
You should now see (venv) before your command line prompt.
Also, any packages installed or removed at this point through pip does so for the virtual environment in venv.
To install all the packages listed above at once, run:
$ pip install -r requirements.txt
requirements.txt is a plain text file that lists the packages needed and their versions.
To deactivate the virtual environment, use:
$ deactivate
For frontend development, you should install node and npm, which will allow you to install packages written in JavaScript.
(You can think of npm as the JavaScript analog of pip for Python.)
| Name | Description | Version |
|---|---|---|
less |
A compiler for LESS, a CSS preprocessor | 2.7.2 |
watch-lessc |
Automatically compile LESS files that have changed on disk | 0.0.3 |
jshint |
A JavaScript linter | 2.9.5 |
To install these packages with npm, from the top level of the repository, run:
$ npm install -g
The -g flag tells NPM to install the packages listed in dependencies and devDependencies in package.json globally, so you may need to prepend this command with sudo.
To compile the stylesheets once, navigate to malasakit-v1/malasakit-django/pcari/static/css, then run
$ lessc -x main.less main.min.css
main.min.css is the minified stylesheet each HTML page uses.
To automatically compile main.less when you make changes to the file, run
$ watch-lessc -i main.less -o main.min.css
Django's translation system relies on GNU's xgettext.
xgettext is installed by default on most Linux systems.
On macOS, xgettext can be installed through brew.
This repository does not include data generated in production.
To set up a local database for development purposes, from the malasakit directory (not the top-level directory), run:
$ python manage.py migrate
After this command, you should now see a db.sqlite3 file in the malasakit directory.
To obtain a populated SQLite file, contact the maintainers.
If you plan to work on the feature phone application, you will also need to populate your database with voice prompts:
$ python manage.py loaddata feature_phone/fixtures/*-instructions.yaml
Once you have run the migration command, run:
$ python manage.py runserver
to bring up a local development server, which will print out helpful debug information.
Next, open up a web browser, navigate to localhost:8000. If everything worked, you should see a landing page.