Skip to content

Commit 6e00fac

Browse files
committed
lock again
1 parent c1b9bd9 commit 6e00fac

File tree

17 files changed

+185
-157
lines changed

17 files changed

+185
-157
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
NAME = "donor-reporting-portal"
2-
VERSION = __version__ = "2.3.0"
2+
VERSION = __version__ = "2.3.1"

src/donor_reporting_portal/apps/core/backends.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
from django.contrib.auth.backends import ModelBackend
22

3+
from anymail.backends.mailjet import EmailBackend as MailjetEmailBackend
4+
from unicef_notification.backends import EmailBackend as UNICEFEmailBackend
5+
36
from donor_reporting_portal.apps.report_metadata.models import Donor
47
from donor_reporting_portal.apps.roles.models import UserRole
58

@@ -33,3 +36,7 @@ def has_perm(self, user_obj, perm, context_obj):
3336
else:
3437
return set()
3538
return perm in {f"{app_label}.{perm_name}" for app_label, perm_name in perms}
39+
40+
41+
class EmailBackend(MailjetEmailBackend, UNICEFEmailBackend):
42+
pass
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from .cache import * # noqa
2+
from .celery import * # noqa
3+
from .cors import * # noqa
4+
from .drp import * # noqa
5+
from .email import * # noqa
6+
from .impersonate import * # noqa
7+
from .insight import * # noqa
8+
from .jwt import * # noqa
9+
from .logging import * # noqa
10+
from .matomo import * # noqa
11+
from .rest import * # noqa
12+
from .sentry import * # noqa
13+
from .social_auth import * # noqa
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from ..settings import env
2+
3+
CACHES = {
4+
"default": {
5+
"BACKEND": "redis_cache.RedisCache",
6+
"LOCATION": env("REDIS_URL", default="redis://localhost:6379/0"),
7+
}
8+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
from ..settings import env
2+
3+
CELERY_ACCEPT_CONTENT = ["pickle", "json", "application/text"]
4+
CELERY_BROKER_URL = env("REDIS_URL", default="redis://localhost:6379/0")
5+
CELERY_BROKER_VISIBILITY_VAR = env("CELERY_VISIBILITY_TIMEOUT", default=1800) # in seconds
6+
CELERY_BROKER_TRANSPORT_OPTIONS = {"visibility_timeout": int(CELERY_BROKER_VISIBILITY_VAR)}
7+
CELERY_RESULT_BACKEND = "django-db"
8+
CELERY_BEAT_SCHEDULER = "django_celery_beat.schedulers.DatabaseScheduler"
9+
# Sensible settings for celery
10+
CELERY_TASK_ALWAYS_EAGER = env("CELERY_TASK_ALWAYS_EAGER", default=False)
11+
CELERY_TASK_ACKS_LATE = True
12+
CELERY_TASK_PUBLISH_RETRY = True
13+
CELERY_WORKER_DISABLE_RATE_LIMITS = False
14+
CELERY_TASK_IGNORE_RESULT = True
15+
CELERY_SEND_TASK_ERROR_EMAILS = False
16+
CELERY_RESULT_EXPIRES = 600
17+
CELERY_WORKER_PREFETCH_MULTIPLIER = 1
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from ..settings import env
2+
3+
CORS_ORIGIN_ALLOW_ALL = env("CORS_ORIGIN_ALLOW_ALL", default=False)
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
from ..settings import env
2+
3+
DRP_SOURCE_IDS = {
4+
"internal": env("DRP_SOURCE_ID_INTERNAL", default=None),
5+
"external": env("DRP_SOURCE_ID_EXTERNAL", default=None),
6+
"pool_internal": env("DRP_SOURCE_ID_POOL_INTERNAL", default=None),
7+
"pool_external": env("DRP_SOURCE_ID_POOL_EXTERNAL", default=None),
8+
"thematic_internal": env("DRP_SOURCE_ID_THEMATIC_INTERNAL", default=None),
9+
"thematic_external": env("DRP_SOURCE_ID_THEMATIC_EXTERNAL", default=None),
10+
"gavi": env("DRP_SOURCE_ID_GAVI", default=None),
11+
"gavi_soa": env("DRP_SOURCE_ID_GAVI_SOA", default=None),
12+
}
13+
14+
GAVI_DONOR_CODE = "I49928"
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
from ..settings import env
2+
3+
DEFAULT_FROM_EMAIL = "[email protected]"
4+
EMAIL_BACKEND = "unicef_notification.backends.EmailBackend"
5+
# EMAIL_BACKEND = "donor_reporting_portal.apps.core.backends.EmailBackend"
6+
7+
EMAIL_HOST = env("EMAIL_HOST", default="")
8+
EMAIL_HOST_USER = env("EMAIL_HOST_USER", default="")
9+
EMAIL_HOST_PASSWORD = env("EMAIL_HOST_PASSWORD", default="")
10+
EMAIL_PORT = env("EMAIL_PORT", default=25)
11+
EMAIL_USE_TLS = env("EMAIL_USE_TLS", default=False)
12+
EMAIL_USE_SSL = env("EMAIL_USE_SSL", default=False)
13+
14+
ANYMAIL = {
15+
"MAILJET_API_KEY": env("MAILJET_API_KEY"),
16+
"MAILJET_SECRET_KEY": env("MAILJET_SECRET_KEY"),
17+
}
18+
19+
POST_OFFICE = {
20+
"DEFAULT_PRIORITY": "now",
21+
"BACKENDS": {"default": "djcelery_email.backends.CeleryEmailBackend"},
22+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
IMPERSONATE = {
2+
"PAGINATE_COUNT": 50,
3+
"REQUIRE_SUPERUSER": True,
4+
"CUSTOM_USER_QUERYSET": "donor_reporting_portal.libs.impersonate.queryset",
5+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from ..settings import env
2+
3+
INSIGHT_URL = env.str("INSIGHT_URL", "http://invalid_vision_url")
4+
INSIGHT_LOGGER_MODEL = "vision.VisionLog"
5+
INSIGHT_SUB_KEY = env.str("INSIGHT_SUB_KEY", "invalid_vision_password")
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import datetime
2+
3+
from ..settings import env
4+
5+
JWT_AUTH = {
6+
"JWT_VERIFY": False, # this requires private key
7+
"JWT_VERIFY_EXPIRATION": True,
8+
"JWT_LEEWAY": 60,
9+
"JWT_EXPIRATION_DELTA": datetime.timedelta(seconds=30000),
10+
"JWT_AUDIENCE": None,
11+
"JWT_ISSUER": None,
12+
"JWT_ALLOW_REFRESH": False,
13+
"JWT_REFRESH_EXPIRATION_DELTA": datetime.timedelta(days=7),
14+
"JWT_AUTH_HEADER_PREFIX": "JWT",
15+
"JWT_SECRET_KEY": env("SECRET_KEY"),
16+
"JWT_DECODE_HANDLER": "rest_framework_jwt.utils.jwt_decode_handler",
17+
# Keys will be set in core.apps.Config.ready()
18+
"JWT_PUBLIC_KEY": "?",
19+
# 'JWT_PRIVATE_KEY': wallet.get_private(),
20+
# 'JWT_PRIVATE_KEY': None,
21+
"JWT_ALGORITHM": "RS256",
22+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
LOGGING = {
2+
"version": 1,
3+
"disable_existing_loggers": False,
4+
"handlers": {
5+
"console": {"class": "logging.StreamHandler", "level": "INFO"},
6+
},
7+
"root": {
8+
"handlers": ["console"],
9+
"level": "WARNING",
10+
},
11+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
from ..settings import env
2+
3+
MATOMO_SITE_TRACKER = env("MATOMO_SITE_TRACKER", default="https://unisitetracker.unicef.io/")
4+
MATOMO_SITE_ID = env("MATOMO_SITE_ID", default=None)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
REST_FRAMEWORK = {
2+
"DEFAULT_PERMISSION_CLASSES": [
3+
"rest_framework.permissions.IsAuthenticated",
4+
],
5+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import sentry_sdk
2+
from sentry_sdk.integrations.celery import CeleryIntegration
3+
from sentry_sdk.integrations.django import DjangoIntegration
4+
5+
from ..settings import env
6+
7+
SENTRY_DSN = env("SENTRY_DSN", default=None) # noqa: F405
8+
9+
if SENTRY_DSN: # pragma: no cover
10+
sentry_sdk.init(
11+
dsn=SENTRY_DSN,
12+
# by default this is False, must be set to True so the library attaches the request data to the event
13+
send_default_pii=True,
14+
integrations=[DjangoIntegration(), CeleryIntegration()],
15+
)
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
from ..settings import env
2+
3+
KEY = SOCIAL_AUTH_KEY = env("AZURE_B2C_CLIENT_ID", default=None)
4+
SOCIAL_AUTH_SECRET = env("AZURE_B2C_CLIENT_SECRET", default=None)
5+
SOCIAL_AUTH_TENANT_NAME = env("TENANT_NAME", default="unicefpartners")
6+
SOCIAL_AUTH_TENANT_ID = f"{SOCIAL_AUTH_TENANT_NAME}.onmicrosoft.com"
7+
SOCIAL_AUTH_TENANT_B2C_URL = f"{SOCIAL_AUTH_TENANT_NAME}.b2clogin.com"
8+
9+
SOCIAL_AUTH_URL_NAMESPACE = "social"
10+
SOCIAL_AUTH_SANITIZE_REDIRECTS = False
11+
SOCIAL_AUTH_JSONFIELD_ENABLED = True
12+
SOCIAL_AUTH_POLICY = env("AZURE_B2C_POLICY_NAME", default="B2C_1_UNICEF_SOCIAL_signup_signin")
13+
SOCIAL_AUTH_USER_MODEL = "core.User"
14+
15+
SOCIAL_AUTH_PIPELINE = (
16+
"unicef_security.pipeline.social_details",
17+
"social_core.pipeline.social_auth.social_uid",
18+
"social_core.pipeline.social_auth.auth_allowed",
19+
"social_core.pipeline.social_auth.social_user",
20+
"social_core.pipeline.user.get_username",
21+
"social_core.pipeline.social_auth.associate_by_email",
22+
"unicef_security.pipeline.create_unicef_user",
23+
"social_core.pipeline.social_auth.associate_user",
24+
"social_core.pipeline.social_auth.load_extra_data",
25+
"social_core.pipeline.user.user_details",
26+
)
27+
28+
USER_FIELDS = ["username", "email", "first_name", "last_name"]
29+
USERNAME_IS_FULL_EMAIL = True

0 commit comments

Comments
 (0)