Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7047e12672 | ||
|
|
45abdaac35 | ||
|
|
cdd6cf3b01 | ||
|
|
eca04cfd5f | ||
|
|
1cfd54557f | ||
|
|
5ec0571552 | ||
|
|
1b2fee869d | ||
|
|
7154c5cf0b | ||
|
|
c3346147b8 | ||
|
|
6be82d3dd5 | ||
|
|
0cc1bfaf43 | ||
|
|
2b25ee52f4 | ||
|
|
29dc4867ca | ||
|
|
99d9d06031 | ||
|
|
75a480a45d | ||
|
|
3bafa8fefc | ||
|
|
0df9968808 | ||
|
|
9726ad5bb0 | ||
|
|
8645d24040 | ||
|
|
6fc875415e | ||
|
|
b497b18061 | ||
|
|
d2f576f580 | ||
|
|
8544c7133b | ||
|
|
63fe396e04 | ||
|
|
52e1ae87f3 | ||
|
|
e13499b4b8 | ||
|
|
6896adf094 | ||
|
|
04673d4668 | ||
|
|
b9be118a96 | ||
|
|
a2f34cdbd2 | ||
|
|
e7faf43580 | ||
|
|
cbd4e82f57 | ||
|
|
f70c43eb99 | ||
|
|
a475ceb36f | ||
|
|
fae9d8c7f3 |
@@ -15,7 +15,8 @@ venv
|
||||
.buildpacks
|
||||
*.pem
|
||||
*.crt
|
||||
Pipfile
|
||||
Pipfile.lock
|
||||
.travis.yml
|
||||
.gitignore
|
||||
.dockerignore
|
||||
requirements.txt
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
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
|
||||
@@ -1,7 +1,5 @@
|
||||
liberapay: marcpartensky
|
||||
patreon: marcpartensky
|
||||
github: marcpartensky
|
||||
custom:
|
||||
# - monero:43J2XmRtjDPRLD35UsYGH2AZamFBQz7dt4VdvZXVm3SuadTrvcoXUXBRUNHqukFte23Q5TWXqhbwaLJJgoVQzzbe2AJDANQ
|
||||
- https://paypal.me/marcpartensky
|
||||
- https://buymeacoffee.com/marcpartensky
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
name: Docker
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- "*"
|
||||
- "!master"
|
||||
# Publish `v1.2.3` tags as releases.
|
||||
tags:
|
||||
- v*
|
||||
|
||||
# Run tests for any PRs.
|
||||
pull_request:
|
||||
|
||||
env:
|
||||
IMAGE_NAME: website
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
|
||||
- name: Login to DockerHub
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
|
||||
- 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
|
||||
@@ -15,54 +15,35 @@ env:
|
||||
IMAGE_NAME: website
|
||||
|
||||
jobs:
|
||||
build-and-push:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Build the tag
|
||||
id: tag
|
||||
run: echo "::set-output name=tag::$(git rev-parse --short HEAD).$(date +'%Y-%m-%d')"
|
||||
|
||||
- name: Update apt
|
||||
run: sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y
|
||||
- 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: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
|
||||
uses: docker/setup-qemu-action@v1
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
|
||||
uses: docker/setup-buildx-action@v1
|
||||
- name: Login to DockerHub
|
||||
uses: docker/login-action@v2
|
||||
uses: docker/login-action@v1
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
|
||||
- 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
|
||||
- name: Build and push
|
||||
id: docker_build
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
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
|
||||
tags: marcpartensky/website:latest
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
3.9
|
||||
@@ -1,79 +1,40 @@
|
||||
FROM python:3.9-alpine as builder
|
||||
|
||||
# Pre installations
|
||||
RUN apk update
|
||||
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
|
||||
|
||||
# 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
|
||||
|
||||
# Image of production
|
||||
FROM python:3.9-alpine
|
||||
# FROM alpine
|
||||
ENV SECRET_KEY=whatever
|
||||
FROM python:3.7.12
|
||||
# ARG timestamp
|
||||
# ARG commit
|
||||
# LABEL build.timestamp=timestamp
|
||||
# LABEL build.commit=commit
|
||||
|
||||
# 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"
|
||||
LABEL link="https://marcpartensky.com"
|
||||
# LABEL build.timestamp=timestamp
|
||||
# LABEL build.commit=commit
|
||||
|
||||
# Install curl and stuff for pillow
|
||||
RUN apk update
|
||||
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
|
||||
COPY . /app
|
||||
WORKDIR /app
|
||||
|
||||
# Setup home user website
|
||||
RUN useradd -m website
|
||||
USER website
|
||||
RUN apt-get update
|
||||
|
||||
# Copy useful files
|
||||
WORKDIR /home/website
|
||||
COPY --chown=website website ./website
|
||||
COPY --chown=website --from=builder /opt/website/requirements.txt ./
|
||||
COPY LICENSE ./
|
||||
RUN curl -fsSL https://deb.nodesource.com/setup_16.x | bash
|
||||
RUN apt-get install -y nodejs
|
||||
RUN npm install -g npm@latest
|
||||
RUN npm install
|
||||
|
||||
# No .pyo and easier debugging
|
||||
ENV PYTHONDONTWRITEBYTECODE 1
|
||||
ENV PYTHONUNBUFFERED 1
|
||||
|
||||
# Install dependencies
|
||||
# RUN pip install -U pip
|
||||
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://localhost:$PORT/live || exit 1
|
||||
CMD curl -sSf http://127.0.0.1:$PORT/live || exit 1
|
||||
|
||||
WORKDIR /home/website/website
|
||||
ENTRYPOINT ["./entrypoint.sh"]
|
||||
ENTRYPOINT ["/app/entrypoint.sh"]
|
||||
# ENTRYPOINT ["daphne", "-e", "ssl:443:privateKey=$KEY:certKey=$CERT", "django_project.asgi:application"]
|
||||
|
||||
@@ -5,12 +5,13 @@ PRODUCTION=false
|
||||
.PHONY: start list build push setup update init test up down migrate brewstart brewstop dev prod clean deploy
|
||||
|
||||
start:
|
||||
poetry run ./website/entrypoint.sh --nosetup
|
||||
poetry run ./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:
|
||||
build: update
|
||||
docker-compose -f dev.yml build website
|
||||
push: build
|
||||
git pushall
|
||||
docker-compose -f dev.yml push website
|
||||
setup: init update start
|
||||
update:
|
||||
@@ -20,8 +21,8 @@ update:
|
||||
SECRET_KEY=secret poetry run ./website/manage.py collectstatic --noinput
|
||||
SECRET_KEY=secret poetry run ./website/manage.py makemigrations
|
||||
init: .env
|
||||
pip install --user poetry
|
||||
poetry install --dev
|
||||
pip install --user pipenv
|
||||
pipenv install --dev
|
||||
npm install --save
|
||||
test:
|
||||
pipenv run ./manage.py test
|
||||
@@ -30,7 +31,7 @@ runtest:
|
||||
make test
|
||||
make kill
|
||||
kill:
|
||||
pipenv run ./website/entrypoint.sh kill
|
||||
pipenv run ./entrypoint.sh kill
|
||||
up: init
|
||||
docker-compose up -d
|
||||
down:
|
||||
|
||||
@@ -579,7 +579,6 @@
|
||||
},
|
||||
"pyyaml": {
|
||||
"hashes": [
|
||||
"sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf",
|
||||
"sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293",
|
||||
"sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b",
|
||||
"sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57",
|
||||
@@ -591,32 +590,26 @@
|
||||
"sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287",
|
||||
"sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513",
|
||||
"sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0",
|
||||
"sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782",
|
||||
"sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0",
|
||||
"sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92",
|
||||
"sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f",
|
||||
"sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2",
|
||||
"sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc",
|
||||
"sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1",
|
||||
"sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c",
|
||||
"sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86",
|
||||
"sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4",
|
||||
"sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c",
|
||||
"sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34",
|
||||
"sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b",
|
||||
"sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d",
|
||||
"sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c",
|
||||
"sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb",
|
||||
"sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7",
|
||||
"sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737",
|
||||
"sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3",
|
||||
"sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d",
|
||||
"sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358",
|
||||
"sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53",
|
||||
"sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78",
|
||||
"sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803",
|
||||
"sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a",
|
||||
"sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f",
|
||||
"sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174",
|
||||
"sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"
|
||||
],
|
||||
@@ -717,11 +710,11 @@
|
||||
},
|
||||
"setuptools": {
|
||||
"hashes": [
|
||||
"sha256:57f6f22bde4e042978bcd50176fdb381d7c21a9efa4041202288d3737a0c6a54",
|
||||
"sha256:a7620757bf984b58deaf32fc8a4577a9bbc0850cf92c20e1ce41c38c19e5fb75"
|
||||
"sha256:73bfae4791da7c1c56882ab17577d00f7a37a0347162aeb9360058de0dc25083",
|
||||
"sha256:abcb76aa4decd7a17cbe0e4b31bdf549d106ba7f668e87e0860f5f7b84b9b3fe"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==65.6.3"
|
||||
"version": "==63.4.2"
|
||||
},
|
||||
"shortuuid": {
|
||||
"hashes": [
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
[](https://github.com/MarcPartensky/Website/actions/workflows/docker-push.yml)
|
||||
[](https://github.com/MarcPartensky/Website/actions/workflows/codeql-analysis.yml)
|
||||
<img src="https://img.shields.io/liberapay/goal/marcpartensky.svg?logo=liberapay">
|
||||
|
||||
# Website
|
||||
|
||||
|
||||
@@ -21,6 +21,16 @@ x-common:
|
||||
REDIS_URL: redis:6379
|
||||
|
||||
services:
|
||||
# nginx:
|
||||
# image: jwilder/nginx-proxy
|
||||
# restart: unless-stopped
|
||||
# networks:
|
||||
# - web
|
||||
# ports:
|
||||
# - "127.0.1.1:80:80"
|
||||
# volumes:
|
||||
# - /var/run/docker.sock:/tmp/docker.sock:ro
|
||||
|
||||
website:
|
||||
image: marcpartensky/website
|
||||
environment:
|
||||
@@ -43,12 +53,6 @@ services:
|
||||
- postgres
|
||||
networks:
|
||||
- web
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-fs", "http://website:80/robots.txt"]
|
||||
interval: 1m30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 40s
|
||||
|
||||
postgres:
|
||||
image: postgres
|
||||
@@ -108,29 +112,29 @@ services:
|
||||
website-test:
|
||||
environment:
|
||||
<<: *website
|
||||
# <<: *postgres
|
||||
<<: *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
|
||||
ports:
|
||||
- "8080:80"
|
||||
- caddy
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-fs", "http://website:80/robots.txt"]
|
||||
interval: 1m30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 40s
|
||||
|
||||
test:
|
||||
image: jwilder/dockerize
|
||||
networks:
|
||||
- web
|
||||
command: -wait http://website:8080/healthcheck -timeout 120s -wait-retry-interval 5s
|
||||
labels:
|
||||
- "caddy=test.marcpartensky.com"
|
||||
- "caddy.reverse_proxy={{upstreams http 80}}"
|
||||
|
||||
networks:
|
||||
web:
|
||||
|
||||
@@ -1,14 +1,35 @@
|
||||
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
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
<<: *website
|
||||
<<: *postgres
|
||||
<<: *redis
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
ports:
|
||||
- "8000:80"
|
||||
working_dir: /app
|
||||
entrypoint: /app/entrypoint.sh
|
||||
depends_on:
|
||||
- redis
|
||||
- postgres
|
||||
@@ -17,19 +38,17 @@ services:
|
||||
|
||||
redis:
|
||||
image: redis
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
<<: *redis
|
||||
networks:
|
||||
- website
|
||||
|
||||
postgres:
|
||||
image: postgres
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
<<: *postgres
|
||||
networks:
|
||||
- website
|
||||
|
||||
networks:
|
||||
website:
|
||||
postgres:
|
||||
external: true
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
src=.
|
||||
src=./website
|
||||
|
||||
port=${1:-$PORT}
|
||||
host=${2:-$HOST}
|
||||
@@ -21,17 +21,15 @@ fi
|
||||
|
||||
echo $$ > /tmp/website.pid
|
||||
|
||||
echo -e "Running \033[1mentrypoint.sh\033[0m using $HOST:$PORT"
|
||||
$src/manage.py migrate
|
||||
|
||||
setup() {
|
||||
echo -e "Running \033[1mentrypoint.sh\033[0m using $HOST:$PORT"
|
||||
$src/manage.py migrate
|
||||
echo -e "Creating \033[1msuper user\033[0m using:\n - username: \033[1m$username\033[0m\n - email: \033[1m$email\033[0m\n"
|
||||
$src/manage.py createsuperuser --user $username --email $email --noinput
|
||||
$src/manage.py collectstatic --noinput --clear
|
||||
}
|
||||
|
||||
if [[ $NOSETUP == "true" ]] || [[ "$1" == "--nosetup" ]]; then
|
||||
echo no setup
|
||||
else
|
||||
if [[ ! -z $NOSETUP && ! $1 = "--nosetup" ]]; then
|
||||
setup
|
||||
fi
|
||||
|
||||
@@ -173,9 +173,9 @@
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"node_modules/is-core-module": {
|
||||
"version": "2.9.0",
|
||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz",
|
||||
"integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
|
||||
"version": "2.10.0",
|
||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz",
|
||||
"integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==",
|
||||
"dependencies": {
|
||||
"has": "^1.0.3"
|
||||
},
|
||||
@@ -250,7 +250,7 @@
|
||||
"node_modules/merge-stream": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz",
|
||||
"integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=",
|
||||
"integrity": "sha512-e6RM36aegd4f+r8BZCcYXlO2P3H6xbUM6ktL2Xmf45GAOit9bI4z6/3VU7JwllVO1L7u0UDSg/EhzQ5lmMLolA==",
|
||||
"dependencies": {
|
||||
"readable-stream": "^2.0.1"
|
||||
}
|
||||
@@ -258,7 +258,7 @@
|
||||
"node_modules/microee": {
|
||||
"version": "0.0.6",
|
||||
"resolved": "https://registry.npmjs.org/microee/-/microee-0.0.6.tgz",
|
||||
"integrity": "sha1-oSvbAQNoHosSapsHHrpMRnx4//4="
|
||||
"integrity": "sha512-/LdL3jiBWDJ3oQIRLgRhfeCZNE3patM1LiwCC124+/HHn10sI/G2OAyiMfTNzH5oYWoZBk0tRZADAUOv+0Wt0A=="
|
||||
},
|
||||
"node_modules/minimatch": {
|
||||
"version": "3.0.8",
|
||||
@@ -279,7 +279,7 @@
|
||||
"node_modules/miniq": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/miniq/-/miniq-1.0.1.tgz",
|
||||
"integrity": "sha1-hV7SmtMZRW8IeFobTwa7vdmk8sE=",
|
||||
"integrity": "sha512-nbUT6JYbZTCSCyEbsXZh4bF1k5G4liC8Q+iFCm13THwx0MmtTI7wwocwKHLNJRQg9jAdRvuLdhCvpeC2zN4NjA==",
|
||||
"dependencies": {
|
||||
"microee": "0.0.6",
|
||||
"ondone": "~1.0.0"
|
||||
@@ -288,7 +288,7 @@
|
||||
"node_modules/mm-brace-expand": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/mm-brace-expand/-/mm-brace-expand-0.0.1.tgz",
|
||||
"integrity": "sha1-jrbgqZ+HrTT/8YJzMRBJadjFBP4="
|
||||
"integrity": "sha512-sa51AQQobDS+0uqkzK30lwLP5ij72W5I0MWceB6ckwC8iSldurz+QXNosHQIKUIfqDtCSs74HLgP8ithBeTs+Q=="
|
||||
},
|
||||
"node_modules/neo-async": {
|
||||
"version": "2.6.2",
|
||||
@@ -298,7 +298,7 @@
|
||||
"node_modules/ondone": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ondone/-/ondone-1.0.0.tgz",
|
||||
"integrity": "sha1-+yCDFtesKVG9zGlqfYZL8hr3oAg="
|
||||
"integrity": "sha512-AzeDPeQX8GDSg9ynk7AR7l5Q4+5tuioS2x7O8bzN1BrlR/wQsa+uFzTt/nLxQ2tU9i0mSymkFkCKGVFSs2Vyew=="
|
||||
},
|
||||
"node_modules/path-parse": {
|
||||
"version": "1.0.7",
|
||||
@@ -308,7 +308,7 @@
|
||||
"node_modules/pipe-iterators": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/pipe-iterators/-/pipe-iterators-1.3.0.tgz",
|
||||
"integrity": "sha1-BftiWCLXED3Exz+/6BdYTKVh8Lg=",
|
||||
"integrity": "sha512-fj8hpBfOE76XJa1bwhfCOIPe/mWAsvZtVBBsgIlBpGXZEOeDQpKxCl8izAOVj3cOlupZJRthwXJZfj7390f+3w==",
|
||||
"dependencies": {
|
||||
"clone": "~1.0.2",
|
||||
"merge-stream": "~1.0.0",
|
||||
@@ -362,12 +362,12 @@
|
||||
"node_modules/process-nextick-args": {
|
||||
"version": "1.0.7",
|
||||
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
|
||||
"integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
|
||||
"integrity": "sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw=="
|
||||
},
|
||||
"node_modules/readable-stream": {
|
||||
"version": "2.0.6",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
|
||||
"integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
|
||||
"integrity": "sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==",
|
||||
"dependencies": {
|
||||
"core-util-is": "~1.0.0",
|
||||
"inherits": "~2.0.1",
|
||||
@@ -380,17 +380,17 @@
|
||||
"node_modules/require-directory": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
|
||||
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
|
||||
"integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/resolve": {
|
||||
"version": "1.22.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
|
||||
"integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
|
||||
"version": "1.22.1",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
|
||||
"integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
|
||||
"dependencies": {
|
||||
"is-core-module": "^2.8.1",
|
||||
"is-core-module": "^2.9.0",
|
||||
"path-parse": "^1.0.7",
|
||||
"supports-preserve-symlinks-flag": "^1.0.0"
|
||||
},
|
||||
@@ -431,7 +431,7 @@
|
||||
"node_modules/string_decoder": {
|
||||
"version": "0.10.31",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
|
||||
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
|
||||
"integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="
|
||||
},
|
||||
"node_modules/string-width": {
|
||||
"version": "4.2.3",
|
||||
@@ -498,9 +498,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/uglify-js": {
|
||||
"version": "3.15.5",
|
||||
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.5.tgz",
|
||||
"integrity": "sha512-hNM5q5GbBRB5xB+PMqVRcgYe4c8jbyZ1pzZhS6jbq54/4F2gFK869ZheiE5A8/t+W5jtTNpWef/5Q9zk639FNQ==",
|
||||
"version": "3.16.3",
|
||||
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.16.3.tgz",
|
||||
"integrity": "sha512-uVbFqx9vvLhQg0iBaau9Z75AxWJ8tqM9AV890dIZCLApF4rTcyHwmAvLeEdYRs+BzYWu8Iw81F79ah0EfTXbaw==",
|
||||
"optional": true,
|
||||
"bin": {
|
||||
"uglifyjs": "bin/uglifyjs"
|
||||
@@ -512,12 +512,12 @@
|
||||
"node_modules/util-deprecate": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
|
||||
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
|
||||
},
|
||||
"node_modules/wildglob": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/wildglob/-/wildglob-0.1.1.tgz",
|
||||
"integrity": "sha1-Dz+i9HHeSOwiSW3Vee2o+5Oqeto=",
|
||||
"integrity": "sha512-sLsXCDxFfDFxTB2dLaycS/a1ois/GxfYviyD6RX6osd+MeGtfPsBayYfE1O6ELGN6f3plIrYqrDzmoXG5asLZw==",
|
||||
"dependencies": {
|
||||
"glob-parse": "0.0.1",
|
||||
"microee": "0.0.6",
|
||||
@@ -535,7 +535,7 @@
|
||||
"node_modules/wildglob/node_modules/readable-stream": {
|
||||
"version": "1.0.34",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
|
||||
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
|
||||
"integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==",
|
||||
"dependencies": {
|
||||
"core-util-is": "~1.0.0",
|
||||
"inherits": "~2.0.1",
|
||||
@@ -546,7 +546,7 @@
|
||||
"node_modules/wildglob/node_modules/through2": {
|
||||
"version": "0.6.5",
|
||||
"resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
|
||||
"integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
|
||||
"integrity": "sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==",
|
||||
"dependencies": {
|
||||
"readable-stream": ">=1.0.33-1 <1.1.0-0",
|
||||
"xtend": ">=4.0.0 <4.1.0-0"
|
||||
@@ -555,7 +555,7 @@
|
||||
"node_modules/wordwrap": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
|
||||
"integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus="
|
||||
"integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q=="
|
||||
},
|
||||
"node_modules/wrap-ansi": {
|
||||
"version": "7.0.0",
|
||||
@@ -742,9 +742,9 @@
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"is-core-module": {
|
||||
"version": "2.9.0",
|
||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz",
|
||||
"integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
|
||||
"version": "2.10.0",
|
||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz",
|
||||
"integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==",
|
||||
"requires": {
|
||||
"has": "^1.0.3"
|
||||
}
|
||||
@@ -801,7 +801,7 @@
|
||||
"merge-stream": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz",
|
||||
"integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=",
|
||||
"integrity": "sha512-e6RM36aegd4f+r8BZCcYXlO2P3H6xbUM6ktL2Xmf45GAOit9bI4z6/3VU7JwllVO1L7u0UDSg/EhzQ5lmMLolA==",
|
||||
"requires": {
|
||||
"readable-stream": "^2.0.1"
|
||||
}
|
||||
@@ -809,7 +809,7 @@
|
||||
"microee": {
|
||||
"version": "0.0.6",
|
||||
"resolved": "https://registry.npmjs.org/microee/-/microee-0.0.6.tgz",
|
||||
"integrity": "sha1-oSvbAQNoHosSapsHHrpMRnx4//4="
|
||||
"integrity": "sha512-/LdL3jiBWDJ3oQIRLgRhfeCZNE3patM1LiwCC124+/HHn10sI/G2OAyiMfTNzH5oYWoZBk0tRZADAUOv+0Wt0A=="
|
||||
},
|
||||
"minimatch": {
|
||||
"version": "3.0.8",
|
||||
@@ -827,7 +827,7 @@
|
||||
"miniq": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/miniq/-/miniq-1.0.1.tgz",
|
||||
"integrity": "sha1-hV7SmtMZRW8IeFobTwa7vdmk8sE=",
|
||||
"integrity": "sha512-nbUT6JYbZTCSCyEbsXZh4bF1k5G4liC8Q+iFCm13THwx0MmtTI7wwocwKHLNJRQg9jAdRvuLdhCvpeC2zN4NjA==",
|
||||
"requires": {
|
||||
"microee": "0.0.6",
|
||||
"ondone": "~1.0.0"
|
||||
@@ -836,7 +836,7 @@
|
||||
"mm-brace-expand": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/mm-brace-expand/-/mm-brace-expand-0.0.1.tgz",
|
||||
"integrity": "sha1-jrbgqZ+HrTT/8YJzMRBJadjFBP4="
|
||||
"integrity": "sha512-sa51AQQobDS+0uqkzK30lwLP5ij72W5I0MWceB6ckwC8iSldurz+QXNosHQIKUIfqDtCSs74HLgP8ithBeTs+Q=="
|
||||
},
|
||||
"neo-async": {
|
||||
"version": "2.6.2",
|
||||
@@ -846,7 +846,7 @@
|
||||
"ondone": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ondone/-/ondone-1.0.0.tgz",
|
||||
"integrity": "sha1-+yCDFtesKVG9zGlqfYZL8hr3oAg="
|
||||
"integrity": "sha512-AzeDPeQX8GDSg9ynk7AR7l5Q4+5tuioS2x7O8bzN1BrlR/wQsa+uFzTt/nLxQ2tU9i0mSymkFkCKGVFSs2Vyew=="
|
||||
},
|
||||
"path-parse": {
|
||||
"version": "1.0.7",
|
||||
@@ -856,7 +856,7 @@
|
||||
"pipe-iterators": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/pipe-iterators/-/pipe-iterators-1.3.0.tgz",
|
||||
"integrity": "sha1-BftiWCLXED3Exz+/6BdYTKVh8Lg=",
|
||||
"integrity": "sha512-fj8hpBfOE76XJa1bwhfCOIPe/mWAsvZtVBBsgIlBpGXZEOeDQpKxCl8izAOVj3cOlupZJRthwXJZfj7390f+3w==",
|
||||
"requires": {
|
||||
"clone": "~1.0.2",
|
||||
"merge-stream": "~1.0.0",
|
||||
@@ -914,12 +914,12 @@
|
||||
"process-nextick-args": {
|
||||
"version": "1.0.7",
|
||||
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
|
||||
"integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
|
||||
"integrity": "sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw=="
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "2.0.6",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
|
||||
"integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
|
||||
"integrity": "sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==",
|
||||
"requires": {
|
||||
"core-util-is": "~1.0.0",
|
||||
"inherits": "~2.0.1",
|
||||
@@ -932,14 +932,14 @@
|
||||
"require-directory": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
|
||||
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
|
||||
"integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="
|
||||
},
|
||||
"resolve": {
|
||||
"version": "1.22.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
|
||||
"integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
|
||||
"version": "1.22.1",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
|
||||
"integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
|
||||
"requires": {
|
||||
"is-core-module": "^2.8.1",
|
||||
"is-core-module": "^2.9.0",
|
||||
"path-parse": "^1.0.7",
|
||||
"supports-preserve-symlinks-flag": "^1.0.0"
|
||||
}
|
||||
@@ -957,7 +957,7 @@
|
||||
"string_decoder": {
|
||||
"version": "0.10.31",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
|
||||
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
|
||||
"integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="
|
||||
},
|
||||
"string-width": {
|
||||
"version": "4.2.3",
|
||||
@@ -1011,20 +1011,20 @@
|
||||
}
|
||||
},
|
||||
"uglify-js": {
|
||||
"version": "3.15.5",
|
||||
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.5.tgz",
|
||||
"integrity": "sha512-hNM5q5GbBRB5xB+PMqVRcgYe4c8jbyZ1pzZhS6jbq54/4F2gFK869ZheiE5A8/t+W5jtTNpWef/5Q9zk639FNQ==",
|
||||
"version": "3.16.3",
|
||||
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.16.3.tgz",
|
||||
"integrity": "sha512-uVbFqx9vvLhQg0iBaau9Z75AxWJ8tqM9AV890dIZCLApF4rTcyHwmAvLeEdYRs+BzYWu8Iw81F79ah0EfTXbaw==",
|
||||
"optional": true
|
||||
},
|
||||
"util-deprecate": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
|
||||
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
|
||||
},
|
||||
"wildglob": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/wildglob/-/wildglob-0.1.1.tgz",
|
||||
"integrity": "sha1-Dz+i9HHeSOwiSW3Vee2o+5Oqeto=",
|
||||
"integrity": "sha512-sLsXCDxFfDFxTB2dLaycS/a1ois/GxfYviyD6RX6osd+MeGtfPsBayYfE1O6ELGN6f3plIrYqrDzmoXG5asLZw==",
|
||||
"requires": {
|
||||
"glob-parse": "0.0.1",
|
||||
"microee": "0.0.6",
|
||||
@@ -1042,7 +1042,7 @@
|
||||
"readable-stream": {
|
||||
"version": "1.0.34",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
|
||||
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
|
||||
"integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==",
|
||||
"requires": {
|
||||
"core-util-is": "~1.0.0",
|
||||
"inherits": "~2.0.1",
|
||||
@@ -1053,7 +1053,7 @@
|
||||
"through2": {
|
||||
"version": "0.6.5",
|
||||
"resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
|
||||
"integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
|
||||
"integrity": "sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==",
|
||||
"requires": {
|
||||
"readable-stream": ">=1.0.33-1 <1.1.0-0",
|
||||
"xtend": ">=4.0.0 <4.1.0-0"
|
||||
@@ -1064,7 +1064,7 @@
|
||||
"wordwrap": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
|
||||
"integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus="
|
||||
"integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q=="
|
||||
},
|
||||
"wrap-ansi": {
|
||||
"version": "7.0.0",
|
||||
|
||||
@@ -5,39 +5,35 @@ description = ""
|
||||
authors = ["Marc Partensky <marc.partensky@gmail.com>"]
|
||||
|
||||
[tool.poetry.dependencies]
|
||||
python = "^3.9"
|
||||
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"
|
||||
python = "^3.10"
|
||||
Django = "^4.0.4"
|
||||
python-dotenv = "^0.20.0"
|
||||
django-heroku = "^0.3.1"
|
||||
channels = "^3.0.4"
|
||||
django-storages = "^1.12.3"
|
||||
django-crispy-forms = "^1.14.0"
|
||||
django-extensions = "^3.1.5"
|
||||
django-allauth = "^0.50.0"
|
||||
django-compressor = "^4.0"
|
||||
django-markdown-view = "^0.0.5"
|
||||
django-mdeditor = "^0.1.20"
|
||||
django-ftpserver = "^0.8.0"
|
||||
django-sql-explorer = "^2.4.1"
|
||||
django-q = "^1.3.9"
|
||||
django-robots = "^5.0"
|
||||
shortuuid = "^1.0.9"
|
||||
django-shortuuidfield = "^0.1.3"
|
||||
django-jsonfield-backport = "^1.0.5"
|
||||
Pillow = "^9.1.1"
|
||||
rich = "^12.4.4"
|
||||
djangorestframework = "^3.13.1"
|
||||
PyYAML = "^6.0"
|
||||
|
||||
[tool.poetry.dev-dependencies]
|
||||
pytest = "*"
|
||||
pylint = "*"
|
||||
neovim = "*"
|
||||
black = "*"
|
||||
pytest = "^5.2"
|
||||
pylint = "^2.13.9"
|
||||
neovim = "^0.3.1"
|
||||
black = "^22.3.0"
|
||||
|
||||
[build-system]
|
||||
requires = ["poetry-core>=1.0.0"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
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"
|
||||
asgiref==3.5.2; python_full_version >= "3.6.2" and python_version < "4" and python_version >= "3.8"
|
||||
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"
|
||||
@@ -8,17 +8,16 @@ blessed==1.19.1; python_full_version >= "3.6.2" and python_version < "4" and pyt
|
||||
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"
|
||||
charset-normalizer==2.1.0; 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-allauth==0.50.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
|
||||
@@ -32,28 +31,27 @@ django-robots==5.0; python_version >= "3.7"
|
||||
django-shortuuidfield==0.1.3
|
||||
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"
|
||||
django==4.1; python_version >= "3.8"
|
||||
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"
|
||||
psycopg2==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.13.0; python_full_version >= "3.6.3" and python_full_version < "4.0.0" and python_version >= "3.6"
|
||||
pygments==2.12.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==2022.2.1; python_full_version >= "3.6.2" and python_version < "4" and python_version >= "3.7"
|
||||
pytz==2022.1; python_version >= "3.6"
|
||||
pyyaml==6.0; python_version >= "3.6"
|
||||
rcssmin==1.1.0
|
||||
redis==3.5.3; python_full_version >= "3.6.2" and python_version < "4"
|
||||
@@ -64,13 +62,13 @@ rjsmin==1.2.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"
|
||||
sqlparse==0.4.2; python_full_version >= "3.6.2" and python_version < "4" and python_version >= "3.8"
|
||||
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"
|
||||
typing-extensions==4.3.0; python_full_version >= "3.6.7" and python_version >= "3.7"
|
||||
tzdata==2022.1; sys_platform == "win32" and python_version >= "3.8" and python_full_version >= "3.6.2" and python_version < "4"
|
||||
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"
|
||||
|
||||
@@ -47,12 +47,12 @@
|
||||
|
||||
|
||||
<div id="app">
|
||||
<div>403 Error this layout is not recognized choose one of those layouts.</div>
|
||||
<div>403</div>
|
||||
<div class="txt">
|
||||
<!-- Theme Forbidden: authorized themes<span class="blink">_</span> -->
|
||||
Theme Forbidden: authorized themes<span class="blink">_</span>
|
||||
<ul>
|
||||
{% for layout in layouts %}
|
||||
<a href=/article/{{article.title}}/{{layout}}><li>{{layout}}</li></a>
|
||||
<li>{{layout}}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
@@ -1,194 +0,0 @@
|
||||
{% load static %}<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Cnh_formation</title>
|
||||
<link href="{% static 'home/assets/img/white-orchid.svg' %}" rel="icon">
|
||||
<link href="{% static 'home/assets/img/black-orchid.svg' %}" rel="apple-touch-icon">
|
||||
<link href="{% static 'article/assets/css/main.css' %}" rel="stylesheet">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<link rel="stylesheet" href="{% static 'article/mixu-radar/css/style.css' %}" />
|
||||
<link rel="stylesheet" href="{% static 'article/mixu-radar/css/pilcrow.css' %}" />
|
||||
<link type="text/css" rel="stylesheet" href="{% static 'article/mixu-radar/css/hljs-github.min.css' %}"/>
|
||||
<script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-MML-AM_CHTML"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/node-plantuml@0.9.0/index.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div style="clear: both;">
|
||||
<div style="float: left">
|
||||
{{ view_count }}
|
||||
<span class="iconify" data-icon="carbon:view" data-inline="false"></span>
|
||||
{{ like_count }}
|
||||
<span class="iconify" data-icon="fluent-thumb-like-16-regular" data-inline="false"></span>
|
||||
{{ dislike_count }}
|
||||
<span class="iconify" data-icon="fluent:thumb-dislike-24-regular"data-inline="false"></span>
|
||||
<script src="https://code.iconify.design/1/1.0.7/iconify.min.js"></script>
|
||||
</div>
|
||||
<div style="float: right">
|
||||
<small style="text-align: right">{{ created }}</small>
|
||||
{% if update_count > 0 %}
|
||||
<small> V{{ update_count }}</small>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="toc">
|
||||
<div id="toc-inner">
|
||||
<a class="back" class="container" href="{% url 'article' %}"><p>Back to articles</p></a><div class="fade_rule"></div><ul class="nav nav-list">
|
||||
<li class="sidebar-header-1"><a href="#l'éloquence-les-clés-du-succès">L'éloquence les clés du succès</a></li>
|
||||
<li class="sidebar-header-2"><a href="#dates">Dates</a></li>
|
||||
<li class="sidebar-header-2"><a href="#structurer-son-discours">Structurer son discours</a></li>
|
||||
<li class="sidebar-header-2"><a href="#10-règles">10 règles</a></li>
|
||||
<li class="sidebar-header-2"><a href="#oral---être-chauve-c'est-le-futur">Oral - Être chauve c'est le futur</a></li>
|
||||
<li class="sidebar-header-1"><a href="#kpi">Kpi</a></li>
|
||||
<li class="sidebar-header-2"><a href="#kpi-en-entreprises">Kpi en entreprises</a></li>
|
||||
<li class="sidebar-header-3"><a href="#performance-business---satisfaction-client">Performance business - Satisfaction client</a></li>
|
||||
<li class="sidebar-header-3"><a href="#performance-financière-et-opérationnel---cash">Performance financière et opérationnel - Cash</a></li>
|
||||
<li class="sidebar-header-3"><a href="#motivation-et-engagement-des-troupes---satisfaction-staff">Motivation et engagement des troupes - Satisfaction staff</a></li>
|
||||
<li class="sidebar-header-2"><a href="#description-du-sujet">Description du sujet</a></li>
|
||||
<li class="sidebar-header-3"><a href="#exemples">Exemples</a></li>
|
||||
<li class="sidebar-header-2"><a href="#la-méthode-des-5-pourquoi">La méthode des 5 pourquoi</a></li>
|
||||
<li class="sidebar-header-2"><a href="#swot">SWOT</a></li>
|
||||
<li class="sidebar-header-2"><a href="#le-diagramme-d'ishikawa">Le diagramme d'Ishikawa</a></li>
|
||||
<li class="sidebar-header-2"><a href="#la-méthode-qqoqcp">La méthode QQOQCP</a></li>
|
||||
<li class="sidebar-header-2"><a href="#pour-résumer">Pour résumer</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="header">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="clear"></div>
|
||||
<div id="main">
|
||||
<div id="content" class="post"><h1 id="léloquence-les-clés-du-succès"><a class="header-link" href="#léloquence-les-clés-du-succès"></a>L'éloquence les clés du succès</h1>
|
||||
<h2 id="dates"><a class="header-link" href="#dates"></a>Dates</h2>
|
||||
<p>Cicéron - 63 av jc
|
||||
Martin Luther King - 1963</p>
|
||||
<p>Ethos - 55% : Gestes, intonation
|
||||
Pathos - 40% :<br>Logos - 5% :</p>
|
||||
<h2 id="structurer-son-discours"><a class="header-link" href="#structurer-son-discours"></a>Structurer son discours</h2>
|
||||
<ul class="list">
|
||||
<li>Introduction</li>
|
||||
<li>Contexte</li>
|
||||
<li>Argumentation</li>
|
||||
<li>Conclusion</li>
|
||||
</ul>
|
||||
<h2 id="10-règles"><a class="header-link" href="#10-règles"></a>10 règles</h2>
|
||||
<ul class="list">
|
||||
<li>Écrire son discours</li>
|
||||
<li>Enregistrer son discours pour l'écouter</li>
|
||||
<li>S'adapter à son audience</li>
|
||||
<li>Connaître son discours</li>
|
||||
<li>Gérer son rythme</li>
|
||||
<li>Pieds au sol tu ancreras</li>
|
||||
<li>Sourire</li>
|
||||
<li>Faire des gestes</li>
|
||||
<li>Supprimer les tics</li>
|
||||
<li>Prendre du plaisir</li>
|
||||
</ul>
|
||||
<h2 id="oral---être-chauve-cest-le-futur"><a class="header-link" href="#oral---être-chauve-cest-le-futur"></a>Oral - Être chauve c'est le futur</h2>
|
||||
<p>Dans un monde ou le capillaire est capital, unissons-nous pour changer les choses!
|
||||
et rejoignez-nous dans la chauveté.
|
||||
Pourquoi être chauve en 2021? En 2021 dans un monde ou le réchauffement climatique est
|
||||
une problématique majeure et où préserver l'environnement est primordiale. Dans un monde
|
||||
ou devons faire face, au défi, de la discrimination, devenir chauve c'est supprimer
|
||||
les discriminations de coiffure.
|
||||
Dans un monde où tous va de plus en plus vite, être chauve c'est garder du temps pour soi.</p>
|
||||
<p>Pour conclure, être chauve est la clé du succès.</p>
|
||||
<ul class="list">
|
||||
<li>réchauffement climatique</li>
|
||||
<li>économiser le champoin écologique</li>
|
||||
<li>gain de temps</li>
|
||||
<li>gain d'argent</li>
|
||||
<li>c'est la solution contre le réchauffement climatique</li>
|
||||
<li>c'est pour se réunir pour avoir un point en commun</li>
|
||||
</ul>
|
||||
<h1 id="kpi"><a class="header-link" href="#kpi"></a>Kpi</h1>
|
||||
<p>Comment mieux piolter sa stratégie grâce aux KPI en période de crise</p>
|
||||
<h2 id="kpi-en-entreprises"><a class="header-link" href="#kpi-en-entreprises"></a>Kpi en entreprises</h2>
|
||||
<h3 id="performance-business---satisfaction-client"><a class="header-link" href="#performance-business---satisfaction-client"></a>Performance business - Satisfaction client</h3>
|
||||
<ul class="list">
|
||||
<li>CA</li>
|
||||
<li>Nobre d'études</li>
|
||||
<li>Délais</li>
|
||||
<li>Taux de transformation</li>
|
||||
<li>Satisfaction client</li>
|
||||
<li>KPI sur la sous / co-traitance</li>
|
||||
</ul>
|
||||
<h3 id="performance-financière-et-opérationnel---cash"><a class="header-link" href="#performance-financière-et-opérationnel---cash"></a>Performance financière et opérationnel - Cash</h3>
|
||||
<ul class="list">
|
||||
<li>Taux marge</li>
|
||||
<li>Rentabilité globale</li>
|
||||
<li>Cash / trésorerie</li>
|
||||
<li>Conformité</li>
|
||||
<li>Délais sur les retours clients (factures, trésorerie)</li>
|
||||
</ul>
|
||||
<h3 id="motivation-et-engagement-des-troupes---satisfaction-staff"><a class="header-link" href="#motivation-et-engagement-des-troupes---satisfaction-staff"></a>Motivation et engagement des troupes - Satisfaction staff</h3>
|
||||
<ul class="list">
|
||||
<li>Satisfaction consultant</li>
|
||||
<li>Satisfaction du staff</li>
|
||||
<li>Turnovers VS rétention</li>
|
||||
</ul>
|
||||
<h2 id="description-du-sujet"><a class="header-link" href="#description-du-sujet"></a>Description du sujet</h2>
|
||||
<p>Comment mieux piloter sa stratégie grâce aux KPI en <strong>période de crise</strong></p>
|
||||
<h3 id="exemples"><a class="header-link" href="#exemples"></a>Exemples</h3>
|
||||
<ul class="list">
|
||||
<li>Départ du président ou du trésorier</li>
|
||||
<li>Client fidèle qui dépose le bilan</li>
|
||||
<li>Perte du soutien de l'école</li>
|
||||
<li>La moitié de l'effectif qui part</li>
|
||||
</ul>
|
||||
<h2 id="la-méthode-des-5-pourquoi"><a class="header-link" href="#la-méthode-des-5-pourquoi"></a>La méthode des 5 pourquoi</h2>
|
||||
<p>Outil de résolution de probleme qui permet d'identifier les cause profondes d'un dysfonctionnement au sein de la structure.
|
||||
En se posant successivement 5 questions commençant par <strong>Pourquoi</strong>
|
||||
KPI : CA en baisse -> Moins de clients - Nouveau concurrent</p>
|
||||
<h2 id="swot"><a class="header-link" href="#swot"></a>SWOT</h2>
|
||||
<ul class="list">
|
||||
<li>Strengths</li>
|
||||
<li>Weaknesses</li>
|
||||
<li>Opportunities</li>
|
||||
<li>Threats</li>
|
||||
</ul>
|
||||
<h2 id="le-diagramme-dishikawa"><a class="header-link" href="#le-diagramme-dishikawa"></a>Le diagramme d'Ishikawa</h2>
|
||||
<ul class="list">
|
||||
<li>Pointer l'effet</li>
|
||||
<li>Repérer les causes sur lesquelles votre JE peut agir</li>
|
||||
<li>Dresser les causes</li>
|
||||
<li>Hiérarchiser les causes</li>
|
||||
</ul>
|
||||
<h2 id="la-méthode-qqoqcp"><a class="header-link" href="#la-méthode-qqoqcp"></a>La méthode QQOQCP</h2>
|
||||
<ul class="list">
|
||||
<li>Qui ?</li>
|
||||
<li>Quoi ?</li>
|
||||
<li>Où ?</li>
|
||||
<li>Quand ?</li>
|
||||
<li>Comment ?</li>
|
||||
<li>Pourquoi ?</li>
|
||||
</ul>
|
||||
<h2 id="pour-résumer"><a class="header-link" href="#pour-résumer"></a>Pour résumer</h2>
|
||||
<ul class="list">
|
||||
<li>La méthode des 5 pourquoi</li>
|
||||
<li>La matrice SWOT</li>
|
||||
<li>The Ecosystem Canva</li>
|
||||
<li>Le diagramme d'Ishikawa</li>
|
||||
<li>La méthode QQOQCP</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="clear">
|
||||
</div>
|
||||
|
||||
<div id="footer">
|
||||
</div>
|
||||
</div>
|
||||
<script src="{% static 'home/assets/vendor/jquery/jquery.min.js' %}"></script>
|
||||
<script src="{% static 'home/assets/vendor/waypoints/jquery.waypoints.min.js' %}"></script>
|
||||
<script src="{% static 'article/assets/js/main.js' %}"></script>
|
||||
</body>
|
||||
<a href="#" class="back-to-top" style="display: inline; position:fixed; right:15px; bottom:15px; z-index:99999;"> <i style="display: flex; align-items: center; justify-content: center; font-size: 24px; width: 40px; height: 40px; border-radius: 4px; background: #7cc576; color: #fff; transition: all 0.4s;" class="icofont-simple-up"></i></a>
|
||||
</html>
|
||||
@@ -0,0 +1,69 @@
|
||||
{% load static %}<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test-markdown</title>
|
||||
<link href="{% static 'home/assets/img/white-orchid.svg' %}" rel="icon">
|
||||
<link href="{% static 'home/assets/img/black-orchid.svg' %}" rel="apple-touch-icon">
|
||||
<link href="{% static 'article/assets/css/main.css' %}" rel="stylesheet">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<link rel="stylesheet" href="{% static 'article/mixu-radar/css/style.css' %}" />
|
||||
<link rel="stylesheet" href="{% static 'article/mixu-radar/css/pilcrow.css' %}" />
|
||||
<link type="text/css" rel="stylesheet" href="{% static 'article/mixu-radar/css/hljs-github.min.css' %}"/>
|
||||
<script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-MML-AM_CHTML"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/node-plantuml@0.9.0/index.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div style="clear: both;">
|
||||
<div style="float: left">
|
||||
{{ view_count }}
|
||||
<span class="iconify" data-icon="carbon:view" data-inline="false"></span>
|
||||
{{ like_count }}
|
||||
<span class="iconify" data-icon="fluent-thumb-like-16-regular" data-inline="false"></span>
|
||||
{{ dislike_count }}
|
||||
<span class="iconify" data-icon="fluent:thumb-dislike-24-regular"data-inline="false"></span>
|
||||
<script src="https://code.iconify.design/1/1.0.7/iconify.min.js"></script>
|
||||
</div>
|
||||
<div style="float: right">
|
||||
<small style="text-align: right">{{ created }}</small>
|
||||
{% if update_count > 0 %}
|
||||
<small> V{{ update_count }}</small>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="toc">
|
||||
<div id="toc-inner">
|
||||
<a class="back" class="container" href="{% url 'article' %}"><p>Back to articles</p></a><div class="fade_rule"></div><ul class="nav nav-list">
|
||||
<li class="sidebar-header-1"><a href="#this-is-a-test-of-markdown">This is a test of markdown</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="header">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="clear"></div>
|
||||
<div id="main">
|
||||
<div id="content" class="post"><p>#!/usr/bin/env ./upload.py</p>
|
||||
<h1 id="this-is-a-test-of-markdown"><a class="header-link" href="#this-is-a-test-of-markdown"></a>This is a test of markdown</h1>
|
||||
<p>Hope you like this test of markdown.
|
||||
This is the first file send by using shebang script.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="clear">
|
||||
</div>
|
||||
|
||||
<div id="footer">
|
||||
</div>
|
||||
</div>
|
||||
<script src="{% static 'home/assets/vendor/jquery/jquery.min.js' %}"></script>
|
||||
<script src="{% static 'home/assets/vendor/waypoints/jquery.waypoints.min.js' %}"></script>
|
||||
<script src="{% static 'article/assets/js/main.js' %}"></script>
|
||||
</body>
|
||||
<a href="#" class="back-to-top" style="display: inline; position:fixed; right:15px; bottom:15px; z-index:99999;"> <i style="display: flex; align-items: center; justify-content: center; font-size: 24px; width: 40px; height: 40px; border-radius: 4px; background: #7cc576; color: #fff; transition: all 0.4s;" class="icofont-simple-up"></i></a>
|
||||
</html>
|
||||
@@ -16,8 +16,6 @@ from django.views.decorators.csrf import csrf_exempt
|
||||
from home.context import home, hydrate
|
||||
from rich import print
|
||||
|
||||
DEFAULT_LAYOUT="mixu-radar"
|
||||
|
||||
|
||||
def get_article_context(request):
|
||||
"""Create the context of the article view."""
|
||||
@@ -131,7 +129,7 @@ def read(request, title: str):
|
||||
raise Http404("This article was not found.")
|
||||
|
||||
print("GET:", request.GET)
|
||||
layout = request.GET.get("layout") or article.layout or DEFAULT_LAYOUT
|
||||
layout = request.GET.get("layout") or article.layout or "marc"
|
||||
layouts = os.listdir("./node_modules/markdown-styles/layouts")
|
||||
|
||||
article.read = datetime.datetime.now()
|
||||
@@ -140,7 +138,7 @@ def read(request, title: str):
|
||||
|
||||
if layout not in layouts:
|
||||
print(layout, "not in ", layouts)
|
||||
return render(request, "article/nolayout.html", dict(article=article, layouts=layouts))
|
||||
return render(request, "article/403.html", dict(layouts=layouts))
|
||||
|
||||
if title.endswith(".md"):
|
||||
return HttpResponse(article.content, content_type="text/markdown")
|
||||
|
||||
@@ -8,12 +8,12 @@ https://docs.djangoproject.com/en/2.1/ref/settings/
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
from urllib.parse import urlparse
|
||||
|
||||
# import dj_database_url
|
||||
import mimetypes
|
||||
import dotenv
|
||||
import django_heroku
|
||||
|
||||
mimetypes.add_type("text/css", ".css", True)
|
||||
|
||||
@@ -54,15 +54,9 @@ SECRET_KEY = os.environ.get("SECRET_KEY")
|
||||
# print('secret key:', SECRET_KEY)
|
||||
|
||||
ALLOWED_HOSTS = [
|
||||
"localhost",
|
||||
"marcpartensky.com",
|
||||
# "http://marcpartensky.com",
|
||||
# "https://marcpartensky.com",
|
||||
]
|
||||
|
||||
CSRF_TRUSTED_ORIGINS = [
|
||||
"http://marcpartensky.com",
|
||||
"https://marcpartensky.com",
|
||||
"marcpartensky.herokuapp.com",
|
||||
"websiteofmarcpartensky.herokuapp.com",
|
||||
]
|
||||
|
||||
# Application definition
|
||||
@@ -99,7 +93,6 @@ INSTALLED_APPS = [
|
||||
"django.contrib.staticfiles",
|
||||
"storages",
|
||||
"crispy_forms",
|
||||
"crispy_bootstrap4",
|
||||
"django_extensions",
|
||||
# allauth stuff
|
||||
"django.contrib.sites",
|
||||
@@ -132,7 +125,6 @@ INSTALLED_APPS = [
|
||||
]
|
||||
|
||||
MIDDLEWARE = [
|
||||
"allauth.account.middleware.AccountMiddleware",
|
||||
"django.middleware.security.SecurityMiddleware",
|
||||
"django.contrib.sessions.middleware.SessionMiddleware",
|
||||
"django.middleware.common.CommonMiddleware",
|
||||
@@ -142,8 +134,6 @@ MIDDLEWARE = [
|
||||
"django.middleware.clickjacking.XFrameOptionsMiddleware",
|
||||
# cors stuff
|
||||
"corsheaders.middleware.CorsMiddleware",
|
||||
# serve static files in production
|
||||
"whitenoise.middleware.WhiteNoiseMiddleware",
|
||||
# 'django.middleware.common.CommonMiddleware',
|
||||
# 503 error
|
||||
# 'django_503.middleware.MaintenanceMiddleware',
|
||||
@@ -298,7 +288,9 @@ USE_TZ = True
|
||||
# https://docs.djangoproject.com/en/3.0/howto/static-files/
|
||||
|
||||
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")
|
||||
|
||||
STATIC_URL = "/static/"
|
||||
|
||||
STATICFILES_DIRS = [
|
||||
os.path.join(BASE_DIR, "static"),
|
||||
]
|
||||
@@ -309,12 +301,9 @@ STATICFILES_FINDERS = [
|
||||
"compressor.finders.CompressorFinder",
|
||||
]
|
||||
|
||||
STATICFILES_STORAGE = "whitenoise.storage.CompressedManifestStaticFilesStorage"
|
||||
|
||||
MEDIA_URL = "/media/"
|
||||
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
|
||||
|
||||
CRISPY_ALLOWED_TEMPLATE_PACKS = "bootstrap4"
|
||||
CRISPY_TEMPLATE_PACK = "bootstrap4"
|
||||
|
||||
LOGIN_REDIRECT_URL = "profile"
|
||||
@@ -512,7 +501,6 @@ Q_CLUSTER = {
|
||||
},
|
||||
}
|
||||
|
||||
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
|
||||
SILENCED_SYSTEM_CHECKS = ["urls.W002"]
|
||||
|
||||
PANDOC_API_URL = os.environ.get("PANDOC_API_URL") or "https://pandoc.marcpartensky.com"
|
||||
|
||||
django_heroku.settings(locals())
|
||||
|
||||
@@ -12,7 +12,6 @@ https://docs.djangoproject.com/en/2.1/howto/deployment/wsgi/
|
||||
import os
|
||||
|
||||
from django.core.wsgi import get_wsgi_application
|
||||
from whitenoise import WhiteNoise
|
||||
from dotenv import load_dotenv
|
||||
|
||||
load_dotenv()
|
||||
@@ -20,4 +19,3 @@ load_dotenv()
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_project.settings")
|
||||
|
||||
application = get_wsgi_application()
|
||||
application = WhiteNoise(application, root="./staticfiles")
|
||||
|
||||
|
Before Width: | Height: | Size: 102 KiB |
|
Before Width: | Height: | Size: 368 KiB After Width: | Height: | Size: 97 KiB |
|
Before Width: | Height: | Size: 368 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 106 KiB |
@@ -41,23 +41,23 @@
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{% url 'about' %}">About</a>
|
||||
</li>
|
||||
<!-- <li class="nav-item"> -->
|
||||
<!-- <a class="nav-link" href="{% url 'blog-home' %}">Blog</a> -->
|
||||
<!-- </li> -->
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{% url 'blog-home' %}">Blog</a>
|
||||
</li>
|
||||
<!-- <li class="nav-item"> -->
|
||||
<!-- <a class="nav-link" href="% url 'planning' %">Planning</a> -->
|
||||
<!-- </li> -->
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{% url 'first-site' %}">First Site</a>
|
||||
</li>
|
||||
<!-- <li class="nav-item"> -->
|
||||
<!-- <a class="nav-link" href="{% url 'game' %}">Games</a> -->
|
||||
<!-- </li> -->
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{% url 'game' %}">Games</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{% url 'touch-typing' %}">Touch Typing</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{% url 'cv' %}">Resume</a>
|
||||
<a class="nav-link" href="{% url 'cv' %}">CV</a>
|
||||
</li>
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
@@ -111,13 +111,13 @@
|
||||
</br>
|
||||
|
||||
<div class="container" style="text-align: center">
|
||||
<a target="_blank" href="https://facebook.com/marc.partensky/" class="fa fa-facebook"></a>
|
||||
<a target="_blank" href="https://www.facebook.com/marc.partensky/" class="fa fa-facebook"></a>
|
||||
<a target="_blank" href="https://github.com/marcpartensky/" class="fa fa-github"></a>
|
||||
<a target="_blank" href="https://linkedin.com/in/marc-partensky/" class="fa fa-linkedin"></a>
|
||||
<a target="_blank" href="https://www.linkedin.com/in/marc-partensky/" class="fa fa-linkedin"></a>
|
||||
<a target="_blank" href="https://twitter.com/MarcPartensky/" class="fa fa-twitter"></a>
|
||||
<a target="_blank" href="https://reddit.com/user/Marc-Partensky/" class="fa fa-reddit"></a>
|
||||
<a target="_blank" href="https://youtube.com/channel/UCGC4Tnr_j87F2sq-s6vWFGA" class="fa fa-youtube"></a>
|
||||
<a target="_blank" href="https://instagram.com/marcpartensky/" class="fa fa-instagram"></a>
|
||||
<a target="_blank" href="https://www.reddit.com/user/Marc-Partensky/" class="fa fa-reddit"></a>
|
||||
<a target="_blank" href="https://www.youtube.com/channel/UCGC4Tnr_j87F2sq-s6vWFGA" class="fa fa-youtube"></a>
|
||||
<a target="_blank" href="https://www.instagram.com/marcpartensky/" class="fa fa-instagram"></a>
|
||||
</div>
|
||||
|
||||
<footer id="basefooter" class="mainfooter" role="contentinfo">
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
<a href="https://i.ibb.co/MNYfS8T/marc-on-top.jpg">
|
||||
<div class="image">
|
||||
<img style="width: 100%; height: 100%" src="{% static 'home/assets/img/marc-on-top.jpg' %}" alt="marc-on-top"></img>
|
||||
<cite>Paris, France - August 2021</cite>
|
||||
<cite>Royan, France - August 2020</cite>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
@@ -53,17 +53,37 @@
|
||||
I am {{ marc_age }} years old and I study at <a href="https://www.isep.fr/">ISEP</a>.
|
||||
</p>
|
||||
<ul>
|
||||
<li><i class="bx bx-check-double"></i> Actively looking for a job in DevOps and Data </li>
|
||||
<li><i class="bx bx-check-double"></i> Hyperactive on Github </li>
|
||||
<li><i class="bx bx-check-double"></i> Actively looking for a job. </li>
|
||||
<li><i class="bx bx-check-double"></i> Hyperactive on Github. </li>
|
||||
<li><i class="bx bx-check-double"></i> 5 certificates in Deep learning </li>
|
||||
<li><i class="bx bx-check-double"></i> Fluent in English </li>
|
||||
</ul>
|
||||
<p style="text-align: justify; text-justify: inter-word">
|
||||
After 3 years of professional experience as an Junior Developer at Pickup Services and then as a Data Analyst at BNP Paribas, and as a former student at ISEP in
|
||||
apprenticeship. I am seeking a permanent position in the field of artificial intelligence, application development or Devops. My professional
|
||||
profile is backed by a strong experience in projects available on <a href="https://github.com/MarcPartensky">Github</a> and my personal
|
||||
<a href="https://marcpartensky.com">website</a>. Passionate about DevOps, I am committed to bringing my skills and creativity to a stimulating professional
|
||||
environment.
|
||||
I am used to spending most of my time coding on my multiple <a href="../projects">projects</a>.
|
||||
I started coding at the age of 16 on my calculator. Then at the age of 18 I started coding with Python
|
||||
which quickly became my favorite programming language. I began by playing with
|
||||
<a href="https://www.pygame.org/">pygame</a> and even later made my own library on top of it named
|
||||
<a href="https://pypi.org/project/pygame-geometry/">pygame-geometry</a> which was used for most of my
|
||||
pygame games and also used for my <a href="https://pypi.org/project/fourier-drawing">fourier-drawing</a>
|
||||
library in python.
|
||||
As soons as i learned python I started following tutorials of C, C++, Java, C#, Swift and I started to
|
||||
get familiar with web development as I wanted to make multiplayer games. Thus, as I entered in
|
||||
<a href="https://en.wikipedia.org/wiki/Higher_education">higher education</a>, I learned how most of the
|
||||
web is set up and how http works and I learned html, css, javascript, php, sass, bootstrap, nodejs,
|
||||
reactjs, vuejs and django with python (this website uses django). With my newly acquired web skills I
|
||||
started making this website and added few of my <a href="../games">games</a>. For my TIPE of the first year
|
||||
i made a replica of the game <a href="https://en.wikipedia.org/wiki/Reversi">Othello</a> also called
|
||||
<a href="https://en.wikipedia.org/wiki/Reversi">Reversi</a> which can be found
|
||||
<a href="https://github.com/MarcPartensky/TIPE-P1A">here</a>.
|
||||
I also experimented with making games with unity and made an opengl simulation in c++ of
|
||||
<a href="https://github.com/MarcPartensky/TIPE-P2B">granular flow</a> for my TIPE in second year.
|
||||
Then as I always wanted to get seriously into machine learning I followed 5 lessons on Coursera on
|
||||
the matter and i received the certifications that come with it visible on my
|
||||
<a href="https://www.linkedin.com/in/marc-partensky/">linkedin page</a>.
|
||||
Meanwhile I started to develop a
|
||||
<a href="https://github.com/marcpartensky/discord-bot">discord bot</a>
|
||||
for fun to use in my own server. Recently I used my knowledge in deep learning
|
||||
to make it a clever chatbot you can talk with. It is a RNN transformer model with attention.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -126,7 +146,7 @@
|
||||
<div class="icon-box mt-5" data-aos="fade-up" data-aos-delay="100">
|
||||
<i class="bx bx-cube-alt"></i>
|
||||
<h4>Web development</h4>
|
||||
<p>Development of this website from scratch in Django (python framework), proficient in NodeJS and Express, knowledge of Vue and React, big fan of MongoDB over MySQL and PostgreSQL, familiar with Sass, extensive use of Bootstrap, grasp of Elasticsearch.</p>
|
||||
<p>Development of this website from scratch in Django (python framework), proficient in Node and Express, knowledge of Vue and React, big fan of MongoDB over MySQL and PostgreSQL, familiar with Sass, extensive use of Bootstrap, grasp of Elasticsearch.</p>
|
||||
</div>
|
||||
<div class="icon-box mt-5" data-aos="fade-up" data-aos-delay="200">
|
||||
<i class="bx bx-images"></i>
|
||||
@@ -156,55 +176,49 @@
|
||||
<h2>Github activity</h2>
|
||||
</div>
|
||||
|
||||
<div width="100%" data-aos="fade-up">
|
||||
<div class="count-box">
|
||||
<img width="100%" src="https://ghchart.rshah.org/marcpartensky" alt="Marc Partensky's Github chart" />
|
||||
<div class="row">
|
||||
|
||||
<div class="col-lg-3 col-md-6 text-center" data-aos="fade-up">
|
||||
<div class="count-box">
|
||||
<i class="icofont-users-alt-5" style="color: #20b38e;"></i>
|
||||
<span data-toggle="counter-up" >{{ github_followers }}</span>
|
||||
<p>Followers</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-md-6 text-center" data-aos="fade-up" data-aos-delay="200">
|
||||
<div class="count-box">
|
||||
<i class="icofont-server" style="color: #c042ff;"></i>
|
||||
<span data-toggle="counter-up" >{{ github_repos_number }}</span>
|
||||
<p>Repositories</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-md-6 text-center" data-aos="fade-up" data-aos-delay="400">
|
||||
<div class="count-box">
|
||||
<i class="icofont-pie-chart" style="color: #46d1ff;"></i>
|
||||
<span data-toggle="counter-up" >{{ github_year_commits }}</span>
|
||||
<p>Commits this year</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-md-6 text-center" data-aos="fade-up" data-aos-delay="600">
|
||||
<div class="count-box">
|
||||
<i class="icofont-space-shuttle" style="color: #ffb459;"></i>
|
||||
<span data-toggle="counter-up" >{{ github_month_commits }}</span>
|
||||
<p>commits this month in {{ github_month_commits_repos }} repos</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!---->
|
||||
<!-- <div class="row"> -->
|
||||
<!---->
|
||||
<!-- <div class="col-lg-3 col-md-6 text-center" data-aos="fade-up"> -->
|
||||
<!-- <div class="count-box"> -->
|
||||
<!-- <i class="icofont-users-alt-5" style="color: #20b38e;"></i> -->
|
||||
<!-- <span data-toggle="counter-up" >{{ github_followers }}</span> -->
|
||||
<!-- <p>Followers</p> -->
|
||||
<!-- </div> -->
|
||||
<!-- </div> -->
|
||||
<!---->
|
||||
<!-- <div class="col-lg-3 col-md-6 text-center" data-aos="fade-up" data-aos-delay="200"> -->
|
||||
<!-- <div class="count-box"> -->
|
||||
<!-- <i class="icofont-server" style="color: #c042ff;"></i> -->
|
||||
<!-- <span data-toggle="counter-up" >{{ github_repos_number }}</span> -->
|
||||
<!-- <p>Repositories</p> -->
|
||||
<!-- </div> -->
|
||||
<!-- </div> -->
|
||||
<!---->
|
||||
<!-- <div class="col-lg-3 col-md-6 text-center" data-aos="fade-up" data-aos-delay="400"> -->
|
||||
<!-- <div class="count-box"> -->
|
||||
<!-- <i class="icofont-pie-chart" style="color: #46d1ff;"></i> -->
|
||||
<!-- <span data-toggle="counter-up" >{{ github_year_commits }}</span> -->
|
||||
<!-- <p>Commits this year</p> -->
|
||||
<!-- </div> -->
|
||||
<!-- </div> -->
|
||||
<!---->
|
||||
<!-- <div class="col-lg-3 col-md-6 text-center" data-aos="fade-up" data-aos-delay="600"> -->
|
||||
<!-- <div class="count-box"> -->
|
||||
<!-- <i class="icofont-space-shuttle" style="color: #ffb459;"></i> -->
|
||||
<!-- <span data-toggle="counter-up" >{{ github_month_commits }}</span> -->
|
||||
<!-- <p>commits this month in {{ github_month_commits_repos }} repos</p> -->
|
||||
<!-- </div> -->
|
||||
<!-- </div> -->
|
||||
<!-- </div> -->
|
||||
<!---->
|
||||
<!-- <hr> -->
|
||||
<!---->
|
||||
<!-- <center style="margin: 2em" data-aos="fade-up" data-aos="800"> -->
|
||||
<!-- <a href="https://github.com/marcpartensky" target="_blank"> -->
|
||||
<!-- <i style="font-size: 5em;"class="devicon-github-plain"></i> -->
|
||||
<!-- <p> Open github profile in new tab</p> -->
|
||||
<!-- </a> -->
|
||||
<!-- </center> -->
|
||||
|
||||
<hr>
|
||||
|
||||
<center style="margin: 2em" data-aos="fade-up" data-aos="800">
|
||||
<a href="https://github.com/marcpartensky" target="_blank">
|
||||
<i style="font-size: 5em;"class="devicon-github-plain"></i>
|
||||
<p> Open github profile in new tab</p>
|
||||
</a>
|
||||
</center>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -218,14 +232,13 @@
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane active show" id="tab-1">
|
||||
<figure>
|
||||
<a tab width="100%" href="{% static 'home/assets/pdf/degree.pdf' %}"><img loading="lazy" width="100%" src="{% static 'home/assets/img/degree.png' %}"></img></a>
|
||||
<!-- <iframe async id="open-web-calendar">Loading...</iframe> -->
|
||||
<!-- <iframe defer id="open-web-calendar" -->
|
||||
<!-- style="center center no-repeat" -->
|
||||
<!-- src="{{ calendar_url }}" -->
|
||||
<!-- sandbox="allow-scripts allow-same-origin allow-top-navigation" -->
|
||||
<!-- allowTransparency="true" scrolling="no" -->
|
||||
<!-- frameborder="0" height="600px" width="100%"></iframe> -->
|
||||
<!-- <iframe async id="open-web-calendar">Loading...</iframe> -->
|
||||
<iframe defer id="open-web-calendar"
|
||||
style="center center no-repeat"
|
||||
src="{{ calendar_url }}"
|
||||
sandbox="allow-scripts allow-same-origin allow-top-navigation"
|
||||
allowTransparency="true" scrolling="no"
|
||||
frameborder="0" height="600px" width="100%"></iframe>
|
||||
<!-- <iframe async id="open-web-calendar" -->
|
||||
<!-- style="center center no-repeat" -->
|
||||
<!-- src="https://open-web-calendar.herokuapp.com/calendar.html?specification=https://gist.githubusercontent.com/MarcPartensky/1c20873acf6a628bd38b4ace58527838/raw/facf84c8caf648ca19c554043c685fec77865134/calendar.json" -->
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
from django.shortcuts import render
|
||||
|
||||
@@ -6,20 +6,10 @@ if __name__ == "__main__":
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_project.settings")
|
||||
try:
|
||||
from django.core.management import execute_from_command_line
|
||||
from django.db import utils
|
||||
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
|
||||
try:
|
||||
execute_from_command_line(sys.argv)
|
||||
except utils.OperationalError as e:
|
||||
# Log the error or perform necessary actions
|
||||
print(f"OperationalError occurred: {e}")
|
||||
# Optionally, you can choose to exit the application or raise an exception to halt the execution
|
||||
# raise e # This will re-raise the exception and halt the application
|
||||
import sys
|
||||
sys.exit(1) # This will exit the application with an error code
|
||||
|
||||
execute_from_command_line(sys.argv)
|
||||
|
||||
|
Before Width: | Height: | Size: 270 KiB |
@@ -13,49 +13,49 @@
|
||||
|
||||
<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> -->
|
||||
{% 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 %}
|
||||
{% for article in articles %}
|
||||
<li><a href="/article/{{ article }}">{{ article }}</a></li>
|
||||
{% empty %}
|
||||
<li>No article loaded.</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</li>
|
||||
</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' %}">Resume</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="{% 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> -->
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{% extends "layout/home.html" %}
|
||||
{% block content %}
|
||||
<link href='https://fonts.googleapis.com/css?family=Roboto' rel='stylesheet' type='text/css'>
|
||||
<link href='http://fonts.googleapis.com/css?family=Roboto' rel='stylesheet' type='text/css'>
|
||||
|
||||
<style>
|
||||
body {
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
# Generated by Django 3.2.23 on 2023-11-06 09:05
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('todo', '0005_alter_todo_dependencies'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='todo',
|
||||
name='dependencies',
|
||||
field=models.ManyToManyField(related_name='_todo_todo_dependencies_+', to='todo.Todo'),
|
||||
),
|
||||
]
|
||||
@@ -1,7 +1,7 @@
|
||||
from django.db import models
|
||||
from django.utils import timezone
|
||||
from django.contrib.auth.models import User
|
||||
from django.db.models import JSONField
|
||||
from django_jsonfield_backport.models import JSONField
|
||||
|
||||
# from . import article
|
||||
from article.models import ArticleLayout
|
||||
|
||||