From 8db06afb863ee47c6e0751b6faedc6758e99949a Mon Sep 17 00:00:00 2001 From: mtyton Date: Wed, 3 May 2023 20:17:49 +0200 Subject: [PATCH] added basic style and navbar --- .gitignore | 3 ++ artel/Dockerfile | 2 +- artel/Dockerfile.local | 36 ++++++++++++++++++ artel/artel/settings/base.py | 9 +++-- artel/artel/static/images/las_ruinas_PL.png | Bin 0 -> 34203 bytes artel/artel/templates/base.html | 16 +++++--- .../templates/menu/custom_main_menu.html | 32 +++++++++------- artel/docker-compose.yml | 20 ++++++++++ artel/requirements.txt | 4 +- artel/store/models.py | 1 - 10 files changed, 96 insertions(+), 27 deletions(-) create mode 100644 artel/Dockerfile.local create mode 100644 artel/artel/static/images/las_ruinas_PL.png create mode 100644 artel/docker-compose.yml diff --git a/.gitignore b/.gitignore index 681ceb5..07b766b 100644 --- a/.gitignore +++ b/.gitignore @@ -135,3 +135,6 @@ GitHub.sublime-settings !.vscode/launch.json !.vscode/extensions.json .history + +#postgres pass files +*.my_pgpass diff --git a/artel/Dockerfile b/artel/Dockerfile index ef47bd3..a8b15d3 100644 --- a/artel/Dockerfile +++ b/artel/Dockerfile @@ -1,5 +1,5 @@ # Use an official Python runtime based on Debian 10 "buster" as a parent image. -FROM python:3.8.1-slim-buster +FROM python:3.11.3-buster # Add user that will be used in the container. RUN useradd wagtail diff --git a/artel/Dockerfile.local b/artel/Dockerfile.local new file mode 100644 index 0000000..e42726d --- /dev/null +++ b/artel/Dockerfile.local @@ -0,0 +1,36 @@ +# Use an official Python runtime based on Debian 10 "buster" as a parent image. +FROM python:3.11.3-buster + +# Port used by this container to serve HTTP. +EXPOSE 8000 + +# Set environment variables. +# 1. Force Python stdout and stderr streams to be unbuffered. +# 2. Set PORT variable that is used by Gunicorn. This should match "EXPOSE" +# command. +ENV PYTHONDONTWRITEBYTECODE 1 +ENV PYTHONUNBUFFERED 1 + +# Install system packages required by Wagtail and Django. +RUN apt-get update --yes --quiet && apt-get install --yes --quiet --no-install-recommends \ + build-essential \ + libpq-dev \ + libmariadbclient-dev \ + libjpeg62-turbo-dev \ + zlib1g-dev \ + libwebp-dev \ + && rm -rf /var/lib/apt/lists/* + +# Install the project requirements. +COPY requirements.txt / +RUN pip install -r /requirements.txt + +# Use /app folder as a directory where the source code is stored. +WORKDIR /app + +# Copy the source code of the project into the container. +COPY ./ /app + +# Collect static files. +RUN python manage.py collectstatic --noinput --clear +CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"] diff --git a/artel/artel/settings/base.py b/artel/artel/settings/base.py index 8663caf..36fcf80 100644 --- a/artel/artel/settings/base.py +++ b/artel/artel/settings/base.py @@ -88,12 +88,13 @@ WSGI_APPLICATION = "artel.wsgi.application" # Database # https://docs.djangoproject.com/en/4.1/ref/settings/#databases +import dj_database_url as db_url + DATABASES = { - "default": { - "ENGINE": "django.db.backends.sqlite3", - "NAME": os.path.join(BASE_DIR, "db.sqlite3"), - } + "default": db_url.parse( + "postgres://comfy:password@db/comfy_shop" + ) } diff --git a/artel/artel/static/images/las_ruinas_PL.png b/artel/artel/static/images/las_ruinas_PL.png new file mode 100644 index 0000000000000000000000000000000000000000..fa4327d55567ad88603771de36345e36b01dff95 GIT binary patch literal 34203 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 literal 0 HcmV?d00001 diff --git a/artel/artel/templates/base.html b/artel/artel/templates/base.html index 1b32201..3b2ad3c 100644 --- a/artel/artel/templates/base.html +++ b/artel/artel/templates/base.html @@ -26,6 +26,7 @@ {# Global stylesheets #} + {% block extra_css %} {# Override this in templates to add extra stylesheets #} @@ -34,17 +35,20 @@ {% wagtailuserbar %} -
-
- {% main_menu template="menu/custom_main_menu.html" %} -
-
- {% block content %}{% endblock %} +
+
+
+ {% main_menu max_levels=3 template="menu/custom_main_menu.html" %} +
+
+ {% block content %}{% endblock %} +
{# Global javascript #} + {% block extra_js %} {# Override this in templates to add extra javascript #} diff --git a/artel/artel/templates/menu/custom_main_menu.html b/artel/artel/templates/menu/custom_main_menu.html index 939c5c8..bc1a9f1 100644 --- a/artel/artel/templates/menu/custom_main_menu.html +++ b/artel/artel/templates/menu/custom_main_menu.html @@ -1,14 +1,18 @@ -
    - {% for item in menu_items %} -
  • - {{ item.text }} - {% if item.sub_menu %} - - {% endif %} -
  • - {% endfor %} -
\ No newline at end of file +{% load static %} +
+ + + +
+ +
+ +
\ No newline at end of file diff --git a/artel/docker-compose.yml b/artel/docker-compose.yml new file mode 100644 index 0000000..20b5cdf --- /dev/null +++ b/artel/docker-compose.yml @@ -0,0 +1,20 @@ +version: "3.8" +services: + comfy: + build: + dockerfile: Dockerfile.local + context: ./ + ports: + - "8000:8000" + volumes: + - .:/app + db: + image: postgres + restart: always + environment: + POSTGRES_ROOT_PASSWORD: password + POSTGRES_USER: comfy + POSTGRES_PASSWORD: password + POSTGRES_DB: comfy_shop + volumes: + - ../postgres/:/var/lib/postgresql diff --git a/artel/requirements.txt b/artel/requirements.txt index 1b91496..238e7f3 100644 --- a/artel/requirements.txt +++ b/artel/requirements.txt @@ -1,3 +1,5 @@ Django>=4.1,<4.2 wagtail>=4.2,<4.3 -wagtailmenus>=3.1.5, <=3.1.7 +wagtailmenus>=3.1.5,<=3.1.7 +psycopg2>=2.9.5,<=2.9.6 +dj-database-url<=2.0.0 diff --git a/artel/store/models.py b/artel/store/models.py index 8851557..2f08f43 100644 --- a/artel/store/models.py +++ b/artel/store/models.py @@ -31,4 +31,3 @@ class ProductConfig(models.Model): class Product(models.Model): template = models.ForeignKey(ProductTemplate, on_delete=models.CASCADE) config = models.ForeignKey(ProductConfig, on_delete=models.CASCADE) -