From 1b37a8900d3b00eb9694842501abd97380277a3e Mon Sep 17 00:00:00 2001 From: Ilya Lebedev Date: Wed, 22 Nov 2023 11:32:27 +0100 Subject: [PATCH 01/17] fix clean param --- landing_page/mainpage/static/robots.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/landing_page/mainpage/static/robots.txt b/landing_page/mainpage/static/robots.txt index 3865dbe..979a6b5 100644 --- a/landing_page/mainpage/static/robots.txt +++ b/landing_page/mainpage/static/robots.txt @@ -3,4 +3,4 @@ Disallow: /admin/ Disallow: /success/ Disallow: /lessons/ Sitemap: http://learn.python.ru/sitemap.xml -Clean-param: utm ref source trk 1* 2* 3* 4* 5* 6* 7* 8* 9* +Clean-param: utm ref source trk From f7d4771b4906f58949055b55932ed93fc5e68178 Mon Sep 17 00:00:00 2001 From: Ilya Lebedev Date: Wed, 22 Nov 2023 11:37:05 +0100 Subject: [PATCH 02/17] fix clean param --- landing_page/mainpage/static/robots.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/landing_page/mainpage/static/robots.txt b/landing_page/mainpage/static/robots.txt index 979a6b5..918dd50 100644 --- a/landing_page/mainpage/static/robots.txt +++ b/landing_page/mainpage/static/robots.txt @@ -3,4 +3,4 @@ Disallow: /admin/ Disallow: /success/ Disallow: /lessons/ Sitemap: http://learn.python.ru/sitemap.xml -Clean-param: utm ref source trk +Clean-param: utm&ref&source&trk From 704e6a63b6b539fd3a1a1c6dded6893a0bffdc02 Mon Sep 17 00:00:00 2001 From: Ilya Lebedev Date: Thu, 23 Nov 2023 11:30:32 +0100 Subject: [PATCH 03/17] add chat --- Makefile | 2 ++ landing_page/landing_page/settings.py | 2 ++ landing_page/mainpage/templates/mainpage/index.html | 9 ++++++++- landing_page/mainpage/views.py | 2 ++ requirements.txt | 1 + 5 files changed, 15 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index de5cc2e..09bc7fb 100644 --- a/Makefile +++ b/Makefile @@ -12,3 +12,5 @@ run: cd landing_page; DEBUG=1 python manage.py runserver shell: cd landing_page; DEBUG=1 python manage.py shell +migrate: + cd landing_page; DEBUG=1 python manage.py migrate diff --git a/landing_page/landing_page/settings.py b/landing_page/landing_page/settings.py index 29285c7..c1506d8 100644 --- a/landing_page/landing_page/settings.py +++ b/landing_page/landing_page/settings.py @@ -23,6 +23,7 @@ 'django.contrib.sitemaps', 'memoize', + 'waffle', ] MIDDLEWARE = [ @@ -33,6 +34,7 @@ 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', + 'waffle.middleware.WaffleMiddleware', ] ROOT_URLCONF = 'landing_page.urls' diff --git a/landing_page/mainpage/templates/mainpage/index.html b/landing_page/mainpage/templates/mainpage/index.html index 943711e..c5e4143 100644 --- a/landing_page/mainpage/templates/mainpage/index.html +++ b/landing_page/mainpage/templates/mainpage/index.html @@ -267,8 +267,14 @@

онлайн курс

{% include 'mainpage/include/index_faq.html' %} + {% if should_show_chat %} +
+ {% endif %} {% include 'mainpage/include/index_footer.html' %} - {% include 'mainpage/include/index_register_popup.html' with enrollment=enrollment %} @@ -291,5 +297,6 @@

онлайн курс

