|Author:||Pierre-Yves Chibon <email@example.com>|
fedocal is a web based calendar application.
This project is a Flask application. The calendars and meetings are stored into a relational database using SQLAlchemy as Object Relational Mapper (ORM) and alembic to handle database scheme changes. fedocal provides an iCal feed for each calendar and relies on python-vobject for this. Finally, pytz is used to handle the timezone changes and dateutil to allow date manipulation over months/years.
The full list of dependencies can be found ine the
Clone the source:
git clone https://github.com/fedora-infra/fedocal.git
Copy the configuration files:
cp fedocal.cfg.sample fedocal.cfg cp alembic.ini.sample alembic.ini
Adjust the configuration file (secret key, database URL, admin group...)
Create the database scheme:
FEDOCAL_CONFIG=fedocal.cfg sh createdb
Register the application to iddev for development:
oidc-register https://iddev.fedorainfracloud.org/ http://localhost:5000/oidc_callback
Add the following two lines in your configuration file fedocal.cfg:
OIDC_ID_TOKEN_COOKIE_SECURE = False OIDC_REQUIRE_VERIFIED_EMAIL = False
Run the server:
python runserver.py --config fedocal.cfg
You should be able to access the server at http://localhost:5000 (do not use
127.0.0.1 as it will no work)
client_secrets.jsonfile and make sure it matches exactly (check http vs https, trailing slash vs no trailing slash...). You may have to re-register as editing directly the
client_secrets.jsonfile will not work.
This project has three principal git branches:
master: this is the default branch in which development is done. It is the branch from which releases are made. It is the branch feature branches are branched from and get merged into.
staging: fedocal is deployed in the Fedora infrastructure in openshift using s2i, the staging environment is built from this branch. This branch has one extra commit that is not in
masterwhich adds all the files and changes necessary to deploy fedocal in openshift using s2i. This branch is therefore rebased and force-pushed when the staging fedocal instance is updated. Pull-Request should not target this branch.
production: this branch is used for the same situation as the
stagingbranch but for the production fedocal instance. It also contains an additional commit that is not in the
masterbranch and is therefore force-pushed after a rebase when the production fedocal instance is updated. Pull-Request should not target this branch.
This project contains unit-tests allowing you to check if your server has all the dependencies correctly set.
To run them simply call:
To stop the test at the first error or failure you can try:
tox -- -x
To run a single file you can try:
tox -- tests/test_flask.py -x
For any issue you may encounter please file a ticket and submit it to:
Fedocal Pagure: https://pagure.io/fedocal/issues
Contributors can use the same tracker to find existing bugs to work on. You need to login with your FAS account to submit or modify a ticket.
This project is licensed GPLv3+.