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 | ||
|
|
a702e9f516 | ||
|
|
9bbde03fbd | ||
|
|
c0dc586058 | ||
|
|
ddd7c04e12 | ||
|
|
f220c5b596 | ||
|
|
1eafde9735 | ||
|
|
96433c7f41 | ||
|
|
6ddcf0380b | ||
|
|
ff8f5b64db | ||
|
|
00e5f58014 | ||
|
|
2a5635039b | ||
|
|
282bb58bc3 | ||
|
|
1f25080a36 | ||
|
|
33c828fd99 | ||
|
|
6ae02e1bcb | ||
|
|
e8a3f845f1 | ||
|
|
75629e9fe5 | ||
|
|
68d3df2af7 | ||
|
|
14f804c0ad | ||
|
|
0709a971dd |
@@ -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 +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"]
|
||||
|
||||
@@ -1,30 +1,27 @@
|
||||
# HOST := localhost
|
||||
# PORT := 8000
|
||||
PRODUCTION := false
|
||||
# HOST=localhost
|
||||
# PORT=8000
|
||||
PRODUCTION=false
|
||||
|
||||
.PHONY: start list build push setup update init test up down migrate brewstart brewstop dev prod clean deploy
|
||||
|
||||
start:
|
||||
pipenv run ./entrypoint.sh --nosetup
|
||||
poetry run ./website/entrypoint.sh --nosetup
|
||||
list:
|
||||
@LC_ALL=C $(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$'
|
||||
build: update
|
||||
build:
|
||||
docker-compose -f dev.yml build website
|
||||
push: build
|
||||
git pushall
|
||||
docker-compose -f dev.yml push website
|
||||
setup: init update start
|
||||
update:
|
||||
npm update
|
||||
npm audit fix || echo npm audit fix failed
|
||||
# pipenv lock --pre --clear
|
||||
pipenv update
|
||||
pipenv lock -r > requirements.txt
|
||||
SECRET_KEY=secret pipenv run ./manage.py collectstatic --noinput
|
||||
SECRET_KEY=secret pipenv run ./manage.py makemigrations
|
||||
poetry export -o requirements.txt
|
||||
SECRET_KEY=secret poetry run ./website/manage.py collectstatic --noinput
|
||||
SECRET_KEY=secret poetry run ./website/manage.py makemigrations
|
||||
init: .env
|
||||
pip install --user pipenv
|
||||
pipenv install --dev
|
||||
pip install --user poetry
|
||||
poetry install --dev
|
||||
npm install --save
|
||||
test:
|
||||
pipenv run ./manage.py test
|
||||
@@ -33,7 +30,7 @@ runtest:
|
||||
make test
|
||||
make kill
|
||||
kill:
|
||||
pipenv run ./entrypoint.sh kill
|
||||
pipenv run ./website/entrypoint.sh kill
|
||||
up: init
|
||||
docker-compose up -d
|
||||
down:
|
||||
@@ -56,9 +53,11 @@ prod:
|
||||
clean:
|
||||
docker-compose -f docker-compose.yml down
|
||||
docker-compose -f dev.yml down
|
||||
deploy:
|
||||
testdeploy:
|
||||
DOCKER_HOST=ssh://vps docker-compose -f dev.yml up -d --build --force-recreate --remove-orphans website-test
|
||||
DOCKER_HOST=ssh://vps docker-compose -f docker-compose.dev.ym logs -f website-test
|
||||
deploy: push
|
||||
DOCKER_HOST=ssh://vps docker service update vps_website
|
||||
.env:
|
||||
echo HOST=localhost > .env
|
||||
echo PORT=8000 >> .env
|
||||
|
||||
@@ -4,161 +4,82 @@ verify_ssl = true
|
||||
name = "pypi"
|
||||
|
||||
[packages]
|
||||
aioredis = "*"
|
||||
appdirs = "*"
|
||||
appnope = "*"
|
||||
arrow = "*"
|
||||
asgiref = "*"
|
||||
astroid = "*"
|
||||
async-timeout = "*"
|
||||
attrs = "*"
|
||||
autobahn = "*"
|
||||
backcall = "*"
|
||||
blessed = "*"
|
||||
boto3 = "*"
|
||||
botocore = "*"
|
||||
certifi = "*"
|
||||
cffi = "*"
|
||||
channels = "*"
|
||||
channels-redis = "*"
|
||||
chardet = "*"
|
||||
click = "*"
|
||||
colorama = "*"
|
||||
commonmark = "*"
|
||||
constantly = "*"
|
||||
coverage = "*"
|
||||
cryptography = "*"
|
||||
daphne = "*"
|
||||
decorator = "*"
|
||||
defusedxml = "*"
|
||||
dj-database-url = "*"
|
||||
django-503 = "*"
|
||||
django-admin = "*"
|
||||
django-allauth = "*"
|
||||
django-appconf = "*"
|
||||
django-avatar = "*"
|
||||
django-compressor = "*"
|
||||
django-cors-middleware = "*"
|
||||
django-crispy-forms = "*"
|
||||
django-excel-base = "*"
|
||||
django-excel-response2 = "*"
|
||||
django-extensions = "*"
|
||||
django-ftpserver = "*"
|
||||
django-heroku = "*"
|
||||
django-jsonfield-backport = "*"
|
||||
django-libsass = "*"
|
||||
django-markdown-view = "*"
|
||||
django-mdeditor = "*"
|
||||
django-picklefield = "*"
|
||||
django-q = "*"
|
||||
django-rename-app = "*"
|
||||
django-shortuuidfield = "*"
|
||||
django-six = "*"
|
||||
django-sql-explorer = "*"
|
||||
django-storages = "*"
|
||||
djangorestframework = "*"
|
||||
docopt = "*"
|
||||
docutils = "*"
|
||||
flake8 = "*"
|
||||
future = "*"
|
||||
graphviz = "*"
|
||||
gunicorn = "*"
|
||||
h2 = "*"
|
||||
hiredis = "*"
|
||||
hpack = "*"
|
||||
hyperframe = "*"
|
||||
hyperlink = "*"
|
||||
idna = "*"
|
||||
importlib-metadata = "*"
|
||||
incremental = "*"
|
||||
ipython = "*"
|
||||
isort = "*"
|
||||
jedi = "*"
|
||||
jeepney = "*"
|
||||
jmespath = "*"
|
||||
keyring = "*"
|
||||
"keyrings.alt" = "==3.2.0"
|
||||
lazy-object-proxy = "*"
|
||||
libsass = "*"
|
||||
mccabe = "*"
|
||||
mock = "*"
|
||||
msgpack = "*"
|
||||
msgpack-python = "*"
|
||||
mypy-extensions = "*"
|
||||
nose = "*"
|
||||
oauthlib = "*"
|
||||
parso = "*"
|
||||
pathspec = "*"
|
||||
pexpect = "*"
|
||||
pickleshare = "*"
|
||||
pip-autoremove = "*"
|
||||
pip-conflict-checker = "*"
|
||||
pip-review = "*"
|
||||
pipdeptree = "*"
|
||||
pipupgrade = "*"
|
||||
priority = "*"
|
||||
prompt-toolkit = "*"
|
||||
psycopg2-binary = "*"
|
||||
ptyprocess = "*"
|
||||
pyasn1 = "*"
|
||||
pyasn1-modules = "*"
|
||||
pycodestyle = "*"
|
||||
pycparser = "*"
|
||||
pyflakes = "*"
|
||||
pyftpdlib = "*"
|
||||
pylint = "*"
|
||||
pyparsing = "*"
|
||||
python-dateutil = "*"
|
||||
python-dotenv = "*"
|
||||
python3-openid = "*"
|
||||
pytz = "*"
|
||||
rcssmin = "*"
|
||||
redis = "*"
|
||||
regex = "*"
|
||||
requests = "*"
|
||||
requests-oauthlib = "*"
|
||||
rich = "*"
|
||||
rjsmin = "*"
|
||||
s3transfer = "*"
|
||||
screen = "*"
|
||||
shortuuid = "*"
|
||||
six = "*"
|
||||
sqlparse = "*"
|
||||
toml = "*"
|
||||
traitlets = "*"
|
||||
txaio = "*"
|
||||
typed-ast = "*"
|
||||
typing-extensions = "*"
|
||||
tzlocal = "*"
|
||||
urllib3 = "*"
|
||||
wcwidth = "*"
|
||||
whitenoise = "*"
|
||||
wrapt = "*"
|
||||
xlwt = "*"
|
||||
yarg = "*"
|
||||
zipp = "*"
|
||||
"zope.interface" = "*"
|
||||
Automat = "*"
|
||||
Django = "*"
|
||||
ipython_genutils = "*"
|
||||
Markdown = "*"
|
||||
Pillow = "*"
|
||||
Pygments = "*"
|
||||
PyHamcrest = "*"
|
||||
PyJWT = "*"
|
||||
pyOpenSSL = "*"
|
||||
PyYAML = "*"
|
||||
SecretStorage = "*"
|
||||
service_identity = "*"
|
||||
Twisted = "*"
|
||||
django-robots = "*"
|
||||
selenium = "*"
|
||||
geckodriver-autoinstaller = "*"
|
||||
ansicon = "==1.89.0"
|
||||
arrow = "==1.2.2"
|
||||
asgiref = "==3.5.2"
|
||||
attrs = "==21.4.0"
|
||||
autobahn = "==22.4.2"
|
||||
blessed = "==1.19.1"
|
||||
certifi = "==2022.5.18.1"
|
||||
cffi = "==1.15.0"
|
||||
channels = "==3.0.4"
|
||||
charset-normalizer = "==2.0.12"
|
||||
commonmark = "==0.9.1"
|
||||
constantly = "==15.1.0"
|
||||
cryptography = "==37.0.2"
|
||||
daphne = "==3.0.2"
|
||||
defusedxml = "==0.7.1"
|
||||
dj-database-url = "==0.5.0"
|
||||
django-allauth = "==0.50.0"
|
||||
django-appconf = "==1.0.5"
|
||||
django-compressor = "==4.0"
|
||||
django-crispy-forms = "==1.14.0"
|
||||
django-extensions = "==3.1.5"
|
||||
django-ftpserver = "==0.8.0"
|
||||
django-heroku = "==0.3.1"
|
||||
django-jsonfield-backport = "==1.0.5"
|
||||
django-markdown-view = "==0.0.5"
|
||||
django-mdeditor = "==0.1.20"
|
||||
django-picklefield = "==3.0.1"
|
||||
django-q = "==1.3.9"
|
||||
django-robots = "==5.0"
|
||||
django-shortuuidfield = "==0.1.3"
|
||||
django-sql-explorer = "==2.4.1"
|
||||
django-storages = "==1.12.3"
|
||||
djangorestframework = "==3.13.1"
|
||||
hyperlink = "==21.0.0"
|
||||
idna = "==3.3"
|
||||
incremental = "==21.3.0"
|
||||
jinxed = "==1.2.0"
|
||||
oauthlib = "==3.2.0"
|
||||
psycopg2 = "==2.9.3"
|
||||
pyasn1-modules = "==0.2.8"
|
||||
pyasn1 = "==0.4.8"
|
||||
pycparser = "==2.21"
|
||||
pyftpdlib = "==1.5.6"
|
||||
python-dateutil = "==2.8.2"
|
||||
python-dotenv = "==0.20.0"
|
||||
python3-openid = "==3.2.0"
|
||||
pytz = "==2022.1"
|
||||
rcssmin = "==1.1.0"
|
||||
redis = "==3.5.3"
|
||||
requests-oauthlib = "==1.3.1"
|
||||
requests = "==2.27.1"
|
||||
rich = "==12.4.4"
|
||||
rjsmin = "==1.2.0"
|
||||
service-identity = "==21.1.0"
|
||||
shortuuid = "==1.0.9"
|
||||
six = "==1.16.0"
|
||||
sqlparse = "==0.4.2"
|
||||
twisted-iocpsupport = "==1.0.2"
|
||||
txaio = "==22.2.1"
|
||||
typing-extensions = "==4.2.0"
|
||||
tzdata = "==2022.1"
|
||||
urllib3 = "==1.26.9"
|
||||
wcwidth = "==0.2.5"
|
||||
whitenoise = "==6.1.0"
|
||||
"zope.interface" = "==5.4.0"
|
||||
Automat = "==20.2.0"
|
||||
Django = "==4.0.4"
|
||||
Markdown = "==3.3.7"
|
||||
Pillow = "==9.1.1"
|
||||
Pygments = "==2.12.0"
|
||||
PyJWT = "==2.4.0"
|
||||
pyOpenSSL = "==22.0.0"
|
||||
PyYAML = "==6.0"
|
||||
Twisted = "==22.4.0"
|
||||
|
||||
[dev-packages]
|
||||
black = "*"
|
||||
jedi = "*"
|
||||
pylint = "*"
|
||||
|
||||
[requires]
|
||||
python_version = "3.7.12"
|
||||
python_version = "3.10"
|
||||
|
||||
@@ -1,31 +1,32 @@
|
||||
[](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
|
||||
|
||||
This is the code of my personal website.
|
||||
[https://marcpartensky.com/](https://marcpartensky.com/)
|
||||
|
||||
[](https://marcpartensky.com)
|
||||
|
||||
|
||||
## Light theme
|
||||
[](https://websiteofmarcpartensky.herokuapp.com)
|
||||
[](https://marcpartensky.com)
|
||||
|
||||
## Dark theme
|
||||
[](https://websiteofmarcpartensky.herokuapp.com?theme=dark)
|
||||
[](https://marcpartensky.com?theme=dark)
|
||||
|
||||
## Install
|
||||
|
||||
### From [source](https://github.com/MarcPartensky/Website) (requires [git](https://git-scm.com/), [python](https://www.python.org/), [pip](https://pip.pypa.io/en/stable/installing/))
|
||||
```sh
|
||||
git clone https://github.com/marcpartensky/website
|
||||
```
|
||||
cd website
|
||||
|
||||
```sh
|
||||
pip install -r requirements.txt
|
||||
# or with pipenv (recommended, install pipenv with pip install pipenv)
|
||||
pipenv install
|
||||
```
|
||||
|
||||
```sh
|
||||
./manage.py runserver
|
||||
```
|
||||
|
||||
@@ -37,9 +38,8 @@ pipenv install
|
||||
```sh
|
||||
docker run -it \
|
||||
-e SECRET_KEY=$(openssl rand -base64 32) \
|
||||
-p 80:80 \
|
||||
-p 8080:80 \
|
||||
marcpartensky/website
|
||||
./manage.py runserver
|
||||
```
|
||||
|
||||
#### or run with ssl certificate
|
||||
@@ -48,7 +48,7 @@ docker run -it \
|
||||
-env CERT \ # You must export a ssl certificate path
|
||||
-env KEY \ # You must export a pem key path
|
||||
-e SECRET_KEY=$(openssl rand -base64 32) \
|
||||
-p 443:443 \
|
||||
-p 8443:443 \
|
||||
marcpartensky/website
|
||||
```
|
||||
|
||||
@@ -59,10 +59,6 @@ cd website
|
||||
docker-compose up
|
||||
```
|
||||
|
||||
> If you’re using Docker natively on Linux, Docker Desktop for Mac, or Docker Desktop for Windows, then the web app should now be listening on port 443 on your Docker daemon host. Point your web browser to http://localhost:443 to find the Hello World message. If this doesn’t resolve, you can also try http://127.0.0.1:443.
|
||||
|
||||
From https://docs.docker.com/compose/gettingstarted/
|
||||
|
||||
## Build the docker image from source
|
||||
```sh
|
||||
docker build . -t marcpartensky/website
|
||||
@@ -77,8 +73,7 @@ Build usually last 5 minutes.
|
||||
|
||||
## Notes
|
||||
author: Marc Partensky
|
||||
name: Website of Marc Partensky
|
||||
date: 8/10/2019
|
||||
created: 8/10/2019
|
||||
|
||||
## Heroku Buildpacks
|
||||
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
from django.contrib import admin
|
||||
from .models import MarkdownModel
|
||||
|
||||
# Register your models here.
|
||||
admin.site.register(MarkdownModel)
|
||||
@@ -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,34 +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:
|
||||
environment:
|
||||
<<: *website
|
||||
<<: *postgres
|
||||
<<: *redis
|
||||
image: docker.io/marcpartensky/website:latest
|
||||
env_file:
|
||||
- .env
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
ports:
|
||||
- "8000:80"
|
||||
working_dir: /app
|
||||
entrypoint: /app/entrypoint.sh
|
||||
depends_on:
|
||||
- redis
|
||||
- postgres
|
||||
@@ -37,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
|
||||
|
||||
|
Before Width: | Height: | Size: 97 KiB |
|
Before Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 106 KiB |
@@ -66,7 +66,7 @@
|
||||
"node_modules/clone": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
|
||||
"integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
|
||||
"integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
|
||||
"engines": {
|
||||
"node": ">=0.8"
|
||||
}
|
||||
@@ -90,7 +90,7 @@
|
||||
"node_modules/concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
|
||||
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
|
||||
},
|
||||
"node_modules/core-util-is": {
|
||||
"version": "1.0.3",
|
||||
@@ -126,7 +126,7 @@
|
||||
"node_modules/glob-parse": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/glob-parse/-/glob-parse-0.0.1.tgz",
|
||||
"integrity": "sha1-N9Ml6xVTvpwfQnJzinVWZEWGbdY="
|
||||
"integrity": "sha512-Um/XtCfPYhDdrlbsNAiakk6AxCpJSLwvF+a95Cmq0Nn/xF/AihHlsBo0EfoUqnKUqyrgoXzX+q5QsSKzH+/gvw=="
|
||||
},
|
||||
"node_modules/handlebars": {
|
||||
"version": "4.7.7",
|
||||
@@ -173,9 +173,9 @@
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"node_modules/is-core-module": {
|
||||
"version": "2.8.1",
|
||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz",
|
||||
"integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==",
|
||||
"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"
|
||||
},
|
||||
@@ -194,7 +194,7 @@
|
||||
"node_modules/isarray": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
|
||||
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
|
||||
"integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
|
||||
},
|
||||
"node_modules/js-yaml": {
|
||||
"version": "4.1.0",
|
||||
@@ -261,9 +261,9 @@
|
||||
"integrity": "sha1-oSvbAQNoHosSapsHHrpMRnx4//4="
|
||||
},
|
||||
"node_modules/minimatch": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||
"version": "3.0.8",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz",
|
||||
"integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==",
|
||||
"dependencies": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
},
|
||||
@@ -272,9 +272,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/minimist": {
|
||||
"version": "1.2.5",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
|
||||
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
|
||||
"version": "1.2.6",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
|
||||
"integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
|
||||
},
|
||||
"node_modules/miniq": {
|
||||
"version": "1.0.1",
|
||||
@@ -386,11 +386,11 @@
|
||||
}
|
||||
},
|
||||
"node_modules/resolve": {
|
||||
"version": "1.21.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.21.0.tgz",
|
||||
"integrity": "sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==",
|
||||
"version": "1.22.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
|
||||
"integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
|
||||
"dependencies": {
|
||||
"is-core-module": "^2.8.0",
|
||||
"is-core-module": "^2.8.1",
|
||||
"path-parse": "^1.0.7",
|
||||
"supports-preserve-symlinks-flag": "^1.0.0"
|
||||
},
|
||||
@@ -498,9 +498,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/uglify-js": {
|
||||
"version": "3.14.5",
|
||||
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.5.tgz",
|
||||
"integrity": "sha512-qZukoSxOG0urUTvjc2ERMTcAy+BiFh3weWAkeurLwjrCba73poHmG3E36XEjd/JGukMzwTL7uCxZiAexj8ppvQ==",
|
||||
"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"
|
||||
@@ -530,7 +530,7 @@
|
||||
"node_modules/wildglob/node_modules/isarray": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
|
||||
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
|
||||
"integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
|
||||
},
|
||||
"node_modules/wildglob/node_modules/readable-stream": {
|
||||
"version": "1.0.34",
|
||||
@@ -661,7 +661,7 @@
|
||||
"clone": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
|
||||
"integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4="
|
||||
"integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg=="
|
||||
},
|
||||
"color-convert": {
|
||||
"version": "2.0.1",
|
||||
@@ -679,7 +679,7 @@
|
||||
"concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
|
||||
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
|
||||
},
|
||||
"core-util-is": {
|
||||
"version": "1.0.3",
|
||||
@@ -709,7 +709,7 @@
|
||||
"glob-parse": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/glob-parse/-/glob-parse-0.0.1.tgz",
|
||||
"integrity": "sha1-N9Ml6xVTvpwfQnJzinVWZEWGbdY="
|
||||
"integrity": "sha512-Um/XtCfPYhDdrlbsNAiakk6AxCpJSLwvF+a95Cmq0Nn/xF/AihHlsBo0EfoUqnKUqyrgoXzX+q5QsSKzH+/gvw=="
|
||||
},
|
||||
"handlebars": {
|
||||
"version": "4.7.7",
|
||||
@@ -742,9 +742,9 @@
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"is-core-module": {
|
||||
"version": "2.8.1",
|
||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz",
|
||||
"integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==",
|
||||
"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"
|
||||
}
|
||||
@@ -757,7 +757,7 @@
|
||||
"isarray": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
|
||||
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
|
||||
"integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
|
||||
},
|
||||
"js-yaml": {
|
||||
"version": "4.1.0",
|
||||
@@ -812,17 +812,17 @@
|
||||
"integrity": "sha1-oSvbAQNoHosSapsHHrpMRnx4//4="
|
||||
},
|
||||
"minimatch": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||
"version": "3.0.8",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz",
|
||||
"integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==",
|
||||
"requires": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
}
|
||||
},
|
||||
"minimist": {
|
||||
"version": "1.2.5",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
|
||||
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
|
||||
"version": "1.2.6",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
|
||||
"integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
|
||||
},
|
||||
"miniq": {
|
||||
"version": "1.0.1",
|
||||
@@ -935,11 +935,11 @@
|
||||
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
|
||||
},
|
||||
"resolve": {
|
||||
"version": "1.21.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.21.0.tgz",
|
||||
"integrity": "sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==",
|
||||
"version": "1.22.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
|
||||
"integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
|
||||
"requires": {
|
||||
"is-core-module": "^2.8.0",
|
||||
"is-core-module": "^2.8.1",
|
||||
"path-parse": "^1.0.7",
|
||||
"supports-preserve-symlinks-flag": "^1.0.0"
|
||||
}
|
||||
@@ -1011,9 +1011,9 @@
|
||||
}
|
||||
},
|
||||
"uglify-js": {
|
||||
"version": "3.14.5",
|
||||
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.5.tgz",
|
||||
"integrity": "sha512-qZukoSxOG0urUTvjc2ERMTcAy+BiFh3weWAkeurLwjrCba73poHmG3E36XEjd/JGukMzwTL7uCxZiAexj8ppvQ==",
|
||||
"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": {
|
||||
@@ -1037,7 +1037,7 @@
|
||||
"isarray": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
|
||||
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
|
||||
"integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "1.0.34",
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
[tool.poetry]
|
||||
name = "website"
|
||||
version = "0.1.0"
|
||||
description = ""
|
||||
authors = ["Marc Partensky <marc.partensky@gmail.com>"]
|
||||
|
||||
[tool.poetry.dependencies]
|
||||
python = "^3.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 = "*"
|
||||
pylint = "*"
|
||||
neovim = "*"
|
||||
black = "*"
|
||||
|
||||
[build-system]
|
||||
requires = ["poetry-core>=1.0.0"]
|
||||
build-backend = "poetry.core.masonry.api"
|
||||
@@ -1,176 +1,76 @@
|
||||
#
|
||||
# These requirements were autogenerated by pipenv
|
||||
# To regenerate from the project's Pipfile, run:
|
||||
#
|
||||
# pipenv lock --requirements
|
||||
#
|
||||
|
||||
-i https://pypi.org/simple
|
||||
aioredis==1.3.1
|
||||
appdirs==1.4.4
|
||||
appnope==0.1.2
|
||||
arrow==1.2.1
|
||||
asgiref==3.4.1
|
||||
astroid==2.9.3
|
||||
async-generator==1.10; python_version >= '3.5'
|
||||
async-timeout==4.0.2
|
||||
attrs==21.4.0
|
||||
autobahn==21.11.1
|
||||
automat==20.2.0
|
||||
backcall==0.2.0
|
||||
backports.zoneinfo==0.2.1; python_version < '3.9'
|
||||
blessed==1.19.0
|
||||
boto3==1.20.37
|
||||
botocore==1.23.37
|
||||
certifi==2021.10.8
|
||||
cffi==1.15.0
|
||||
channels-redis==3.3.1
|
||||
channels==3.0.4
|
||||
chardet==4.0.0
|
||||
charset-normalizer==2.0.10; python_version >= '3'
|
||||
click==8.0.3
|
||||
colorama==0.4.4
|
||||
commonmark==0.9.1
|
||||
constantly==15.1.0
|
||||
coverage==6.2
|
||||
cryptography==36.0.1
|
||||
daphne==3.0.2
|
||||
decorator==5.1.1
|
||||
defusedxml==0.7.1
|
||||
dj-database-url==0.5.0
|
||||
django-503==0.1
|
||||
django-admin==2.0.1
|
||||
django-allauth==0.47.0
|
||||
django-appconf==1.0.5
|
||||
django-avatar==5.0.0
|
||||
django-compressor==3.1
|
||||
django-cors-middleware==1.5.0
|
||||
django-crispy-forms==1.13.0
|
||||
django-excel-base==1.0.4
|
||||
django-excel-response2==3.0.2
|
||||
django-extensions==3.1.5
|
||||
django-ftpserver==0.7.0
|
||||
ansicon==1.89.0; python_full_version >= "3.6.2" and python_version < "4" and python_version >= "2.7" and platform_system == "Windows"
|
||||
arrow==1.2.2; python_full_version >= "3.6.2" and python_version < "4" and python_version >= "3.6"
|
||||
asgiref==3.5.2; python_full_version >= "3.6.2" and python_version < "4" and python_version >= "3.7"
|
||||
attrs==22.1.0; python_full_version >= "3.6.7" and python_version >= "3.7"
|
||||
autobahn==22.7.1; python_version >= "3.7"
|
||||
automat==20.2.0; python_full_version >= "3.6.7" and python_version >= "3.7"
|
||||
blessed==1.19.1; python_full_version >= "3.6.2" and python_version < "4" and python_version >= "2.7"
|
||||
certifi==2022.6.15; python_version >= "3.7" and python_version < "4"
|
||||
cffi==1.15.1; python_version >= "3.7"
|
||||
channels==3.0.5; python_version >= "3.7"
|
||||
charset-normalizer==2.1.1; python_version >= "3.7" and python_version < "4" and python_full_version >= "3.6.0"
|
||||
commonmark==0.9.1; python_full_version >= "3.6.3" and python_full_version < "4.0.0"
|
||||
constantly==15.1.0; python_full_version >= "3.6.7" and python_version >= "3.7"
|
||||
cryptography==37.0.4
|
||||
daphne==3.0.2; python_version >= "3.7"
|
||||
defusedxml==0.7.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
|
||||
dj-database-url==1.0.0
|
||||
django-allauth==0.51.0
|
||||
django-appconf==1.0.5; python_version >= "3.6"
|
||||
django-compressor==4.1
|
||||
django-cors-headers==3.13.0; python_version >= "3.7"
|
||||
django-crispy-forms==1.14.0; python_version >= "3.7"
|
||||
django-extensions==3.2.0; python_version >= "3.6"
|
||||
django-ftpserver==0.8.0
|
||||
django-heroku==0.3.1
|
||||
django-jsonfield-backport==1.0.4
|
||||
django-libsass==0.9
|
||||
django-markdown-view==0.0.4
|
||||
django-jsonfield-backport==1.0.5; python_version >= "3.5"
|
||||
django-markdown-view==0.0.5
|
||||
django-mdeditor==0.1.20
|
||||
django-picklefield==3.0.1
|
||||
django-q==1.3.9
|
||||
django-rename-app==0.1.3
|
||||
django-robots==5.0
|
||||
django-picklefield==3.1; python_full_version >= "3.6.2" and python_version < "4" and python_version >= "3"
|
||||
django-q==1.3.9; python_full_version >= "3.6.2" and python_version < "4"
|
||||
django-robots==5.0; python_version >= "3.7"
|
||||
django-shortuuidfield==0.1.3
|
||||
django-six==1.0.4
|
||||
django-sql-explorer==2.3
|
||||
django-storages==1.12.3
|
||||
django==3.2.11
|
||||
djangorestframework==3.13.1
|
||||
docopt==0.6.2
|
||||
docutils==0.18.1
|
||||
flake8==3.9.2
|
||||
future==0.18.2
|
||||
geckodriver-autoinstaller==0.1.0
|
||||
graphviz==0.19.1
|
||||
gunicorn==20.1.0
|
||||
h11==0.12.0; python_version >= '3.6'
|
||||
h2==4.1.0
|
||||
hiredis==2.0.0
|
||||
hpack==4.0.0
|
||||
hyperframe==6.0.1
|
||||
hyperlink==21.0.0
|
||||
idna==3.3
|
||||
importlib-metadata==4.10.1
|
||||
incremental==21.3.0
|
||||
ipython-genutils==0.2.0
|
||||
ipython==7.31.0
|
||||
isort==5.10.1
|
||||
jedi==0.18.1
|
||||
jeepney==0.7.1
|
||||
jmespath==0.10.0
|
||||
keyring==23.5.0
|
||||
keyrings.alt==3.2.0
|
||||
lazy-object-proxy==1.7.1
|
||||
libsass==0.21.0
|
||||
markdown==3.2.2
|
||||
matplotlib-inline==0.1.3; python_version >= '3.5'
|
||||
mccabe==0.6.1
|
||||
mock==4.0.3
|
||||
msgpack-python==0.5.6
|
||||
msgpack==1.0.3
|
||||
mypy-extensions==0.4.3
|
||||
nose==1.3.7
|
||||
oauthlib==3.1.1
|
||||
outcome==1.1.0; python_version >= '3.6'
|
||||
packaging==21.3; python_version >= '3.6'
|
||||
parso==0.8.3
|
||||
pathspec==0.9.0
|
||||
pexpect==4.8.0
|
||||
pickleshare==0.7.5
|
||||
pillow==9.0.0
|
||||
pip-autoremove==0.10.0
|
||||
pip-conflict-checker==0.6.0
|
||||
pip-review==1.1.1
|
||||
pip==21.3.1; python_version >= '3.6'
|
||||
pipdeptree==2.2.1
|
||||
pipupgrade==1.11.0
|
||||
platformdirs==2.4.1; python_version >= '3.7'
|
||||
priority==2.0.0
|
||||
prompt-toolkit==3.0.24
|
||||
psycopg2-binary==2.9.3
|
||||
psycopg2==2.9.3; python_version >= '3.6'
|
||||
ptyprocess==0.7.0
|
||||
pyasn1-modules==0.2.8
|
||||
pyasn1==0.4.8
|
||||
pycodestyle==2.7.0
|
||||
pycparser==2.21
|
||||
pyflakes==2.3.1
|
||||
django-sql-explorer==2.4.1; python_version >= "3.6"
|
||||
django-storages==1.13.1; python_version >= "3.7"
|
||||
django==3.2.15; python_version >= "3.6"
|
||||
djangorestframework==3.13.1; python_version >= "3.6"
|
||||
hyperlink==21.0.0; python_full_version >= "3.6.7" and python_version >= "3.7"
|
||||
idna==3.3; python_version >= "3.7" and python_version < "4" and python_full_version >= "3.6.7"
|
||||
importlib-metadata==4.12.0; python_version < "3.10" and python_version >= "3.7"
|
||||
incremental==21.3.0; python_full_version >= "3.6.7" and python_version >= "3.7"
|
||||
jinxed==1.2.0; python_full_version >= "3.6.2" and python_version < "4" and python_version >= "2.7" and platform_system == "Windows"
|
||||
markdown==3.4.1; python_version >= "3.7"
|
||||
oauthlib==3.2.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
|
||||
pillow==9.2.0; python_version >= "3.7"
|
||||
psycopg2-binary==2.9.3; python_version >= "3.6"
|
||||
pyasn1-modules==0.2.8; python_full_version >= "3.6.7" and python_version >= "3.7"
|
||||
pyasn1==0.4.8; python_full_version >= "3.6.7" and python_version >= "3.7"
|
||||
pycparser==2.21; python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version >= "3.4.0"
|
||||
pyftpdlib==1.5.6
|
||||
pygments==2.11.2
|
||||
pyhamcrest==2.0.3
|
||||
pyjwt==2.3.0
|
||||
pylint==2.12.2
|
||||
pyopenssl==21.0.0
|
||||
pyparsing==3.0.6
|
||||
python-dateutil==2.8.2
|
||||
python-dotenv==0.19.2
|
||||
pygments==2.13.0; python_full_version >= "3.6.3" and python_full_version < "4.0.0" and python_version >= "3.6"
|
||||
pyjwt==2.4.0; python_version >= "3.6"
|
||||
pyopenssl==22.0.0; python_full_version >= "3.6.7" and python_version >= "3.7"
|
||||
python-dateutil==2.8.2; python_full_version >= "3.6.2" and python_version < "4" and python_version >= "3.6"
|
||||
python-dotenv==0.20.0; python_version >= "3.5"
|
||||
python3-openid==3.2.0
|
||||
pytz-deprecation-shim==0.1.0.post0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'
|
||||
pytz==2021.3
|
||||
pyyaml==6.0
|
||||
pytz==2022.2.1; python_full_version >= "3.6.2" and python_version < "4" and python_version >= "3.7"
|
||||
pyyaml==6.0; python_version >= "3.6"
|
||||
rcssmin==1.1.0
|
||||
redis==3.5.3
|
||||
regex==2021.11.10
|
||||
requests-oauthlib==1.3.0
|
||||
requests==2.27.1
|
||||
rich==11.0.0
|
||||
redis==3.5.3; python_full_version >= "3.6.2" and python_version < "4"
|
||||
requests-oauthlib==1.3.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0"
|
||||
requests==2.28.1; python_version >= "3.7" and python_version < "4" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0")
|
||||
rich==12.5.1; python_full_version >= "3.6.3" and python_full_version < "4.0.0"
|
||||
rjsmin==1.2.0
|
||||
s3transfer==0.5.0
|
||||
screen==1.0.1
|
||||
secretstorage==3.3.1
|
||||
selenium==4.1.0
|
||||
service-identity==21.1.0
|
||||
setuptools==60.5.0; python_version >= '3.7'
|
||||
shortuuid==1.0.8
|
||||
six==1.16.0
|
||||
sniffio==1.2.0; python_version >= '3.5'
|
||||
sortedcontainers==2.4.0
|
||||
sqlparse==0.4.2
|
||||
toml==0.10.2
|
||||
traitlets==5.1.1
|
||||
trio-websocket==0.9.2; python_version >= '3.5'
|
||||
trio==0.19.0; python_version >= '3.6'
|
||||
twisted==21.7.0
|
||||
txaio==21.2.1
|
||||
typed-ast==1.5.1
|
||||
typing-extensions==4.0.1
|
||||
tzdata==2021.5; python_version >= '3.6'
|
||||
tzlocal==4.1
|
||||
urllib3==1.26.8
|
||||
wcwidth==0.2.5
|
||||
whitenoise==5.3.0
|
||||
wrapt==1.13.3
|
||||
wsproto==1.0.0; python_full_version >= '3.6.1'
|
||||
xlwt==1.3.0
|
||||
yarg==0.1.9
|
||||
zipp==3.7.0
|
||||
zope.interface==5.4.0
|
||||
service-identity==21.1.0; python_full_version >= "3.6.7" and python_version >= "3.7"
|
||||
shortuuid==1.0.9; python_version >= "3.5"
|
||||
six==1.16.0; python_full_version >= "3.6.7" and python_version < "4" and python_version >= "3.7"
|
||||
sqlparse==0.4.2; python_full_version >= "3.6.2" and python_version < "4" and python_version >= "3.7"
|
||||
twisted-iocpsupport==1.0.2; python_full_version >= "3.6.7" and python_version >= "3.7" and platform_system == "Windows"
|
||||
twisted==22.4.0; python_full_version >= "3.6.7" and python_version >= "3.7"
|
||||
txaio==22.2.1; python_version >= "3.7"
|
||||
typing-extensions==4.3.0; python_full_version >= "3.6.7" and python_full_version < "4.0.0" and python_version < "3.8" and python_version >= "3.7"
|
||||
urllib3==1.26.11; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4" or python_full_version >= "3.6.0" and python_version < "4" and python_version >= "3.7"
|
||||
wcwidth==0.2.5; python_full_version >= "3.6.2" and python_version < "4" and python_version >= "2.7"
|
||||
whitenoise==6.2.0; python_version >= "3.7"
|
||||
zipp==3.8.1; python_version < "3.10" and python_version >= "3.7"
|
||||
zope.interface==5.4.0; python_full_version >= "3.6.7" and python_version >= "3.7"
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
__version__ = '0.1.0'
|
||||
@@ -0,0 +1,6 @@
|
||||
from django.contrib import admin
|
||||
from .models import MarkdownModel, NotificationModel, DataModel
|
||||
|
||||
admin.site.register(MarkdownModel)
|
||||
admin.site.register(NotificationModel)
|
||||
admin.site.register(DataModel)
|
||||
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 8.6 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB |