Github: https://github.com/fossasia/open-event-server
オープンイベントサーバ
主催者は、Open Event Serverを使用してコンサートから会議やミートアップまでのイベントを管理できます。
いくつかのトラックと会場を持つイベントのための機能を提供しています。 イベントマネージャーは、スピーカー用の招待状を作成し、 ドラッグアンドドロップインターフェースでスケジュールを作成することができます。 イベント情報はデータベースに格納されます 。 システムは、データをフェッチし、それを修正および更新するAPIエンドポイントを提供します 。 オーガナイザーは、イベントデータをJSONのイベントデータと イメージやオーディオ などのバイナリーメディアファイルを含む標準の圧縮ファイル形式でインポートおよびエクスポートできます 。
Open Event Serverは、外部サービス(Open Event Appジェネレータやフロントエンドなど)がデータにアクセスして操作するために使用できるJSON:API仕様準拠のREST API
を公開しています。
APIドキュメント:
- プロジェクトのすべてのインストールにはAPIドキュメントが含まれています (例:テストインストールの場合https://open-event-api.herokuapp.com )。
- APIドキュメントのホスト版は、 http://dev.eventyay.com/api/v1のリポジトリの
gh-pages
ブランチから入手できます
コミュニケーション
- 私たちのメーリングリストに参加して、プロジェクトに関する質問を話し合ってください。
- 私たちのチャットチャンネルはGitterにあります
デモ版
デモ版は、私たちのリポジトリから自動的に展開されます:
-
master
ブランチからの展開 – open-event-api.herokuapp.com -
development
ブランチからのdevelopment
– open-event-api-dev.herokuapp.com
インストール
Open Event Serverは、さまざまなプラットフォームに簡単に展開できます。 以下に、プラットフォーム固有のインストール手順の詳細を示します。
- 一般的なインストール手順
- ローカルインストール
- バグのインストール
- Google Compute Engineでの展開
- Google Container Engine(Kubernetes)への導入
- AWS EC2上に配置
- デジタルオーシャンへの展開
- Dockerによるデプロイメント
- ヘロクでの展開
ワンクリックでHerokuを展開することもできます:
テクノロジースタック
貢献できるようにするには、プロジェクトの構成要素に精通してください。
コンポーネント
- データベース – PostgreSQL
- Webフレームワーク – Flask
- アプリケーションサーバー – uWSGI
- Webサーバー – NGINX
open-event-serverは現時点ではPython 2.7で動作することに注意してください。
外部サービスの依存関係
OAuthソーシャル認証
OAuthはFacebookやGoogleアカウントから情報を取得するために使用され、ユーザーはそれぞれの資格情報でサインインできます。
- Google – https://accounts.google.com/o/oauth2/auth
- Facebook – https://graph.facebook.com/oauth
Twitterフィードの統合は公開イベントのページで提供されています。
必要なキーはhttps://dev.twitter.com/overview/documentationから入手できます。
インスタグラム
機能を拡張し、イベントサービスでInstagramから画像を提供することは可能です。
必須キーはhttps://www.instagram.com/developer/authentication/から入手できます 。
グーグルマップ
Googleマップは、場所に関する情報(国、都市、緯度、経度に関する情報)を取得するために使用されます。
必要なキーはhttps://maps.googleapis.com/maps/apiから入手できます 。
メディアストレージ – ローカル/ Amazon S3 / Google Cloud
メディア(オーディオ、アバター、ロゴなど)は、ローカルまたはAmazon S3またはGoogle Storageに保存できます。
電子メール – SMTP / Sendgrid
サーバーは、SMTP経由またはsendgrid APIを使用して電子メールを送信できます。
- SMTPは
admin/settings
直接設定できadmin/settings
- Sendgrid APIトークンの取得。
Heroku API
アプリケーションがHerokuにデプロイされている場合は、heroku APIを使用して最新リリースを入手し、herokuを表示します。
必要なトークンはhttps://devcenter.heroku.com/articles/authenticationから入手できます 。
支払いゲートウェイ
チケット販売の場合、サービスは支払いゲートウェイを統合します。
- ストライプ – キーの取得 。
- Paypal – クレデンシャルの取得 。
データアクセス
インポート・エクスポート
インポート:
オープンイベントサーバは、インポートの有効なソースとして複数のフォーマットをサポートしています。
- JSON(API構造と一致)とバイナリメディアファイルを含むzipアーカイブ 。 詳しくはこちらをご覧ください 。
- Pentabarf XML形式も有効なインポート元としてサポートされています。 ( サンプルファイル )。
輸出する:
イベントデータとセッションはさまざまな形式でエクスポートできます。
- JSON(API構造と一致)とバイナリメディアファイルを含むzipアーカイブ 。 詳しくはこちらをご覧ください 。
- Pentabarf XML形式です。 ( サンプルファイル )。
- iCal形式。 ( サンプルファイル )。
- xCal形式。 ( サンプルファイル )。
ロール
システムには2種類の役割タイプがあります。
- システムロールは、Open Eventの組織とアプリケーションのオペレータに関連しています。
- イベントロールは、異なる権限を持つシステムのユーザーに関連しています。
開発
開発モード
開発モード(Flaskの開発)を有効にするには、 APP_CONFIG
環境変数を “config.DevelopmentConfig”に設定します。
export APP_CONFIG=config.DevelopmentConfig
モデルの更新と移行
モデルに変更を書き込むとき。 移行を使用します。
# To generate a migration after doing a model update
python3 manage.py db migrate
# To sync Database
python3 manage.py db upgrade
# To rollback
python3 manage.py db downgrade
モデルのコードをチェックインする際にも、マイグレーションを更新してください。
テスト
レポをクローンし、リストされている手順に従ってサーバーをセットアップします。 実行することによってテストに必要なすべての依存関係がインストールされていることを確認してください
pip3 install -r requirements/tests.txt
ユニットテストの実行
- Open Eventは、テストのためにPostgresデータベースを使用します。 したがって、
DATABASE_URL
をpostgresデータベースとして設定してください。 ここに例があります。
export DATABASE_URL=postgresql://test_user:test@127.0.0.1:5432/opev_test
# format is postgresql://USERNAME:PASSWORD@ADDRESS/DATABASE_NAME
export APP_CONFIG=config.TestingConfig
- 次に、プロジェクトディレクトリに移動して、次のコマンドを実行します。
python3 -m unittest discover tests/unittests/
-
各テストは1つずつ実行されます。
-
nosetestsを使用してテストを実行するには、次のコマンドを使用することもできます。
nosetests tests/unittests/
ロボットフレームワークテストの実行
- FireFoxがインストールされていることを確認する
- ローカルフラスコサーバーインスタンスを起動します。
- プロジェクトディレクトリに移動し、次のコマンドを使用してテストを実行します。
robot -v SERVER:{server_name} -v SUPERUSER_USERNAME:{super_user_email_here} -v SUPERUSER_PASSWORD:{super_user_password} tests/robot
ローカルサーバーごとに{}
内のすべてのパラメータを変更します。 最後のコマンドは次のようになります。
robot -v SERVER:localhost:5000 -v SUPERUSER_USERNAME:test@opev.net -v SUPERUSER_PASSWORD:test_password tests/robot
- テストが完了すると、ルートディレクトリの
report.html
とlog.html
それぞれレポートとログが生成されます。
ロギング
特定の情報は、後で参照するためにログに記録され、データベースに格納され、ハックの場合の競合を解決し、システムの概要を維持します。 ここでロギングの詳細をお読みください 。
国際化(i18n)
オープンイベントは、Weblateを使用して翻訳されています。Weblateは、開発者と翻訳者の両方の翻訳を容易にするために設計されたWebツールです。
Open Eventの翻訳に貢献したい場合は、このサーバーに登録する必要があります 。
アカウントを有効にしたら、 翻訳セクションに進みます。
投稿、バグレポート、機能リクエスト
これはオープンソースプロジェクトであり、バグを報告したり、プルリクエストを提出した機能要求を提出した貢献者を見ることができます。 問題はこちらから報告してください。https://github.com/fossasia/open-event-server/issues
支店ポリシー
私たちは以下の枝を持っています:
- 開発このブランチではすべての開発が進んでいます。 あなたが貢献しているのなら、 開発にプルリクエストをしてください。 PRは、Travis( https://open-event-api.herokuapp.com – 開発拠点を走っています。これはHerokuでホストされています)( https:// api .eventyay.com – Google Cloud Platform(Google Container Engine + Kubernetes)でホストされている
development
ブランチから実行中です。 - master出荷されたコードが含まれています。 重要な機能/バグフィックスが開発に蓄積された後、バージョンのアップデートを行い、リリースを行います。 ( https://eventyay.com – マスターブランチから実行されています(いずれか最新のリリース)。Google Cloud Platform(Google Container Engine + Kubernetes)でホストされています。
- gh-pagesこれにはhttp://dev.eventyay.comのドキュメンテーションWebサイトが含まれています 。 このサイトは、開発ブランチの各コミット時に、スクリプトとtravisを使用して自動的に構築されます。 Readmeファイルと/ docsフォルダのmdファイルが含まれています。 また、javadocも含まれています。
リリースポリシー
現在の暫定リリースポリシーは、(多くのアクティビティとバグがあるため)毎週および金曜日にアルファ版がリリースされています(週末にもっと活動が見られるため)。 したがって、マスターブランチで新しいリリースが作成されるまで、バグフィックスはeventyay.comに反映されません。
貢献ベストプラクティス
コミット
- 意味のあるgit commitメッセージを書く( http://chris.beams.io/posts/git-commit/を読んでください )
- あなたのPRの記述に、PRがマージされたときに自動的に関連する問題を閉じるGitHubの特別なキーワード参照が含まれていることを確認してください。 (詳細はhttps://github.com/blog/1506-closing-issues-via-pull-requestsをご覧ください )
- あなたがあなたのPRに非常に小さな変更を加えたとき(例えば、失敗したトラビスビルドやいくつかの小さなスタイルの修正やレビューアによって要求されたマイナーな変更を修正する場合など)、あなたはあいまいな番号を持たないように、非常に小さな修正のためのコミットの。 (スカッシュの方法については、 https: //davidwalsh.name/squashcommcomm-gitをご覧ください )
- UI関連の問題のためにPRを提出しているときは、変更のスクリーンショットや、PRと一緒にテストすることができる展開へのリンクを追加すると本当に素晴らしいでしょう。 それは査読者にとって非常に簡単になり、レビューもより迅速になります。
機能要求とバグレポート
- 機能要求を提出するとき、またはバグレポートを課題トラッカーに提出するときには、それを再現するための手順を追加してください。 特にそのバグが奇妙な/珍しいものである場合。
開発に参加する
- 開発に参加する前に、ローカルマシン上にシステムをセットアップし、アプリケーションを完全に実行してください。 あなたが見つけることができ、それがどこにつながるかを見ることができる任意のリンク/ボタンを押してください。 探検する。 (心配しないでください…探検のためにアプリやあなたに何も起こりません
😉 起こることは、アプリのさまざまな側面を改善する方法について、どこにあるのか、さらにはクールなアイデアを得ることさえあるかも知れません。 - マシン上のアプリケーションをテストし、管理領域を調べてください。 Herokuのテストデプロイメントでは、管理セクションにアクセスすることはできません。モジュールのオン/オフを切り替えることができます(例えば、S3のストレージなど)。
- 問題に取り組む場合は、問題のコメントを記入してください。 すでに誰かに割り当てられているが、作業の兆候がない場合は、前の譲受人がそれを完全に削除した場合に問題を割り当てることができるように、コメントをドロップしてください。
ライセンス
このプロジェクトは現在、 GNU General Public License v3のライセンスを受けています 。
別のライセンスでソフトウェアを入手するには、 FOSSASIAにお問い合わせください 。