From 8498303006f8bd3a8aec3780f1f4d0583421459b Mon Sep 17 00:00:00 2001 From: Sonny Bakker Date: Sun, 25 Apr 2021 20:26:43 +0200 Subject: [PATCH] 0.3.13.6 --- CHANGELOG.md | 4 ++++ docker/django | 2 +- gitlab-ci/test.yml | 2 +- package.json | 2 +- pyproject.toml | 2 +- src/newsreader/conf/base.py | 24 +++++++++++++++++++++-- src/newsreader/conf/dev.py | 11 +++++++++++ src/newsreader/conf/docker.py | 12 ++++++++++++ src/newsreader/conf/gitlab.py | 15 ++++++++++++++ src/newsreader/conf/production.py | 20 +++++++++---------- src/newsreader/conf/sentry.py | 0 src/newsreader/conf/version.py | 11 ++++++++++- src/newsreader/news/collection/twitter.py | 4 +++- 13 files changed, 90 insertions(+), 19 deletions(-) create mode 100644 src/newsreader/conf/sentry.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c20312..6af3de9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 0.3.13.6 + +- Try to load sentry by default for all environments + ## 0.3.13.5 - Set response keyword argument diff --git a/docker/django b/docker/django index 871828a..5b9b7e0 100644 --- a/docker/django +++ b/docker/django @@ -5,6 +5,6 @@ RUN pip install poetry WORKDIR /app COPY poetry.lock pyproject.toml /app/ -RUN poetry config virtualenvs.create false && poetry install --no-interaction +RUN poetry config virtualenvs.create false && poetry install --no-interaction --extras sentry COPY . /app/ diff --git a/gitlab-ci/test.yml b/gitlab-ci/test.yml index 3114a87..4716c59 100644 --- a/gitlab-ci/test.yml +++ b/gitlab-ci/test.yml @@ -9,7 +9,7 @@ python-tests: - pip install poetry --quiet - poetry config cache-dir .cache/poetry - poetry config virtualenvs.in-project true - - poetry install --no-interaction --quiet + - poetry install --no-interaction --quiet --extras sentry script: - poetry run coverage run src/manage.py test newsreader - poetry run coverage report diff --git a/package.json b/package.json index a2e593c..451e92a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "newsreader", - "version": "0.3.13.5", + "version": "0.3.13.6", "description": "Application for viewing RSS feeds", "main": "index.js", "scripts": { diff --git a/pyproject.toml b/pyproject.toml index 4f6dce8..700c6e3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "newsreader" -version = "0.3.13.5" +version = "0.3.13.6" description = "Webapplication for reading RSS feeds" authors = ["Sonny "] license = "GPL-3.0" diff --git a/src/newsreader/conf/base.py b/src/newsreader/conf/base.py index 51dfe67..cd51218 100644 --- a/src/newsreader/conf/base.py +++ b/src/newsreader/conf/base.py @@ -2,7 +2,17 @@ import os from pathlib import Path -from .version import get_current_version +from dotenv import load_dotenv + + +load_dotenv() + +try: + from sentry_sdk.integrations.celery import CeleryIntegration + from sentry_sdk.integrations.django import DjangoIntegration +except ImportError: + CeleryIntegration = None + DjangoIntegration = None BASE_DIR = Path(__file__).resolve().parent.parent.parent.parent @@ -199,7 +209,7 @@ STATICFILES_FINDERS = [ EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend" # Project settings -VERSION = get_current_version() +ENVIRONMENT = "development" # Reddit integration REDDIT_CLIENT_ID = "CLIENT_ID" @@ -246,3 +256,13 @@ CELERY_WORKER_HIJACK_ROOT_LOGGER = False REGISTRATION_OPEN = True REGISTRATION_AUTO_LOGIN = True ACCOUNT_ACTIVATION_DAYS = 7 + +# Sentry +SENTRY_CONFIG = { + "dsn": os.environ.get("SENTRY_DSN"), + "send_default_pii": False, + "environment": ENVIRONMENT, + "integrations": [DjangoIntegration(), CeleryIntegration()] + if DjangoIntegration and CeleryIntegration + else [], +} diff --git a/src/newsreader/conf/dev.py b/src/newsreader/conf/dev.py index 8186db7..9372350 100644 --- a/src/newsreader/conf/dev.py +++ b/src/newsreader/conf/dev.py @@ -1,4 +1,5 @@ from .base import * # isort:skip +from .version import get_current_version SECRET_KEY = "mv4&5#+)-=abz3^&1r^nk_ca6y54--p(4n4cg%z*g&rb64j%wl" @@ -9,11 +10,21 @@ EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend" INSTALLED_APPS += ["debug_toolbar", "django_extensions"] +# Project settings +VERSION = get_current_version() + # Third party settings AXES_FAILURE_LIMIT = 50 AXES_COOLOFF_TIME = None try: from .local import * # noqa + + # Optionally use sentry integration + from sentry_sdk import init as sentry_init + + SENTRY_CONFIG.update({"release": VERSION}) + + sentry_init(**SENTRY_CONFIG) except ImportError: pass diff --git a/src/newsreader/conf/docker.py b/src/newsreader/conf/docker.py index f5665fa..9b62961 100644 --- a/src/newsreader/conf/docker.py +++ b/src/newsreader/conf/docker.py @@ -1,4 +1,5 @@ from .base import * # isort:skip +from .version import get_current_version SECRET_KEY = "=q(ztyo)b6noom#a164g&s9vcj1aawa^g#ing_ir99=_zl4g&$" @@ -30,6 +31,10 @@ CACHES = { }, } +# Project settings +VERSION = get_current_version() +ENVIRONMENT = "docker" + # Third party settings # Axes AXES_FAILURE_LIMIT = 50 @@ -41,5 +46,12 @@ CELERY_BROKER_URL = "amqp://guest:guest@rabbitmq:5672//" try: from .local import * # noqa + + # Optionally use sentry integration + from sentry_sdk import init as sentry_init + + SENTRY_CONFIG.update({"release": VERSION, "environment": ENVIRONMENT}) + + sentry_init(**SENTRY_CONFIG) except ImportError: pass diff --git a/src/newsreader/conf/gitlab.py b/src/newsreader/conf/gitlab.py index 67a20dd..1b06ba9 100644 --- a/src/newsreader/conf/gitlab.py +++ b/src/newsreader/conf/gitlab.py @@ -1,4 +1,5 @@ from .base import * # isort:skip +from .version import get_current_version SECRET_KEY = "29%lkw+&n%^w4k#@_db2mo%*tc&xzb)x7xuq*(0$eucii%4r0c" @@ -17,3 +18,17 @@ CACHES = { "LOCATION": "memcached:11211", }, } + +# Project settings +VERSION = get_current_version() +ENVIRONMENT = "gitlab" + +try: + # Optionally use sentry integration + from sentry_sdk import init as sentry_init + + SENTRY_CONFIG.update({"release": VERSION, "environment": ENVIRONMENT}) + + sentry_init(**SENTRY_CONFIG) +except ImportError: + pass diff --git a/src/newsreader/conf/production.py b/src/newsreader/conf/production.py index b25fe09..c58f93a 100644 --- a/src/newsreader/conf/production.py +++ b/src/newsreader/conf/production.py @@ -1,13 +1,10 @@ import os -from dotenv import load_dotenv +from .version import get_current_version from .base import * # isort:skip - -load_dotenv() - DEBUG = False ALLOWED_HOSTS = ["rss.fudiggity.nl"] @@ -58,6 +55,10 @@ EMAIL_HOST_PASSWORD = os.environ.get("EMAIL_HOST_PASSWORD", "") EMAIL_USE_TLS = bool(os.environ.get("EMAIL_USE_TLS")) EMAIL_USE_SSL = bool(os.environ.get("EMAIL_USE_SSL")) +# Project settings +VERSION = get_current_version(debug=False) +ENVIRONMENT = "production" + # Reddit integration REDDIT_CLIENT_ID = os.environ.get("REDDIT_CLIENT_ID", "") REDDIT_CLIENT_SECRET = os.environ.get("REDDIT_CLIENT_SECRET", "") @@ -76,14 +77,11 @@ REGISTRATION_OPEN = False # Optionally use sentry integration try: from sentry_sdk import init as sentry_init - from sentry_sdk.integrations.celery import CeleryIntegration - from sentry_sdk.integrations.django import DjangoIntegration - sentry_init( - dsn=os.environ.get("SENTRY_DSN"), - integrations=[DjangoIntegration(), CeleryIntegration()], - send_default_pii=False, - release=VERSION, + SENTRY_CONFIG.update( + {"release": VERSION, "environment": ENVIRONMENT, "debug": False} ) + + sentry_init(**SENTRY_CONFIG) except ImportError: pass diff --git a/src/newsreader/conf/sentry.py b/src/newsreader/conf/sentry.py new file mode 100644 index 0000000..e69de29 diff --git a/src/newsreader/conf/version.py b/src/newsreader/conf/version.py index f8b4c8d..873c45b 100644 --- a/src/newsreader/conf/version.py +++ b/src/newsreader/conf/version.py @@ -2,10 +2,19 @@ import os import subprocess -def get_current_version(): +def get_current_version(debug=True): if "VERSION" in os.environ: return os.environ["VERSION"] + if debug: + try: + output = subprocess.check_output( + ["git", "show", "--no-patch", "--format=%H"], universal_newlines=True + ) + return output.strip() + except (subprocess.CalledProcessError, OSError): + return "" + try: output = subprocess.check_output( ["git", "describe", "--tags"], universal_newlines=True diff --git a/src/newsreader/news/collection/twitter.py b/src/newsreader/news/collection/twitter.py index 2c488d1..57cfe6c 100644 --- a/src/newsreader/news/collection/twitter.py +++ b/src/newsreader/news/collection/twitter.py @@ -242,7 +242,9 @@ class TwitterClient(PostClient): import sentry_sdk with sentry_sdk.push_scope() as scope: - scope.set_extra("content", e.response.content) + scope.set_extra( + "content", e.response.content if e.response else None + ) sentry_sdk.capture_message( "Twitter authentication credentials reset" )