Skip to content

This repository contains the source of the Web application for submitting and reviewing proposals, and the Web application providing a RESTful API to the schedule data. The conference website is https://conference.accu.org

License

Notifications You must be signed in to change notification settings

FelixPetriconi/Submission_Web_Application

 
 

Repository files navigation

GPLv3 Build Status Coverage Status

ACCUConf Web Applications

This repository contains the source of the Web application for submitting and reviewing ACCU conference session proposals, and also the Web application for a personalised schedule for use leading up to and during the conference. The two Web applications are Flask/SQLAlchemy/SQLite applications with a shared data model, and shared utilities.

The submission application:

  1. Allows people to register as users.
  2. Allows registered users to login and submit and amend session proposals.
  3. Allows registered users who are designated reviewers to review the submitted proposals.

The schedule application provides a RESTful API to access the final conference schedule data. The API is designed for the ACCU schedule web application. The API is public so any other application can use it.

The submission application is deployed to https://cfp.conference.accu.org, the schedule application is deployed to https://api.conference.accu.org. The submission applications will only be active during the "call for proposals" of a given year, and the schedule API application will only be available once the schedule is finalised up to the end of the conference for that year.

Contributing

Contributions are welcome from anyone and everyone who believes they have something constructive to contribute.

First step is to clone the repository so as to be able to run the applications. Second step is to make sure all the necessary Python bits and pieces are installed. The files pip_runtime_requirements.txt, pip_test_requirements.txt, and pip_admin_requirements.txt contain lists of the packages required. It may be that your platform has all of these or allows them to be installed. Otherwise the best approach is to use pip to install. Many people will use a virtual environment, in which case:

pip install --upgrade -r pip_runtime_requirements.txt

will install all the packages needed for running the applications. For testing install the test requirements as well. The admin requirements are for using the scaffolded admin interface to work on the database.

With everything installed, a database is needed. Executing:

./cli.sh db_init

should do the needful.

Running the submission application is then a matter of executing:

./run_cfp.py

This should set the submission application running on localhost:8000. The state of the application is determined at application start time. The default is the "off" state, so should just put up a "not open" message. To get the application into the "open" state you need to have a file accuconf_cfp_config.py in place before starting the application. This file should have the line:

from models.configuration import CallForProposalsOpen as Config

Once set up chip in with issues and, if you are willing, pull requests.

These two applications are relatively straightforward, relatively small Flask applications using SQLAlchemy and SQLite. There are the accuconf_cfp and accuconf_api packages which are the two applications, and the models and utils packages which are the shared packages for the two applications. Jinja2 templating is used for rendering.

Tests are pytest ones. Unit tests (exercising the route controllers) are in tests_cfp, whilst tests_cfp__selenium holds the webdriver driven tests. The latter use chromedriver so you will need to ensure you have that installed. PhantomJS appears not to be up to the job of being a headless driver for these tests hence using Chromedriver in headless mode.

Running:

./run_tests.sh

should run all of the tests and create coverage reports in cov_html_accuconf_api, cov_html_accuconf_cfp, and cov_html_accuconf_cfp__selenium.

Historical note

This is a complete rewrite of the application used for ACCU 2017, based on an evolution of the data model used then.

Licence

This code is licensed under the GNU Public License Version 3 GPLv3.

About

This repository contains the source of the Web application for submitting and reviewing proposals, and the Web application providing a RESTful API to the schedule data. The conference website is https://conference.accu.org

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 75.1%
  • HTML 9.2%
  • CSS 9.0%
  • JavaScript 5.8%
  • Shell 0.9%