• Stars
    star
    1,222
  • Rank 38,381 (Top 0.8 %)
  • Language
    Python
  • License
    GNU General Publi...
  • Created almost 7 years ago
  • Updated almost 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Open Event Orga Server

Open Event API Server

GitHub release Travis branch Gemnasium Codacy branch grade Codecov branch Gitter

The Open Event API Server enables organizers to manage events from concerts to conferences and meet-ups.

It offers features for events with several tracks and venues. Event managers can create invitation forms for speakers and build schedules in a drag and drop interface. The event information is stored in a database. The system provides API endpoints to fetch the data, and to modify and update it. Organizers can import and export event data in a standard compressed file format that includes the event data in JSON and binary media files like images and audio.

The Open Event API Server exposes a well documented JSON:API Spec Compliant REST API that can be used by external services (like the Open Event App generators and the frontend) to access & manipulate the data.

API Documentation:

Communication

  • Please join our mailing list to discuss questions regarding the project.

https://groups.google.com/forum/#!forum/open-event

  • Our chat channel is on Gitter

gitter.im/fossasia/open-event-orga-server

Demo Version

A demo version is automatically deployed from our repositories:

Installation

The Open Event API Server can be easily deployed on a variety of platforms. Detailed platform specific installation instructions have been provided below.

  1. Generic Installation Instructions
  2. Local Installation
  3. Vagrant Installation
  4. Deployment on Google Compute Engine
  5. Deployment on Google Container Engine (Kubernetes)
  6. Deployment on AWS EC2
  7. Deployment on Digital Ocean
  8. Deployment with Docker
  9. Deployment on Heroku

The docs are outdated and will be updated for the nextgen version soon

One-click Heroku deployment is also available:

Deploy to Docker Cloud Deploy

Technology Stack

Please get familiar with the components of the project in order to be able to contribute.

Components

External Service Dependencies

OAuth Social Authentication

OAuth is used to get information from Facebook and Google accounts, that enables users to sign in with their respective credentials:

  1. Google - https://accounts.google.com/o/oauth2/auth
  2. Facebook - https://graph.facebook.com/oauth

Twitter

Twitter feed integration is provided in the public event pages.

Required keys can be obtained from https://dev.twitter.com/overview/documentation

Instagram

It is possible to extend the functionality and offer images from Instagram in the event service.

Required keys can be obtained from https://www.instagram.com/developer/authentication/.

Google Maps

Google maps is used to get information about location (info about country, city, latitude and longitude).

Required keys can be obtained from https://maps.googleapis.com/maps/api.

Media Storage - Local/Amazon S3/Google Cloud

Media (like audio, avatars and logos) can be stored either Locally or on Amazon S3 or on Google Storage.

  1. Amazon S3 Setup Instructions
  2. Google Cloud Setup Instructions

Emails - SMTP/Sendgrid

The server can send emails via SMTP or using the sendgrid API.

  1. SMTP can be configured directly at admin/settings
  2. Obtaining Sendgrid API Token.

Heroku API

If the application is deployed on Heroku, we use the heroku API to obtain the latest release and also to display the heroku.

Required token can be obtained from https://devcenter.heroku.com/articles/authentication.

Payment Gateways

For ticket sales the service integrates payment gateways:

  1. Stripe - Obtaining Keys.
  2. Paypal - Obtaining Credentials.

Data Access

Import & Export

Import:

Open Event API server supports multiple formats as a valid source for import.

  • A zip archive with JSON (matching the API structure) and binary media files. Read more about this here.
  • The Pentabarf XML format is also supported as a valid import source. (Sample file).

Export:

The event data and the sessions can be exported in various formats.

  • A zip archive with JSON (matching the API structure) and binary media files. Read more about this here.
  • The Pentabarf XML format. (Sample file).
  • The iCal format. (Sample file).
  • The xCal format. (Sample file).

Roles

The system has two kind of role type.

  1. System roles are related to the Open Event organization and operator of the application.
  2. Event Roles are related to the users of the system with their different permissions.

Read more here.

Development

Development Mode

To enable development mode (development Flask config), set APP_CONFIG environment variable to "config.DevelopmentConfig".

export APP_CONFIG=config.DevelopmentConfig

Model updates & migrations

When writing changes to models. Use migrations.

 # To generate a migration after doing a model update
 python manage.py db migrate

 # To sync Database
 python manage.py db upgrade

 # To rollback
 python manage.py db downgrade

When checking in code for models, please update migrations as well.

Testing

Clone the repo and set up the server according to the steps listed. Make sure you have installed all the dependencies required for testing by running

pip install -r requirements/tests.txt

Running unit tests

  • Open Event uses Postgres database for testing. So set DATABASE_URL as a postgres database. Here is an example.
export DATABASE_URL=postgresql://test_user:[email protected]:5432/opev_test
# format is postgresql://USERNAME:PASSWORD@ADDRESS/DATABASE_NAME
export APP_CONFIG=config.TestingConfig
  • Then go to the project directory and run the following command:
