From 51ce6379c94edeb00849a55126709c33103a4b2f Mon Sep 17 00:00:00 2001 From: petr Date: Thu, 19 Nov 2020 20:51:00 +0100 Subject: [PATCH] zacatek --- .dockerignore | 39 ++++ Dockerfile | 60 ++++++ db.sqlite3 | Bin 0 -> 688128 bytes galerie/models.py | 28 +++ home/__init__.py | 0 home/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 131 bytes home/__pycache__/models.cpython-38.pyc | Bin 0 -> 374 bytes home/migrations/0001_initial.py | 22 ++ home/migrations/0002_create_homepage.py | 58 +++++ home/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-38.pyc | Bin 0 -> 726 bytes .../0002_create_homepage.cpython-38.pyc | Bin 0 -> 1410 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 142 bytes home/models.py | 7 + home/static/css/welcome_page.css | 204 ++++++++++++++++++ home/templates/home/home_page.html | 21 ++ home/templates/home/welcome_page.html | 52 +++++ manage.py | 10 + requirements.txt | 2 + search/__init__.py | 0 search/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 133 bytes search/__pycache__/views.cpython-38.pyc | Bin 0 -> 909 bytes search/templates/search/search.html | 38 ++++ search/views.py | 34 +++ stranka/models.py | 35 +++ tipy/models.py | 30 +++ ubytovani/__init__.py | 0 ubytovani/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 136 bytes ubytovani/__pycache__/urls.cpython-38.pyc | Bin 0 -> 872 bytes ubytovani/__pycache__/wsgi.cpython-38.pyc | Bin 0 -> 547 bytes ubytovani/settings/__init__.py | 0 .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 145 bytes .../settings/__pycache__/base.cpython-38.pyc | Bin 0 -> 3028 bytes .../settings/__pycache__/dev.cpython-38.pyc | Bin 0 -> 404 bytes ubytovani/settings/base.py | 162 ++++++++++++++ ubytovani/settings/dev.py | 18 ++ ubytovani/settings/production.py | 8 + ubytovani/static/css/ubytovani.css | 0 ubytovani/static/js/ubytovani.js | 0 ubytovani/templates/404.html | 9 + ubytovani/templates/500.html | 13 ++ ubytovani/templates/base.html | 40 ++++ ubytovani/urls.py | 39 ++++ ubytovani/wsgi.py | 16 ++ 44 files changed, 945 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 db.sqlite3 create mode 100644 galerie/models.py create mode 100644 home/__init__.py create mode 100644 home/__pycache__/__init__.cpython-38.pyc create mode 100644 home/__pycache__/models.cpython-38.pyc create mode 100644 home/migrations/0001_initial.py create mode 100644 home/migrations/0002_create_homepage.py create mode 100644 home/migrations/__init__.py create mode 100644 home/migrations/__pycache__/0001_initial.cpython-38.pyc create mode 100644 home/migrations/__pycache__/0002_create_homepage.cpython-38.pyc create mode 100644 home/migrations/__pycache__/__init__.cpython-38.pyc create mode 100644 home/models.py create mode 100644 home/static/css/welcome_page.css create mode 100644 home/templates/home/home_page.html create mode 100644 home/templates/home/welcome_page.html create mode 100644 manage.py create mode 100644 requirements.txt create mode 100644 search/__init__.py create mode 100644 search/__pycache__/__init__.cpython-38.pyc create mode 100644 search/__pycache__/views.cpython-38.pyc create mode 100644 search/templates/search/search.html create mode 100644 search/views.py create mode 100644 stranka/models.py create mode 100644 tipy/models.py create mode 100644 ubytovani/__init__.py create mode 100644 ubytovani/__pycache__/__init__.cpython-38.pyc create mode 100644 ubytovani/__pycache__/urls.cpython-38.pyc create mode 100644 ubytovani/__pycache__/wsgi.cpython-38.pyc create mode 100644 ubytovani/settings/__init__.py create mode 100644 ubytovani/settings/__pycache__/__init__.cpython-38.pyc create mode 100644 ubytovani/settings/__pycache__/base.cpython-38.pyc create mode 100644 ubytovani/settings/__pycache__/dev.cpython-38.pyc create mode 100644 ubytovani/settings/base.py create mode 100644 ubytovani/settings/dev.py create mode 100644 ubytovani/settings/production.py create mode 100644 ubytovani/static/css/ubytovani.css create mode 100644 ubytovani/static/js/ubytovani.js create mode 100644 ubytovani/templates/404.html create mode 100644 ubytovani/templates/500.html create mode 100644 ubytovani/templates/base.html create mode 100644 ubytovani/urls.py create mode 100644 ubytovani/wsgi.py diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..63ce98d --- /dev/null +++ b/.dockerignore @@ -0,0 +1,39 @@ +# Django project +/media/ +/static/ +*.sqlite3 + +# Python and others +__pycache__ +*.pyc +.DS_Store +*.swp +/venv/ +/tmp/ +/.vagrant/ +/Vagrantfile.local +node_modules/ +/npm-debug.log +/.idea/ +.vscode +coverage +.python-version + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..2f61d81 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,60 @@ +# Use an official Python runtime based on Debian 10 "buster" as a parent image. +FROM python:3.8.1-slim-buster + +# Add user that will be used in the container. +RUN useradd wagtail + +# 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 PYTHONUNBUFFERED=1 \ + PORT=8000 + +# 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 application server. +RUN pip install "gunicorn==20.0.4" + +# 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 + +# Set this directory to be owned by the "wagtail" user. This Wagtail project +# uses SQLite, the folder needs to be owned by the user that +# will be writing to the database file. +RUN chown wagtail:wagtail /app + +# Copy the source code of the project into the container. +COPY --chown=wagtail:wagtail . . + +# Use user "wagtail" to run the build commands below and the server itself. +USER wagtail + +# Collect static files. +RUN python manage.py collectstatic --noinput --clear + +# Runtime command that executes when "docker run" is called, it does the +# following: +# 1. Migrate the database. +# 2. Start the application server. +# WARNING: +# Migrating database at the same time as starting the server IS NOT THE BEST +# PRACTICE. The database should be migrated manually or using the release +# phase facilities of your hosting platform. This is used only so the +# Wagtail instance can be started with a simple "docker run" command. +CMD set -xe; python manage.py migrate --noinput; gunicorn ubytovani.wsgi:application diff --git a/db.sqlite3 b/db.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..729173c0390424c9d6458165870c8e749d6bbf0f GIT binary patch literal 688128 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 literal 0 HcmV?d00001 diff --git a/home/__pycache__/models.cpython-38.pyc b/home/__pycache__/models.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..96ec817e9b7d4d982ad6c9a67e2f8511dfc33e08 GIT binary patch literal 374 zcmYjMv1-FG5Isqbae_1T9}0%z4=AAoIyr%62QoEt%V&>D<53+Nn!F zAX85E&>Y;;Jst1eT``}}fa34?EuZQA3FJH?B1=klMSy_JK*LJLLd^|tL@5~D0Sb&h z0V6FwL>b}a5wiG~6p%3=Hyvu@sEQs`tvBKOJQ$HBrArAklnkNd$jE~GS=WRjd#D?oGAZ>WNINajX30 zV8e}ZSb!5GY~ZVG;-|P%ZQbR#wxQ!M-c`L55%83hSv`cwThgM$nKH2`B^SvLQ9ULSC?f2~urYIpl-Dckc+#I3nrwD=wuOhXV zdo|6eN8S=ah5wBRAH0?S)z5tqT#z*Ug|Q^1HmPN)xRGt6?VxT2RC?j4eH-EC2wk5b z0LeW;aw@#i%Y6t|p%Z|?YKR_*p#MTK5W}0nl9rx`L?}HGi{vK28?hLn{Mg24|8y~l z(HCACE~`bWAb*f$&okEX5|~hYX_%3w0vo++YxsbtHtM;~sLRvq!@Zjm$EE`tw++KO zzN_y~MN~F+DzcW0SUnyRm&I>M@4)aQkBVvY25px>zF? zv-!rfpLrvTkJ!E9e%3{nWzU#wq`|T$-A1`b6r$^g2$4^>K^S&UELOZJ+liR>iTAno)E{($Wg6r9x6E z9LPX`L|;)}$q}4t$>bNr;u6!zAj(teBJ)Fj&}1HcM$`ioBW_=U-+FnK@tQGaXWE zjE5~ia=Ua=>7#s6dFddsED7mYd)adCn8T?qybH-uS$S9>6=C!^` z3NAbRUXv954YT(_F3_;qt{#pZuxc`l6h0QwI2tm|Ph*|v&KU(wC<=Fuh4k6w`v4)J z`_RMkmt|f0GOzZbe1w!(p;Csf#2Q>wDEFj%waBaWN)HNN*Gkt#sh!2E7t%i$_48vt zF?I7>8oHrt=6d}cZ3Ntej#1kT0H3@jQo-m2kGmI*bw7(ks-}58HUo9oeBz7WX2;hY U2Ju_V_%U*F@YIqX6FZ{+ACVPqcK`qY literal 0 HcmV?d00001 diff --git a/home/migrations/__pycache__/__init__.cpython-38.pyc b/home/migrations/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4367be5f17ef9466344c8617aa836c214aa579c9 GIT binary patch literal 142 zcmWIL<>g`kf_J|*$Ajp{AOaaM0yz#qT+9L_QW%06G#UL?G8BP?5yUTJXRDad;?$zz zm{K4a6Pi?6l3$jXml>0hpPL$!o0(peSdy8aR~!=`pP83g5+AQuP +{% endblock extra_css %} + +{% block content %} + +{% comment %} +Delete the line below if you're just getting started and want to remove the welcome screen! +{% endcomment %} +{% include 'home/welcome_page.html' %} + +{% endblock content %} diff --git a/home/templates/home/welcome_page.html b/home/templates/home/welcome_page.html new file mode 100644 index 0000000..6368471 --- /dev/null +++ b/home/templates/home/welcome_page.html @@ -0,0 +1,52 @@ +{% load i18n wagtailcore_tags %} + +
+ + +
+
+
+ +
+
+

