Skip to content
This repository was archived by the owner on Dec 8, 2022. It is now read-only.
2 changes: 2 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,3 +50,5 @@ jobs:
run: eb deploy ${{ env.EB_ENV_NAME }}
- name: Deploy Worker
run: eb deploy CodeChallenge-worker
- name: Deploy Testing
run: eb deploy CodeChallenge-Testing
29 changes: 29 additions & 0 deletions .run/Backend.run.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Backend" type="Python.FlaskServer">
<option name="application" value="application" />
<option name="flaskDebug" value="true" />
<module name="code-challenge" />
<option name="target" value="application" />
<option name="targetType" value="PYTHON" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<option name="SDK_HOME" value="C:\Users\minic\.virtualenvs\code-challenge-jkXXyclf\Scripts\python.exe" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<EXTENSION ID="net.ashald.envfile">
<option name="IS_ENABLED" value="false" />
<option name="IS_SUBST" value="false" />
<option name="IS_PATH_MACRO_SUPPORTED" value="false" />
<option name="IS_IGNORE_MISSING_FILES" value="false" />
<option name="IS_ENABLE_EXPERIMENTAL_INTEGRATIONS" value="false" />
<ENTRIES>
<ENTRY IS_ENABLED="true" PARSER="runconfig" />
</ENTRIES>
</EXTENSION>
<option name="launchJavascriptDebuger" value="false" />
<method v="2" />
</configuration>
</component>
5 changes: 5 additions & 0 deletions .run/Frontend Debugger.run.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Frontend Debugger" type="JavascriptDebugType" uri="http://localhost:8080/">
<method v="2" />
</configuration>
</component>
37 changes: 37 additions & 0 deletions .run/flask db run-import.run.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="flask db run-import" type="PythonConfigurationType" factoryName="Python">
<module name="code-challenge" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
<env name="FLASK_DEBUG" value="1" />
<env name="FLASK_ENV" value="development" />
<env name="FLASK_APP" value="application.py" />
</envs>
<option name="SDK_HOME" value="C:\Users\minic\.virtualenvs\code-challenge-jkXXyclf\Scripts\python.exe" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<EXTENSION ID="net.ashald.envfile">
<option name="IS_ENABLED" value="false" />
<option name="IS_SUBST" value="false" />
<option name="IS_PATH_MACRO_SUPPORTED" value="false" />
<option name="IS_IGNORE_MISSING_FILES" value="false" />
<option name="IS_ENABLE_EXPERIMENTAL_INTEGRATIONS" value="false" />
<ENTRIES>
<ENTRY IS_ENABLED="true" PARSER="runconfig" />
</ENTRIES>
</EXTENSION>
<option name="SCRIPT_NAME" value="flask" />
<option name="PARAMETERS" value="db run-import 1235" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="true" />
<option name="REDIRECT_INPUT" value="false" />
<option name="INPUT_FILE" value="" />
<method v="2" />
</configuration>
</component>
37 changes: 37 additions & 0 deletions .run/flask q sync.run.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="flask q sync" type="PythonConfigurationType" factoryName="Python">
<module name="code-challenge" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
<env name="FLASK_DEBUG" value="1" />
<env name="FLASK_ENV" value="development" />
<env name="FLASK_APP" value="application.py" />
</envs>
<option name="SDK_HOME" value="C:\Users\minic\.virtualenvs\code-challenge-jkXXyclf\Scripts\python.exe" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<EXTENSION ID="net.ashald.envfile">
<option name="IS_ENABLED" value="false" />
<option name="IS_SUBST" value="false" />
<option name="IS_PATH_MACRO_SUPPORTED" value="false" />
<option name="IS_IGNORE_MISSING_FILES" value="false" />
<option name="IS_ENABLE_EXPERIMENTAL_INTEGRATIONS" value="false" />
<ENTRIES>
<ENTRY IS_ENABLED="true" PARSER="runconfig" />
</ENTRIES>
</EXTENSION>
<option name="SCRIPT_NAME" value="flask" />
<option name="PARAMETERS" value="q sync" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="true" />
<option name="REDIRECT_INPUT" value="false" />
<option name="INPUT_FILE" value="" />
<method v="2" />
</configuration>
</component>
2 changes: 1 addition & 1 deletion .run/pytest in code-challenge.run.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="pytest in code-challenge" type="tests" factoryName="py.test" nameIsGenerated="true">
<configuration default="false" name="pytest" type="tests" factoryName="py.test">
<module name="code-challenge" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
Expand Down
12 changes: 5 additions & 7 deletions CodeChallenge/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

import sentry_sdk
from flask import Flask, jsonify, make_response, send_from_directory, redirect

# from flask_cors import CORS
from sentry_sdk.integrations.flask import FlaskIntegration
from werkzeug.middleware.proxy_fix import ProxyFix
Expand Down Expand Up @@ -35,10 +36,7 @@ def create_app(config):
"""Initialize the core application."""
sentry_dsn = os.getenv("SENTRY_DSN")
if sentry_dsn:
sentry_sdk.init(
dsn=sentry_dsn,
integrations=[FlaskIntegration()]
)
sentry_sdk.init(dsn=sentry_dsn, integrations=[FlaskIntegration()])

app = Flask(__name__)

Expand Down Expand Up @@ -72,9 +70,9 @@ def create_app(config):
@app.errorhandler(429)
def ratelimit_handler(e):
return make_response(
jsonify(
status="error",
reason=f"rate limit exceeded ({e.description})"), 429)
jsonify(status="error", reason=f"rate limit exceeded ({e.description})"),
429,
)

"""
@app.route("/", defaults={"path": ""})
Expand Down
21 changes: 12 additions & 9 deletions CodeChallenge/api/eb.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,19 +25,22 @@ def worker():
except (TypeError, KeyError):
return "", 400

if not compare_digest(password,
current_app.config["WORKER_PASSWORD"]):
if not compare_digest(password, current_app.config["WORKER_PASSWORD"]):
return "", 401

# send daily reminder emails only while challenge is active, up until the first day of the final challenge
if 1 <= core.day_number() <= core.max_rank():
msg = Message("New code challenge question is unlocked!",
sender=current_app.config["MAIL_DEFAULT_SENDER"],
recipients=[current_app.config["MG_LIST"]])

msg.html = render_template("challenge_daily_email.html",
name="%recipient_fname%",
external_url=current_app.config["EXTERNAL_URL"])
msg = Message(
"New code challenge question is unlocked!",
sender=current_app.config["MAIL_DEFAULT_SENDER"],
recipients=[current_app.config["MG_LIST"]],
)

msg.html = render_template(
"challenge_daily_email.html",
name="%recipient_fname%",
external_url=current_app.config["EXTERNAL_URL"],
)
msg.extra_headers = {"List-Unsubscribe": "%unsubscribe_email%"}

mail.send(msg)
Expand Down
Loading