python -m unittest discover tests/unittests/
  • It will run each test one by one.

  • You can also use the following command to run tests using nosetests:

nosetests tests/unittests/

Running robot framework tests

  • Make sure you have FireFox installed
  • Start your local flask server instance.
  • Go to the project directory and Run the tests by using the following command.
robot -v SERVER:{server_name} -v SUPERUSER_USERNAME:{super_user_email_here} -v SUPERUSER_PASSWORD:{super_user_password} tests/robot

Change all the parameters inside {} as per your local server. The final command would look like:

robot -v SERVER:localhost:5000 -v SUPERUSER_USERNAME:[email protected] -v SUPERUSER_PASSWORD:test_password tests/robot
  • Once the tests are completed, a report and a log would be generated at report.html and log.html respectively in your root directory.

Logging

Certain information is being logged and stored in the database for future reference, resolving conflicts in case of hacks and for maintaining an overview of the system. Read more about logging here.

Internationalization (i18n)

Translation status

Open Event is being translated using Weblate, a web tool designed to ease translating for both developers and translators.

If you would like to contribute to translation of Open Event, you need to register on this server.

Once you have activated your account just proceed to the translation section.

Contributions, Bug Reports, Feature Requests

This is an Open Source project and we would be happy to see contributors who report bugs and file feature requests submitting pull requests as well. Please report issues here https://github.com/fossasia/open-event-orga-server/issues

Branch Policy

We have the following branches :

  • development All development goes on in this branch. If you're making a contribution, please make a pull request to development. PRs to must pass a build check and a unit-test check on Travis (https://open-event-dev.herokuapp.com - Is running off the development branch. It is hosted on Heroku.)
  • master This contains shipped code. After significant features/bug-fixes are accumulated on development, we make a version update, and make a release. (https://eventyay.com - Is running off the master branch. (whichever is the latest release.) Hosted on Google Cloud Platform (Google Container Engine + Kubernetes).)
  • nextgen All development for the nextgen version of the Open Event Orga Server (aka Open Event API Server) goes on in this branch. If you're making a contribution, please make a pull request to nextgen. PRs to must pass a build check and a unit-test check on Travis (https://open-event-api.herokuapp.com - Is running off the nextgen branch. It is hosted on Heroku.) (https://api.eventyay.com - Is running off the nextgen branch. Hosted on Google Cloud Platform (Google Container Engine + Kubernetes).)
  • gh-pages This contains the documentation website on http://dev.eventyay.com. The site is build automatically on each commit in the development branch through a script and using travis. It includes the md files of the Readme and /docs folder. It also includes javadocs.

Release Policy

The tentative release policy for now is, (since there is a lot of activity and a lot of bugs), an alpha release every monday and friday (since we see more activity on weekends). So, any bug-fixes will not be reflected at eventyay.com until a new release is made in the master branch.

Contributions Best Practices

Commits

  • Write clear meaningful git commit messages (Do read http://chris.beams.io/posts/git-commit/)
  • Make sure your PR's description contains GitHub's special keyword references that automatically close the related issue when the PR is merged. (More info at https://github.com/blog/1506-closing-issues-via-pull-requests )
  • When you make very very minor changes to a PR of yours (like for example fixing a failing travis build or some small style corrections or minor changes requested by reviewers) make sure you squash your commits afterwards so that you don't have an absurd number of commits for a very small fix. (Learn how to squash at https://davidwalsh.name/squash-commits-git )
  • When you're submitting a PR for a UI-related issue, it would be really awesome if you add a screenshot of your change or a link to a deployment where it can be tested out along with your PR. It makes it very easy for the reviewers and you'll also get reviews quicker.

Feature Requests and Bug Reports

  • When you file a feature request or when you are submitting a bug report to the issue tracker, make sure you add steps to reproduce it. Especially if that bug is some weird/rare one.

Join the development

  • Before you join development, please set up the system on your local machine and go through the application completely. Press on any link/button you can find and see where it leads to. Explore. (Don't worry ... Nothing will happen to the app or to you due to the exploring πŸ˜‰ Only thing that will happen is, you'll be more familiar with what is where and might even get some cool ideas on how to improve various aspects of the app.)
  • Test the application on your machine and explore the admin area. The test deployment on Heroku will not give you access to the admin section, where you can switch on/off modules, e.g. ticketing and add keys for services, e.g. storage on S3.
  • If you would like to work on an issue, drop in a comment at the issue. If it is already assigned to someone, but there is no sign of any work being done, please free to drop in a comment so that the issue can be assigned to you if the previous assignee has dropped it entirely.

License

This project is currently licensed under the GNU General Public License v3.

To obtain the software under a different license, please contact FOSSASIA.

More Repositories

1

bodyapps-viz

3D body visualizer component for #bodyapps project
JavaScript
1,501
star
2

open-spectrometer-hardware

Open source VIS spectrometer
Python
1,431
star
3

parliament-scraper

Public Data Scraper for Parliament Data for the EU and other Parliaments
Python
1,395
star
4

bodyapps-android

Bodyapps Measurement App
Java
1,394
star
5

ots15-companion

Opentech Event app
Java
1,384
star
6

libredesktop-meta

SoerenX-Plugin for Custom Search, Tiles, Snippets
1,383
star
7

mvisc

Mobile Visual Classification (MVISC) is a project to identify and classify animals.
HTML
1,377
star
8

opentechsummit.de

OpenTechSummit Germany https://opentechsummit.de
CSS
1,376
star
9

2015.opentechsummit.de

Website of OpenTechSummit 2015 http://2015.opentechsummit.de
CSS
1,375
star
10

opntec-artwork

OpnTec Artwork
HTML
1,373
star
11

2016.opentechsummit.de

Website of OpenTechSummit 2016 http://2016.opentechsummit.de
CSS
1,372
star
12

bodyapps-web

Web service and web application components of #bodyapps project
Ruby
1,371
star
13

open-spectrometer-python

Open Source Spectrometer Python Scripts
Python
1,369
star
14

2017.opentechsummit.de

OpenTechSummit 2017 http://2017.opentechsummit.de
CSS
1,369
star
15

2018.opentechsummit.de

OpenTechSummit 2018 http://2018.opentechsummit.de
CSS
1,369
star
16

open-event-android

Open Tech Events from around the world
Java
1,368
star
17

openxlab-artwork

OpenXlab Artwork
1,366
star
18

opentechsummit.eu

OpenTechSummit Europe https://opentechsummit.eu
Less
1,366
star
19

opentechsummit.in

OpenTechSummit India
HTML
1,365
star
20

hdf

human definition file format
1,363
star
21

parliament-scraper-artwork

Parliament Scraper Artwork
1,362
star
22

2015.opentechsummit.net

OpenTechSummit Meetups 2015 https://2015.opentechsummit.net
HTML
1,362
star
23

2019.opentechsummit.net

OpenTechSummit 2019 https://2019.opentechsummit.net
HTML
1,361
star
24

opentechsummit.net

OpenTechSummit https://opentechsummit.net
HTML
1,361
star
25

2020.opentechsummit.cn

OpenTechSummit Meetups 2010
HTML
1,361
star
26

thai.opentechsummit.asia

OpenTechSummit Thailand 2019 https://thai.opentechsummit.asia
CSS
1,360
star
27

2016.opentechsummit.net

OpenTechSummit Meetups 2016 https://2016.opentechsummit.net
HTML
1,357
star
28

2018.opentechsummit.net

OpenTechSummit 2018 http://2018.opentechsummit.net
HTML
1,357
star
29

2017.opentechsummit.net

OpenTechSummit Meetups 2017 https://2017.opentechsummit.net
HTML
1,355
star
30

opentechsummit.asia

OpenTechSummit Asia https://opentechsummit.asia
HTML
1,355
star
31

fashionmaker

Fashion Robot
1,331
star
32

2019.opentechsummit.de

OpenTechSummit 2019 https://2019.opentechsummit.de
Less
1,051
star
33

2018.opentechsummit.cn

OpenTechSummit 2018 https://2018.opentechsummit.cn
CSS
750
star
34

vn.opentechsummit.asia

https://vn.opentechsummit.asia
CSS
713
star
35

2022.opentechsummit.de

OpenTechSummit 2022 https://2022.opentechsummit.de
HTML
637
star
36

pycon.world

Pycon World Conference Series https://pycon.world
611
star
37

vietnam.pycon.world

HTML
597
star
38

singapore.pycon.world

HTML
596
star
39

srilanka.pycon.world

CSS
595
star
40

indochina.pycon.world

HTML
593
star
41

srilanka.opentech.asia

CSS
593
star
42

germany.pycon.world

HTML
592
star
43

china.pycon.world

HTML
590
star
44

opentech.asia

588
star
45

myanmar.opentech.asia

588
star
46

thaiday.opentech.asia

HTML
588
star
47

malaysia.opentech.asia

586
star
48

japan.opentech.asia

HTML
586
star
49

vietnam.opentech.asia

HTML
584
star
50

indochina.opentech.asia

HTML
583
star
51

devopssg.opentech.asia

HTML
583
star
52

cloudsg.opentech.asia

HTML
582
star
53

aisg.opentech.asia

HTML
582
star
54

delhiday.opentechsummit.in

HTML
581
star
55

south.opentechsummit.in

HTML
579
star
56

austria.opentechsummit.eu

HTML
579
star
57

thai.opentech.asia

HTML
578
star
58

2019.opentechsummit.cn

CSS
568
star
59

pycon.cn

Pycon China https://pycon.cn
536
star
60

kiku.ai

https://kiku.ai
HTML
457
star
61

opentechsummit.cn

OpenTechSummit China http://opentechsummit.cn
CSS
426
star
62

mbm.vn

HTML
398
star
63

libregraphics.asia

263
star
64

openxlab

HTML
193
star
65

2023.opentechsummit.de

HTML
19
star