All Projects → carpentries → Amy

carpentries / Amy

Licence: mit
A web-based workshop administration application built using Django.

Programming Languages

python
139335 projects - #7 most used programming language

AMY is a web-based workshop administration application for The Carpentries and related projects. Its target audience is workshop coordinators, most of whom are non-programmers, who need to keep track of what workshops are being arranged, when they're supposed to occur, who's teaching what, and so on.

AMY is built using Django with Python 3, with a bit of Javascript and other things thrown in. If you would like to help, please read:

Please check with us or open an issue before starting work on new features.

Getting Started

  1. Clone the repository:

    $ git clone https://github.com/carpentries/amy.git
    $ cd amy
    
  2. Configure git to automatically ignore revisions in the .git-blame-ignore-revs:

~~~
$ git config blame.ignoreRevsFile .git-blame-ignore-revs
~~~  
  1. Install Django and other dependencies:

    $ python -m pip install --user -r requirements.txt
    

    Recommended: If you're experienced Python programmer, feel free to create a Python3-compatible virtualenv / venv for AMY and install dependencies from requirements.txt.

  2. Install yarn, the tool that manages AMY's JavaScript and CSS dependencies. You can install it here.

  3. Set up your local database with fake (development-ready) data with:

    $ make dev_database
    
  4. Create cache tables for use with the database cache backend.

    $ python manage.py createcachetable
    
  5. Create an administrator account:

    $ python manage.py createsuperuser
    
  6. Start running a local instance of Redis. This requires Docker to be installed locally. Redis is required to have certain features (like creating a new person and viewing a workshop request) work correctly.

    $ docker-compose -f docker/docker-compose.yml -p amy up -d redis
    
  7. Start a local Django development server by running:

    $ make serve
    

    Note: this also installs front-end dependencies for AMY, including jQuery and Bootstrap (full list here).

  8. Open http://127.0.0.1:8000/workshops/ in your browser and start clicking.

    Use the administrator account that you created.

  9. Shut down the local server by typing Ctrl-C. Shut down the Docker Redis instance with:

    $ docker-compose -f docker/docker-compose.yml -p amy down
    

Upgrading

  1. Update the code:

    1. Get the list of changes:

      $ git fetch
      
    2. Look for the newest tag:

      $ git tag -n
      
    3. Get the code from the newest tag:

      $ git checkout tags/<tag_name>
      
  2. Update dependencies front-end and back-end dependencies:

    $ make upgrade
    
  3. (Optional) make fresh development-ready database:

    $ make dev_database
    

    Note: this command requires removing (by hand) the old database file.

  4. Run database migrations:

    $ python manage.py migrate
    
  5. Enjoy your new version of AMY:

    $ make serve
    

Start hacking on email automation

  1. Make sure you have Redis running. See instructions above.

  2. Install required objects in database:

    $ python manage.py loaddata amy/autoemails/fixtures/templates_triggers.json
    
  3. Create dev database (it will add a super user, too!):

    $ make dev_database
    
  4. Run the server:

    $ python manage.py runserver
    
  5. Check if you have a Tag automated-email available. If not, create one (you can use Django admin interface for that). Use superuser account (admin:admin). Now scheduling the emails should work, however there's no worker to execute them.

  6. (Optional) Run the RQ worker and scheduler (use separate terminals or processes for each command):

    $ python manage.py rqworker
    $ python manage.py rqscheduler
    
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].