mirror of
https://github.com/eitchtee/WYGIWYH.git
synced 2026-02-25 17:04:51 +01:00
Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3e73332a93 | ||
|
|
ae2217e760 | ||
|
|
e2bf699be0 | ||
|
|
e760d42c2d | ||
|
|
d541b30280 | ||
|
|
366c0b475d | ||
|
|
8576b74aff | ||
|
|
d4b11bd350 | ||
|
|
c8c34c2c56 | ||
|
|
023ceb898f | ||
|
|
1243dddd5d | ||
|
|
8661fb39e8 | ||
|
|
5752606fec | ||
|
|
7250ce0dbb | ||
|
|
b963a3cfb8 |
33
.github/workflows/release.yml
vendored
33
.github/workflows/release.yml
vendored
@@ -5,7 +5,6 @@ on:
|
||||
types: [created]
|
||||
|
||||
env:
|
||||
REGISTRY: ghcr.io
|
||||
IMAGE_NAME: wygiwyh
|
||||
|
||||
jobs:
|
||||
@@ -13,20 +12,16 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
attestations: write
|
||||
id-token: write
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Log in to the Container registry
|
||||
- name: Log in to Docker Hub
|
||||
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
|
||||
with:
|
||||
registry: ${{ env.REGISTRY }}
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
@@ -34,13 +29,29 @@ jobs:
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Cache Docker layers
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: /tmp/.buildx-cache
|
||||
key: ${{ runner.os }}-buildx-${{ github.sha }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-buildx-
|
||||
|
||||
- name: Build and push image
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
context: .
|
||||
file: ./docker/prod/django/Dockerfile
|
||||
push: true
|
||||
provenance: false
|
||||
tags: |
|
||||
${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:latest
|
||||
${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:${{ github.event.release.tag_name }}
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v8,linux/arm64/v8
|
||||
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:latest
|
||||
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:${{ github.event.release.tag_name }}
|
||||
platforms: linux/amd64,linux/arm64
|
||||
cache-from: type=local,src=/tmp/.buildx-cache
|
||||
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
|
||||
|
||||
- name: Move cache
|
||||
run: |
|
||||
rm -rf /tmp/.buildx-cache
|
||||
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
|
||||
|
||||
21
README.md
21
README.md
@@ -48,29 +48,28 @@ Frustrated by the lack of comprehensive options, I set out to build **WYGIWYH**
|
||||
|
||||
# How To Use
|
||||
|
||||
To run this application, you'll need [Git](https://git-scm.com) and [Docker](https://docs.docker.com/engine/install/) with the [docker-compose](https://docs.docker.com/compose/install/).
|
||||
To run this application, you'll need [Docker](https://docs.docker.com/engine/install/) with [docker-compose](https://docs.docker.com/compose/install/).
|
||||
|
||||
From your command line:
|
||||
|
||||
> [!NOTE]
|
||||
> Docker images for this project are currently under development, but manual setup is available now.
|
||||
|
||||
```bash
|
||||
# Clone this repository
|
||||
$ git clone https://github.com/eitchtee/WYGIWYH
|
||||
$ mkdir WYGIWYH
|
||||
|
||||
# Go into the repository
|
||||
$ cd WYGIWYH
|
||||
|
||||
# Fill the .env file with your configurations
|
||||
$ cp .env.example .env
|
||||
$ nano .env # or any other editor you want to use
|
||||
$ touch docker-compose.yml
|
||||
$ nano docker-compose.yml
|
||||
# Paste the contents of https://github.com/eitchtee/WYGIWYH/blob/main/docker-compose.prod.yml and edit according to your needs
|
||||
|
||||
# Create docker-compose file
|
||||
$ cp docker-compose.prod.yml docker-compose.yml
|
||||
# Fill the .env file with your configurations
|
||||
$ touch .env
|
||||
$ nano .env # or any other editor you want to use
|
||||
# Paste the contents of https://github.com/eitchtee/WYGIWYH/blob/main/.env.example and edit accordingly
|
||||
|
||||
# Run the app
|
||||
$ docker compose up -d --build
|
||||
$ docker compose up -d
|
||||
|
||||
# Create the first admin account
|
||||
$ docker compose exec -it web python manage.py createsuperuser
|
||||
|
||||
@@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-12-24 19:06+0000\n"
|
||||
"PO-Revision-Date: 2024-12-24 16:07-0300\n"
|
||||
"POT-Creation-Date: 2024-12-28 05:32+0000\n"
|
||||
"PO-Revision-Date: 2024-12-28 02:32-0300\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: pt_BR\n"
|
||||
@@ -71,7 +71,7 @@ msgid "Category"
|
||||
msgstr "Categoria"
|
||||
|
||||
#: apps/accounts/forms.py:124 apps/rules/models.py:28
|
||||
#: apps/transactions/filters.py:65 apps/transactions/forms.py:44
|
||||
#: apps/transactions/filters.py:73 apps/transactions/forms.py:44
|
||||
#: apps/transactions/forms.py:199 apps/transactions/forms.py:206
|
||||
#: apps/transactions/forms.py:360 apps/transactions/forms.py:580
|
||||
#: apps/transactions/models.py:96 apps/transactions/models.py:211
|
||||
@@ -145,10 +145,11 @@ msgstr ""
|
||||
msgid "Account"
|
||||
msgstr "Conta"
|
||||
|
||||
#: apps/accounts/models.py:60 apps/transactions/filters.py:51
|
||||
#: apps/accounts/models.py:60 apps/transactions/filters.py:52
|
||||
#: templates/accounts/fragments/list.html:5
|
||||
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:104
|
||||
#: templates/includes/navbar.html:106
|
||||
#: templates/transactions/fragments/summary.html:9
|
||||
msgid "Accounts"
|
||||
msgstr "Contas"
|
||||
|
||||
@@ -314,9 +315,11 @@ msgstr "Nome da Moeda"
|
||||
msgid "Decimal Places"
|
||||
msgstr "Casas Decimais"
|
||||
|
||||
#: apps/currencies/models.py:33 templates/currencies/fragments/list.html:5
|
||||
#: apps/currencies/models.py:33 apps/transactions/filters.py:59
|
||||
#: templates/currencies/fragments/list.html:5
|
||||
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:112
|
||||
#: templates/includes/navbar.html:114
|
||||
#: templates/transactions/fragments/summary.html:6
|
||||
msgid "Currencies"
|
||||
msgstr "Moedas"
|
||||
|
||||
@@ -494,7 +497,7 @@ msgstr "Gatilho"
|
||||
msgid "Type"
|
||||
msgstr "Tipo"
|
||||
|
||||
#: apps/rules/models.py:21 apps/transactions/filters.py:21
|
||||
#: apps/rules/models.py:21 apps/transactions/filters.py:22
|
||||
#: apps/transactions/models.py:74
|
||||
msgid "Paid"
|
||||
msgstr "Pago"
|
||||
@@ -511,7 +514,7 @@ msgstr "Data de Referência"
|
||||
msgid "Amount"
|
||||
msgstr "Quantia"
|
||||
|
||||
#: apps/rules/models.py:29 apps/transactions/filters.py:72
|
||||
#: apps/rules/models.py:29 apps/transactions/filters.py:80
|
||||
#: apps/transactions/forms.py:51 apps/transactions/forms.py:372
|
||||
#: apps/transactions/forms.py:592 apps/transactions/models.py:50
|
||||
#: apps/transactions/models.py:101 apps/transactions/models.py:214
|
||||
@@ -560,40 +563,40 @@ msgstr "Ação atualizada com sucesso"
|
||||
msgid "Action deleted successfully"
|
||||
msgstr "Ação apagada com sucesso"
|
||||
|
||||
#: apps/transactions/filters.py:22 templates/includes/navbar.html:45
|
||||
#: apps/transactions/filters.py:23 templates/includes/navbar.html:45
|
||||
msgid "Projected"
|
||||
msgstr "Previsto"
|
||||
|
||||
#: apps/transactions/filters.py:39
|
||||
#: apps/transactions/filters.py:40
|
||||
msgid "Content"
|
||||
msgstr "Conteúdo"
|
||||
|
||||
#: apps/transactions/filters.py:45
|
||||
#: apps/transactions/filters.py:46
|
||||
msgid "Transaction Type"
|
||||
msgstr "Tipo de Transação"
|
||||
|
||||
#: apps/transactions/filters.py:58 templates/categories/fragments/list.html:5
|
||||
#: apps/transactions/filters.py:66 templates/categories/fragments/list.html:5
|
||||
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:96
|
||||
msgid "Categories"
|
||||
msgstr "Categorias"
|
||||
|
||||
#: apps/transactions/filters.py:83
|
||||
#: apps/transactions/filters.py:91
|
||||
msgid "Date from"
|
||||
msgstr "Data de"
|
||||
|
||||
#: apps/transactions/filters.py:89 apps/transactions/filters.py:99
|
||||
#: apps/transactions/filters.py:97 apps/transactions/filters.py:107
|
||||
msgid "Until"
|
||||
msgstr "Até"
|
||||
|
||||
#: apps/transactions/filters.py:94
|
||||
#: apps/transactions/filters.py:102
|
||||
msgid "Reference date from"
|
||||
msgstr "Data de Referência de"
|
||||
|
||||
#: apps/transactions/filters.py:104
|
||||
#: apps/transactions/filters.py:112
|
||||
msgid "Amount min"
|
||||
msgstr "Quantia miníma"
|
||||
|
||||
#: apps/transactions/filters.py:109
|
||||
#: apps/transactions/filters.py:117
|
||||
msgid "Amount max"
|
||||
msgstr "Quantia máxima"
|
||||
|
||||
@@ -665,6 +668,7 @@ msgstr "Entidade"
|
||||
#: templates/calendar_view/pages/calendar.html:54
|
||||
#: templates/monthly_overview/fragments/monthly_summary.html:39
|
||||
#: templates/monthly_overview/pages/overview.html:54
|
||||
#: templates/transactions/fragments/summary.html:17
|
||||
#: templates/yearly_overview/pages/overview_by_account.html:49
|
||||
#: templates/yearly_overview/pages/overview_by_currency.html:51
|
||||
msgid "Income"
|
||||
@@ -878,19 +882,19 @@ msgstr "Tag atualizada com sucesso"
|
||||
msgid "Tag deleted successfully"
|
||||
msgstr "Tag apagada com sucesso"
|
||||
|
||||
#: apps/transactions/views/transactions.py:39
|
||||
#: apps/transactions/views/transactions.py:45
|
||||
msgid "Transaction added successfully"
|
||||
msgstr "Transação adicionada com sucesso"
|
||||
|
||||
#: apps/transactions/views/transactions.py:70
|
||||
#: apps/transactions/views/transactions.py:76
|
||||
msgid "Transaction updated successfully"
|
||||
msgstr "Transação atualizada com sucesso"
|
||||
|
||||
#: apps/transactions/views/transactions.py:95
|
||||
#: apps/transactions/views/transactions.py:101
|
||||
msgid "Transaction deleted successfully"
|
||||
msgstr "Transação apagada com sucesso"
|
||||
|
||||
#: apps/transactions/views/transactions.py:121
|
||||
#: apps/transactions/views/transactions.py:127
|
||||
msgid "Transfer added successfully"
|
||||
msgstr "Transferência adicionada com sucesso"
|
||||
|
||||
@@ -1575,6 +1579,10 @@ msgstr "Isso excluirá o parcelamento e todas as transações associadas a ele"
|
||||
msgid "No installment plans"
|
||||
msgstr "Nenhum parcelamento"
|
||||
|
||||
#: templates/mini_tools/currency_converter/currency_converter.html:56
|
||||
msgid "Invert"
|
||||
msgstr "Inverter"
|
||||
|
||||
#: templates/mini_tools/unit_price_calculator.html:27
|
||||
#: templates/mini_tools/unit_price_calculator.html:100
|
||||
#: templates/mini_tools/unit_price_calculator.html:125
|
||||
@@ -1614,24 +1622,33 @@ msgstr "Esse é o total final dividido pelos dias restantes do mês"
|
||||
#: templates/monthly_overview/fragments/monthly_summary.html:42
|
||||
#: templates/monthly_overview/fragments/monthly_summary.html:106
|
||||
#: templates/monthly_overview/fragments/monthly_summary.html:170
|
||||
#: templates/transactions/fragments/summary.html:20
|
||||
#: templates/transactions/fragments/summary.html:84
|
||||
#: templates/transactions/fragments/summary.html:148
|
||||
msgid "current"
|
||||
msgstr "atual"
|
||||
|
||||
#: templates/monthly_overview/fragments/monthly_summary.html:72
|
||||
#: templates/monthly_overview/fragments/monthly_summary.html:136
|
||||
#: templates/monthly_overview/fragments/monthly_summary.html:199
|
||||
#: templates/transactions/fragments/summary.html:50
|
||||
#: templates/transactions/fragments/summary.html:114
|
||||
#: templates/transactions/fragments/summary.html:177
|
||||
msgid "projected"
|
||||
msgstr "previsto"
|
||||
|
||||
#: templates/monthly_overview/fragments/monthly_summary.html:103
|
||||
#: templates/transactions/fragments/summary.html:81
|
||||
msgid "Expenses"
|
||||
msgstr "Despesas"
|
||||
|
||||
#: templates/monthly_overview/fragments/monthly_summary.html:167
|
||||
#: templates/transactions/fragments/summary.html:145
|
||||
msgid "Total"
|
||||
msgstr "Total"
|
||||
|
||||
#: templates/monthly_overview/fragments/monthly_summary.html:256
|
||||
#: templates/transactions/fragments/summary.html:234
|
||||
msgid "Distribution"
|
||||
msgstr "Distribuição"
|
||||
|
||||
@@ -1672,16 +1689,16 @@ msgstr "Patrimônio Previsto"
|
||||
msgid "By currency"
|
||||
msgstr "Por moeda"
|
||||
|
||||
#: templates/net_worth/net_worth.html:52
|
||||
#: templates/net_worth/net_worth.html:65
|
||||
#: templates/yearly_overview/pages/overview_by_account.html:7
|
||||
msgid "By account"
|
||||
msgstr "Por conta"
|
||||
|
||||
#: templates/net_worth/net_worth.html:153
|
||||
#: templates/net_worth/net_worth.html:166
|
||||
msgid "Evolution by currency"
|
||||
msgstr "Evolução por moeda"
|
||||
|
||||
#: templates/net_worth/net_worth.html:208
|
||||
#: templates/net_worth/net_worth.html:224
|
||||
msgid "Evolution by account"
|
||||
msgstr "Evolução por conta"
|
||||
|
||||
@@ -1831,6 +1848,54 @@ msgstr "Editar transação"
|
||||
msgid "No transactions found"
|
||||
msgstr "Nenhuma transação encontrada"
|
||||
|
||||
#: templates/transactions/fragments/summary.html:255
|
||||
#: templates/yearly_overview/fragments/account_data.html:14
|
||||
#: templates/yearly_overview/fragments/currency_data.html:14
|
||||
msgid "projected income"
|
||||
msgstr "renda prevista"
|
||||
|
||||
#: templates/transactions/fragments/summary.html:277
|
||||
#: templates/yearly_overview/fragments/account_data.html:36
|
||||
#: templates/yearly_overview/fragments/currency_data.html:36
|
||||
msgid "projected expenses"
|
||||
msgstr "despesas previstas"
|
||||
|
||||
#: templates/transactions/fragments/summary.html:301
|
||||
#: templates/yearly_overview/fragments/account_data.html:60
|
||||
#: templates/yearly_overview/fragments/currency_data.html:60
|
||||
msgid "projected total"
|
||||
msgstr "total previsto"
|
||||
|
||||
#: templates/transactions/fragments/summary.html:326
|
||||
#: templates/yearly_overview/fragments/account_data.html:85
|
||||
#: templates/yearly_overview/fragments/currency_data.html:85
|
||||
msgid "current income"
|
||||
msgstr "renda atual"
|
||||
|
||||
#: templates/transactions/fragments/summary.html:348
|
||||
#: templates/yearly_overview/fragments/account_data.html:107
|
||||
#: templates/yearly_overview/fragments/currency_data.html:107
|
||||
msgid "current expenses"
|
||||
msgstr "despesas atuais"
|
||||
|
||||
#: templates/transactions/fragments/summary.html:370
|
||||
#: templates/yearly_overview/fragments/account_data.html:129
|
||||
#: templates/yearly_overview/fragments/currency_data.html:129
|
||||
msgid "current total"
|
||||
msgstr "total atual"
|
||||
|
||||
#: templates/transactions/fragments/summary.html:396
|
||||
#: templates/yearly_overview/fragments/account_data.html:155
|
||||
#: templates/yearly_overview/fragments/currency_data.html:155
|
||||
msgid "final total"
|
||||
msgstr "total final"
|
||||
|
||||
#: templates/transactions/fragments/summary.html:426
|
||||
#: templates/yearly_overview/fragments/account_data.html:185
|
||||
#: templates/yearly_overview/fragments/currency_data.html:184
|
||||
msgid "No information to display"
|
||||
msgstr "Não há informação para mostrar"
|
||||
|
||||
#: templates/transactions/fragments/transfer.html:5
|
||||
msgid "New transfer"
|
||||
msgstr "Nova transferência"
|
||||
@@ -1855,46 +1920,6 @@ msgstr "Reproduzir sons"
|
||||
msgid "Show amounts"
|
||||
msgstr "Mostrar valores"
|
||||
|
||||
#: templates/yearly_overview/fragments/account_data.html:14
|
||||
#: templates/yearly_overview/fragments/currency_data.html:14
|
||||
msgid "projected income"
|
||||
msgstr "renda prevista"
|
||||
|
||||
#: templates/yearly_overview/fragments/account_data.html:36
|
||||
#: templates/yearly_overview/fragments/currency_data.html:36
|
||||
msgid "projected expenses"
|
||||
msgstr "despesas previstas"
|
||||
|
||||
#: templates/yearly_overview/fragments/account_data.html:60
|
||||
#: templates/yearly_overview/fragments/currency_data.html:60
|
||||
msgid "projected total"
|
||||
msgstr "total previsto"
|
||||
|
||||
#: templates/yearly_overview/fragments/account_data.html:85
|
||||
#: templates/yearly_overview/fragments/currency_data.html:85
|
||||
msgid "current income"
|
||||
msgstr "renda atual"
|
||||
|
||||
#: templates/yearly_overview/fragments/account_data.html:107
|
||||
#: templates/yearly_overview/fragments/currency_data.html:107
|
||||
msgid "current expenses"
|
||||
msgstr "despesas atuais"
|
||||
|
||||
#: templates/yearly_overview/fragments/account_data.html:129
|
||||
#: templates/yearly_overview/fragments/currency_data.html:129
|
||||
msgid "current total"
|
||||
msgstr "total atual"
|
||||
|
||||
#: templates/yearly_overview/fragments/account_data.html:155
|
||||
#: templates/yearly_overview/fragments/currency_data.html:155
|
||||
msgid "final total"
|
||||
msgstr "total final"
|
||||
|
||||
#: templates/yearly_overview/fragments/account_data.html:184
|
||||
#: templates/yearly_overview/fragments/currency_data.html:184
|
||||
msgid "No information to display"
|
||||
msgstr "Não há informação para mostrar"
|
||||
|
||||
#: templates/yearly_overview/pages/overview_by_account.html:7
|
||||
#: templates/yearly_overview/pages/overview_by_currency.html:9
|
||||
msgid "Yearly Overview"
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<div>{% translate 'Currency Converter' %}</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-5">
|
||||
<div class="col-12 col-lg-5">
|
||||
<div>
|
||||
<input class="form-control form-control-lg mb-3"
|
||||
type="text"
|
||||
@@ -25,13 +25,14 @@
|
||||
</div>
|
||||
<div>{{ form.from_currency|as_crispy_field }}</div>
|
||||
</div>
|
||||
<div class="col text-primary tw-flex tw-items-center tw-justify-center">
|
||||
<div class="col text-primary tw-flex tw-items-center tw-justify-center my-3 my-lg-0">
|
||||
<i class="fa-solid fa-equals"></i>
|
||||
</div>
|
||||
<div class="col-5">
|
||||
<div class="col-12 col-lg-5">
|
||||
<div hx-get="{% url 'currency_converter_convert' %}"
|
||||
hx-trigger="input from:#from_value, input from:#id_from_currency, input from:#id_to_currency"
|
||||
hx-include="#from_value, #id_from_currency, #id_to_currency">
|
||||
hx-trigger="input from:#from_value, input from:#id_from_currency, input from:#id_to_currency, updated"
|
||||
hx-include="#from_value, #id_from_currency, #id_to_currency"
|
||||
id="result">
|
||||
<input class="form-control form-control-lg mb-3"
|
||||
type="text"
|
||||
name="to_value"
|
||||
@@ -41,5 +42,19 @@
|
||||
<div>{{ form.to_currency|as_crispy_field }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="tw-cursor-pointer text-primary text-end"
|
||||
_="on click
|
||||
set from_value to #id_from_currency's value
|
||||
set to_value to #id_to_currency's value
|
||||
set #id_from_currency's value to to_value
|
||||
set #id_to_currency's value to from_value
|
||||
call #id_from_currency.tomselect.sync()
|
||||
call #id_to_currency.tomselect.sync()
|
||||
trigger updated on #result
|
||||
end">
|
||||
<i class="fa-solid fa-rotate me-2"></i><span>{% trans 'Invert' %}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
services:
|
||||
web: &django
|
||||
build:
|
||||
context: .
|
||||
dockerfile: ./docker/prod/django/Dockerfile
|
||||
image: ${SERVER_NAME}
|
||||
image: eitchtee/wygiwyh:latest
|
||||
container_name: ${SERVER_NAME}
|
||||
command: /start
|
||||
ports:
|
||||
@@ -27,7 +24,6 @@ services:
|
||||
|
||||
procrastinate:
|
||||
<<: *django
|
||||
image: ${PROCRASTINATE_NAME}
|
||||
container_name: ${PROCRASTINATE_NAME}
|
||||
depends_on:
|
||||
- db
|
||||
|
||||
@@ -6,16 +6,16 @@ RUN apt-get update && apt-get install --no-install-recommends -y \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY ./requirements.txt .
|
||||
RUN pip wheel --wheel-dir /usr/src/app/wheels -r requirements.txt
|
||||
RUN --mount=type=cache,target=/root/.cache/pip \
|
||||
pip wheel --wheel-dir /usr/src/app/wheels -r requirements.txt
|
||||
|
||||
FROM node:lts-alpine AS webpack_build
|
||||
WORKDIR /usr/src/frontend
|
||||
COPY ./frontend .
|
||||
COPY ./app/templates /usr/src/app/templates
|
||||
RUN npm config set registry https://registry.npmmirror.com/ && \
|
||||
RUN --mount=type=cache,target=/root/.npm \
|
||||
npm install --verbose && \
|
||||
npm run build && \
|
||||
npm cache clean --force
|
||||
npm run build
|
||||
|
||||
FROM python:3.11-slim-buster AS python-run-stage
|
||||
COPY --from=webpack_build /usr/src/frontend/build /usr/src/frontend/build
|
||||
@@ -29,12 +29,13 @@ ENV PYTHONDONTWRITEBYTECODE=1 \
|
||||
PYTHONUNBUFFERED=1
|
||||
|
||||
COPY --from=python-build-stage /usr/src/app/wheels /wheels/
|
||||
RUN apt-get update && \
|
||||
RUN --mount=type=cache,target=/root/.cache/apt \
|
||||
apt-get update && \
|
||||
apt-get install --no-install-recommends -y gettext && \
|
||||
rm -rf /var/lib/apt/lists/* && \
|
||||
pip install --upgrade pip && \
|
||||
pip install --no-cache-dir --no-index --find-links=/wheels/ /wheels/* && \
|
||||
rm -rf /wheels/ ~/.cache/pip/*
|
||||
rm -rf /wheels/
|
||||
|
||||
COPY --chown=app:app ./docker/prod/django/start /start
|
||||
COPY --chown=app:app ./docker/prod/procrastinate/start /start-procrastinate
|
||||
|
||||
38
frontend/package-lock.json
generated
38
frontend/package-lock.json
generated
@@ -3441,9 +3441,9 @@
|
||||
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="
|
||||
},
|
||||
"node_modules/cookie": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
|
||||
"integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
|
||||
"version": "0.7.1",
|
||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
|
||||
"integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
@@ -4499,16 +4499,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/express": {
|
||||
"version": "4.21.0",
|
||||
"resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz",
|
||||
"integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==",
|
||||
"version": "4.21.2",
|
||||
"resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
|
||||
"integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
|
||||
"dependencies": {
|
||||
"accepts": "~1.3.8",
|
||||
"array-flatten": "1.1.1",
|
||||
"body-parser": "1.20.3",
|
||||
"content-disposition": "0.5.4",
|
||||
"content-type": "~1.0.4",
|
||||
"cookie": "0.6.0",
|
||||
"cookie": "0.7.1",
|
||||
"cookie-signature": "1.0.6",
|
||||
"debug": "2.6.9",
|
||||
"depd": "2.0.0",
|
||||
@@ -4522,7 +4522,7 @@
|
||||
"methods": "~1.1.2",
|
||||
"on-finished": "2.4.1",
|
||||
"parseurl": "~1.3.3",
|
||||
"path-to-regexp": "0.1.10",
|
||||
"path-to-regexp": "0.1.12",
|
||||
"proxy-addr": "~2.0.7",
|
||||
"qs": "6.13.0",
|
||||
"range-parser": "~1.2.1",
|
||||
@@ -4537,6 +4537,10 @@
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.10.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/express"
|
||||
}
|
||||
},
|
||||
"node_modules/express/node_modules/debug": {
|
||||
@@ -5219,9 +5223,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/http-proxy-middleware": {
|
||||
"version": "2.0.6",
|
||||
"resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz",
|
||||
"integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==",
|
||||
"version": "2.0.7",
|
||||
"resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz",
|
||||
"integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==",
|
||||
"dependencies": {
|
||||
"@types/http-proxy": "^1.17.8",
|
||||
"http-proxy": "^1.18.1",
|
||||
@@ -6179,9 +6183,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/nanoid": {
|
||||
"version": "3.3.7",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
|
||||
"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
|
||||
"version": "3.3.8",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
|
||||
"integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
@@ -6535,9 +6539,9 @@
|
||||
"integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
|
||||
},
|
||||
"node_modules/path-to-regexp": {
|
||||
"version": "0.1.10",
|
||||
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz",
|
||||
"integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w=="
|
||||
"version": "0.1.12",
|
||||
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz",
|
||||
"integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ=="
|
||||
},
|
||||
"node_modules/path-type": {
|
||||
"version": "4.0.0",
|
||||
|
||||
Reference in New Issue
Block a user