crossorigin="anonymous" referrerpolicy="no-referrer" > + diff --git a/landing_page/mainpage/views.py b/landing_page/mainpage/views.py index 558836c..2096244 100644 --- a/landing_page/mainpage/views.py +++ b/landing_page/mainpage/views.py @@ -2,6 +2,7 @@ from django.http import HttpRequest, HttpResponse from django.shortcuts import render +from waffle import switch_is_active from .models import CourseReview, Curators, Enrollment, EnrollmentType, GraduateProjects @@ -18,6 +19,7 @@ def index(request: HttpRequest) -> HttpResponse: 'curators_list': Curators.objects.filter(is_visible=True), 'today': date.today(), 'reviews': CourseReview.objects.filter(review_for=EnrollmentType.BASE), + 'should_show_chat': switch_is_active('show_tg_chat_widget'), } return render(request, 'mainpage/index.html', context) diff --git a/requirements.txt b/requirements.txt index a56b32c..c080ccb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,3 +2,4 @@ Django==4.2.4 Pillow==10.0.0 requests==2.31.0 django-memoize==2.3.1 +django-waffle==4.0.0 From 283805684cd6e88382cf83bebd4338063ea761ed Mon Sep 17 00:00:00 2001 From: Ilya Lebedev Date: Sat, 25 Nov 2023 07:12:50 +0100 Subject: [PATCH 04/17] change x fram options header value --- landing_page/landing_page/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/landing_page/landing_page/settings.py b/landing_page/landing_page/settings.py index c1506d8..8c75956 100644 --- a/landing_page/landing_page/settings.py +++ b/landing_page/landing_page/settings.py @@ -9,7 +9,7 @@ ALLOWED_HOSTS = ['*'] CSRF_TRUSTED_ORIGINS = ['https://learn.python.ru'] -X_FRAME_OPTIONS = "ALLOW" +X_FRAME_OPTIONS = "SAMEORIGIN" INSTALLED_APPS = [ 'mainpage.apps.MainpageConfig', From 4d7772bb4213f37adb73d6bc6bb94e5c8ee2e02d Mon Sep 17 00:00:00 2001 From: Ilya Lebedev Date: Mon, 27 Nov 2023 08:36:59 +0100 Subject: [PATCH 05/17] hello calltouch --- .../mainpage/include/common/counters.html | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/landing_page/mainpage/templates/mainpage/include/common/counters.html b/landing_page/mainpage/templates/mainpage/include/common/counters.html index 33e273b..62e3ea0 100644 --- a/landing_page/mainpage/templates/mainpage/include/common/counters.html +++ b/landing_page/mainpage/templates/mainpage/include/common/counters.html @@ -42,3 +42,40 @@ + + + + From e9e678d7cea484395f266cb235cf7ab932039f64 Mon Sep 17 00:00:00 2001 From: Ilya Lebedev Date: Fri, 1 Dec 2023 08:24:18 +0100 Subject: [PATCH 06/17] hello new favicons --- .../mainpage/static/images/favicon_lp_120.png | Bin 0 -> 1651 bytes .../mainpage/static/images/favicon_lp_16.png | Bin 0 -> 377 bytes .../mainpage/static/images/favicon_lpa_120.png | Bin 0 -> 1816 bytes .../mainpage/static/images/favicon_lpa_16.png | Bin 0 -> 379 bytes .../mainpage/templates/mainpage/advanced.html | 2 +- .../mainpage/templates/mainpage/index.html | 2 +- .../mainpage/templates/mainpage/success.html | 2 +- 7 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 landing_page/mainpage/static/images/favicon_lp_120.png create mode 100644 landing_page/mainpage/static/images/favicon_lp_16.png create mode 100644 landing_page/mainpage/static/images/favicon_lpa_120.png create mode 100644 landing_page/mainpage/static/images/favicon_lpa_16.png diff --git a/landing_page/mainpage/static/images/favicon_lp_120.png b/landing_page/mainpage/static/images/favicon_lp_120.png new file mode 100644 index 0000000000000000000000000000000000000000..98e5ab00b04a294bb388bd3984598df6d6f881e9 GIT binary patch literal 1651 zcmbtUdo-!j+bB)KBr(enP3$+XCJa$Z z2tTEzGLl$&n0aLKiXMzGzxm_$&+qi#@1FCypL6d$=RVH8=cXKTbJ(b?sSE(XMw}xS zFXKWPiXe(IjmdgQlhHb|qxX3LSg*bY5Wr$@lQ}`>@eZ~?)obl>nIRu+<7xu{_tV!e zpHct-MFm)$U*}hbY*(wL%*BL*S?@Q*f`YElZ@ybqS?|7H ztMIbx*_!v7(pdzqW1ipgNF^X9V1^lMnF}%bYSQ*YtV8W@l!QLe-Jy$diQGKgBAm3I zj{M7%ssYCY`V(55doKhZ&{TteKU3d*Z>jw9NJ$3-gs5hfhjk)t!B|zDp#h!F)*ie( z&5zh#G7F0!973Wm3HRd~esIp-F|c2OP0T*)9Nz!=LT^86D1dUYX=`*yI^bOL&Z_Kg zokc`@lHOs#wVVwk_L=&WQ6qyvWiLfWxxRIM7eyZc?JDcuvSGE`Jo=njI+_eMci7TTJ$HFmqJfX@PFVQ zr4Dz?c67E)SJ();4Yv*nv(v!=6y~VY{1`YZXW47Ny{0!wWQcL;xq&GNsmUC@Bu`6O zZYq?I4w&}I9)rS5Oj%A4y(R^YSxZcEqAmt&7oS6wrkR?jBZ;EHg4?@kndniCH!fj-V{}kqzNm zYOUMASQG(AbcRpX#l57-MoEu5vM*-3Wo1eNRfD&AV(FC{J^Tl?a-dP9rNf)%#z zrlfQnqB_&CKve0K8rw~cH8KhS)Mp1Pjg!uFlM*H+c*i@XV-eCs4nkaXopeyShIH<0 z&;W#tTO?E>1-$JuA%}w$lQ<$G(i}RNY37q(=W`=;epa6&9?pV|C#S~!0os)@)cSb~ zw?S_yX_fo%EW*n(Gl^bBSJ5!01atSCkGm##b9~>rdx5y;Q-4npnRTvL+j+hvDgj1C z^&`|~*2UOZ^g>52!1vO!tD)hAbvB<&wNGg(7U7qUpsy3pxW+?JSqqk6>6 zvAbDicdhsHv2e8nW4y&1-?@s$?YSs0Z|^ucjnpj6%v6P22`Hw?2e#MGR%N&F4MDAw zjiC+GLwA3sJUl3oZnTN#kC77($0DSqee-ur`C0TP2-)UKa_v#s9irQciP+0KlhY+Z zgZ>tV;~{B8Z&kln{U1ieA==J)gbq0b5{&iyceS?>YpbTw0q7Rc{|&G{OdJ)o!<%DP zud##d@07OvRQWtO@F35bTX-Qg{zcghf@E^u+*}ehN2GXA&@3bQC`4G3#p+^t;RSiK zE43e0Z>IgH4~Ej2%zR8HulNPk`rb3f@$VJN)nl6jK;;v1-q9>8VZ-~yFSZaUH|0UMbXTjk3nzg&3eE8!E0VN ZY83?4R+93JU$0-YadvLlDqFvVe*j-H>8$_& literal 0 HcmV?d00001 diff --git a/landing_page/mainpage/static/images/favicon_lp_16.png b/landing_page/mainpage/static/images/favicon_lp_16.png new file mode 100644 index 0000000000000000000000000000000000000000..eb69d5b48ce83cbbd69a2e4028f37e938eb9b501 GIT binary patch literal 377 zcmV-<0fzpGP)<{Z+6&a= z+ZzG4m{qHzMzv_HsB!|9N7rxBY;yQ@hhYDG0YC_CAQNcE*jW7o Xk1SaZY^lvB00000NkvXXu0mjf_zIR6 literal 0 HcmV?d00001 diff --git a/landing_page/mainpage/static/images/favicon_lpa_120.png b/landing_page/mainpage/static/images/favicon_lpa_120.png new file mode 100644 index 0000000000000000000000000000000000000000..e1f001fca6f98c6698c616f1678e18814f1d48af GIT binary patch literal 1816 zcmZ`)X*e5*7EO$zwH9TbX{Ed>Qnf}*h+2!-q7o5AY$Zjlq12k^S;kg_4i(f=(juW+ z5yV!aYF}DvXG&tL<_%+KjQ)H-=6>I~=ey^-KhC*-ZmONFx$q^KO8@{s7-3;*f6kHL zA;5RuVfUfq=X5dH!ifj~2ugeh5I`>a@mvHF?ahq=wZm7}&j((Dk&O`mP@g4u;&A~0 z;G-c-jnI+6t+{tWk`7n-|F_5;YAn@giPrFi|BSb=W}!38QkR1F3Fh_G!-YnxwMR^@4tFRo?=()_oq60J zcwG2+Cyu*6tH5*a;h&1MDzLx!$E0+Gg#BI3NOeNQ@HhW)s1yEK70QUn@hLvJKi{Dp z9u+UcWk|38tGQ^drlY7s-JGg(3U`)HFIkA9*<6_wTVklq>C+0@W%h(yM)TwJm|RHa zvx|XL$fCNAS2aGRKx)T$5yEdb6IoY0{)?;r!G0LcjI%oCB1?59?i|n@k@iWSk`>)` zH;(u){V<9+%;w{R1pf&-#Z;pNb$Rh%b?@tTcam3retc1?uc@E*yo?ks-DxB?`ho8g za0N83%4BjH zi^@cB0zg!%Mn+BLOf%Q6v@W+2tEK4Ou4oT8xne|0QUAP(SqsxIIOa`9PF>M)003oc zWw(AGkR%l#?>*kl$LwQ5Q(ujJ%U{R0GwILt9alJKwqMa(xt26HE3a+4<+Y+i#Y#iw zozA4moy>??o4%=UUCQOGA_sGuP6_ce`Mo3Wnh(@pZ0>NnRU5xTVl`u5m;m4Vr8P3K z9QP)y!KkjMh!C^v`Vo8j?ZM(~FaD*tb6;q&_J!MdcvZa6f}PB)|7-otbliw#ufcfF zWpLRC&`=W;iW^jsD3Zw9l^?)64xyFi&u-J#lyi?oE~ju*I6@>cZ1nnx8fTf;tehCzwz0lP$E7exEW2}TiG3b zmhSfk&9Z(uyjkgrDH+UqtSlH8BkhUjq z$)8v)HZe7jYZIT8wb*%mYH#1`br5PK>P%QuL+9O&(+-rBBf|_B50~wMbOdZ~h znO?Y+du$0dFNTjuyMR=BhO^0JO8?5n%9=L2@=3_@Pwp;ocTR&+TA`1ue<7R^#zm!4 zTB2ys`s*&617--~7gvybBSDr3UDJ?gJ>JyOn>X0ImVAry7c*b?4sc6)94&1*^OUjq zLy>=MWk~5nMSxG?Mp(W5w4PWDRfk;+g7T%SARQnRNjVUbj9v&V{p@9BwGjqf?Mc1!x5fE^3BCbC|m% zs~k={w5hGVMvP_>PpRFEtyAXaf@JoOLEVzB2}qRdt5FI(OAGsXKmM`f!oZEL=}WZ1 zvpCLB#-rDP9{-tNejZpY=v}xynA{IrRs55x%`WD4EE3Whkx%U^AvSimp*ogr{|#au zo|}FX{>48ff6$4FdmO<~u8ZePAy8ooASZROoK1Myb^uP8zoWeAuoQ%uP*C6bir~WA041ged3@zQyP!3uqIM_?#{w=(;KSwq@BUhG; zz$&U#(FK%N%=S{Bvxf=kH&t*)+=mb*SLB#}E7FNUGVr9%6Y3C|oEkhXKs?;w=bJ>~ zft}Q*h-egsan=RWa$cQnDfjM~F4ihENSSGme{i}}&c8nDyuO2V uo_L?UMyIlu|0wM>-);W*Paom`bcZ9*QGA9^3ID;}?>geHt!b^Xd&1vh^``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eBIRQ@>$B+ufw|;xQ4+jYBul95m_f;>fuIqJb z_B-1DLtNs>-Ca9gy;+nm;9e@i;_i4cr8FQgT`-nK@QnhCOGen#J2Nk{McrC>q3D7^y`?2i8S*8#( z1E+<0vmE(%95i5juid)4K6hp0FTdr=>lGJBYJLB=i`76qe2&Qdr3Vrfk~P0Xa|t** z6*!;x9JbE=mMqKG3HLVDJlSihv?2Sd@NIq7pZxLqr&ccxpD>?i`=+};-!!`OXrB?e z-7)*G=lqQC|CskxC7-LEU2@4u-v0P0lcG$c&l|-v{Z8oI - + Learn Python Advanced - продвинутые курсы Python онлайн {% include 'mainpage/include/common/counters.html' %} diff --git a/landing_page/mainpage/templates/mainpage/index.html b/landing_page/mainpage/templates/mainpage/index.html index c5e4143..cb6cb58 100644 --- a/landing_page/mainpage/templates/mainpage/index.html +++ b/landing_page/mainpage/templates/mainpage/index.html @@ -23,7 +23,7 @@ - + Learn Python - курсы Python онлайн {% include 'mainpage/include/common/counters.html' %} diff --git a/landing_page/mainpage/templates/mainpage/success.html b/landing_page/mainpage/templates/mainpage/success.html index 86a7c20..fc44c1e 100644 --- a/landing_page/mainpage/templates/mainpage/success.html +++ b/landing_page/mainpage/templates/mainpage/success.html @@ -22,7 +22,7 @@ - + Learn Python - Курсы Python онлайн {% include 'mainpage/include/common/counters.html' %} From dfe262fe46561996c9a125b0d0cc7fa1151a1dc5 Mon Sep 17 00:00:00 2001 From: Ilya Lebedev Date: Mon, 4 Dec 2023 06:41:28 +0100 Subject: [PATCH 07/17] add advanced promo --- landing_page/mainpage/static/css/style.css | 5 +++++ landing_page/mainpage/static/robots.txt | 2 +- .../mainpage/templates/mainpage/include/index_modules.html | 5 +++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/landing_page/mainpage/static/css/style.css b/landing_page/mainpage/static/css/style.css index 801879a..0334c79 100644 --- a/landing_page/mainpage/static/css/style.css +++ b/landing_page/mainpage/static/css/style.css @@ -4762,3 +4762,8 @@ ul.installment-plan li:before { text-transform: none; } +.advanced-promo { + background: #252526; + color: #ffffff; + padding: 15px; +} diff --git a/landing_page/mainpage/static/robots.txt b/landing_page/mainpage/static/robots.txt index 918dd50..8c3094d 100644 --- a/landing_page/mainpage/static/robots.txt +++ b/landing_page/mainpage/static/robots.txt @@ -3,4 +3,4 @@ Disallow: /admin/ Disallow: /success/ Disallow: /lessons/ Sitemap: http://learn.python.ru/sitemap.xml -Clean-param: utm&ref&source&trk +Clean-param: utm&ref&source&trk&&5030bbc2 diff --git a/landing_page/mainpage/templates/mainpage/include/index_modules.html b/landing_page/mainpage/templates/mainpage/include/index_modules.html index 501e27b..424478f 100644 --- a/landing_page/mainpage/templates/mainpage/include/index_modules.html +++ b/landing_page/mainpage/templates/mainpage/include/index_modules.html @@ -137,6 +137,11 @@

Программа

+

+ Ещё у нас есть + продвинутый курс + для тех, кто уже освоил эту программу. +

From a4dfc8fd8e9ca1e6a79beaac749317862fe9b289 Mon Sep 17 00:00:00 2001 From: Ilya Lebedev Date: Mon, 4 Dec 2023 06:53:56 +0100 Subject: [PATCH 08/17] add reviews for advanced --- landing_page/mainpage/models.py | 3 +++ landing_page/mainpage/templates/mainpage/advanced.html | 4 ++++ .../templates/mainpage/include/advanced/index_menu.html | 8 +------- .../mainpage/include/{ => common}/index_reviews.html | 0 landing_page/mainpage/templates/mainpage/index.html | 4 +++- landing_page/mainpage/views.py | 1 + 6 files changed, 12 insertions(+), 8 deletions(-) rename landing_page/mainpage/templates/mainpage/include/{ => common}/index_reviews.html (100%) diff --git a/landing_page/mainpage/models.py b/landing_page/mainpage/models.py index 416a892..b34a9ee 100644 --- a/landing_page/mainpage/models.py +++ b/landing_page/mainpage/models.py @@ -96,3 +96,6 @@ class CourseReview(models.Model): review_for = models.CharField(max_length=10, choices=EnrollmentType.get_choices(), null=True, blank=True) reviewer_name = models.CharField(max_length=254, null=True, blank=True) reviewed_at = models.DateField() + + def __str__(self) -> str: + return f'{self.title} ({self.review_for})' diff --git a/landing_page/mainpage/templates/mainpage/advanced.html b/landing_page/mainpage/templates/mainpage/advanced.html index 570adfa..e50837b 100644 --- a/landing_page/mainpage/templates/mainpage/advanced.html +++ b/landing_page/mainpage/templates/mainpage/advanced.html @@ -231,6 +231,10 @@

онлайн курс

+ {% if reviews %} + {% include 'mainpage/include/common/index_reviews.html' with reviews=reviews %} + {% endif %} + {% if enrollment.platim_url %} {% include 'mainpage/include/index_how_to_pay_by_platim.html' %} {% else %} diff --git a/landing_page/mainpage/templates/mainpage/include/advanced/index_menu.html b/landing_page/mainpage/templates/mainpage/include/advanced/index_menu.html index a21c536..bebf06a 100644 --- a/landing_page/mainpage/templates/mainpage/include/advanced/index_menu.html +++ b/landing_page/mainpage/templates/mainpage/include/advanced/index_menu.html @@ -52,17 +52,11 @@ -