Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ef0b2c7dad | ||
|
|
44c5ac8e4c | ||
|
|
e61493ded3 | ||
|
|
ae772a3d16 | ||
|
|
de8a7fdffd | ||
|
|
d141688393 | ||
|
|
d9f4ddf85a | ||
|
|
f211658cae | ||
|
|
7412f3a5f7 | ||
|
|
25852a99e3 | ||
|
|
47ec45eb49 | ||
|
|
9ca380e89d | ||
|
|
71eed5a472 | ||
|
|
98ca09dadc | ||
|
|
5f2ce8abb7 | ||
|
|
5849673a11 | ||
|
|
8ee89dab45 | ||
|
|
8523da63c7 | ||
|
|
b6c899534c | ||
|
|
08b121f9f1 | ||
|
|
363a3ec118 | ||
|
|
90d5990f56 | ||
|
|
6dc3902479 | ||
|
|
b68cdabb99 | ||
|
|
118806be07 | ||
|
|
d912ba9e37 | ||
|
|
d8a6b6801b | ||
|
|
0dee2bb8c6 | ||
|
|
5bbd512828 | ||
|
|
fb1b8e89ae | ||
|
|
539d9303b5 | ||
|
|
07b6c8123f | ||
|
|
fbf8b7841a | ||
|
|
2b652af465 | ||
|
|
340aff3536 | ||
|
|
73b3bc4ca8 | ||
|
|
cebd4646b9 | ||
|
|
694dcb3cc7 | ||
|
|
5ec7bd1021 | ||
|
|
3e4f86379b | ||
|
|
5efd6ae12e | ||
|
|
dfd639d85c | ||
|
|
5f5418f934 | ||
|
|
696225a26f | ||
|
|
5ace7965c4 | ||
|
|
1f6baf1e08 | ||
|
|
57a89f682f | ||
|
|
368a74a1c7 | ||
|
|
c1ba069b41 | ||
|
|
0271e71974 | ||
|
|
d209ad28c5 | ||
|
|
9f5de228b5 | ||
|
|
92871ae135 |
@@ -15,8 +15,7 @@ venv
|
||||
.buildpacks
|
||||
*.pem
|
||||
*.crt
|
||||
Pipfile
|
||||
Pipfile.lock
|
||||
.travis.yml
|
||||
.gitignore
|
||||
.dockerignore
|
||||
requirements.txt
|
||||
|
||||
@@ -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
|
||||
@@ -1,5 +1,7 @@
|
||||
liberapay: marcpartensky
|
||||
patreon: marcpartensky
|
||||
github: marcpartensky
|
||||
custom:
|
||||
# - monero:43J2XmRtjDPRLD35UsYGH2AZamFBQz7dt4VdvZXVm3SuadTrvcoXUXBRUNHqukFte23Q5TWXqhbwaLJJgoVQzzbe2AJDANQ
|
||||
- https://paypal.me/marcpartensky
|
||||
- https://buymeacoffee.com/marcpartensky
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
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
|
||||
@@ -19,31 +19,33 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- 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: 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
|
||||
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: docker_build
|
||||
|
||||
- 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 }}
|
||||
|
||||
@@ -1,40 +1,79 @@
|
||||
FROM python:3.7.12
|
||||
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
|
||||
# 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 link="https://marcpartensky.com"
|
||||
# LABEL build.timestamp=timestamp
|
||||
# LABEL build.commit=commit
|
||||
|
||||
COPY . /app
|
||||
WORKDIR /app
|
||||
# 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
|
||||
RUN apk add shadow
|
||||
|
||||
RUN apt-get update
|
||||
# Setup home user website
|
||||
RUN useradd -m website
|
||||
USER website
|
||||
|
||||
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
|
||||
# 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"]
|
||||
|
||||
@@ -5,13 +5,12 @@ PRODUCTION=false
|
||||
.PHONY: start list build push setup update init test up down migrate brewstart brewstop dev prod clean deploy
|
||||
|
||||
start:
|
||||
poetry 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:
|
||||
@@ -21,8 +20,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 pipenv
|
||||
pipenv install --dev
|
||||
pip install --user poetry
|
||||
poetry install --dev
|
||||
npm install --save
|
||||
test:
|
||||
pipenv run ./manage.py test
|
||||
@@ -31,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:
|
||||
|
||||
@@ -579,6 +579,7 @@
|
||||
},
|
||||
"pyyaml": {
|
||||
"hashes": [
|
||||
"sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf",
|
||||
"sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293",
|
||||
"sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b",
|
||||
"sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57",
|
||||
@@ -590,26 +591,32 @@
|
||||
"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"
|
||||
],
|
||||
@@ -710,11 +717,11 @@
|
||||
},
|
||||
"setuptools": {
|
||||
"hashes": [
|
||||
"sha256:73bfae4791da7c1c56882ab17577d00f7a37a0347162aeb9360058de0dc25083",
|
||||
"sha256:abcb76aa4decd7a17cbe0e4b31bdf549d106ba7f668e87e0860f5f7b84b9b3fe"
|
||||
"sha256:57f6f22bde4e042978bcd50176fdb381d7c21a9efa4041202288d3737a0c6a54",
|
||||
"sha256:a7620757bf984b58deaf32fc8a4577a9bbc0850cf92c20e1ce41c38c19e5fb75"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==63.4.2"
|
||||
"version": "==65.6.3"
|
||||
},
|
||||
"shortuuid": {
|
||||
"hashes": [
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[](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,16 +21,6 @@ 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:
|
||||
@@ -53,6 +43,12 @@ 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
|
||||
@@ -112,29 +108,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
|
||||
- caddy
|
||||
ports:
|
||||
- "8080:80"
|
||||
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}}"
|
||||
|
||||
test:
|
||||
image: jwilder/dockerize
|
||||
networks:
|
||||
- web
|
||||
command: -wait http://website:8080/healthcheck -timeout 120s -wait-retry-interval 5s
|
||||
|
||||
networks:
|
||||
web:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -173,9 +173,9 @@
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"node_modules/is-core-module": {
|
||||
"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==",
|
||||
"version": "2.9.0",
|
||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz",
|
||||
"integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
|
||||
"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": "sha512-e6RM36aegd4f+r8BZCcYXlO2P3H6xbUM6ktL2Xmf45GAOit9bI4z6/3VU7JwllVO1L7u0UDSg/EhzQ5lmMLolA==",
|
||||
"integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=",
|
||||
"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": "sha512-/LdL3jiBWDJ3oQIRLgRhfeCZNE3patM1LiwCC124+/HHn10sI/G2OAyiMfTNzH5oYWoZBk0tRZADAUOv+0Wt0A=="
|
||||
"integrity": "sha1-oSvbAQNoHosSapsHHrpMRnx4//4="
|
||||
},
|
||||
"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": "sha512-nbUT6JYbZTCSCyEbsXZh4bF1k5G4liC8Q+iFCm13THwx0MmtTI7wwocwKHLNJRQg9jAdRvuLdhCvpeC2zN4NjA==",
|
||||
"integrity": "sha1-hV7SmtMZRW8IeFobTwa7vdmk8sE=",
|
||||
"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": "sha512-sa51AQQobDS+0uqkzK30lwLP5ij72W5I0MWceB6ckwC8iSldurz+QXNosHQIKUIfqDtCSs74HLgP8ithBeTs+Q=="
|
||||
"integrity": "sha1-jrbgqZ+HrTT/8YJzMRBJadjFBP4="
|
||||
},
|
||||
"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": "sha512-AzeDPeQX8GDSg9ynk7AR7l5Q4+5tuioS2x7O8bzN1BrlR/wQsa+uFzTt/nLxQ2tU9i0mSymkFkCKGVFSs2Vyew=="
|
||||
"integrity": "sha1-+yCDFtesKVG9zGlqfYZL8hr3oAg="
|
||||
},
|
||||
"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": "sha512-fj8hpBfOE76XJa1bwhfCOIPe/mWAsvZtVBBsgIlBpGXZEOeDQpKxCl8izAOVj3cOlupZJRthwXJZfj7390f+3w==",
|
||||
"integrity": "sha1-BftiWCLXED3Exz+/6BdYTKVh8Lg=",
|
||||
"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": "sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw=="
|
||||
"integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
|
||||
},
|
||||
"node_modules/readable-stream": {
|
||||
"version": "2.0.6",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
|
||||
"integrity": "sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==",
|
||||
"integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
|
||||
"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": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
|
||||
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/resolve": {
|
||||
"version": "1.22.1",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
|
||||
"integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
|
||||
"version": "1.22.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
|
||||
"integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
|
||||
"dependencies": {
|
||||
"is-core-module": "^2.9.0",
|
||||
"is-core-module": "^2.8.1",
|
||||
"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": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="
|
||||
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
|
||||
},
|
||||
"node_modules/string-width": {
|
||||
"version": "4.2.3",
|
||||
@@ -498,9 +498,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/uglify-js": {
|
||||
"version": "3.16.3",
|
||||
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.16.3.tgz",
|
||||
"integrity": "sha512-uVbFqx9vvLhQg0iBaau9Z75AxWJ8tqM9AV890dIZCLApF4rTcyHwmAvLeEdYRs+BzYWu8Iw81F79ah0EfTXbaw==",
|
||||
"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==",
|
||||
"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": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
|
||||
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
|
||||
},
|
||||
"node_modules/wildglob": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/wildglob/-/wildglob-0.1.1.tgz",
|
||||
"integrity": "sha512-sLsXCDxFfDFxTB2dLaycS/a1ois/GxfYviyD6RX6osd+MeGtfPsBayYfE1O6ELGN6f3plIrYqrDzmoXG5asLZw==",
|
||||
"integrity": "sha1-Dz+i9HHeSOwiSW3Vee2o+5Oqeto=",
|
||||
"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": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==",
|
||||
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
|
||||
"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": "sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==",
|
||||
"integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
|
||||
"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": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q=="
|
||||
"integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus="
|
||||
},
|
||||
"node_modules/wrap-ansi": {
|
||||
"version": "7.0.0",
|
||||
@@ -742,9 +742,9 @@
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"is-core-module": {
|
||||
"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==",
|
||||
"version": "2.9.0",
|
||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz",
|
||||
"integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
|
||||
"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": "sha512-e6RM36aegd4f+r8BZCcYXlO2P3H6xbUM6ktL2Xmf45GAOit9bI4z6/3VU7JwllVO1L7u0UDSg/EhzQ5lmMLolA==",
|
||||
"integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=",
|
||||
"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": "sha512-/LdL3jiBWDJ3oQIRLgRhfeCZNE3patM1LiwCC124+/HHn10sI/G2OAyiMfTNzH5oYWoZBk0tRZADAUOv+0Wt0A=="
|
||||
"integrity": "sha1-oSvbAQNoHosSapsHHrpMRnx4//4="
|
||||
},
|
||||
"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": "sha512-nbUT6JYbZTCSCyEbsXZh4bF1k5G4liC8Q+iFCm13THwx0MmtTI7wwocwKHLNJRQg9jAdRvuLdhCvpeC2zN4NjA==",
|
||||
"integrity": "sha1-hV7SmtMZRW8IeFobTwa7vdmk8sE=",
|
||||
"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": "sha512-sa51AQQobDS+0uqkzK30lwLP5ij72W5I0MWceB6ckwC8iSldurz+QXNosHQIKUIfqDtCSs74HLgP8ithBeTs+Q=="
|
||||
"integrity": "sha1-jrbgqZ+HrTT/8YJzMRBJadjFBP4="
|
||||
},
|
||||
"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": "sha512-AzeDPeQX8GDSg9ynk7AR7l5Q4+5tuioS2x7O8bzN1BrlR/wQsa+uFzTt/nLxQ2tU9i0mSymkFkCKGVFSs2Vyew=="
|
||||
"integrity": "sha1-+yCDFtesKVG9zGlqfYZL8hr3oAg="
|
||||
},
|
||||
"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": "sha512-fj8hpBfOE76XJa1bwhfCOIPe/mWAsvZtVBBsgIlBpGXZEOeDQpKxCl8izAOVj3cOlupZJRthwXJZfj7390f+3w==",
|
||||
"integrity": "sha1-BftiWCLXED3Exz+/6BdYTKVh8Lg=",
|
||||
"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": "sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw=="
|
||||
"integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "2.0.6",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
|
||||
"integrity": "sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==",
|
||||
"integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
|
||||
"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": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="
|
||||
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
|
||||
},
|
||||
"resolve": {
|
||||
"version": "1.22.1",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
|
||||
"integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
|
||||
"version": "1.22.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
|
||||
"integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
|
||||
"requires": {
|
||||
"is-core-module": "^2.9.0",
|
||||
"is-core-module": "^2.8.1",
|
||||
"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": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="
|
||||
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
|
||||
},
|
||||
"string-width": {
|
||||
"version": "4.2.3",
|
||||
@@ -1011,20 +1011,20 @@
|
||||
}
|
||||
},
|
||||
"uglify-js": {
|
||||
"version": "3.16.3",
|
||||
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.16.3.tgz",
|
||||
"integrity": "sha512-uVbFqx9vvLhQg0iBaau9Z75AxWJ8tqM9AV890dIZCLApF4rTcyHwmAvLeEdYRs+BzYWu8Iw81F79ah0EfTXbaw==",
|
||||
"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==",
|
||||
"optional": true
|
||||
},
|
||||
"util-deprecate": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
|
||||
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
|
||||
},
|
||||
"wildglob": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/wildglob/-/wildglob-0.1.1.tgz",
|
||||
"integrity": "sha512-sLsXCDxFfDFxTB2dLaycS/a1ois/GxfYviyD6RX6osd+MeGtfPsBayYfE1O6ELGN6f3plIrYqrDzmoXG5asLZw==",
|
||||
"integrity": "sha1-Dz+i9HHeSOwiSW3Vee2o+5Oqeto=",
|
||||
"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": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==",
|
||||
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
|
||||
"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": "sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==",
|
||||
"integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
|
||||
"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": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q=="
|
||||
"integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus="
|
||||
},
|
||||
"wrap-ansi": {
|
||||
"version": "7.0.0",
|
||||
|
||||
@@ -5,35 +5,39 @@ description = ""
|
||||
authors = ["Marc Partensky <marc.partensky@gmail.com>"]
|
||||
|
||||
[tool.poetry.dependencies]
|
||||
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"
|
||||
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"
|
||||
|
||||
[tool.poetry.dev-dependencies]
|
||||
pytest = "^5.2"
|
||||
pylint = "^2.13.9"
|
||||
neovim = "^0.3.1"
|
||||
black = "^22.3.0"
|
||||
pytest = "*"
|
||||
pylint = "*"
|
||||
neovim = "*"
|
||||
black = "*"
|
||||
|
||||
[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.8"
|
||||
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"
|
||||
@@ -8,16 +8,17 @@ 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.0; python_version >= "3.7" and python_version < "4" and python_full_version >= "3.6.0"
|
||||
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.50.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
|
||||
@@ -31,27 +32,28 @@ 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==4.1; python_version >= "3.8"
|
||||
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==2.9.3; python_version >= "3.6"
|
||||
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; python_full_version >= "3.6.3" and python_full_version < "4.0.0" and python_version >= "3.6"
|
||||
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==2022.1; python_version >= "3.6"
|
||||
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; python_full_version >= "3.6.2" and python_version < "4"
|
||||
@@ -62,13 +64,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.8"
|
||||
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_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"
|
||||
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"
|
||||
|
||||
@@ -13,7 +13,6 @@ from urllib.parse import urlparse
|
||||
# import dj_database_url
|
||||
import mimetypes
|
||||
import dotenv
|
||||
import django_heroku
|
||||
|
||||
mimetypes.add_type("text/css", ".css", True)
|
||||
|
||||
@@ -37,6 +36,7 @@ HEROKU_SERVER = os.environ.get("HEROKU_SERVER")
|
||||
|
||||
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
||||
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
print("BASE_DIR:", BASE_DIR)
|
||||
|
||||
# Allowing cors
|
||||
CORS_ORIGIN_ALLOW_ALL = False
|
||||
@@ -54,9 +54,8 @@ SECRET_KEY = os.environ.get("SECRET_KEY")
|
||||
# print('secret key:', SECRET_KEY)
|
||||
|
||||
ALLOWED_HOSTS = [
|
||||
"localhost",
|
||||
"marcpartensky.com",
|
||||
"marcpartensky.herokuapp.com",
|
||||
"websiteofmarcpartensky.herokuapp.com",
|
||||
]
|
||||
|
||||
# Application definition
|
||||
@@ -93,6 +92,7 @@ INSTALLED_APPS = [
|
||||
"django.contrib.staticfiles",
|
||||
"storages",
|
||||
"crispy_forms",
|
||||
"crispy_bootstrap4",
|
||||
"django_extensions",
|
||||
# allauth stuff
|
||||
"django.contrib.sites",
|
||||
@@ -125,6 +125,7 @@ INSTALLED_APPS = [
|
||||
]
|
||||
|
||||
MIDDLEWARE = [
|
||||
"allauth.account.middleware.AccountMiddleware",
|
||||
"django.middleware.security.SecurityMiddleware",
|
||||
"django.contrib.sessions.middleware.SessionMiddleware",
|
||||
"django.middleware.common.CommonMiddleware",
|
||||
@@ -134,6 +135,8 @@ 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',
|
||||
@@ -288,9 +291,7 @@ 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"),
|
||||
]
|
||||
@@ -301,9 +302,12 @@ 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"
|
||||
@@ -502,5 +506,3 @@ Q_CLUSTER = {
|
||||
}
|
||||
|
||||
PANDOC_API_URL = os.environ.get("PANDOC_API_URL") or "https://pandoc.marcpartensky.com"
|
||||
|
||||
django_heroku.settings(locals())
|
||||
|
||||
@@ -12,6 +12,7 @@ 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()
|
||||
@@ -19,3 +20,4 @@ load_dotenv()
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_project.settings")
|
||||
|
||||
application = get_wsgi_application()
|
||||
application = WhiteNoise(application, root="./staticfiles")
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
src=./website
|
||||
src=.
|
||||
|
||||
port=${1:-$PORT}
|
||||
host=${2:-$HOST}
|
||||
@@ -21,15 +21,17 @@ 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 [[ ! -z $NOSETUP && ! $1 = "--nosetup" ]]; then
|
||||
if [[ $NOSETUP == "true" ]] || [[ "$1" == "--nosetup" ]]; then
|
||||
echo no setup
|
||||
else
|
||||
setup
|
||||
fi
|
||||
|
||||
|
After Width: | Height: | Size: 102 KiB |
|
Before Width: | Height: | Size: 97 KiB After Width: | Height: | Size: 368 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 368 KiB |
|
Before Width: | Height: | Size: 106 KiB After Width: | Height: | Size: 32 KiB |
@@ -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>Royan, France - August 2020</cite>
|
||||
<cite>Paris, France - August 2021</cite>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
@@ -53,37 +53,17 @@
|
||||
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. </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 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> 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">
|
||||
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.
|
||||
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.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -146,7 +126,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 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>
|
||||
<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>
|
||||
</div>
|
||||
<div class="icon-box mt-5" data-aos="fade-up" data-aos-delay="200">
|
||||
<i class="bx bx-images"></i>
|
||||
@@ -176,49 +156,55 @@
|
||||
<h2>Github activity</h2>
|
||||
</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 width="100%" data-aos="fade-up">
|
||||
<div class="count-box">
|
||||
<img width="100%" src="http://ghchart.rshah.org/marcpartensky" alt="Marc Partensky's Github chart" />
|
||||
</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>
|
||||
<!---->
|
||||
<!-- <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> -->
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -232,13 +218,14 @@
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane active show" id="tab-1">
|
||||
<figure>
|
||||
<!-- <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>
|
||||
<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" -->
|
||||
<!-- 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" -->
|
||||
|
||||
|
After Width: | Height: | Size: 270 KiB |
@@ -0,0 +1,18 @@
|
||||
# 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'),
|
||||
),
|
||||
]
|
||||