76 Commits
Author SHA1 Message Date
marc 52f285f512 stick to 3.12
Docker / build (push) Canceled after 0s
Pylint / build (push) Canceled after 0s
2023-11-08 18:31:03 +01:00
marc b44b2fbfef update black 2023-11-08 18:30:05 +01:00
marc ac14b212f9 3.12 2023-11-08 18:27:41 +01:00
marc 96d9c6c17d Revert "python-version actually matters apparently"
This reverts commit 809327f49f.
2023-11-08 18:27:09 +01:00
marc c7509ed82d .python-version 2023-11-08 18:26:47 +01:00
marc 34eece39b5 pyenv version of python 2023-11-08 18:26:18 +01:00
marc 809327f49f python-version actually matters apparently 2023-11-08 18:22:32 +01:00
marc fd0b9a727a Merge branch 'master' into 3.12 2023-11-08 18:17:19 +01:00
marc b648e4bae8 test with CSRF_TRUSTED_ORIGINS 2023-11-08 18:16:34 +01:00
marc 85787e4bf3 https everywhere 2023-11-08 18:11:45 +01:00
marc 2f1f96a687 marcpartensky.com also 2023-11-08 18:07:51 +01:00
marc cf8d7ec529 no json backport necessary anymore 2023-11-08 17:59:02 +01:00
marc 2ad402103a fix url-slash warning 2023-11-08 17:57:19 +01:00
marc d5959263c2 fix default_auto_field warning 2023-11-08 17:54:18 +01:00
marc aafd276b58 http and https 2023-11-08 17:51:15 +01:00
marc beb75a8c67 manage error in layout 2023-11-08 17:47:18 +01:00
marc 9768bd55ff try to make it fail on purpose 2023-11-08 17:38:27 +01:00
marc c5db013aa1 forgot service 2023-11-08 17:24:20 +01:00
marc d5106fa602 docker compose my bad 2023-11-08 17:20:34 +01:00
marc c65ac9d321 its a key 2023-11-08 17:10:12 +01:00
marc 9af5deb792 needs 2023-11-08 17:05:32 +01:00
marc fce14edfae need build and push 2023-11-08 17:04:40 +01:00
marc c308682719 test automatic deployment 2023-11-08 17:03:22 +01:00
marc c39e26416d default layout = mixu radar 2023-11-08 16:48:14 +01:00
marc 051257f51b nodejs 2023-11-08 16:42:04 +01:00
marc 5d00bc5beb add node for fuck sake 2023-11-08 16:41:21 +01:00
marc 1cfe85607c no games 2023-11-08 15:53:17 +01:00
marc 991e1fca02 clean header without demo and blog 2023-11-08 15:50:26 +01:00
marc 23b97f7510 website is a better name 2023-11-08 15:43:26 +01:00
marc 8f918a6a79 little fix 2023-11-08 15:41:13 +01:00
marc 3523da3a70 new cnh 2023-11-06 10:51:06 +01:00
marc b54f8b6b95 update 3.12 2023-11-06 10:43:23 +01:00
marc 76e0def34a 3.9 (#30)
* 3.9

* crispy-bootstrap4

* 3.9 that works

* 3.9 in dockerfile
2023-11-06 10:29:28 +01:00
marc de8a7fdffd migrations 2023-11-06 10:07:27 +01:00
marc d141688393 no poetry update in docker build 2023-11-06 10:02:55 +01:00
marc d9f4ddf85a update 6-11-23 2023-11-06 10:02:48 +01:00
marc f211658cae return to v2 2023-11-01 03:30:05 +01:00
marc 7412f3a5f7 fix text 2023-11-01 02:30:02 +01:00
marc 25852a99e3 trying to fix tag pb 2023-10-29 11:36:29 +01:00
marc 47ec45eb49 fix qr 2023-10-29 11:30:43 +01:00
marc 9ca380e89d fixing degree 2023-10-29 10:30:52 +01:00
marc 71eed5a472 github chart 2023-10-29 09:37:51 +01:00
marc 98ca09dadc degree in website pls 2023-10-29 09:28:21 +01:00
marc 5f2ce8abb7 changed text and picture 2023-10-29 08:00:17 +01:00
marc 5849673a11 english resume 2023-10-29 07:42:00 +01:00
marc 8ee89dab45 change cv 2023-10-26 13:04:00 +02:00
marc 8523da63c7 fix 2023-09-30 19:19:15 +02:00
marc b6c899534c 2 tags 2023-09-30 19:15:33 +02:00
marc 08b121f9f1 2 tags 2023-09-30 19:09:01 +02:00
marc 363a3ec118 fixed website for good 2023-09-30 19:00:53 +02:00
marc 90d5990f56 npm 2023-09-30 14:08:51 +02:00
marc 6dc3902479 template 2023-09-23 20:26:08 +02:00
marc b68cdabb99 no x-common just .env does the trick 2023-09-23 20:25:38 +02:00
marc 118806be07 alpine as builder for fuck sake 2023-09-23 20:25:27 +02:00
marc d912ba9e37 funding 2022-12-17 04:33:05 +01:00
marc d8a6b6801b liberapay 2022-12-12 19:40:55 +01:00
marc 0dee2bb8c6 test 2022-12-12 19:39:44 +01:00
marc 5bbd512828 Revert "test liberapay"
This reverts commit fb1b8e89ae.
2022-12-12 19:38:33 +01:00
marc fb1b8e89ae test liberapay 2022-12-12 19:37:59 +01:00
marc 539d9303b5 build only 2022-12-12 18:13:54 +01:00
marc 07b6c8123f no name 2022-12-12 18:12:19 +01:00
marc fbf8b7841a cache 2022-12-12 18:11:43 +01:00
marc 2b652af465 update 2022-12-05 17:44:17 +01:00
marc 340aff3536 update 2022-11-30 18:55:52 +01:00
marc 73b3bc4ca8 whitenoise 2022-08-20 21:04:30 +02:00
marc cebd4646b9 staticfiles 2022-08-20 20:34:56 +02:00
marc 694dcb3cc7 other ports to test static 2022-08-20 20:34:37 +02:00
marc 5ec7bd1021 updated and it works now 2022-08-20 20:09:01 +02:00
marc 3e4f86379b no postgres 2022-08-20 19:47:36 +02:00
marc 5efd6ae12e fix path again 2022-08-20 19:45:25 +02:00
marc dfd639d85c fix path 2022-08-20 19:44:29 +02:00
marc 5f5418f934 localhost makes all the difference 2022-08-20 05:01:06 +02:00
marc 696225a26f everything except master 2022-08-20 04:43:54 +02:00
marc 5ace7965c4 just push to true 2022-08-20 04:43:22 +02:00
marc 1f6baf1e08 adapting weird makefile to poetry 2022-08-20 04:41:15 +02:00
marc 57a89f682f Merged poetry3.7-alpine squash 2022-08-20 04:38:21 +02:00
2772 changed files with 270276 additions and 3438 deletions
+9
View File
@@ -0,0 +1,9 @@
DJANGO_SETTINGS_MODULE=django_project.settings
SECRET_KEY=secret
FTP_URL=0.0.0.0:21
POSTGRES_NAME=website
POSTGRESQL_USER=root
POSTGRES_PASSWORD=password
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
REDIS_URL=redis:6379
+2
View File
@@ -1,5 +1,7 @@
liberapay: marcpartensky
patreon: marcpartensky
github: marcpartensky
custom:
# - monero:43J2XmRtjDPRLD35UsYGH2AZamFBQz7dt4VdvZXVm3SuadTrvcoXUXBRUNHqukFte23Q5TWXqhbwaLJJgoVQzzbe2AJDANQ
- https://paypal.me/marcpartensky
- https://buymeacoffee.com/marcpartensky
+6 -2
View File
@@ -4,6 +4,7 @@ on:
push:
branches:
- "*"
- "!master"
# Publish `v1.2.3` tags as releases.
tags:
- v*
@@ -32,10 +33,13 @@ jobs:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push Docker images
- name: Build docker image
uses: docker/build-push-action@v3
with:
context: .
push: false
tags: marcpartensky/website:latest
# cache-from: type=local,src=/tmp/buildx
# cache-to: type=local,dest=/tmp/buildx
cache-from: type=gha
cache-to: type=gha
+39 -28
View File
@@ -15,43 +15,54 @@ env:
IMAGE_NAME: website
jobs:
build:
build-and-push:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install make
run: sudo apt install make -y
- name: Install Python3.7
uses: actions/setup-python@v1
with:
python-version: 3.7
architecture: x64
- name: make init
run: make init
- name: make update
run: make update
- name: Build the tag
id: tag
run: echo "::set-output name=tag::$(git rev-parse --short HEAD).$(date +'%Y-%m-%d')"
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Build and push
id: build
uses: docker/build-push-action@v2
with:
push: false
tags: marcpartensky/website:latest
- name: Compose up
run: docker-compose -f dev.yml up -d website postgres mysql
- name: Test
run: docker-compose run test
uses: docker/setup-buildx-action@v2
- name: Login to DockerHub
uses: docker/login-action@v1
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
id: push
- name: Build and push Docker images
uses: docker/build-push-action@v3
with:
context: .
push: true
tags: marcpartensky/website:latest
- name: Build and push Docker images
uses: docker/build-push-action@v2
with:
context: .
push: true
tags: marcpartensky/website:latest
tags: marcpartensky/website:v${{ github.run_number }}.${{ steps.tag.outputs.tag }}
deploy:
runs-on: ubuntu-latest
needs:
- build-and-push
steps:
- name: executing remote ssh commands using password
uses: appleboy/ssh-action@v1.0.0
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.KEY }}
port: ${{ secrets.PORT }}
script: |
cd ~/git/docker/services
docker compose -f website.yml pull
docker compose -f website.yml up -d
+1
View File
@@ -0,0 +1 @@
3.12
+50 -18
View File
@@ -1,47 +1,79 @@
FROM python:3.7.12-alpine as builder
COPY . /app
WORKDIR /app
FROM python:3.9-alpine as builder
# Pre installations
RUN apk update
RUN apk add curl npm
RUN apk add --update --virtual .tmp libffi-dev build-base linux-headers
RUN apk add curl jpeg-dev zlib-dev npm
RUN pip install poetry
RUN pip install pipenv
RUN pipenv update
# Copy useful files
WORKDIR /opt/website
COPY pyproject.toml poetry.lock package.json package-lock.json ./
# Run updates
# RUN poetry update
RUN poetry export -f requirements.txt --without-hashes --output requirements.txt
RUN npm update
RUN npm install
FROM python:3.7.12-alpine
# Image of production
FROM python:3.9-alpine
# FROM alpine
ENV SECRET_KEY=whatever
# ARG timestamp
# ARG commit
LABEL maintainer="marc.partensky@gmail.com"
LABEL image="https://hub.docker.com/r/marcpartensky/website"
LABEL source="https://github.com/marcpartensky/website"
LABEL link="https://marcpartensky.com"
# LABEL build.timestamp=timestamp
# LABEL build.commit=commit
COPY --from=builder . /app
WORKDIR /app
# Labels
LABEL maintainer="marc.partensky@gmail.com"
LABEL image="https://hub.docker.com/r/marcpartensky/website"
LABEL source="https://github.com/marcpartensky/website"
LABEL website="https://marcpartensky.com"
# Install curl and stuff for pillow
RUN apk update
RUN apk add curl npm
RUN apk add --update --virtual .tmp libffi-dev build-base linux-headers
RUN apk add python3 curl jpeg-dev zlib-dev py3-pip nodejs
RUN apk add shadow
# Setup home user website
RUN useradd -m website
USER website
# Copy useful files
WORKDIR /home/website
COPY --chown=website website ./website
COPY --chown=website --from=builder /opt/website/requirements.txt ./
COPY LICENSE ./
# No .pyo and easier debugging
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
RUN pip install -U pip
# Install dependencies
# RUN pip install -U pip
RUN pip install -r requirements.txt
RUN ./website/manage.py makemigrations
RUN ./website/manage.py collectstatic --noinput
USER root
RUN apk del .tmp
USER website
# Setup env vars for entrypoint.sh
ENV PORT 80
ENV HOST 0.0.0.0
ENV PATH="${PATH}:/home/website/.local/bin"
EXPOSE 80
# EXPOSE 443
# Check health
HEALTHCHECK --interval=30s \
--timeout=10s \
--start-period=1m \
--retries=3 \
CMD curl -sSf http://127.0.0.1:$PORT/live || exit 1
CMD curl -sSf http://localhost:$PORT/live || exit 1
ENTRYPOINT ["/app/entrypoint.sh"]
WORKDIR /home/website/website
ENTRYPOINT ["./entrypoint.sh"]
# ENTRYPOINT ["daphne", "-e", "ssl:443:privateKey=$KEY:certKey=$CERT", "django_project.asgi:application"]
+8 -11
View File
@@ -5,26 +5,23 @@ PRODUCTION=false
.PHONY: start list build push setup update init test up down migrate brewstart brewstop dev prod clean deploy
start:
pipenv run ./entrypoint.sh --nosetup
poetry run ./website/entrypoint.sh --nosetup
list:
@LC_ALL=C $(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$'
build: update
build:
docker-compose -f dev.yml build website
push: build
git pushall
docker-compose -f dev.yml push website
setup: init update start
update:
npm update
npm audit fix || echo npm audit fix failed
# pipenv lock --pre --clear
pipenv update
pipenv lock -r > requirements.txt
SECRET_KEY=secret pipenv run ./manage.py collectstatic --noinput
SECRET_KEY=secret pipenv run ./manage.py makemigrations
poetry export -o requirements.txt
SECRET_KEY=secret poetry run ./website/manage.py collectstatic --noinput
SECRET_KEY=secret poetry run ./website/manage.py makemigrations
init: .env
pip install --user pipenv
pipenv install --dev
pip install --user poetry
poetry install --dev
npm install --save
test:
pipenv run ./manage.py test
@@ -33,7 +30,7 @@ runtest:
make test
make kill
kill:
pipenv run ./entrypoint.sh kill
pipenv run ./website/entrypoint.sh kill
up: init
docker-compose up -d
down:
+75 -154
View File
@@ -4,161 +4,82 @@ verify_ssl = true
name = "pypi"
[packages]
aioredis = "*"
appdirs = "*"
appnope = "*"
arrow = "*"
asgiref = "*"
astroid = "*"
async-timeout = "*"
attrs = "*"
autobahn = "*"
backcall = "*"
blessed = "*"
boto3 = "*"
botocore = "*"
certifi = "*"
cffi = "*"
channels = "*"
channels-redis = "*"
chardet = "*"
click = "*"
colorama = "*"
commonmark = "*"
constantly = "*"
coverage = "*"
cryptography = "*"
daphne = "*"
decorator = "*"
defusedxml = "*"
dj-database-url = "*"
django-503 = "*"
django-admin = "*"
django-allauth = "*"
django-appconf = "*"
django-avatar = "*"
django-compressor = "*"
django-cors-middleware = "*"
django-crispy-forms = "*"
django-excel-base = "*"
django-excel-response2 = "*"
django-extensions = "*"
django-ftpserver = "*"
django-heroku = "*"
django-jsonfield-backport = "*"
django-libsass = "*"
django-markdown-view = "*"
django-mdeditor = "*"
django-picklefield = "*"
django-q = "*"
django-rename-app = "*"
django-shortuuidfield = "*"
django-six = "*"
django-sql-explorer = "*"
django-storages = "*"
djangorestframework = "*"
docopt = "*"
docutils = "*"
flake8 = "*"
future = "*"
graphviz = "*"
gunicorn = "*"
h2 = "*"
hiredis = "*"
hpack = "*"
hyperframe = "*"
hyperlink = "*"
idna = "*"
importlib-metadata = "*"
incremental = "*"
ipython = "*"
isort = "*"
jedi = "*"
jeepney = "*"
jmespath = "*"
keyring = "*"
"keyrings.alt" = "==3.2.0"
lazy-object-proxy = "*"
libsass = "*"
mccabe = "*"
mock = "*"
msgpack = "*"
msgpack-python = "*"
mypy-extensions = "*"
nose = "*"
oauthlib = "*"
parso = "*"
pathspec = "*"
pexpect = "*"
pickleshare = "*"
pip-autoremove = "*"
pip-conflict-checker = "*"
pip-review = "*"
pipdeptree = "*"
pipupgrade = "*"
priority = "*"
prompt-toolkit = "*"
psycopg2-binary = "*"
ptyprocess = "*"
pyasn1 = "*"
pyasn1-modules = "*"
pycodestyle = "*"
pycparser = "*"
pyflakes = "*"
pyftpdlib = "*"
pylint = "*"
pyparsing = "*"
python-dateutil = "*"
python-dotenv = "*"
python3-openid = "*"
pytz = "*"
rcssmin = "*"
redis = "*"
regex = "*"
requests = "*"
requests-oauthlib = "*"
rich = "*"
rjsmin = "*"
s3transfer = "*"
screen = "*"
shortuuid = "*"
six = "*"
sqlparse = "*"
toml = "*"
traitlets = "*"
txaio = "*"
typed-ast = "*"
typing-extensions = "*"
tzlocal = "*"
urllib3 = "*"
wcwidth = "*"
whitenoise = "*"
wrapt = "*"
xlwt = "*"
yarg = "*"
zipp = "*"
"zope.interface" = "*"
Automat = "*"
Django = "*"
ipython_genutils = "*"
Markdown = "*"
Pillow = "*"
Pygments = "*"
PyHamcrest = "*"
PyJWT = "*"
pyOpenSSL = "*"
PyYAML = "*"
SecretStorage = "*"
service_identity = "*"
Twisted = "*"
django-robots = "*"
selenium = "*"
geckodriver-autoinstaller = "*"
ansicon = "==1.89.0"
arrow = "==1.2.2"
asgiref = "==3.5.2"
attrs = "==21.4.0"
autobahn = "==22.4.2"
blessed = "==1.19.1"
certifi = "==2022.5.18.1"
cffi = "==1.15.0"
channels = "==3.0.4"
charset-normalizer = "==2.0.12"
commonmark = "==0.9.1"
constantly = "==15.1.0"
cryptography = "==37.0.2"
daphne = "==3.0.2"
defusedxml = "==0.7.1"
dj-database-url = "==0.5.0"
django-allauth = "==0.50.0"
django-appconf = "==1.0.5"
django-compressor = "==4.0"
django-crispy-forms = "==1.14.0"
django-extensions = "==3.1.5"
django-ftpserver = "==0.8.0"
django-heroku = "==0.3.1"
django-jsonfield-backport = "==1.0.5"
django-markdown-view = "==0.0.5"
django-mdeditor = "==0.1.20"
django-picklefield = "==3.0.1"
django-q = "==1.3.9"
django-robots = "==5.0"
django-shortuuidfield = "==0.1.3"
django-sql-explorer = "==2.4.1"
django-storages = "==1.12.3"
djangorestframework = "==3.13.1"
hyperlink = "==21.0.0"
idna = "==3.3"
incremental = "==21.3.0"
jinxed = "==1.2.0"
oauthlib = "==3.2.0"
psycopg2 = "==2.9.3"
pyasn1-modules = "==0.2.8"
pyasn1 = "==0.4.8"
pycparser = "==2.21"
pyftpdlib = "==1.5.6"
python-dateutil = "==2.8.2"
python-dotenv = "==0.20.0"
python3-openid = "==3.2.0"
pytz = "==2022.1"
rcssmin = "==1.1.0"
redis = "==3.5.3"
requests-oauthlib = "==1.3.1"
requests = "==2.27.1"
rich = "==12.4.4"
rjsmin = "==1.2.0"
service-identity = "==21.1.0"
shortuuid = "==1.0.9"
six = "==1.16.0"
sqlparse = "==0.4.2"
twisted-iocpsupport = "==1.0.2"
txaio = "==22.2.1"
typing-extensions = "==4.2.0"
tzdata = "==2022.1"
urllib3 = "==1.26.9"
wcwidth = "==0.2.5"
whitenoise = "==6.1.0"
"zope.interface" = "==5.4.0"
Automat = "==20.2.0"
Django = "==4.0.4"
Markdown = "==3.3.7"
Pillow = "==9.1.1"
Pygments = "==2.12.0"
PyJWT = "==2.4.0"
pyOpenSSL = "==22.0.0"
PyYAML = "==6.0"
Twisted = "==22.4.0"
[dev-packages]
black = "*"
jedi = "*"
pylint = "*"
[requires]
python_version = "3.7.12"
python_version = "3.10"
Generated
+247 -1693
View File
File diff suppressed because it is too large Load Diff
+1
View File
@@ -1,5 +1,6 @@
[![Docker](https://github.com/MarcPartensky/Website/actions/workflows/docker-push.yml/badge.svg)](https://github.com/MarcPartensky/Website/actions/workflows/docker-push.yml)
[![CodeQL](https://github.com/MarcPartensky/Website/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/MarcPartensky/Website/actions/workflows/codeql-analysis.yml)
<img src="https://img.shields.io/liberapay/goal/marcpartensky.svg?logo=liberapay">
# Website
View File
+20 -26
View File
@@ -105,32 +105,26 @@ services:
networks:
- web
# website-test:
# environment:
# <<: *website
# <<: *postgres
# <<: *redis
# VIRTUAL_HOST: website.dev
# build:
# context: .
# dockerfile: ./Dockerfile
# working_dir: /app
# entrypoint: /app/entrypoint.sh
# command: 80 0.0.0.0
# volumes:
# - ".:/app"
# networks:
# - web
# - caddy
# healthcheck:
# test: ["CMD", "curl", "-fs", "http://website:80/robots.txt"]
# interval: 1m30s
# timeout: 10s
# retries: 3
# start_period: 40s
# labels:
# - "caddy=test.marcpartensky.com"
# - "caddy.reverse_proxy={{upstreams http 80}}"
website-test:
environment:
<<: *website
# <<: *postgres
<<: *redis
VIRTUAL_HOST: website.dev
build:
context: .
dockerfile: ./Dockerfile
command: 80 0.0.0.0
networks:
- web
ports:
- "8080:80"
healthcheck:
test: ["CMD", "curl", "-fs", "http://website:80/robots.txt"]
interval: 1m30s
timeout: 10s
retries: 3
start_period: 40s
test:
image: jwilder/dockerize
+8 -27
View File
@@ -1,35 +1,14 @@
version: "3.9"
x-common:
website:
&website
DJANGO_SETTINGS_MODULE: django_project.settings
SECRET_KEY: "$${openssl rand -base64 64}"
FTP_URL: 0.0.0.0:21
postgres:
&postgres
POSTGRES_NAME: website
POSTGRESQL_USER: root
POSTGRES_PASSWORD: "$${openssl rand -base64 64}"
POSTGRES_HOST: postgres
POSTGRES_PORT: 5432
redis:
&redis
REDIS_URL: redis:6379
services:
website:
image: docker.io/marcpartensky/website:latest
environment:
<<: *website
<<: *postgres
<<: *redis
env_file:
- .env
build:
context: .
dockerfile: Dockerfile
ports:
- "8000:80"
working_dir: /app
entrypoint: /app/entrypoint.sh
depends_on:
- redis
- postgres
@@ -38,17 +17,19 @@ services:
redis:
image: redis
environment:
<<: *redis
env_file:
- .env
networks:
- website
postgres:
image: postgres
environment:
<<: *postgres
env_file:
- .env
networks:
- website
networks:
website:
postgres:
external: true
Binary file not shown.
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 106 KiB

-15
View File
@@ -1,15 +0,0 @@
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_project.settings")
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)
+10 -10
View File
@@ -66,7 +66,7 @@
"node_modules/clone": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
"integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
"integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
"engines": {
"node": ">=0.8"
}
@@ -90,7 +90,7 @@
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
},
"node_modules/core-util-is": {
"version": "1.0.3",
@@ -126,7 +126,7 @@
"node_modules/glob-parse": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/glob-parse/-/glob-parse-0.0.1.tgz",
"integrity": "sha1-N9Ml6xVTvpwfQnJzinVWZEWGbdY="
"integrity": "sha512-Um/XtCfPYhDdrlbsNAiakk6AxCpJSLwvF+a95Cmq0Nn/xF/AihHlsBo0EfoUqnKUqyrgoXzX+q5QsSKzH+/gvw=="
},
"node_modules/handlebars": {
"version": "4.7.7",
@@ -194,7 +194,7 @@
"node_modules/isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
"integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
},
"node_modules/js-yaml": {
"version": "4.1.0",
@@ -530,7 +530,7 @@
"node_modules/wildglob/node_modules/isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
"integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
},
"node_modules/wildglob/node_modules/readable-stream": {
"version": "1.0.34",
@@ -661,7 +661,7 @@
"clone": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
"integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4="
"integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg=="
},
"color-convert": {
"version": "2.0.1",
@@ -679,7 +679,7 @@
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
},
"core-util-is": {
"version": "1.0.3",
@@ -709,7 +709,7 @@
"glob-parse": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/glob-parse/-/glob-parse-0.0.1.tgz",
"integrity": "sha1-N9Ml6xVTvpwfQnJzinVWZEWGbdY="
"integrity": "sha512-Um/XtCfPYhDdrlbsNAiakk6AxCpJSLwvF+a95Cmq0Nn/xF/AihHlsBo0EfoUqnKUqyrgoXzX+q5QsSKzH+/gvw=="
},
"handlebars": {
"version": "4.7.7",
@@ -757,7 +757,7 @@
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
"integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
},
"js-yaml": {
"version": "4.1.0",
@@ -1037,7 +1037,7 @@
"isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
"integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
},
"readable-stream": {
"version": "1.0.34",
Generated
+2030
View File
File diff suppressed because it is too large Load Diff
+44
View File
@@ -0,0 +1,44 @@
[tool.poetry]
name = "website"
version = "0.1.0"
description = ""
authors = ["Marc Partensky <marc.partensky@gmail.com>"]
[tool.poetry.dependencies]
python = "^3.12"
Django = "*"
python-dotenv = "*"
channels = "*"
daphne = "*"
django-storages = "*"
django-crispy-forms = "*"
django-extensions = "*"
django-allauth = "*"
django-compressor = "*"
django-markdown-view = "*"
django-mdeditor = "*"
django-ftpserver = "*"
django-sql-explorer = "*"
django-q = "*"
django-robots = "*"
shortuuid = "*"
django-shortuuidfield = "*"
django-jsonfield-backport = "*"
rich = "*"
djangorestframework = "*"
PyYAML = "*"
django-cors-headers = "*"
Pillow = "*"
psycopg2-binary = "*"
whitenoise = "*"
crispy-bootstrap4 = "^2023.1"
[tool.poetry.dev-dependencies]
pytest = "*"
pylint = "*"
neovim = "*"
black = "*"
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
+67 -171
View File
@@ -1,180 +1,76 @@
#
# These requirements were autogenerated by pipenv
# To regenerate from the project's Pipfile, run:
#
# pipenv lock --requirements
#
-i https://pypi.org/simple
aioredis==1.3.1
appdirs==1.4.4
appnope==0.1.3
arrow==1.2.2
asgiref==3.5.2
astroid==2.11.5
async-generator==1.10; python_version >= '3.5'
async-timeout==4.0.2
attrs==21.4.0
autobahn==22.4.2
automat==20.2.0
backcall==0.2.0
backports.zoneinfo==0.2.1; python_version < '3.9'
blessed==1.19.1
boto3==1.23.6
botocore==1.26.6
bpyutils==0.5.2
certifi==2022.5.18.1
cffi==1.15.0
channels-redis==3.4.0
channels==3.0.4
chardet==4.0.0
charset-normalizer==2.0.12; python_version >= '3'
click==8.1.3
colorama==0.4.4
commonmark==0.9.1
constantly==15.1.0
coverage==6.4
cryptography==37.0.2
daphne==3.0.2
decorator==5.1.1
defusedxml==0.7.1
dill==0.3.5.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6'
dj-database-url==0.5.0
django-503==0.1
django-admin==2.0.1
django-allauth==0.50.0
django-appconf==1.0.5
django-avatar==5.0.0
django-compressor==4.0
django-cors-middleware==1.5.0
django-crispy-forms==1.14.0
django-excel-base==1.0.4
django-excel-response2==3.0.2
django-extensions==3.1.5
ansicon==1.89.0; python_full_version >= "3.6.2" and python_version < "4" and python_version >= "2.7" and platform_system == "Windows"
arrow==1.2.2; python_full_version >= "3.6.2" and python_version < "4" and python_version >= "3.6"
asgiref==3.5.2; python_full_version >= "3.6.2" and python_version < "4" and python_version >= "3.7"
attrs==22.1.0; python_full_version >= "3.6.7" and python_version >= "3.7"
autobahn==22.7.1; python_version >= "3.7"
automat==20.2.0; python_full_version >= "3.6.7" and python_version >= "3.7"
blessed==1.19.1; python_full_version >= "3.6.2" and python_version < "4" and python_version >= "2.7"
certifi==2022.6.15; python_version >= "3.7" and python_version < "4"
cffi==1.15.1; python_version >= "3.7"
channels==3.0.5; python_version >= "3.7"
charset-normalizer==2.1.1; python_version >= "3.7" and python_version < "4" and python_full_version >= "3.6.0"
commonmark==0.9.1; python_full_version >= "3.6.3" and python_full_version < "4.0.0"
constantly==15.1.0; python_full_version >= "3.6.7" and python_version >= "3.7"
cryptography==37.0.4
daphne==3.0.2; python_version >= "3.7"
defusedxml==0.7.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
dj-database-url==1.0.0
django-allauth==0.51.0
django-appconf==1.0.5; python_version >= "3.6"
django-compressor==4.1
django-cors-headers==3.13.0; python_version >= "3.7"
django-crispy-forms==1.14.0; python_version >= "3.7"
django-extensions==3.2.0; python_version >= "3.6"
django-ftpserver==0.8.0
django-heroku==0.3.1
django-jsonfield-backport==1.0.5
django-libsass==0.9
django-jsonfield-backport==1.0.5; python_version >= "3.5"
django-markdown-view==0.0.5
django-mdeditor==0.1.20
django-picklefield==3.0.1
django-q==1.3.9
django-rename-app==0.1.3
django-robots==5.0
django-picklefield==3.1; python_full_version >= "3.6.2" and python_version < "4" and python_version >= "3"
django-q==1.3.9; python_full_version >= "3.6.2" and python_version < "4"
django-robots==5.0; python_version >= "3.7"
django-shortuuidfield==0.1.3
django-six==1.0.4
django-sql-explorer==2.4.1
django-storages==1.12.3
django==3.2.13
djangorestframework==3.13.1
docopt==0.6.2
docutils==0.18.1
flake8==3.9.2
future==0.18.2
geckodriver-autoinstaller==0.1.0
graphviz==0.20
gunicorn==20.1.0
h11==0.13.0; python_version >= '3.6'
h2==4.1.0
hiredis==2.0.0
hpack==4.0.0
hyperframe==6.0.1
hyperlink==21.0.0
idna==3.3
importlib-metadata==4.11.4
incremental==21.3.0
ipython-genutils==0.2.0
ipython==7.33.0
isort==5.10.1
jedi==0.18.1
jeepney==0.8.0
jmespath==1.0.0
keyring==23.5.1
keyrings.alt==3.2.0
lazy-object-proxy==1.7.1
libsass==0.21.0
markdown==3.3.7
matplotlib-inline==0.1.3; python_version >= '3.5'
mccabe==0.6.1
mock==4.0.3
msgpack-python==0.5.6
msgpack==1.0.3
mypy-extensions==0.4.3
nose==1.3.7
oauthlib==3.2.0
outcome==1.1.0; python_version >= '3.6'
packaging==21.3; python_version >= '3.6'
parso==0.8.3
pathspec==0.9.0
pexpect==4.8.0
pickleshare==0.7.5
pillow==9.1.1
pip-autoremove==0.10.0
pip-conflict-checker==0.6.0
pip-review==1.1.1
pip==22.1.1; python_version >= '3.7'
pipdeptree==2.2.1
pipupgrade==1.12.0
platformdirs==2.5.2; python_version >= '3.7'
priority==2.0.0
prompt-toolkit==3.0.29
psycopg2-binary==2.9.3
psycopg2==2.9.3; python_version >= '3.6'
ptyprocess==0.7.0
pyasn1-modules==0.2.8
pyasn1==0.4.8
pycodestyle==2.7.0
pycparser==2.21
pyflakes==2.3.1
django-sql-explorer==2.4.1; python_version >= "3.6"
django-storages==1.13.1; python_version >= "3.7"
django==3.2.15; python_version >= "3.6"
djangorestframework==3.13.1; python_version >= "3.6"
hyperlink==21.0.0; python_full_version >= "3.6.7" and python_version >= "3.7"
idna==3.3; python_version >= "3.7" and python_version < "4" and python_full_version >= "3.6.7"
importlib-metadata==4.12.0; python_version < "3.10" and python_version >= "3.7"
incremental==21.3.0; python_full_version >= "3.6.7" and python_version >= "3.7"
jinxed==1.2.0; python_full_version >= "3.6.2" and python_version < "4" and python_version >= "2.7" and platform_system == "Windows"
markdown==3.4.1; python_version >= "3.7"
oauthlib==3.2.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
pillow==9.2.0; python_version >= "3.7"
psycopg2-binary==2.9.3; python_version >= "3.6"
pyasn1-modules==0.2.8; python_full_version >= "3.6.7" and python_version >= "3.7"
pyasn1==0.4.8; python_full_version >= "3.6.7" and python_version >= "3.7"
pycparser==2.21; python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version >= "3.4.0"
pyftpdlib==1.5.6
pygments==2.12.0
pyhamcrest==2.0.3
pyjwt==2.4.0
pylint==2.13.9
pyopenssl==22.0.0
pyparsing==3.0.9
pysocks==1.7.1
python-dateutil==2.8.2
python-dotenv==0.20.0
pygments==2.13.0; python_full_version >= "3.6.3" and python_full_version < "4.0.0" and python_version >= "3.6"
pyjwt==2.4.0; python_version >= "3.6"
pyopenssl==22.0.0; python_full_version >= "3.6.7" and python_version >= "3.7"
python-dateutil==2.8.2; python_full_version >= "3.6.2" and python_version < "4" and python_version >= "3.6"
python-dotenv==0.20.0; python_version >= "3.5"
python3-openid==3.2.0
pytz-deprecation-shim==0.1.0.post0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'
pytz==2022.1
pyyaml==6.0
pytz==2022.2.1; python_full_version >= "3.6.2" and python_version < "4" and python_version >= "3.7"
pyyaml==6.0; python_version >= "3.6"
rcssmin==1.1.0
redis==3.5.3
regex==2022.4.24
requests-oauthlib==1.3.1
requests==2.27.1
rich==12.4.4
redis==3.5.3; python_full_version >= "3.6.2" and python_version < "4"
requests-oauthlib==1.3.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0"
requests==2.28.1; python_version >= "3.7" and python_version < "4" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0")
rich==12.5.1; python_full_version >= "3.6.3" and python_full_version < "4.0.0"
rjsmin==1.2.0
s3transfer==0.5.2
screen==1.0.1
secretstorage==3.3.2
selenium==4.1.5
service-identity==21.1.0
setuptools==62.3.2; python_version >= '3.7'
shortuuid==1.0.9
six==1.16.0
sniffio==1.2.0; python_version >= '3.5'
sortedcontainers==2.4.0
sqlparse==0.4.2
toml==0.10.2
tomli==2.0.1; python_version < '3.11'
traitlets==5.2.1.post0
trio-websocket==0.9.2; python_version >= '3.5'
trio==0.20.0; python_version >= '3.7'
twisted==22.4.0
txaio==22.2.1
typed-ast==1.5.4
typing-extensions==4.2.0
tzdata==2022.1; python_version >= '3.6'
tzlocal==4.2
urllib3==1.26.9
wcwidth==0.2.5
whitenoise==6.1.0
wrapt==1.14.1
wsproto==1.1.0; python_version >= '3.7'
xlwt==1.3.0
yarg==0.1.9
zipp==3.8.0
zope.interface==5.4.0
service-identity==21.1.0; python_full_version >= "3.6.7" and python_version >= "3.7"
shortuuid==1.0.9; python_version >= "3.5"
six==1.16.0; python_full_version >= "3.6.7" and python_version < "4" and python_version >= "3.7"
sqlparse==0.4.2; python_full_version >= "3.6.2" and python_version < "4" and python_version >= "3.7"
twisted-iocpsupport==1.0.2; python_full_version >= "3.6.7" and python_version >= "3.7" and platform_system == "Windows"
twisted==22.4.0; python_full_version >= "3.6.7" and python_version >= "3.7"
txaio==22.2.1; python_version >= "3.7"
typing-extensions==4.3.0; python_full_version >= "3.6.7" and python_full_version < "4.0.0" and python_version < "3.8" and python_version >= "3.7"
urllib3==1.26.11; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4" or python_full_version >= "3.6.0" and python_version < "4" and python_version >= "3.7"
wcwidth==0.2.5; python_full_version >= "3.6.2" and python_version < "4" and python_version >= "2.7"
whitenoise==6.2.0; python_version >= "3.7"
zipp==3.8.1; python_version < "3.10" and python_version >= "3.7"
zope.interface==5.4.0; python_full_version >= "3.6.7" and python_version >= "3.7"
-80
View File
@@ -1,80 +0,0 @@
{% include 'include/modal.html' %}
{% load static %}
<header id="header" class="d-flex align-items-center">
<div class="container">
<!-- The main logo is shown in mobile version only. The centered nav-logo in nav menu is displayed in desktop view -->
<div class="logo d-block d-lg-none">
<a data-aos="fade-down" class="icon-back-to-top" onclick="toggleTheme()"><img src="{% static 'home/assets/img/black-orchid.svg' %}" alt="" class="img-fluid"></a>
</div>
<nav class="nav-menu d-none d-lg-block">
<ul class="nav-inner">
<li class="drop-down"><a href="/">Explore</a>
<ul>
{% if not user.is_authenticated %}
<li><a href="{% url 'login' %}">Login</a></li>
<li><a href="{% url 'register' %}">Register</a></li>
{% else %}
<li><a href="{% url 'logout' %}">Logout</a></li>
{% endif %}
<li class="drop-down"><a href="{% url 'demo' %}">Demos</a>
<ul>
{% for demo in demos %}
<li><a href="/demo/{{ demo }}">{{ demo }}</a></li>
{% empty %}
<li>No demo loaded.</li>
{% endfor %}
</ul>
</li>
<li class="drop-down"><a href="{% url 'article' %}">Articles</a>
<ul>
{% for article in articles %}
<li><a href="/article/{{ article }}">{{ article }}</a></li>
{% empty %}
<li>No article loaded.</li>
{% endfor %}
</ul>
</li>
<li><a href="{% url 'touch-typing' %}">Touch typing</a></li>
<!-- <li><a href="% url 'planning' %">Planning</a></li> -->
<li><a href="{% url 'first-site' %}">First site</a></li>
<li class="drop-down"><a href="{% url 'game' %}">Games</a>
<ul>
{% for game in games %}
<li><a href="/game/{{ game }}">{{ game }}</a></li>
{% empty %}
<li>No game loaded.</li>
{% endfor %}
</ul>
</li>
<li><a href="{% url 'blog-home' %}">Blog</a></li>
<li class="drop-down"><a href="{% url 'cv' %}">Curriculum Vitae</a>
<ul>
<li><a href="/cv/1p">1 page version</a></li>
<li><a href="/cv/2p">2 pages version</a></li>
</ul>
</li>
<!-- <li class="drop-down"><a href="#">Projects</a> -->
<!-- <ul> -->
<!-- <li><a href="#">Not</a></li> -->
<!-- <li><a href="#">Available</a></li> -->
<!-- </ul> -->
</li>
</ul>
</li>
<li class="active"><a href="/#about">About me</a></li>
<li><a href="/#skills">Skills</a></li>
<li class="nav-logo" style="width: 15%; height: 15%"><a onclick="toggleTheme()"><img id="theme-img" src="{% static 'home/assets/img/black-orchid.svg' %}" alt="" class="img-fluid"></a></li>
<li><a href="/#portfolio">Portfolio</a></li>
<li><a href="/#certificates">Certificates</a></li>
<li><a href="/#contact">Contact</a></li>
</ul>
</nav><!-- .nav-menu -->
</div>
</header>
+1
View File
@@ -0,0 +1 @@
__version__ = '0.1.0'
View File
View File
View File

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Some files were not shown because too many files have changed in this diff Show More