{% trans "Welcome to your new Wagtail site!" %}

+

{% trans 'Please feel free to join our community on Slack, or get started with one of the links below.' %}

+
+
+ diff --git a/manage.py b/manage.py new file mode 100644 index 0000000..8c2ca1b --- /dev/null +++ b/manage.py @@ -0,0 +1,10 @@ +#!/usr/bin/env python +import os +import sys + +if __name__ == "__main__": + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ubytovani.settings.dev") + + from django.core.management import execute_from_command_line + + execute_from_command_line(sys.argv) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..574b6c3 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +Django>=3.1,<3.2 +wagtail>=2.11,<2.12 diff --git a/search/__init__.py b/search/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/search/__pycache__/__init__.cpython-38.pyc b/search/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..55d2e5b087f5677011dc6587b9593e1376e30f08 GIT binary patch literal 133 zcmWIL<>g`kf_J|*$Ajp{AOaaM0yz#qT+9L_QW%06G#UL?G8BP?5yUSoXRDad;?$zz zm{K4a6Pi?6l3$jXml;!>npl*a5fdMunU`4-AFo$Xd5gm)H$SB`C)EyQ#%CaA004NQ B9?}2+ literal 0 HcmV?d00001 diff --git a/search/__pycache__/views.cpython-38.pyc b/search/__pycache__/views.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b5731b598ec624e50414bb250cb9e1ac295d31ae GIT binary patch literal 909 zcmYjPOK%e~5cX?#v)d#@flB4Z0SWCT+);%H#tKE>K$@&&)S7o`=s`tpLILdGl@fiz4*H2)7pj;Tarx3?xAb zPEm##maK6tk%WRoN-T~Qnb8f~qK#AHEnZXQZm{K8$u`~=VU!2f zrm;nU`Xx=+6;uXl0M-QT%YUqNW~~|} z?~!Vk(5DhZZ1*#{qR=U?uboe(I?d)#?9SA6j~FI;6ege8xvgYL-ryT)UOM@GKT5$#61Nn&m~#1p}S%4S_#` zg!vTO&llOy hnCYNR!Pa?;+&8Z^4#8}Z@~38;($sYiH%SvW=^s6d<=X%N literal 0 HcmV?d00001 diff --git a/search/templates/search/search.html b/search/templates/search/search.html new file mode 100644 index 0000000..5f222e5 --- /dev/null +++ b/search/templates/search/search.html @@ -0,0 +1,38 @@ +{% extends "base.html" %} +{% load static wagtailcore_tags %} + +{% block body_class %}template-searchresults{% endblock %} + +{% block title %}Search{% endblock %} + +{% block content %} +

Search

+ +
+ + +
+ + {% if search_results %} +
    + {% for result in search_results %} +
  • +

    {{ result }}

    + {% if result.search_description %} + {{ result.search_description }} + {% endif %} +
  • + {% endfor %} +
+ + {% if search_results.has_previous %} + Previous + {% endif %} + + {% if search_results.has_next %} + Next + {% endif %} + {% elif search_query %} + No results found + {% endif %} +{% endblock %} diff --git a/search/views.py b/search/views.py new file mode 100644 index 0000000..d9ad9d0 --- /dev/null +++ b/search/views.py @@ -0,0 +1,34 @@ +from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator +from django.template.response import TemplateResponse + +from wagtail.core.models import Page +from wagtail.search.models import Query + + +def search(request): + search_query = request.GET.get('query', None) + page = request.GET.get('page', 1) + + # Search + if search_query: + search_results = Page.objects.live().search(search_query) + query = Query.get(search_query) + + # Record hit + query.add_hit() + else: + search_results = Page.objects.none() + + # Pagination + paginator = Paginator(search_results, 10) + try: + search_results = paginator.page(page) + except PageNotAnInteger: + search_results = paginator.page(1) + except EmptyPage: + search_results = paginator.page(paginator.num_pages) + + return TemplateResponse(request, 'search/search.html', { + 'search_query': search_query, + 'search_results': search_results, + }) diff --git a/stranka/models.py b/stranka/models.py new file mode 100644 index 0000000..c70364c --- /dev/null +++ b/stranka/models.py @@ -0,0 +1,35 @@ +from django.db import models + +from modelcluster.fields import ParentalKey + +from wagtail.core.models import Page, Orderable +from wagtail.core.fields import RichTextField +from wagtail.admin.edit_handlers import FieldPanel, InlinePanel +from wagtail.images.edit_handlers import ImageChooserPanel +from wagtail.search import index + + +class StrankaPage(Page): + body = RichTextField(blank=True) + + search_fields = Page.search_fields + [ + index.SearchField('body'), + ] + + content_panels = Page.content_panels + [ + FieldPanel('body', classname="full"), + InlinePanel('gallery_images', label="Obrázky"), + ] + + +class StrankaPageGalleryImage(Orderable): + page = ParentalKey(StrankaPage, on_delete=models.CASCADE, related_name='gallery_images') + image = models.ForeignKey( + 'wagtailimages.Image', on_delete=models.CASCADE, related_name='+' + ) + caption = models.CharField(blank=True, max_length=250) + + panels = [ + ImageChooserPanel('image'), + FieldPanel('caption'), + ] diff --git a/tipy/models.py b/tipy/models.py new file mode 100644 index 0000000..6aa704b --- /dev/null +++ b/tipy/models.py @@ -0,0 +1,30 @@ +from django.db import models + +from modelcluster.fields import ParentalKey + +from wagtail.core.models import Page, Orderable +from wagtail.core.fields import RichTextField +from wagtail.admin.edit_handlers import FieldPanel, InlinePanel +from wagtail.images.edit_handlers import ImageChooserPanel +from wagtail.search import index + + +class TipyIndexPage(Page): + pass + + +class TipPage(Page): + popisek = models.CharField(max_length=250) + image = models.ForeignKey( + 'wagtailimages.Image', on_delete=models.PROTECT, related_name='+' + ) + + search_fields = Page.search_fields + [ + index.SearchField('popisek'), + ] + + content_panels = Page.content_panels + [ + FieldPanel('popisek'), + ImageChooserPanel('image'), + ] + diff --git a/ubytovani/__init__.py b/ubytovani/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ubytovani/__pycache__/__init__.cpython-38.pyc b/ubytovani/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..93d0511253cdbfe01835342aba7f7637874ef9c1 GIT binary patch literal 136 zcmWIL<>g`kf_J|*$Ajp{AOaaM0yz#qT+9L_QW%06G#UL?G8BP?5yUTDXRDad;?$zz wm{K4a6Pi?6l3$jXml;zEXT`^7=4F<|$LkeT-r}&y%}*)KNwotR^BIU40O;-@KmY&$ literal 0 HcmV?d00001 diff --git a/ubytovani/__pycache__/urls.cpython-38.pyc b/ubytovani/__pycache__/urls.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0af88ad525258d4316f5ea9974afb1090800ab6f GIT binary patch literal 872 zcmYk4%Wl&^6ozMP$8mf~lh9yb!wxA6k|h#Ch)XMk1XL&_|dZ@*x?ToKg0W$0UZF0~T-43k13W z8-n%`JdbJj)@pnXJ%HSS&b`Dj=xFaN8ukCcoM?oVCs|ph`BIK7)lTz8R#B#$%cQ)3 zU@M_K%>kTBWKuh>Qg$uZ5nUzuvUqO7leOEteOfFk&hk=D)@{iWvACEhw+5XgPdJ0O zE6b!z7eH}M=V`{|97;ghl8GEDk!Y7|E{dX5=*#Gd3hJ`sMUkHi3;MtF==OvS9^rr? z-Mz3B>6w5(j#PA=EXyR##->~0YGJ?e8JF%rl5i(m6oTEY>ex;`-ZdvluaSetj39+R zN}{c^hxO=lvuVnaX~|S@Z%oxXI(|3(K;nJ7=VRT(xZW3`&n$VmkLqEXnAtNU76GVK z=kxK=$G7w8=_lpaczSa3?K=`f-HtZf(fgOPsboUVDzLNZ*-cqoC3!ll_N0qn-YD-C nFKCsq*BCyO&%lJZheIpGa9g2m$m(vLz||hx$A^~Xg#Z2nr*!x{ literal 0 HcmV?d00001 diff --git a/ubytovani/__pycache__/wsgi.cpython-38.pyc b/ubytovani/__pycache__/wsgi.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0678a3da37e430e5bdb89fa12358a857995f85ef GIT binary patch literal 547 zcmYjP!EO^V5cN7~6Bdd%pq_n=1iK(^6+%?BL_v@q(g-P9$#K_{jU%tUT02|PD<1+J zIrBC6%83gf&=a$XTE&u|H6G1-Z^oV;9mNFKzuRB@TSUm8HrQWX4Bp~)FAyY|5gAFU zqgjM!N7J%1>qG>iRrmXW?8<{56r;{pGCP!XLI#I7zvIu7;fUqdEL6c3wr18zXY}`5n78Y4NN#DSZU>2!*dM{Xx4~YZBs^+AlZB_s!FR| zcxBCej(qP?r?fRNWl*x*CYUuyt{ht^4bPYZh?m}1?j%j6&0Qi_!W8z-Q*O%?O!_K$ znJ(?Mx2c3m+f50^r`N7fY5W%lLdJtAJT1WU_Kxq_2*+n1PRGLwJ~_X<9F2z){^{au z`tkhc_`d(df%nQ3C=Jb^7kZqd5zYg(Eh?jma65Q+l1&}dE?XmJ)4R!M_a3sAI;l3H|9Us!H~0yN>mzg@^ywq|nEnSc CPprWJ literal 0 HcmV?d00001 diff --git a/ubytovani/settings/__init__.py b/ubytovani/settings/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ubytovani/settings/__pycache__/__init__.cpython-38.pyc b/ubytovani/settings/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..76b08544c6278ab1e4ea5f0255437dc1b2fbdc36 GIT binary patch literal 145 zcmWIL<>g`kf_J|*$Ajp{AOaaM0yz#qT+9L_QW%06G#UL?G8BP?5yUSuXRDad;?$zz zm{K4a6Pi?6l3$jXml;zEXBDTGlw{_m7stfMXXa&=#K-FuRNmsS$<0qG%}KQbnfDop F82~{#Bo+Vw literal 0 HcmV?d00001 diff --git a/ubytovani/settings/__pycache__/base.cpython-38.pyc b/ubytovani/settings/__pycache__/base.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..caac97d42d1873f89aa1d66900925e12feac620d GIT binary patch literal 3028 zcmb6b+j7%J)E0{EI8Mlga0#JxODTklOb7)^xd~edZXG)lInde3j7Ij^I2&{^+BG5i z79Pr5``o|LYhT)zKDIMV2YMvgj&PVMwY;m{b3bR#IjgP7$$Scbf4=?IXw0NizlEFR zZyq;~aPYh7R0>ig1!<71G)dF+p7hhP#4OXXH|g*pnLadw>nt1t8O9(3S;)aSFaz&xCUQ=NH|gVS&Z7T_!_!a4X1KJVnnI21`9zKCQ_&_!_sTHlO_eYOeWz9TnSt|U7RMZp6L1S|cO)`D)O;t@OiseLy^2z8*P}(|paR}|{O@j=lrq|x}=l9KyFqx&aT}ODVrGy@G z|I8@Zqrf~2CikZXC~CJTaDQ^J=SDjUYMY9FPAf!bU`7{K6=Qz=UasX~O-Rqqx2_#by8&-8Vg|=rL@42=SNtTnQpf zDBE?Ea`gHSQts_2Wt^Tex}PAuJz|TAu}IpX;vU1m+EKnI7)PBLc%EclkE4;`y7dt! zEY^O$XSSbX%_%>wdZtYq-LSZLg74Z25;pUnxz zsbSwxdY;AoQeUs2cGtqzp|sFY>cF71l}gk_nte16#s`$VNoJ!QdL;~O0BsC~i1!$|+@h^V@rAJ?2GZ6ljKJB1#t*AFJgbw0ece zmFlJ*o^6ykK^Ewa*|UT{C=6&F#*)9VuxqUN zc?9;?OHz>0>TA`y7RYsVUGu^l)qgT#dgN!<>da=A z8Rp84s!sTu(FEHM?b*+Xs<>Pf3)^L#-w(;m8j*r9-};FB$=4fzdzzb zQUDjOhn-Ma$2)ijb5xHk3T@zejPi4(n4v_*Y%E37&z7QhiHr|3$)61`RJ>2=D-%nQ zVk@_oJ`1vjfft8i1d_`Gxoe7D%rNFT*gS%)+2Ro-XBc6_H4HMbvDx@uD>uW0CAr6{ zu7#^$s#@2ZYOSVK49sRd$gfu`m74ZU-PD4@W~0$Gwl-_!MtwDq_gv-#<4tXSqoy`B zJ(zx`uT?{?TD7c(=^u<&)TSDW)`QdPR`ZFmq3Zgx#%9HMs@AHAY+%()*3|mimb#`H zz>FNxCL$5Y9BP_jsz!3RM%DaGN z7)@_)l<#hbWyZI|JAQj>@WHh`JiG0|=goG@7P4_JN06*JO{AZlx$(*#9 zF65=OB;h#vgwQ1BcX{yxDoOfVF37SZ72Zq75|sZ)@1?i$dwEvQhV+GZxSo_!2$he_ bf5~$)f}Zn) literal 0 HcmV?d00001 diff --git a/ubytovani/settings/__pycache__/dev.cpython-38.pyc b/ubytovani/settings/__pycache__/dev.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..593380a0b10a446feedacdef8167397f72bf9620 GIT binary patch literal 404 zcmYjN%TB^T6rCw85TwS1zW_-!HbFvSh#GlJlz@;(8>DG$T4tz~K5zz5_#@YTi2K>P za^nZEa*B!Zp4^jr&dtqDj;X2zAnJSj?tDN1K2!0(@B@5z=C1Kfz zRt77UyeaN>iUCF-K9m8;&I+^+L5eYmrF($0L!jlp#1EiB4v&n@Y3Z40C)3&E>vT=d z)|mQQX{mV^(Q$Q7Dp)H=FVhF?(v>@@1-M#`Yh@~l^No(5+}Ka_NkWMpxk0FV?qo({ z%!C!QBqTaY?dGrB*K%C;Tt>LkMosgY7lx>HhYY8S#$0XmdV>*aJ2!)&G2|+`ZFG80 zv(f6Jew!;{GI2w`*NNr{T_8#m`UYs4*p9Z9R^2ukq0C+iwoPxnNLFqf*vr3(k;Nj2 jeP&~_(&uZQKaUc;49R7h1UnFv&&UEH2>0O+7p`t5 literal 0 HcmV?d00001 diff --git a/ubytovani/settings/base.py b/ubytovani/settings/base.py new file mode 100644 index 0000000..efd7122 --- /dev/null +++ b/ubytovani/settings/base.py @@ -0,0 +1,162 @@ +""" +Django settings for ubytovani project. + +Generated by 'django-admin startproject' using Django 3.1.3. + +For more information on this file, see +https://docs.djangoproject.com/en/3.1/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/3.1/ref/settings/ +""" + +# Build paths inside the project like this: os.path.join(BASE_DIR, ...) +import os + +PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +BASE_DIR = os.path.dirname(PROJECT_DIR) + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/3.1/howto/deployment/checklist/ + + +# Application definition + +INSTALLED_APPS = [ + 'home', + 'search', + + 'wagtail.contrib.forms', + 'wagtail.contrib.redirects', + 'wagtail.embeds', + 'wagtail.sites', + 'wagtail.users', + 'wagtail.snippets', + 'wagtail.documents', + 'wagtail.images', + 'wagtail.search', + 'wagtail.admin', + 'wagtail.core', + + 'modelcluster', + 'taggit', + + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', +] + +MIDDLEWARE = [ + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', + 'django.middleware.security.SecurityMiddleware', + + 'wagtail.contrib.redirects.middleware.RedirectMiddleware', +] + +ROOT_URLCONF = 'ubytovani.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [ + os.path.join(PROJECT_DIR, 'templates'), + ], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'ubytovani.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/3.1/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), + } +} + + +# Password validation +# https://docs.djangoproject.com/en/3.1/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/3.1/topics/i18n/ + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_L10N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/3.1/howto/static-files/ + +STATICFILES_FINDERS = [ + 'django.contrib.staticfiles.finders.FileSystemFinder', + 'django.contrib.staticfiles.finders.AppDirectoriesFinder', +] + +STATICFILES_DIRS = [ + os.path.join(PROJECT_DIR, 'static'), +] + +# ManifestStaticFilesStorage is recommended in production, to prevent outdated +# JavaScript / CSS assets being served from cache (e.g. after a Wagtail upgrade). +# See https://docs.djangoproject.com/en/3.1/ref/contrib/staticfiles/#manifeststaticfilesstorage +STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage' + +STATIC_ROOT = os.path.join(BASE_DIR, 'static') +STATIC_URL = '/static/' + +MEDIA_ROOT = os.path.join(BASE_DIR, 'media') +MEDIA_URL = '/media/' + + +# Wagtail settings + +WAGTAIL_SITE_NAME = "ubytovani" + +# Base URL to use when referring to full URLs within the Wagtail admin backend - +# e.g. in notification emails. Don't include '/admin' or a trailing slash +BASE_URL = 'http://example.com' diff --git a/ubytovani/settings/dev.py b/ubytovani/settings/dev.py new file mode 100644 index 0000000..2d6ad37 --- /dev/null +++ b/ubytovani/settings/dev.py @@ -0,0 +1,18 @@ +from .base import * + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = '%qe)-fkhxfye8ydrg)%u)b=m+3pe1d)&mwf^darvac5id33n5&' + +# SECURITY WARNING: define the correct hosts in production! +ALLOWED_HOSTS = ['*'] + +EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' + + +try: + from .local import * +except ImportError: + pass diff --git a/ubytovani/settings/production.py b/ubytovani/settings/production.py new file mode 100644 index 0000000..9ca4ed7 --- /dev/null +++ b/ubytovani/settings/production.py @@ -0,0 +1,8 @@ +from .base import * + +DEBUG = False + +try: + from .local import * +except ImportError: + pass diff --git a/ubytovani/static/css/ubytovani.css b/ubytovani/static/css/ubytovani.css new file mode 100644 index 0000000..e69de29 diff --git a/ubytovani/static/js/ubytovani.js b/ubytovani/static/js/ubytovani.js new file mode 100644 index 0000000..e69de29 diff --git a/ubytovani/templates/404.html b/ubytovani/templates/404.html new file mode 100644 index 0000000..3a5500e --- /dev/null +++ b/ubytovani/templates/404.html @@ -0,0 +1,9 @@ +{% extends "base.html" %} + +{% block body_class %}template-404{% endblock %} + +{% block content %} +

