GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

fossasia

open-event-server – イベントを管理するためのOpen Event Organizerサーバー

投稿日:

イベントを管理するためのOpen Event Organizerサーバー http://open-event-api.herokuapp.com/

オープンイベントサーバ

主催者は、Open Event Serverを使用してコンサートから会議やミートアップまでのイベントを管理できます。

いくつかのトラックと会場を持つイベントのための機能を提供しています。 イベントマネージャーは、スピーカー用の招待状を作成し、 ドラッグアンドドロップインターフェースでスケジュールを作成することができます。 イベント情報はデータベースに格納されます システムは、データをフェッチし、それを修正および更新するAPIエンドポイントを提供します オーガナイザーは、イベントデータをJSONのイベントデータ イメージやオーディオ などのバイナリーメディアファイルを含む標準の圧縮ファイル形式でインポートおよびエクスポートできます

Open Event Serverは、外部サービス(Open Event Appジェネレータやフロントエンドなど)がデータにアクセスして操作するために使用できるJSON:API仕様準拠のREST API公開しています。

APIドキュメント:

コミュニケーション

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

gitter.im/fossasia/open-event-server

デモ版

デモ版は、私たちのリポジトリから自動的に展開されます:

インストール

Open Event Serverは、さまざまなプラットフォームに簡単に展開できます。 以下に、プラットフォーム固有のインストール手順の詳細を示します。

  1. 一般的なインストール手順
  2. ローカルインストール
  3. バグのインストール
  4. Google Compute Engineでの展開
  5. Google Container Engine(Kubernetes)への導入
  6. AWS EC2上に配置
  7. デジタルオーシャンへの展開
  8. Dockerによるデプロイメント
  9. ヘロクでの展開

ワンクリックでHerokuを展開することもできます:

テクノロジースタック

貢献できるようにするには、プロジェクトの構成要素に精通してください。

コンポーネント

  • データベース – PostgreSQL
  • Webフレームワーク – Flask
  • アプリケーションサーバー – uWSGI
  • Webサーバー – NGINX

open-event-serverは現時点ではPython 2.7動作することに注意してください。

外部サービスの依存関係

OAuthソーシャル認証

OAuthはFacebookやGoogleアカウントから情報を取得するために使用され、ユーザーはそれぞれの資格情報でサインインできます。

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

Twitter

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に保存できます。

  1. Amazon S3セットアップ手順
  2. Google Cloud設定手順

電子メール – SMTP / Sendgrid

サーバーは、SMTP経由またはsendgrid APIを使用して電子メールを送信できます。

  1. SMTPはadmin/settings直接設定できadmin/settings
  2. Sendgrid APIトークンの取得。

Heroku API

アプリケーションがHerokuにデプロイされている場合は、heroku APIを使用して最新リリースを入手し、herokuを表示します。

必要なトークンはhttps://devcenter.heroku.com/articles/authenticationから入手できます

支払いゲートウェイ

チケット販売の場合、サービスは支払いゲートウェイを統合します。

  1. ストライプ – キーの取得
  2. Paypal – クレデンシャルの取得

データアクセス

インポート・エクスポート

インポート:

オープンイベントサーバは、インポートの有効なソースとして複数のフォーマットをサポートしています。

  • JSON(API構造と一致)とバイナリメディアファイルを含むzipアーカイブ 詳しくはこちらをご覧ください
  • Pentabarf XML形式も有効なインポート元としてサポートされています。 サンプルファイル )。

輸出する:

イベントデータとセッションはさまざまな形式でエクスポートできます。

ロール

システムには2種類の役割タイプがあります。

  1. システムロールは、Open Eventの組織とアプリケーションのオペレータに関連しています。
  2. イベントロールは、異なる権限を持つシステムのユーザーに関連しています。

詳細はこちらをご覧ください

開発

開発モード

開発モード(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.htmllog.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にお問い合わせください







-fossasia

執筆者: