From cd8f6354fe27217016a6533f1748d1e4daca2f10 Mon Sep 17 00:00:00 2001 From: Stephan Porada Date: Tue, 18 Jun 2019 16:20:11 +0200 Subject: [PATCH] Add favicons and secret settings import. --- .gitignore | 2 ++ .../images/favicon/android-chrome-192x192.png | Bin 0 -> 8630 bytes .../images/favicon/android-chrome-512x512.png | Bin 0 -> 21173 bytes .../blog/images/favicon/apple-touch-icon.png | Bin 0 -> 7537 bytes .../blog/images/favicon/favicon-16x16.png | Bin 0 -> 467 bytes .../blog/images/favicon/favicon-32x32.png | Bin 0 -> 938 bytes .../static/blog/images/favicon/favicon.ico | Bin 0 -> 15406 bytes .../blog/images/favicon/site.webmanifest | 1 + app/blog/templates/blog/base.html | 4 +++ app/bundesdata_app/settings.py | 34 ++++++++++++++---- app/secrets_example.json | 5 +++ 11 files changed, 40 insertions(+), 6 deletions(-) create mode 100644 app/blog/static/blog/images/favicon/android-chrome-192x192.png create mode 100644 app/blog/static/blog/images/favicon/android-chrome-512x512.png create mode 100644 app/blog/static/blog/images/favicon/apple-touch-icon.png create mode 100644 app/blog/static/blog/images/favicon/favicon-16x16.png create mode 100644 app/blog/static/blog/images/favicon/favicon-32x32.png create mode 100644 app/blog/static/blog/images/favicon/favicon.ico create mode 100644 app/blog/static/blog/images/favicon/site.webmanifest create mode 100644 app/secrets_example.json diff --git a/.gitignore b/.gitignore index 81564fd..dc4957a 100755 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,5 @@ postgres_data/* static_volume/* !**/.gitkeep + +secrets.json diff --git a/app/blog/static/blog/images/favicon/android-chrome-192x192.png b/app/blog/static/blog/images/favicon/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..a2a04fb58de9ed960c6a85fde15f2b3927a91c08 GIT binary patch literal 8630 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 QypI9W)--rjsqPT-KeSMZtN;K2 literal 0 HcmV?d00001 diff --git a/app/blog/static/blog/images/favicon/android-chrome-512x512.png b/app/blog/static/blog/images/favicon/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..08799440d109122a61fab1da9a83089f70fe7f92 GIT binary patch literal 21173 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 M07*qoM6N<$g6EIO5C8xG literal 0 HcmV?d00001 diff --git a/app/blog/static/blog/images/favicon/favicon.ico b/app/blog/static/blog/images/favicon/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..3d370b1f582ba5cf942e04c297b40b600e7e1a86 GIT binary patch literal 15406 zcmeHOd2E!&6<;@L)v8z0L%se8s@gP)REdfzp%lDp2++{b(56XMXcJU5G;K;63Mt-$ zY=IC6kc0$MO1J_kl-u6J7Z?ly3sGIIN@&zYRoH3=?j?^u^j1gdOf zANE!8cwjAu0>K3O20RB<9K<=!HBYbx>hEdu<%uxlfn!>BW>0TxcZayzQX?u_YDGz7 zm6)BqLBqB5%pM`zDqHJB#+B1zO8TpUW0A6ApMw>7UfOexZ4h-G&EUr-)V4>!-@3xR zBERm6)+Xhw_96chQ|#jA&70z9DgX3=mt!k!suDAgyes4!5&mpVi6Gs79D7f=OFtC* zuI76AS9v3j1LbEmymEdCUyiXST|OqD&0N z1pGgL_}>C^py`#q&l_hQBKO8+Kl+s4+JX#muBKFLlRCLHcXw|~SGzWM*IMdCVck_R zTf@e=++P6Wsy25btByM zE8!!3(#{M+HKEcz#ac$}nET}fxAnIPPRly*o-@{Ey@6-9Rz1ISv^Ml%-&pBM_;{D? z`^oJwesDqjt%M;hRTsEU@U1Jawp0Wv-Mu}cw5eKbxo}Xk(Grh*27+tv?i9uK z<>I}f{o+>{i#3}s`;(TsHn~>WCh=Tos1V1iioKQJJA1k{*68b>+PBmPUm!U8@{XP^ z4W=1BXx@igd|*hEGSKW=pKXzN7UXR6=}X>zy?2Qy08SRY-wp=%^V9`m6UN_rvsd)= z_9710=*0^ew0UTor%Jg5!z0_DJ+w-r-__eKCb;chT%q7r=D9UE%5DPmOX5p#nx`UO zS}Wf};h~?GMV*6CaE!MY8?o3=ZtbTJ+K>Z$i6;gOh37YzcNXd+W3X`H*l%<30S(rL z7)-*EHfoK04@KWudP2hy?)*!hxJ+hyqf26WNZ2jnvx9&mw zcd4;bga4@En%{boaDntz;!ZriNrNxKnv~y2I}m-XV}L(|ot(DN3or46M}KoL`hN0% z=X{EI=D-TAPS08)Uc$OLT3P6Ye>7#j4-etcm-0XDFaNOhkFYGO^V1@xFZD0E+~yR-AMC(I!qm zIKVV_wQ2rpJ;px;`zn<-#_r>P$pgMESNja*Z_*-7wcP6Xi@e;*_*2T_R>t3whg-S- zkUUTyjL;M6YP7mYSmFp2Z%aC%o?M$;tHAZK?mzW>X?8Nm{=084J|z2ZJsCDdQam0@lMNRU+G*20ql6e2PJ&9j6*bScwgm_55?RfGo+9Rx?ISCF+686vKk*-CIuM*XbG0in5 zTYhZJvLh=#^kt;W@*T)>BWPElc1Oy$zCUrGR+}8wouhXpes`!wV07BQhMduC&}!22 zFj()v-HiD(8{PJAVjOXUHI^|+)=`kT1A5#!SiAe*$y{aAC&EJwVId@l2W!DIv;oBaGV;u+YfcS$o8tw7^y>TDCt-~4X>8v$h*2~OrD zm>*x2mm(fZ_0Or1N5qI*)OaaA#r8w!e3_nq<`;HeIwCd{W%^X+oOmu?*U{u14s+4W zFY>Ham3=6j%;WF6l&$3%4U67xa15Xkh`i4xcJ5>i_htw*=1x)k=Fw+`M~7d9v^v zX#2&(TFkBD)8mXp{!d{2mNi#v`02xDWv}z)-(@Mn8g{7kRQ|)EWyak-+6ES`iRn7q z9}EA}5YM*t#a5i-Y5QOIEs)$Ly@7DHA>OV>zJ~L;>(WugP;0du0Pki=c=ZXrZ{!(@NASLX;R}$n zwRNcdZ>QgoFVB7F_;TI$Bi8=5y3L`25s6Ne{h0^Gl{=^YcTgPr%)Tn0}Tq$%;(wA%TClX=*vc)p$rMrdZc&o{SDnv;>Ksp{yg_UKTVoz!ra@q zpT@l8qt-&MU5Hn3Kf_j+;II~=&4pNf{uqaKEawrq?=J#h% {% else %} Bundesdata {% endif %} + + + + diff --git a/app/bundesdata_app/settings.py b/app/bundesdata_app/settings.py index dce17b0..039b935 100755 --- a/app/bundesdata_app/settings.py +++ b/app/bundesdata_app/settings.py @@ -10,23 +10,43 @@ For the full list of settings and their values, see https://docs.djangoproject.com/en/2.1/ref/settings/ """ +import json import os +from django.core.exceptions import ImproperlyConfigured + # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +# Loads json files with secrets. Follow this example to create your own secrets +# file with SECRET_KEY and other information. +# Example https://stackoverflow.com/a/42077576 +with open(os.path.join(BASE_DIR, 'secrets.json')) as secrets_file: + secrets = json.load(secrets_file) + + +def get_secret(setting, secrets=secrets): + """Get secret setting or fail with ImproperlyConfigured""" + try: + return secrets[setting] + except KeyError: + raise ImproperlyConfigured("Set the {} setting".format(setting)) + + # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! -# This is just some random genearted key to test the App. If you want to set up your own running public version of this app replace this key with an new one that you will keep secret! -SECRET_KEY = '=7n(1!he%todz-)jo))$upf0(vor9v9ke5rn&fli%6l562!_=0' +# This is just some random genearted key to test the App. If you want to set up +# your own running public version of this app replace this key with an new one +# that you will keep secret! +SECRET_KEY = get_secret("SECRET_KEY") # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True -ALLOWED_HOSTS = ["127.0.0.1", "localhost"] +ALLOWED_HOSTS = ["127.0.0.1", "localhost", ] # Application definition @@ -82,13 +102,15 @@ WSGI_APPLICATION = 'bundesdata_app.wsgi.application' # Database # https://docs.djangoproject.com/en/2.1/ref/settings/#databases -# Changes NAME, USER and PASSWORD details before deploying your own public version of this app. +# Change NAME, USER and PASSWORD details before deploying your own public +# version of this app. Or use your onw secrets.json file. Explanation found can +# be foudn here: https://stackoverflow.com/a/42077576 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'databaseName', - 'USER': 'databaseUserName', - 'PASSWORD': 'totalSecurePassword', + 'USER': get_secret("DB_USER"), + 'PASSWORD': get_secret("DB_PASSWORD"), 'HOST': 'db', 'PORT': '5432', } diff --git a/app/secrets_example.json b/app/secrets_example.json new file mode 100644 index 0000000..6ac0e48 --- /dev/null +++ b/app/secrets_example.json @@ -0,0 +1,5 @@ +{ + "SECRET_KEY": "=7n(1!he%todz-)jo))$upf0(vor9v9ke5rn&fli%6l562!_=0", + "DB_PASSWORD": "v3ry53cr3t" + "DB_USER": "bundesdata_app_user" +}