Page not found

+ +

Sorry, this page could not be found.

+{% endblock %} diff --git a/ubytovani/templates/500.html b/ubytovani/templates/500.html new file mode 100644 index 0000000..72b6406 --- /dev/null +++ b/ubytovani/templates/500.html @@ -0,0 +1,13 @@ + + + + + Internal server error + + + +

Internal server error

+ +

Sorry, there seems to be an error. Please try again soon.

+ + diff --git a/ubytovani/templates/base.html b/ubytovani/templates/base.html new file mode 100644 index 0000000..a38cbb1 --- /dev/null +++ b/ubytovani/templates/base.html @@ -0,0 +1,40 @@ +{% load static wagtailuserbar %} + + + + + + + {% block title %} + {% if self.seo_title %}{{ self.seo_title }}{% else %}{{ self.title }}{% endif %} + {% endblock %} + {% block title_suffix %} + {% with self.get_site.site_name as site_name %} + {% if site_name %}- {{ site_name }}{% endif %} + {% endwith %} + {% endblock %} + + + + + {# Global stylesheets #} + + + {% block extra_css %} + {# Override this in templates to add extra stylesheets #} + {% endblock %} + + + + {% wagtailuserbar %} + + {% block content %}{% endblock %} + + {# Global javascript #} + + + {% block extra_js %} + {# Override this in templates to add extra javascript #} + {% endblock %} + + diff --git a/ubytovani/urls.py b/ubytovani/urls.py new file mode 100644 index 0000000..d1b8710 --- /dev/null +++ b/ubytovani/urls.py @@ -0,0 +1,39 @@ +from django.conf import settings +from django.urls import include, path +from django.contrib import admin + +from wagtail.admin import urls as wagtailadmin_urls +from wagtail.core import urls as wagtail_urls +from wagtail.documents import urls as wagtaildocs_urls + +from search import views as search_views + +urlpatterns = [ + path('django-admin/', admin.site.urls), + + path('admin/', include(wagtailadmin_urls)), + path('documents/', include(wagtaildocs_urls)), + + path('search/', search_views.search, name='search'), + +] + + +if settings.DEBUG: + from django.conf.urls.static import static + from django.contrib.staticfiles.urls import staticfiles_urlpatterns + + # Serve static and media files from development server + urlpatterns += staticfiles_urlpatterns() + urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + +urlpatterns = urlpatterns + [ + # For anything not caught by a more specific rule above, hand over to + # Wagtail's page serving mechanism. This should be the last pattern in + # the list: + path("", include(wagtail_urls)), + + # Alternatively, if you want Wagtail pages to be served from a subpath + # of your site, rather than the site root: + # path("pages/", include(wagtail_urls)), +] diff --git a/ubytovani/wsgi.py b/ubytovani/wsgi.py new file mode 100644 index 0000000..edd0be1 --- /dev/null +++ b/ubytovani/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for ubytovani project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/3.1/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ubytovani.settings.dev") + +application = get_wsgi_application()