From 16190d5f154ac55e973196769c93d9c181391c5b Mon Sep 17 00:00:00 2001 From: Amir Date: Sun, 15 Sep 2024 04:36:27 +0200 Subject: [PATCH] Adding carousel --- db.sqlite3 | Bin 1187840 -> 1241088 bytes .../__pycache__/wagtail_hooks.cpython-310.pyc | Bin 1718 -> 1718 bytes .../images/amazon-webservices.max-165x165.svg | 42 +++++++++++++ media/images/angular-js.max-165x165.svg | 24 ++++++++ media/images/docker.max-165x165.svg | 31 ++++++++++ media/images/elastic.max-165x165.svg | 27 +++++++++ media/images/es6.max-165x165.svg | 25 ++++++++ media/images/html-5.max-165x165.svg | 26 +++++++++ media/images/jenkins.max-165x165.svg | 37 ++++++++++++ media/images/mongodb.max-165x165.svg | 22 +++++++ media/images/mysql.max-165x165.svg | 20 +++++++ media/images/nodejs.max-165x165.svg | 26 +++++++++ media/images/postgresql.max-165x165.svg | 28 +++++++++ media/images/python.max-165x165.svg | 20 +++++++ media/images/rails.max-165x165.svg | 32 ++++++++++ media/images/react.max-165x165.svg | 21 +++++++ media/images/redis.max-165x165.svg | 35 +++++++++++ media/images/ruby.max-165x165.svg | 25 ++++++++ media/original_images/amazon-webservices.svg | 45 ++++++++++++++ media/original_images/angular-js.svg | 29 +++++++++ media/original_images/docker.svg | 36 ++++++++++++ media/original_images/elastic.svg | 37 ++++++++++++ media/original_images/es6.svg | 29 +++++++++ media/original_images/html-5.svg | 29 +++++++++ media/original_images/jenkins.svg | 55 ++++++++++++++++++ media/original_images/mongodb.svg | 25 ++++++++ media/original_images/mysql.svg | 32 ++++++++++ media/original_images/nodejs.svg | 33 +++++++++++ media/original_images/postgresql.svg | 47 +++++++++++++++ media/original_images/python.svg | 27 +++++++++ media/original_images/rails.svg | 35 +++++++++++ media/original_images/react.svg | 27 +++++++++ media/original_images/redis.svg | 39 +++++++++++++ media/original_images/ruby.svg | 28 +++++++++ services/__pycache__/models.cpython-310.pyc | Bin 2140 -> 2769 bytes .../migrations/0003_blogpagerelatedlink.py | 30 ++++++++++ ...logpagerelatedlink_servicespagecarousel.py | 18 ++++++ ...cespagecarousel_carousel_image_and_more.py | 23 ++++++++ .../__pycache__/0001_initial.cpython-310.pyc | Bin 1640 -> 1640 bytes ..._section_five_img_and_more.cpython-310.pyc | Bin 1979 -> 1979 bytes .../0003_blogpagerelatedlink.cpython-310.pyc | Bin 0 -> 1284 bytes ...dlink_servicespagecarousel.cpython-310.pyc | Bin 0 -> 630 bytes ...el_carousel_image_and_more.cpython-310.pyc | Bin 0 -> 707 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 151 -> 151 bytes services/models.py | 26 ++++++++- static/css/style.css | 40 ++++++++++++- templates/base.html | 7 ++- templates/footer.html | 3 +- templates/services/services_page.html | 21 ++++++- 49 files changed, 1152 insertions(+), 10 deletions(-) create mode 100644 media/images/amazon-webservices.max-165x165.svg create mode 100644 media/images/angular-js.max-165x165.svg create mode 100644 media/images/docker.max-165x165.svg create mode 100644 media/images/elastic.max-165x165.svg create mode 100644 media/images/es6.max-165x165.svg create mode 100644 media/images/html-5.max-165x165.svg create mode 100644 media/images/jenkins.max-165x165.svg create mode 100644 media/images/mongodb.max-165x165.svg create mode 100644 media/images/mysql.max-165x165.svg create mode 100644 media/images/nodejs.max-165x165.svg create mode 100644 media/images/postgresql.max-165x165.svg create mode 100644 media/images/python.max-165x165.svg create mode 100644 media/images/rails.max-165x165.svg create mode 100644 media/images/react.max-165x165.svg create mode 100644 media/images/redis.max-165x165.svg create mode 100644 media/images/ruby.max-165x165.svg create mode 100644 media/original_images/amazon-webservices.svg create mode 100644 media/original_images/angular-js.svg create mode 100644 media/original_images/docker.svg create mode 100644 media/original_images/elastic.svg create mode 100644 media/original_images/es6.svg create mode 100644 media/original_images/html-5.svg create mode 100644 media/original_images/jenkins.svg create mode 100644 media/original_images/mongodb.svg create mode 100644 media/original_images/mysql.svg create mode 100644 media/original_images/nodejs.svg create mode 100644 media/original_images/postgresql.svg create mode 100644 media/original_images/python.svg create mode 100644 media/original_images/rails.svg create mode 100644 media/original_images/react.svg create mode 100644 media/original_images/redis.svg create mode 100644 media/original_images/ruby.svg create mode 100644 services/migrations/0003_blogpagerelatedlink.py create mode 100644 services/migrations/0004_rename_blogpagerelatedlink_servicespagecarousel.py create mode 100644 services/migrations/0005_rename_carouse_image_servicespagecarousel_carousel_image_and_more.py create mode 100644 services/migrations/__pycache__/0003_blogpagerelatedlink.cpython-310.pyc create mode 100644 services/migrations/__pycache__/0004_rename_blogpagerelatedlink_servicespagecarousel.cpython-310.pyc create mode 100644 services/migrations/__pycache__/0005_rename_carouse_image_servicespagecarousel_carousel_image_and_more.cpython-310.pyc diff --git a/db.sqlite3 b/db.sqlite3 index a26858dae8bf6a231341fce4b467bbd62ef4fb15..fb9be89466b647311a6bbe5636e749448b92a0b7 100644 GIT binary patch delta 21738 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 Y6#okPxsC$l?c@Jb&~NeoRM79g0Yh3XQ2+n{ delta 4500 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 delta 20 acmdnSyN#DSpO=@50SIbtJlx2=nhgLq4h6>m diff --git a/media/images/amazon-webservices.max-165x165.svg b/media/images/amazon-webservices.max-165x165.svg new file mode 100644 index 00000000..b3e8e4fe --- /dev/null +++ b/media/images/amazon-webservices.max-165x165.svg @@ -0,0 +1,42 @@ + + +Amazon_Webservice +Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/media/images/angular-js.max-165x165.svg b/media/images/angular-js.max-165x165.svg new file mode 100644 index 00000000..0fff03b8 --- /dev/null +++ b/media/images/angular-js.max-165x165.svg @@ -0,0 +1,24 @@ + + +Angular_js +Created with Sketch. + + + + + + + + + + + + + + \ No newline at end of file diff --git a/media/images/docker.max-165x165.svg b/media/images/docker.max-165x165.svg new file mode 100644 index 00000000..da469a59 --- /dev/null +++ b/media/images/docker.max-165x165.svg @@ -0,0 +1,31 @@ + + +Docker +Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/media/images/elastic.max-165x165.svg b/media/images/elastic.max-165x165.svg new file mode 100644 index 00000000..95e7797f --- /dev/null +++ b/media/images/elastic.max-165x165.svg @@ -0,0 +1,27 @@ + + +Elastic +Created with Sketch. + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/media/images/es6.max-165x165.svg b/media/images/es6.max-165x165.svg new file mode 100644 index 00000000..057d21e2 --- /dev/null +++ b/media/images/es6.max-165x165.svg @@ -0,0 +1,25 @@ + + +ES6 +Created with Sketch. + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/media/images/html-5.max-165x165.svg b/media/images/html-5.max-165x165.svg new file mode 100644 index 00000000..d3070b2a --- /dev/null +++ b/media/images/html-5.max-165x165.svg @@ -0,0 +1,26 @@ + + +HTML_5 +Created with Sketch. + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/media/images/jenkins.max-165x165.svg b/media/images/jenkins.max-165x165.svg new file mode 100644 index 00000000..0ee703ea --- /dev/null +++ b/media/images/jenkins.max-165x165.svg @@ -0,0 +1,37 @@ + + +Jenkins +Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/media/images/mongodb.max-165x165.svg b/media/images/mongodb.max-165x165.svg new file mode 100644 index 00000000..3c45bea1 --- /dev/null +++ b/media/images/mongodb.max-165x165.svg @@ -0,0 +1,22 @@ + + +Mongo_DB +Created with Sketch. + + + + + + + + + + + + + \ No newline at end of file diff --git a/media/images/mysql.max-165x165.svg b/media/images/mysql.max-165x165.svg new file mode 100644 index 00000000..b1e955a4 --- /dev/null +++ b/media/images/mysql.max-165x165.svg @@ -0,0 +1,20 @@ + + +My_SQL +Created with Sketch. + + + + + + + + + + + + \ No newline at end of file diff --git a/media/images/nodejs.max-165x165.svg b/media/images/nodejs.max-165x165.svg new file mode 100644 index 00000000..604d5890 --- /dev/null +++ b/media/images/nodejs.max-165x165.svg @@ -0,0 +1,26 @@ + + +Node_js +Created with Sketch. + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/media/images/postgresql.max-165x165.svg b/media/images/postgresql.max-165x165.svg new file mode 100644 index 00000000..4eafd9dd --- /dev/null +++ b/media/images/postgresql.max-165x165.svg @@ -0,0 +1,28 @@ + + +Postrgresql +Created with Sketch. + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/media/images/python.max-165x165.svg b/media/images/python.max-165x165.svg new file mode 100644 index 00000000..8e225aab --- /dev/null +++ b/media/images/python.max-165x165.svg @@ -0,0 +1,20 @@ + + +Python +Created with Sketch. + + + + + + + + + + + + \ No newline at end of file diff --git a/media/images/rails.max-165x165.svg b/media/images/rails.max-165x165.svg new file mode 100644 index 00000000..ee18879b --- /dev/null +++ b/media/images/rails.max-165x165.svg @@ -0,0 +1,32 @@ + + +Rails +Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/media/images/react.max-165x165.svg b/media/images/react.max-165x165.svg new file mode 100644 index 00000000..386b3fd6 --- /dev/null +++ b/media/images/react.max-165x165.svg @@ -0,0 +1,21 @@ + + +React +Created with Sketch. + + + + + + + + + + + + + + \ No newline at end of file diff --git a/media/images/redis.max-165x165.svg b/media/images/redis.max-165x165.svg new file mode 100644 index 00000000..3d2f666f --- /dev/null +++ b/media/images/redis.max-165x165.svg @@ -0,0 +1,35 @@ + + +Redis +Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/media/images/ruby.max-165x165.svg b/media/images/ruby.max-165x165.svg new file mode 100644 index 00000000..a99c8a47 --- /dev/null +++ b/media/images/ruby.max-165x165.svg @@ -0,0 +1,25 @@ + + +Ruby +Created with Sketch. + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/media/original_images/amazon-webservices.svg b/media/original_images/amazon-webservices.svg new file mode 100644 index 00000000..32a2c558 --- /dev/null +++ b/media/original_images/amazon-webservices.svg @@ -0,0 +1,45 @@ + + + + +Amazon_Webservice +Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/media/original_images/angular-js.svg b/media/original_images/angular-js.svg new file mode 100644 index 00000000..e0a9d8a9 --- /dev/null +++ b/media/original_images/angular-js.svg @@ -0,0 +1,29 @@ + + + + +Angular_js +Created with Sketch. + + + + + + + + + + + + + + diff --git a/media/original_images/docker.svg b/media/original_images/docker.svg new file mode 100644 index 00000000..824f7325 --- /dev/null +++ b/media/original_images/docker.svg @@ -0,0 +1,36 @@ + + + + +Docker +Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + diff --git a/media/original_images/elastic.svg b/media/original_images/elastic.svg new file mode 100644 index 00000000..3143b12f --- /dev/null +++ b/media/original_images/elastic.svg @@ -0,0 +1,37 @@ + + + + +Elastic +Created with Sketch. + + + + + + + + + + + + + + + + + + + diff --git a/media/original_images/es6.svg b/media/original_images/es6.svg new file mode 100644 index 00000000..a41543fb --- /dev/null +++ b/media/original_images/es6.svg @@ -0,0 +1,29 @@ + + + + +ES6 +Created with Sketch. + + + + + + + + + + + + + + + diff --git a/media/original_images/html-5.svg b/media/original_images/html-5.svg new file mode 100644 index 00000000..f4ba11b5 --- /dev/null +++ b/media/original_images/html-5.svg @@ -0,0 +1,29 @@ + + + + +HTML_5 +Created with Sketch. + + + + + + + + + + + + + + + + diff --git a/media/original_images/jenkins.svg b/media/original_images/jenkins.svg new file mode 100644 index 00000000..7c62a296 --- /dev/null +++ b/media/original_images/jenkins.svg @@ -0,0 +1,55 @@ + + + + +Jenkins +Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/media/original_images/mongodb.svg b/media/original_images/mongodb.svg new file mode 100644 index 00000000..f8145241 --- /dev/null +++ b/media/original_images/mongodb.svg @@ -0,0 +1,25 @@ + + + + +Mongo_DB +Created with Sketch. + + + + + + + + + + + + + diff --git a/media/original_images/mysql.svg b/media/original_images/mysql.svg new file mode 100644 index 00000000..15638b16 --- /dev/null +++ b/media/original_images/mysql.svg @@ -0,0 +1,32 @@ + + + + +My_SQL +Created with Sketch. + + + + + + + + + + + + diff --git a/media/original_images/nodejs.svg b/media/original_images/nodejs.svg new file mode 100644 index 00000000..e8986603 --- /dev/null +++ b/media/original_images/nodejs.svg @@ -0,0 +1,33 @@ + + + + +Node_js +Created with Sketch. + + + + + + + + + + + + + + + + + diff --git a/media/original_images/postgresql.svg b/media/original_images/postgresql.svg new file mode 100644 index 00000000..6794bc6c --- /dev/null +++ b/media/original_images/postgresql.svg @@ -0,0 +1,47 @@ + + + + +Postrgresql +Created with Sketch. + + + + + + + + + + + + + + + + + + + diff --git a/media/original_images/python.svg b/media/original_images/python.svg new file mode 100644 index 00000000..5b789c10 --- /dev/null +++ b/media/original_images/python.svg @@ -0,0 +1,27 @@ + + + + +Python +Created with Sketch. + + + + + + + + + + + + diff --git a/media/original_images/rails.svg b/media/original_images/rails.svg new file mode 100644 index 00000000..34edcc98 --- /dev/null +++ b/media/original_images/rails.svg @@ -0,0 +1,35 @@ + + + + +Rails +Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + diff --git a/media/original_images/react.svg b/media/original_images/react.svg new file mode 100644 index 00000000..2d551c41 --- /dev/null +++ b/media/original_images/react.svg @@ -0,0 +1,27 @@ + + + + +React +Created with Sketch. + + + + + + + + + + + + + + diff --git a/media/original_images/redis.svg b/media/original_images/redis.svg new file mode 100644 index 00000000..43c6b40e --- /dev/null +++ b/media/original_images/redis.svg @@ -0,0 +1,39 @@ + + + + +Redis +Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/media/original_images/ruby.svg b/media/original_images/ruby.svg new file mode 100644 index 00000000..25d0a4b1 --- /dev/null +++ b/media/original_images/ruby.svg @@ -0,0 +1,28 @@ + + + + +Ruby +Created with Sketch. + + + + + + + + + + + + + + + + + diff --git a/services/__pycache__/models.cpython-310.pyc b/services/__pycache__/models.cpython-310.pyc index a86ed6e64517c33a112ed665ed81747aa81668e7..d079c71e53f7805fbcc00bb912b89b1fdc2780b2 100644 GIT binary patch delta 981 zcmZuv&1(}u6yMoRHv5&$rXTo$1qG|!79+J5K}9TSE5$Yqrh3>**k;Cbb#_x`H)?yy zp}k4KkfTSvc$DHFqIep-dJw@sKtX*oq@v&q^PBg6@9mp?AD_JUlWwP2v=mtO(dUQn z$^-WdIvmU`ZpCI`A_XfrPp#Mv?AQq$sq3^DyMZg^0xiW};34IXf(>jQD%d3UffkfO zx3CSmO&rk2u+vcd;^4*NhQ_Vch)`S)6GC}uqf4{sFT!3+Xp|6X^;Mp$hi$^mO@;{z zw<+-vx9cGzNfy$(WN+}*N6SZ(XkI-@&f{r(0rthd)-Ie-f^&EV-t>>|X+8BCFSkP0 z>86A>Q^KA^Et2k+t0U@cV?_BX8-q&lJPo%At@+c#kNH{828xvgcmm49DLwXPgy;*H z6<`dX>r*Z(fc!>b^MaZmzSS2j2Sjnw*TZl6tDaM`J}{xT;QX`1r?=sxbpWCS2rGd~ zG?F9vM>aRD3seBh8GHV+V>b%5Gx;9?uf;P45N zWKSe6N_w0+n}gS&&SocRVnRtqxWfnyGlH8*7?Ur*z`g|zRvbQSQj)Z@9aaQxfBb3K z&ccXBF@#GiYvTHj=KLJbC0$CT6T1qYY!QGLW&L}i0U|DU|MWu!sQD#!NjO&oToxdP zQkIHoAn`(VsZm{8Ug5c2ITF>Kkjc4W*M-?y?JyFx6Br6^G*-5nwfpPq?1qSu7j}JD z%-c#j>W$!Km#zqD0pKy5^fZ8>c&dwXNR?aM`VZaIk?~Xd)%@|{%ff@6>@{~sRj9-r zC|}A95zYkQG* a+(ODJ_**fnj^d~enm`_MkfVCqMDsV2)%bt_ delta 326 zcmca8dPjgSpO=@50SE$aKTI>=pU5Y}m@rY>)PRv8g&~DChclNeiVMtU%i+%DiQ-{o zaA!ziPvK}`Na0B3YG#h&P2mh?(Bzu9#gvh0;wxDWO~zX+0g36Ulg$`487(#^Fd8!P zq_c@LL@B1I0u`!lUddd~#O$Z3GC7`2OP&L0a}f`S-~|zUAVL5{2!aTq$urq<)!Bi} zTYSm+c_pcNCGiD`d8s+YMQk8>Rv@vGp-2bB)|u?cZp_6AWP-d?yl8SA`(iGxheaR} zKTW>Lk2%AHZt;~Trk5mU=IG_-r+`dhpPbJnZ3lJ)NFCH9I7=7Ey2W7wR9u>qYR3rV W6@y&J!@$GD!zjSW!^p!V!UO=;4Mc(f diff --git a/services/migrations/0003_blogpagerelatedlink.py b/services/migrations/0003_blogpagerelatedlink.py new file mode 100644 index 00000000..9af22311 --- /dev/null +++ b/services/migrations/0003_blogpagerelatedlink.py @@ -0,0 +1,30 @@ +# Generated by Django 5.0.8 on 2024-09-14 15:56 + +import django.db.models.deletion +import modelcluster.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('services', '0002_rename_sf5img_servicespage_section_five_img_and_more'), + ('wagtailimages', '0026_delete_uploadedimage'), + ] + + operations = [ + migrations.CreateModel( + name='BlogPageRelatedLink', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('sort_order', models.IntegerField(blank=True, editable=False, null=True)), + ('carouse_name', models.CharField(blank=True, max_length=255)), + ('carouse_image', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image')), + ('page', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='carousel_services', to='services.servicespage')), + ], + options={ + 'ordering': ['sort_order'], + 'abstract': False, + }, + ), + ] diff --git a/services/migrations/0004_rename_blogpagerelatedlink_servicespagecarousel.py b/services/migrations/0004_rename_blogpagerelatedlink_servicespagecarousel.py new file mode 100644 index 00000000..1b2ad8a0 --- /dev/null +++ b/services/migrations/0004_rename_blogpagerelatedlink_servicespagecarousel.py @@ -0,0 +1,18 @@ +# Generated by Django 5.0.8 on 2024-09-14 15:57 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('services', '0003_blogpagerelatedlink'), + ('wagtailimages', '0026_delete_uploadedimage'), + ] + + operations = [ + migrations.RenameModel( + old_name='BlogPageRelatedLink', + new_name='ServicesPageCarousel', + ), + ] diff --git a/services/migrations/0005_rename_carouse_image_servicespagecarousel_carousel_image_and_more.py b/services/migrations/0005_rename_carouse_image_servicespagecarousel_carousel_image_and_more.py new file mode 100644 index 00000000..c2330a45 --- /dev/null +++ b/services/migrations/0005_rename_carouse_image_servicespagecarousel_carousel_image_and_more.py @@ -0,0 +1,23 @@ +# Generated by Django 5.0.8 on 2024-09-14 15:59 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('services', '0004_rename_blogpagerelatedlink_servicespagecarousel'), + ] + + operations = [ + migrations.RenameField( + model_name='servicespagecarousel', + old_name='carouse_image', + new_name='carousel_image', + ), + migrations.RenameField( + model_name='servicespagecarousel', + old_name='carouse_name', + new_name='carousel_name', + ), + ] diff --git a/services/migrations/__pycache__/0001_initial.cpython-310.pyc b/services/migrations/__pycache__/0001_initial.cpython-310.pyc index a89ff067c72b99e766e2faa9874c312050cba741..78e939735258a1cc11e73de512b81f3628302bec 100644 GIT binary patch delta 20 acmaFC^MZ#vpO=@50SNZ4e7cc4mJI+tdj;_T delta 20 acmaFC^MZ#vpO=@50SLml?{DOeWdi^=*aYSP diff --git a/services/migrations/__pycache__/0002_rename_sf5img_servicespage_section_five_img_and_more.cpython-310.pyc b/services/migrations/__pycache__/0002_rename_sf5img_servicespage_section_five_img_and_more.cpython-310.pyc index f483d85d29a7912d15338852c32d71dfb8c20fbc..8c1756a9524c2417754d8f8266cccb550174a42b 100644 GIT binary patch delta 20 acmdnZznh;spO=@50SNZ4e7cc)13LgX;05sj delta 20 ZcmdnZznh;spO=@50R$QzY~u(*VKfb_opRp4&r%_ zXzKg4fCs+xM!wtGD4?Cmu#84g*&4Nc?^_Q72!HV)#HeWh9E{rFpL%KZnryw3l$mas zXG%1AU1`%QYe1KfOIIqqP%i+b5VNVa!&?I8s)O@1QO3lVhk)68a=Xhy4be~+v{0dESfofc9}MvNtzu$oJ0l8I3Dd}Z?bEtM)|YKu0iv3SKLR#|gqdTT9r z-8cScSN;EC8#sO%IZM^I<{e7P601qn64mlrtf@_Cb7!_zUgdR4ukNgqJ6IpAW*Vqn z@~J+s%ZIes8aZHjm6=$Kb)&?jA(Wv*-kRnpL7R3xb3J;J?wFXn@SK}2rvkxTBApY? zf0_&F%1adB3@gBDlA~74!q_-)Ie%t*Tm_bsJkGOys>YFxVUnj+gBhwN)j2p5t7G?w znjp`r@2NyBC`6UjhQZjxE-BP9CO&=gf}i|&d~6c;geG#X8&v8O7x%fKu4{y}_U(iH z(}VrPC#GA^aP{tf_taOU=$1F%4bSQlhoa2Y@DTNRQ_qH4jOR*T4%dkszI(Gn>gq4~ zn0n4;cU2upJvW$LD*LC1Y3fhifd$MD{|#Hr-(lPSrvI`3ko;T*Y!AQW1Z=9<_7M1>FnBpMP$N#|y@cQY}*ti5K}CQ1!0zkxb! ze$KXtg1?XgGV8lbQZUl4XZFp$nR#nFolY2;yZU|llQZ@!2KOzY;4Llxj5c7v4Xb&< zIs3>!fc(xtB43JcvJjA*u-WJj<*^wLle#LM?kd~(MLfE1x1@V?imc$k=sE{cib7(t z9D#%cMn6Q!i!qFe_CeS>*znCnNIkl*)dGFk&GY<)nj2fTxff29BocBuN+SPcjR7Ixkd!4YL0uLwR7L3n(!E)s$F+S%TtiN&n})#w^S z+Ti)%9a4j-8eFBqM5)?BZ;ew%7nRiweCHG<|q@j1fGr)L59<7T2O( zGWUq^VY@!fKHC~IT~{vqfc~trZRYj7cjhA7NRizMo{=aol^clvr;Xa&iJC3elkK+` zPEy4&Egws#Oi00#zsXqe_)Y%}_~A^3Em-QNwEHk0h8WK8+Ff}&L=n>0D<$60zr}of J_igb+-T;U0vswTE literal 0 HcmV?d00001 diff --git a/services/migrations/__pycache__/0005_rename_carouse_image_servicespagecarousel_carousel_image_and_more.cpython-310.pyc b/services/migrations/__pycache__/0005_rename_carouse_image_servicespagecarousel_carousel_image_and_more.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..19696de2b53e3dd3ee1d25c28587e6e301909d16 GIT binary patch literal 707 zcmZuvF>ll`6t6*dmc{bjdxTt_IM{bUXIS|mUHLg) z5lH-nN>zDw&blJik)Pgs{`}eB=ji!-%4q!g`TN6J!q_ig+#eYgr!?&|3c!FX*7AyT z_Le~c>30Sx@^$hptrEyCSTXubI96~sZJXN2O`|)z@~!)0OvNcp`V2sk0!R0!hQDx`cS#HX!PK><~OJ$8WIszGb$ftY*rKFE91paM75J?>n-X6BIA zL%8``e$*|NvTaQH8tvsq_obD~tx;EHR9o&}s3hNBMBn1IgYE|%6aRZ5WCtX`;BkLt zQo4hGU;C6o&XP2{%SH+JUv|6C@|%D>Cm$!UmR+rnVHpI5{$9$EJs~oezZ_h8#XZ0O JGiS+B`VR!H&?x`_ literal 0 HcmV?d00001 diff --git a/services/migrations/__pycache__/__init__.cpython-310.pyc b/services/migrations/__pycache__/__init__.cpython-310.pyc index e901b30a426f3afe91587a54247c7c7846b23bf1..1937568ec821dd099efbeb93ae1357129269427a 100644 GIT binary patch delta 19 ZcmbQvIGvF@pO=@50SNZ4d^(Z42LLO71wsG- delta 19 ZcmbQvIGvF@pO=@50SNTC?@#3J0RSZT1P=fJ diff --git a/services/models.py b/services/models.py index 3f524a14..b0d5068f 100644 --- a/services/models.py +++ b/services/models.py @@ -2,11 +2,13 @@ from __future__ import unicode_literals from django.db import models from wagtail.fields import RichTextField -from wagtail.admin.panels import FieldPanel, MultiFieldPanel -from wagtail.models import Page +from wagtail.admin.panels import FieldPanel, MultiFieldPanel, InlinePanel +from wagtail.models import Page, Orderable +from modelcluster.models import ParentalKey from saburly.custom_editor import FULL_EDITOR + class ServicesPage(Page): section_one_title = RichTextField(blank=True, features=FULL_EDITOR) section_one_text = RichTextField(blank=True, features=FULL_EDITOR) @@ -97,4 +99,24 @@ class ServicesPage(Page): FieldPanel('sub_section_six'), FieldPanel('sub_section_six_img'), ], heading="Section 5 Subfields"), + + InlinePanel('carousel_services', heading="Carousel Services", label="Carousel Services"), + ] + +class ServicesPageCarousel(Orderable): + + page = ParentalKey(ServicesPage, on_delete=models.CASCADE, related_name='carousel_services') + carousel_name = models.CharField(max_length=255, blank=True) + carousel_image = models.ForeignKey( + 'wagtailimages.Image', + null=True, + blank=True, + on_delete=models.SET_NULL, + related_name='+' + ) + + panels = [ + FieldPanel('carousel_name'), + FieldPanel('carousel_image'), + ] \ No newline at end of file diff --git a/static/css/style.css b/static/css/style.css index a9be78a8..cbba6df8 100644 --- a/static/css/style.css +++ b/static/css/style.css @@ -198,7 +198,9 @@ body.side-menu.active { .content-open:before { position: absolute; top: 0; - bottom: 0; + right: 0; + left: 0; + bottom: -2000000000px; width: 100%; background-color: rgba(0, 0, 0, 0.5); z-index: 99; @@ -220,3 +222,39 @@ body.side-menu.active { .block-scroll{ overflow: hidden; } + +.carousel-slider{ + width: 100%; + height: 130px; + overflow: hidden; +} +.carousel-slider .carousel-list{ + display: flex; + width: 100%; + min-width: calc(100px * 16); + position: relative; +} +.carousel-slider .carousel-list .carousel-item{ + width: 100px; + height: 100px; + position: absolute; + left: 100%; + animation: autoRun 16s linear infinite; + animation-delay: calc((16s / 16) * (var(--position) - 1)); +} + .carousel-slider .carousel-list .carousel-item img{ + width: 100%; + } + + @keyframes autoRun { + from{ + left: 100%; + }to{ + left: calc(100px * -1); + } + } + + .carousel-slider:hover .carousel-item{ + animation-play-state: paused!important; + } + diff --git a/templates/base.html b/templates/base.html index b1f267ca..11499edd 100644 --- a/templates/base.html +++ b/templates/base.html @@ -41,13 +41,15 @@ const content = document.querySelector('.content'); const headermove = document.getElementById('header'); const body = document.body; + const footermove = document.getElementById('footer'); sideToggle.addEventListener('click', function() { sideMenu.classList.toggle('active'); this.classList.toggle('menu-opened'); content.classList.toggle('content-open'); headermove.classList.toggle('header-move'); - body.classList.toggle('block-scroll') + body.classList.toggle('block-scroll'); + footermove.classList.toggle('header-move'); }); sideCloseButtons.forEach(button => { @@ -57,6 +59,7 @@ content.classList.remove('content-open'); headermove.classList.remove('header-move'); body.classList.remove('block-scroll'); + footermove.classList.remove('header-move'); }); }); }) @@ -76,7 +79,7 @@ } prevScrollPos = currentScrollPos; - }; + }; diff --git a/templates/footer.html b/templates/footer.html index 97685365..524fb1ca 100644 --- a/templates/footer.html +++ b/templates/footer.html @@ -1,6 +1,5 @@ {%load static%} -