From 03553926756f1101a7d40d7041cc1b8c38738afb Mon Sep 17 00:00:00 2001 From: Matthew Grove Date: Thu, 5 Jan 2023 23:43:31 +0000 Subject: [PATCH] [FEAT] Move a lot of content/settings to Constance They can now be changed in the Django admin interface --- breccia_mapper/settings.py | 113 +++++++++++++++++++----- breccia_mapper/static/media/400x400.png | Bin 0 -> 1307 bytes breccia_mapper/static/media/800x500.png | Bin 0 -> 2776 bytes breccia_mapper/templates/base.html | 6 +- breccia_mapper/templates/index.html | 60 +++++++++---- breccia_mapper/urls.py | 2 + people/forms.py | 7 +- people/views/organisation.py | 9 +- requirements.txt | 1 + 9 files changed, 149 insertions(+), 49 deletions(-) create mode 100644 breccia_mapper/static/media/400x400.png create mode 100644 breccia_mapper/static/media/800x500.png diff --git a/breccia_mapper/settings.py b/breccia_mapper/settings.py index 8bab638..4980d41 100644 --- a/breccia_mapper/settings.py +++ b/breccia_mapper/settings.py @@ -16,18 +16,6 @@ https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/ Many configuration settings are input from `settings.ini`. The most likely required settings are: SECRET_KEY, DEBUG, ALLOWED_HOSTS, DATABASE_URL, PROJECT_*_NAME, EMAIL_* -- PARENT_PROJECT_NAME - default: Parent Project Name - Displayed in templates where the name of the parent project should be used - -- PROJECT_LONG_NAME - default: Project Long Name - Displayed in templates where the full name of the project should be used - -- PROJECT_SHORT_NAME - default: shortname - Displayed in templates where a short identifier for the project should be used - - SECRET_KEY (REQUIRED) Used to generate CSRF tokens - must never be made public @@ -118,16 +106,9 @@ import dj_database_url SETTINGS_EXPORT = [ 'DEBUG', - 'PARENT_PROJECT_NAME', - 'PROJECT_LONG_NAME', - 'PROJECT_SHORT_NAME', 'GOOGLE_MAPS_API_KEY', ] -PARENT_PROJECT_NAME = config('PARENT_PROJECT_NAME', - default='Parent Project Name') -PROJECT_LONG_NAME = config('PROJECT_LONG_NAME', default='Project Long Name') -PROJECT_SHORT_NAME = config('PROJECT_SHORT_NAME', default='shortname') # Build paths inside the project like this: BASE_DIR.joinpath(...) BASE_DIR = pathlib.Path(__file__).parent.parent @@ -297,6 +278,10 @@ STATIC_ROOT = BASE_DIR.joinpath('static') STATICFILES_DIRS = [BASE_DIR.joinpath('breccia_mapper', 'static')] +# Media uploads +MEDIA_ROOT = BASE_DIR.joinpath('breccia_mapper', 'static', 'media') +MEDIA_URL = "/static/media/" + # Logging - NB the logger name is empty to capture all output LOGGING = { @@ -340,6 +325,10 @@ logger = logging.getLogger(__name__) # pylint: disable=invalid-name # Admin panel variables +CONSTANCE_ADDITIONAL_FIELDS = { + 'image_field': ['django.forms.ImageField', {}] +} + CONSTANCE_CONFIG = { 'NOTICE_TEXT': ( '', @@ -359,17 +348,95 @@ CONSTANCE_CONFIG = { 'RELATIONSHIP_FORM_HELP': ( '', 'Help text to display at the top of relationship forms.'), + 'PARENT_PROJECT_NAME': ( + '', + 'Parent project name'), + 'PROJECT_LONG_NAME': ( + 'Project Long Name', + 'Project long name'), + 'PROJECT_SHORT_NAME': ( + 'Short Name', + 'Project short name'), + 'PROJECT_LEAD': ( + 'John Doe', + 'Project lead'), + 'PROJECT_TAGLINE': ( + 'Here is your project\'s tagline.', + 'Project tagline'), + 'HOMEPAGE_HEADER_IMAGE': ( + '800x500.png', + 'Homepage header image', + 'image_field'), + 'HOMEPAGE_CARD_1_TITLE': ( + 'Step 1', + 'Homepage card #1 title'), + 'HOMEPAGE_CARD_1_DESCRIPTION': ( + 'Tell us about your position within the project', + 'Homepage card #1 description'), + 'HOMEPAGE_CARD_1_ICON': ( + 'building-user', + 'Homepage card #1 icon'), + 'HOMEPAGE_CARD_2_TITLE': ( + 'Step 2', + 'Homepage card #2 title'), + 'HOMEPAGE_CARD_2_DESCRIPTION': ( + 'Describe your relationships with other stakeholders', + 'Homepage card #2 description'), + 'HOMEPAGE_CARD_2_ICON': ( + 'handshake-simple', + 'Homepage card #2 icon'), + 'HOMEPAGE_CARD_3_TITLE': ( + 'Step 3', + 'Homepage card #3 title'), + 'HOMEPAGE_CARD_3_DESCRIPTION': ( + 'Use the network view to build new relationships', + 'Homepage card #3 description'), + 'HOMEPAGE_CARD_3_ICON': ( + 'diagram-project', + 'Homepage card #3 icon'), + 'HOMEPAGE_ABOUT_TITLE': ( + 'About Us', + 'Homepage about section title'), + 'HOMEPAGE_ABOUT_CONTENT': ( + """Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. In massa tempor nec feugiat nisl. Eget dolor morbi non arcu risus quis varius quam quisque. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Vitae auctor eu augue ut lectus arcu. Tellus molestie nunc non blandit massa enim nec. At consectetur lorem donec massa sapien. Placerat orci nulla pellentesque dignissim enim sit. Sit amet mauris commodo quis imperdiet. Tellus at urna condimentum mattis pellentesque.
In vitae turpis massa sed. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Ut consequat semper viverra nam libero justo laoreet. Velit ut tortor pretium viverra suspendisse potenti nullam ac tortor. Nunc id cursus metus aliquam eleifend mi in nulla posuere. Aliquam eleifend mi in nulla posuere sollicitudin aliquam. Est ante in nibh mauris cursus mattis molestie a iaculis. Nunc id cursus metus aliquam. Auctor urna nunc id cursus metus aliquam. Porttitor lacus luctus accumsan tortor posuere ac ut consequat semper. Volutpat consequat mauris nunc congue nisi. Leo vel fringilla est ullamcorper eget. Vitae purus faucibus ornare suspendisse sed nisi lacus sed. Massa id neque aliquam vestibulum morbi blandit. Iaculis nunc sed augue lacus viverra vitae congue. Sodales neque sodales ut etiam.""", + 'Homepage about section content'), + 'HOMEPAGE_ABOUT_IMAGE': ( + '400x400.png', + 'Homepage about section image', + 'image_field'), } # yapf: disable CONSTANCE_CONFIG_FIELDSETS = { - 'Notice Banner': ( + 'Project options': ( + 'PARENT_PROJECT_NAME', + 'PROJECT_LONG_NAME', + 'PROJECT_SHORT_NAME', + 'PROJECT_LEAD', + 'PROJECT_TAGLINE', + ), + 'Homepage configuration': ( + 'HOMEPAGE_HEADER_IMAGE', + 'HOMEPAGE_CARD_1_TITLE', + 'HOMEPAGE_CARD_1_DESCRIPTION', + 'HOMEPAGE_CARD_1_ICON', + 'HOMEPAGE_CARD_2_TITLE', + 'HOMEPAGE_CARD_2_DESCRIPTION', + 'HOMEPAGE_CARD_2_ICON', + 'HOMEPAGE_CARD_3_TITLE', + 'HOMEPAGE_CARD_3_DESCRIPTION', + 'HOMEPAGE_CARD_3_ICON', + 'HOMEPAGE_ABOUT_TITLE', + 'HOMEPAGE_ABOUT_CONTENT', + 'HOMEPAGE_ABOUT_IMAGE', + ), + 'Notice banner': ( 'NOTICE_TEXT', 'NOTICE_CLASS', ), - 'Data Collection': ( + 'Data Ccollection': ( 'CONSENT_TEXT', ), - 'Help Text': ( + 'Help text': ( 'PERSON_LIST_HELP', 'ORGANISATION_LIST_HELP', 'RELATIONSHIP_FORM_HELP', @@ -396,7 +463,7 @@ BOOTSTRAP4 = { EMAIL_HOST = config('EMAIL_HOST', default=None) DEFAULT_FROM_EMAIL = config( 'DEFAULT_FROM_EMAIL', - default=f'{PROJECT_SHORT_NAME}@localhost.localdomain') + default=f'{CONSTANCE_CONFIG["PROJECT_SHORT_NAME"][0]}@localhost.localdomain') SERVER_EMAIL = DEFAULT_FROM_EMAIL if EMAIL_HOST is None: diff --git a/breccia_mapper/static/media/400x400.png b/breccia_mapper/static/media/400x400.png new file mode 100644 index 0000000000000000000000000000000000000000..86686275c6f7af94753c34f0b16834564bec4727 GIT binary patch literal 1307 zcmbVKX;Tsi0HsOo@JORwJU3Ib)x>M5T`_5BQSqcuDH3a2bV=9nmc(=orj^u28ds78 zodPfL$d#l-ZE_y-L|^{0DyT2 z5`hK)w$Z=RX#19ve)I6=me`#Pj}DZ{WDEv_#bWVzJh52Z+SGHY%u0`)p{U!e{^lcm~q@LpzUi)YyI>(Dr8 zK}Y17Og0jkY4c$3>|nmmpYU5x_(k(L0g3W?%|!#W=jw$4lOV)a!T-R<{(qJ@C=`Dt zubP!yh4EXw5eqKy(I1K_j;WDWtt;+mFxc@9M@5O&6$3VTYCO~lOKnV7+k%wvN}ozL zPb@RG>1c7#Mq{(C(66ryvTu{?l6<^-vtu+Xsp*&VH$g>ZEJ24$H za{Xis@@nFt5B}y4Qkv;~PG!HuwW2{7t66 z;0H`2>#E-?W~_hvC3Ezb^8qDg?#>SN{%|#S0aL5G{fa9$PNbhgCvYQ{9f@*P61`WF z>rLp24;p5{kevMl4p(w9%@Ic1HFr8>DodvGIHw_>RkwQ|9|%WJJs)Y#vz!o`H~>1yIJuFD>a&&p_oP3JBbZmj8)tC+<^10F@ry*4Hv=NU+P<*xK~@p=N4u$q90#c zu(qQnYwuaOU{;BP8El5 zB-eS>cWerhS3)d>_9;r3k!oY)im+J9uU&Shj#O(6HsvhoD$uR+Dwv!yzzWOnjO%~$*!A{ThdZAPBd~WZ2a-HaY*A7 z-j)k>7(IX-TMiU@O8SMJ+a*C&e7Uc7*chmSJ-?ms&Q3z2}>JScv;pnRy zP$ReYVxF}}%7RHNb$ssQmrU&MZHimXygBOzWh?=#vU1ZZd!3#Bc*!iKW#1L$tz;$c zq0VAXKeKXc=>h#re|u-`r=WPBf$tE#G+dK*I(-6nQP@$0N0hzGhM%jRpc076(H*b<(_5niL0Vp{C ZX}?2K4-nhhp#C~eNMIzQ`NS`je*t-DXfyx- literal 0 HcmV?d00001 diff --git a/breccia_mapper/static/media/800x500.png b/breccia_mapper/static/media/800x500.png new file mode 100644 index 0000000000000000000000000000000000000000..af408ed07511c9656da41b633a3adef94a7d6efe GIT binary patch literal 2776 zcmc&$i8mYA9?m>7lva7Q4G~J)r$wcvMhsF@Vry${g4&l#5rU=?OUtNQTOA0xTP!*wQqGB8R-rw-vJ?EZ#?!Di+zvcVR@BWf)t8)@byQb!xIP^e*JI(+TMVhG8l~P?CgSq0uqTtr_<}}>q|>ZTUuIZG+JWR z-RFle(GZJU7y#g8_tE?zOXDOE01)%Bgk6P)7jUQhF;ltq)VZ>4ujM)(a4Z8Hbe&ymKwryEHnLC%VafgY%0}a- zLreeH@ei2}gW~%KYdxJF1H*ETslKIkjc+08j&)82@Lwd5nk2>~@NAaeac#3-{W(rcR} zc!AU5Q|b=Ilz3gI=qA?}*t9XTYe`2I{B{>PSOVFl=`Qf(bVD4dN>WNyR&5lR$2dNw zhRkglH^c!Wy{1EDoBlkdDx)?Ad`jD&iNPoyRInC+#E)zuDE^`*EXAAD;UtKAv5ovU z4i?9MTgh1UZ{+_(C%W^}H@`j(UO2S^v8T@FzT}L%7(hwCS`P=J3`~cLGSQ48-2kh| zun3Xm7&=)JS3x+UBD}e|QNFeB9(gs&MagRomNf%J)ha0 z%&^?#8?F3Vgr|Y}cLcA>FE_SC{%K`^`HQfhspkdiP=6GQEVCo3U6^s?Q;}H`=Iw+pn&NQlSAiM=}byW;x8pw#8C>3TEH6O zRLczpBjt#>uF`ao$7*3IpRnb~56qgFCCxsT*$nN}m2U!O|D$vg%9GImOXfUJsU_;6 zr!K4be!^|ZzmEMpY+;d80y#0bs^?AHvY1v3W@4s))ty!~Uv`sabzL(r-(JPswR0)o zno;*g|G}R3&PkQ)>eiWgAoWayu!A(~Ge|k3LRu;>Uj<_Lx0`!;l2(Iat8I6tyK^}z zZphTWat-o~jES!efw5LQ_+->od!+&0^e$_XlSh%25q(*4E8iu$wVZVhjjM$_5~Os7FMHijYUKqEQh@d)6-Gh z`#L;0ibJwa%N`asg%0B6uuK$G+5XB} zOuILjxU#PM*F+j9bca;31zTzmqrnw}h3tJRJgzj)nre9HeXt5+7t*--;!<8rT}Z~H z{j$gf`rcL3*J|#~M*=mu*^b>9tr3g^!OoOzrQP#XJG54Z9eOrHo;+Bz)R>lez+lfg z*iRKF(=B-k$Uh?ko3PQJ<|a*T5By4ZW(0`Vgv0b0$RYN`v$UL1Eq)8S?d+N|ekkZ7 zio6=@Xu?&uXgm5P!e>bd380xNl(OHju7A}*UFXW)`86)ro~w#b#NBTsTR$um-KqO{ ziL{d_(XPDEKL%p9&Fr9HZvduNj+p?>RNy(0+Fvur_)D0vo<5u^QWm%Ln<%B$G_)OSB< zZ6#j8eF4?}$k3zmdM19~f7|N|1y_@hU$Gmr>pL$h?^;m6uajMli^T0_ExSnftsZElzta!n!1@*zqlEML>jaQ(;!SYAzJ?%Hu`#QJBV^E@hQ zTRklIpicw{jg}UDspOvf=<7;iDEO9J2EG?Bv25B^tW;aBzobtS3{Rw~`0(muh`Z3U zk#&<%NrJoAjFq~a%;9UoRmu+AXgio&%myF7#0c~|^~*OnxmS{Gcupl)Pm zq*k^v#wzFQ!3g++{Mpf)2g1)I4n{fv0g;I|dxz~M01%_!A*4FAqVsBNwDf3iX=)9t IHTHb?H - {{ settings.PROJECT_LONG_NAME }} + {{ config.PROJECT_LONG_NAME }} {% bootstrap_css %} @@ -58,7 +58,7 @@