Browse Source

první nahrani

master
Lukáš Helcl 5 years ago
parent
commit
8dfb366a3f
  1. 39
      .dockerignore
  2. 60
      Dockerfile
  3. 0
      diskuze/__init__.py
  4. 3
      diskuze/admin.py
  5. 5
      diskuze/apps.py
  6. 57
      diskuze/migrations/0001_initial.py
  7. 0
      diskuze/migrations/__init__.py
  8. 55
      diskuze/models.py
  9. 185
      diskuze/templates/diskuze/blog_page.html
  10. 3
      diskuze/tests.py
  11. 3
      diskuze/views.py
  12. 0
      home/__init__.py
  13. 22
      home/migrations/0001_initial.py
  14. 58
      home/migrations/0002_create_homepage.py
  15. 19
      home/migrations/0003_homepage_body.py
  16. 26
      home/migrations/0004_auto_20201124_1559.py
  17. 0
      home/migrations/__init__.py
  18. 22
      home/models.py
  19. 124
      home/static/css/style.css
  20. 204
      home/static/css/welcome_page.css
  21. BIN
      home/static/img/veterina-logo.png
  22. 104
      home/templates/home/home_page.html
  23. 52
      home/templates/home/welcome_page.html
  24. 0
      kontakty/__init__.py
  25. 3
      kontakty/admin.py
  26. 5
      kontakty/apps.py
  27. 28
      kontakty/migrations/0001_initial.py
  28. 0
      kontakty/migrations/__init__.py
  29. 22
      kontakty/models.py
  30. 61
      kontakty/templates/kontakty/kontakty_page.html
  31. 3
      kontakty/tests.py
  32. 3
      kontakty/views.py
  33. 10
      manage.py
  34. BIN
      media/images/5412827_australsky-ovcak-pes-v1.max-165x165.jpg
  35. BIN
      media/images/5412827_australsky-ovcak-pes-v1.max-800x600.jpg
  36. BIN
      media/images/5412827_australsky-ovcak-pes-v1.original.jpg
  37. BIN
      media/original_images/5412827_australsky-ovcak-pes-v1.jpg
  38. 2
      requirements.txt
  39. 0
      search/__init__.py
  40. 38
      search/templates/search/search.html
  41. 34
      search/views.py
  42. 0
      stranka/__init__.py
  43. 3
      stranka/admin.py
  44. 5
      stranka/apps.py
  45. 44
      stranka/migrations/0001_initial.py
  46. 0
      stranka/migrations/__init__.py
  47. 35
      stranka/models.py
  48. 58
      stranka/templates/stranka/stranka_page.html
  49. 3
      stranka/tests.py
  50. 3
      stranka/views.py
  51. 0
      veterinahelcl/__init__.py
  52. 0
      veterinahelcl/settings/__init__.py
  53. 166
      veterinahelcl/settings/base.py
  54. 18
      veterinahelcl/settings/dev.py
  55. 8
      veterinahelcl/settings/production.py
  56. 0
      veterinahelcl/static/css/veterinahelcl.css
  57. 0
      veterinahelcl/static/js/veterinahelcl.js
  58. 9
      veterinahelcl/templates/404.html
  59. 13
      veterinahelcl/templates/500.html
  60. 56
      veterinahelcl/templates/base.html
  61. 39
      veterinahelcl/urls.py
  62. 16
      veterinahelcl/wsgi.py

39
.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

60
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 veterinahelcl.wsgi:application

0
diskuze/__init__.py

3
diskuze/admin.py

@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

5
diskuze/apps.py

@ -0,0 +1,5 @@
from django.apps import AppConfig
class DiskuzeConfig(AppConfig):
name = 'diskuze'

57
diskuze/migrations/0001_initial.py

@ -0,0 +1,57 @@
# Generated by Django 3.1.3 on 2020-11-24 12:49
from django.db import migrations, models
import django.db.models.deletion
import modelcluster.fields
import wagtail.core.fields
class Migration(migrations.Migration):
initial = True
dependencies = [
('wagtailcore', '0059_apply_collection_ordering'),
('wagtailimages', '0022_uploadedimage'),
]
operations = [
migrations.CreateModel(
name='BlogIndexPage',
fields=[
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
('intro', wagtail.core.fields.RichTextField(blank=True)),
],
options={
'abstract': False,
},
bases=('wagtailcore.page',),
),
migrations.CreateModel(
name='BlogPage',
fields=[
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
('date', models.DateField(verbose_name='Post date')),
('intro', models.CharField(max_length=250)),
('body', wagtail.core.fields.RichTextField(blank=True)),
],
options={
'abstract': False,
},
bases=('wagtailcore.page',),
),
migrations.CreateModel(
name='BlogPageGalleryImage',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('sort_order', models.IntegerField(blank=True, editable=False, null=True)),
('caption', models.CharField(blank=True, max_length=250)),
('image', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to='wagtailimages.image')),
('page', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='gallery_images', to='diskuze.blogpage')),
],
options={
'ordering': ['sort_order'],
'abstract': False,
},
),
]

0
diskuze/migrations/__init__.py

55
diskuze/models.py

@ -0,0 +1,55 @@
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 BlogIndexPage(Page):
intro = RichTextField(blank=True)
content_panels = Page.content_panels + [
FieldPanel('intro', classname="full")
]
class BlogPage(Page):
date = models.DateField("Post date")
intro = models.CharField(max_length=250)
body = RichTextField(blank=True)
def main_image(self):
gallery_item = self.gallery_images.first()
if gallery_item:
return gallery_item.image
else:
return None
search_fields = Page.search_fields + [
index.SearchField('intro'),
index.SearchField('body'),
]
content_panels = Page.content_panels + [
FieldPanel('date'),
FieldPanel('intro'),
FieldPanel('body', classname="full"),
InlinePanel('gallery_images', label="Obrázky"),
]
class BlogPageGalleryImage(Orderable):
page = ParentalKey(BlogPage, 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'),
]

185
diskuze/templates/diskuze/blog_page.html

@ -0,0 +1,185 @@
{% extends "base.html" %}
{% load static %}
{% block body_class %}template-homepage{% endblock %}
{% block extra_css %}
{% comment %} Delete the line below if you're just getting started and want to remove the welcome screen! {% endcomment %}
<link rel="stylesheet" href="{% static 'css/welcome_page.css' %}">
{% endblock extra_css %}
{% block content %}
{% comment %} Delete the line below if you're just getting started and want to remove the welcome screen! {% endcomment %}
<div class="content">
<h3> Diskuze </h3>
<div class="row">
<div class="col-6">
<div class="grid clasik">
<div class="grid-title">
<h4> Jméno </h4>
</div>
<div class="grid-body">
<div class="row">
<div class="col-8">
<div class="row">
<div class="col-12">
<label> Text </label>
<div class="text">
Stouto klinikou jsem velmi spokojen. Milé prostředí pěkná atmosféra i pro Rexe.
</div>
</div>
<div class="col-12 tar">
<label> Datum </label>
<div class="datum">
11.5.2020 - 16.5.2020
</div>
</div>
</div>
</div>
<div class="col-4">
<label> Obrázek </label>
<div class="img">
<img src="{% static 'img/veterina-logo.png' %}">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-6">
<div class="grid clasik">
<div class="grid-title">
<h4> Jméno </h4>
</div>
<div class="grid-body">
<div class="row">
<div class="col-8">
<div class="row">
<div class="col-12">
<label> Text </label>
<div class="text">
Stouto klinikou jsem velmi spokojen. Milé prostředí pěkná atmosféra i pro Rexe.
</div>
</div>
<div class="col-12 tar">
<label> Datum </label>
<div class="datum">
11.5.2020 - 16.5.2020
</div>
</div>
</div>
</div>
<div class="col-4">
<label> Obrázek </label>
<div class="img">
<img src="{% static 'img/veterina-logo.png' %}">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-6">
<div class="grid clasik">
<div class="grid-title">
<h4> Jméno </h4>
</div>
<div class="grid-body">
<div class="row">
<div class="col-8">
<div class="row">
<div class="col-12">
<label> Text </label>
<div class="text">
Stouto klinikou jsem velmi spokojen. Milé prostředí pěkná atmosféra i pro Rexe.
</div>
</div>
<div class="col-12 tar">
<label> Datum </label>
<div class="datum">
11.5.2020 - 16.5.2020
</div>
</div>
</div>
</div>
<div class="col-4">
<label> Obrázek </label>
<div class="img">
<img src="{% static 'img/veterina-logo.png' %}">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-6">
<div class="grid clasik">
<div class="grid-title">
<h4> Jméno </h4>
</div>
<div class="grid-body">
<div class="row">
<div class="col-8">
<div class="row">
<div class="col-12">
<label> Text </label>
<div class="text">
Stouto klinikou jsem velmi spokojen. Milé prostředí pěkná atmosféra i pro Rexe.
</div>
</div>
<div class="col-12 tar">
<label> Datum </label>
<div class="datum">
11.5.2020 - 16.5.2020
</div>
</div>
</div>
</div>
<div class="col-4">
<label> Obrázek </label>
<div class="img">
<img src="{% static 'img/veterina-logo.png' %}">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-6">
<div class="grid clasik">
<div class="grid-title">
<h4> Jméno </h4>
</div>
<div class="grid-body">
<div class="row">
<div class="col-8">
<div class="row">
<div class="col-12">
<label> Text </label>
<div class="text">
Stouto klinikou jsem velmi spokojen. Milé prostředí pěkná atmosféra i pro Rexe.
</div>
</div>
<div class="col-12 tar">
<label> Datum </label>
<div class="datum">
11.5.2020 - 16.5.2020
</div>
</div>
</div>
</div>
<div class="col-4">
<label> Obrázek </label>
<div class="img">
<img src="{% static 'img/veterina-logo.png' %}">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock content %}

3
diskuze/tests.py

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

3
diskuze/views.py

@ -0,0 +1,3 @@
from django.shortcuts import render
# Create your views here.

0
home/__init__.py

22
home/migrations/0001_initial.py

@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('wagtailcore', '0040_page_draft_title'),
]
operations = [
migrations.CreateModel(
name='HomePage',
fields=[
('page_ptr', models.OneToOneField(on_delete=models.CASCADE, parent_link=True, auto_created=True, primary_key=True, serialize=False, to='wagtailcore.Page')),
],
options={
'abstract': False,
},
bases=('wagtailcore.page',),
),
]

58
home/migrations/0002_create_homepage.py

@ -0,0 +1,58 @@
# -*- coding: utf-8 -*-
from django.db import migrations
def create_homepage(apps, schema_editor):
# Get models
ContentType = apps.get_model('contenttypes.ContentType')
Page = apps.get_model('wagtailcore.Page')
Site = apps.get_model('wagtailcore.Site')
HomePage = apps.get_model('home.HomePage')
# Delete the default homepage
# If migration is run multiple times, it may have already been deleted
Page.objects.filter(id=2).delete()
# Create content type for homepage model
homepage_content_type, __ = ContentType.objects.get_or_create(
model='homepage', app_label='home')
# Create a new homepage
homepage = HomePage.objects.create(
title="Home",
draft_title="Home",
slug='home',
content_type=homepage_content_type,
path='00010001',
depth=2,
numchild=0,
url_path='/home/',
)
# Create a site with the new homepage set as the root
Site.objects.create(
hostname='localhost', root_page=homepage, is_default_site=True)
def remove_homepage(apps, schema_editor):
# Get models
ContentType = apps.get_model('contenttypes.ContentType')
HomePage = apps.get_model('home.HomePage')
# Delete the default homepage
# Page and Site objects CASCADE
HomePage.objects.filter(slug='home', depth=2).delete()
# Delete content type for homepage model
ContentType.objects.filter(model='homepage', app_label='home').delete()
class Migration(migrations.Migration):
dependencies = [
('home', '0001_initial'),
]
operations = [
migrations.RunPython(create_homepage, remove_homepage),
]

19
home/migrations/0003_homepage_body.py

@ -0,0 +1,19 @@
# Generated by Django 3.1.3 on 2020-11-24 13:04
from django.db import migrations
import wagtail.core.fields
class Migration(migrations.Migration):
dependencies = [
('home', '0002_create_homepage'),
]
operations = [
migrations.AddField(
model_name='homepage',
name='body',
field=wagtail.core.fields.RichTextField(blank=True),
),
]

26
home/migrations/0004_auto_20201124_1559.py

@ -0,0 +1,26 @@
# Generated by Django 3.1.3 on 2020-11-24 14:59
from django.db import migrations, models
import django.db.models.deletion
import wagtail.core.fields
class Migration(migrations.Migration):
dependencies = [
('wagtailimages', '0022_uploadedimage'),
('home', '0003_homepage_body'),
]
operations = [
migrations.AddField(
model_name='homepage',
name='address',
field=wagtail.core.fields.RichTextField(blank=True),
),
migrations.AddField(
model_name='homepage',
name='image',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='wagtailimages.image'),
),
]

0
home/migrations/__init__.py

22
home/models.py

@ -0,0 +1,22 @@
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.images.edit_handlers import ImageChooserPanel
from wagtail.admin.edit_handlers import FieldPanel, InlinePanel
class HomePage(Page):
body = RichTextField(blank=True)
address = RichTextField(blank=True)
image = models.ForeignKey(
'wagtailimages.Image', on_delete=models.PROTECT, null=True, related_name='+'
)
content_panels = Page.content_panels + [
FieldPanel('body', classname="full"),
FieldPanel('address', classname="full"),
ImageChooserPanel('image'),
]

124
home/static/css/style.css

@ -0,0 +1,124 @@
.df {
display: flex;
}
.jcsb {
justify-content: space-between;
}
.jcc {
justify-content: center;
}
.tac {
text-align: center;
}
body {
background: linear-gradient(180deg, rgb(190 29 45) 0%, rgba(255,250,250,1) 25%);
}
.top-menu {
width: 100%;
background-color: #ffffff;
display: inline-flex;
height: 60px;
border-radius: 5px 5px 5px 5px;
margin-top: 15px;
}
.top-menu .logo{
width: auto;
margin-right: 0px;
align-self: center;
}
.top-menu .logo img{
width: 40px;
height: 40px;
margin: 0px 10px;
}
.top-menu ul {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
align-self: center;
}
.top-menu li {
float: left;
}
.top-menu li a {
display: block;
color: #333333;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
.top-menu li a:hover {
background-color: #dd87903b;
border-radius: 5px;
}
h3 {
font-size: 20px;
color: #ffffff;
padding: 10px 0px !important;
}
.grid.clasik .grid-title {
font-size: 18px;
background-color: #ffffff;
border-radius: 5px 5px 0px 0px;
justify-content: center;
border: 1px solid #333333;
border-bottom: none;
}
.grid.clasik .grid-title h4 {
padding: 5px 15px;
border-bottom: 1px solid #333333;
}
.grid.clasik .grid-body {
padding: 10px 5px;
font-size: 12px;
background-color: #ffffff;
border-radius: 0px 0px 5px 5px;
margin-bottom: 10px;
border: 1px solid #333333;
}
.grid.clasik .grid-body label {
color: #858585;
font-size: 8px;
line-height: 8px;
margin-bottom: 0px;
}
.grid.clasik {
box-shadow: 0px 0px 30px -5px #dd8790;
border-radius: 5px;
}
.grid.clasik.border {
border: none !important;
}
.grid.clasik.border .grid-body {
border: 1px solid #333333;
border-top: none;
}
.grid.clasik.border .grid-title {
border-bottom: none;
}
.grid.clasik.border .grid-title h4 {
border: 1px solid #333333;
border-top: none;
}
.grid-body.dark {
font-weight: 900;
font-size: 25px !important;
}
.grid-body.all-border {
border-radius: 5px !important;
}
.grid .grid-body .img {
text-align: center;
}
.grid .grid-body .img img {
width: 40%;
height: auto;
}
.table .thead-dark th {
background-color: #dd8790;
border-color: #dd8790;
}

204
home/static/css/welcome_page.css

@ -0,0 +1,204 @@
html {
box-sizing: border-box;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
body {
max-width: 960px;
min-height: 100vh;
margin: 0 auto;
padding: 0 15px;
color: #231f20;
font-family: 'Helvetica Neue', 'Segoe UI', Arial, sans-serif;
line-height: 1.25;
}
a {
background-color: transparent;
color: #308282;
text-decoration: underline;
}
a:hover {
color: #ea1b10;
}
h1,
h2,
h3,
h4,
h5,
p,
ul {
padding: 0;
margin: 0;
font-weight: 400;
}
main {
display: block; /* For IE11 support */
}
svg:not(:root) {
overflow: hidden;
}
.header {
display: flex;
justify-content: space-between;
align-items: center;
padding-top: 20px;
padding-bottom: 10px;
border-bottom: 1px solid #e6e6e6;
}
.logo {
width: 150px;
margin-right: 20px;
}
.logo a {
display: block;
}
.figure-logo {
max-width: 150px;
max-height: 55.1px;
}
.release-notes {
font-size: 14px;
}
.main {
padding: 40px 0;
margin: 0 auto;
text-align: center;
}
.figure-space {
max-width: 265px;
}
@-webkit-keyframes pos {
0%, 100% {
-webkit-transform: rotate(-6deg);
transform: rotate(-6deg);
}
50% {
-webkit-transform: rotate(6deg);
transform: rotate(6deg);
}
}
@keyframes pos {
0%, 100% {
-webkit-transform: rotate(-6deg);
transform: rotate(-6deg);
}
50% {
-webkit-transform: rotate(6deg);
transform: rotate(6deg);
}
}
.egg {
fill: #43b1b0;
-webkit-animation: pos 3s ease infinite;
animation: pos 3s ease infinite;
-webkit-transform: translateY(50px);
transform: translateY(50px);
-webkit-transform-origin: 50% 80%;
transform-origin: 50% 80%;
}
.main-text {
max-width: 400px;
margin: 5px auto;
}
.main-text h1 {
font-size: 22px;
}
.main-text p {
margin: 15px auto 0;
}
.footer {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
border-top: 1px solid #e6e6e6;
padding: 10px;
}
.option {
display: block;
padding: 10px 10px 10px 34px;
position: relative;
text-decoration: none;
}
.option svg {
width: 24px;
height: 24px;
fill: gray;
border: 1px solid #d9d9d9;
padding: 5px;
border-radius: 100%;
top: 10px;
left: 0;
position: absolute;
}
.option h4 {
font-size: 19px;
text-decoration: underline;
}
.option p {
padding-top: 3px;
color: #231f20;
font-size: 15px;
font-weight: 300;
}
@media (max-width: 996px) {
body {
max-width: 780px;
}
}
@media (max-width: 767px) {
.option {
flex: 0 0 50%;
}
}
@media (max-width: 599px) {
.main {
padding: 20px 0;
}
.figure-space {
max-width: 200px;
}
.footer {
display: block;
width: 300px;
margin: 0 auto;
}
}
@media (max-width: 360px) {
.header-link {
max-width: 100px;
}
}

BIN
home/static/img/veterina-logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

104
home/templates/home/home_page.html

@ -0,0 +1,104 @@
{% extends "base.html" %}
{% load static %}
{% block body_class %}template-homepage{% endblock %}
{% block extra_css %}
{% comment %} Delete the line below if you're just getting started and want to remove the welcome screen! {% endcomment %}
<link rel="stylesheet" href="{% static 'css/welcome_page.css' %}">
{% endblock extra_css %}
{% block content %}
{% comment %} Delete the line below if you're just getting started and want to remove the welcome screen! {% endcomment %}
<div class="content">
<div class="row">
<div class="col-6 ">
<h3> Aktuality </h3>
<div class="grid clasik">
<div class="grid-title">
<h4> Dovolená </h4>
</div>
<div class="grid-body">
<div class="row">
<div class="col-8">
<div class="row">
<div class="col-12">
<label> Datum </label>
<div class="datum">
18.6.2020
</div>
</div>
<div class="col-12">
<label> Text </label>
<div class="text">
Školení na jatkách.
</div>
</div>
</div>
</div>
<div class="col-4">
<label> Obrázek </label>
<div class="img">
<img src="{% static 'img/veterina-logo.png' %}">
</div>
</div>
</div>
</div>
</div>
<div class="grid clasik">
<div class="grid-title">
<h4> Nemoc </h4>
</div>
<div class="grid-body">
<div class="row">
<div class="col-8">
<div class="row">
<div class="col-12">
<label> Datum </label>
<div class="datum">
11.5.2020 - 16.5.2020
</div>
</div>
<div class="col-12">
<label> Text </label>
<div class="text">
Od pondělí do pátku je veterina zavřena kvůli nemoci.
</div>
</div>
</div>
</div>
<div class="col-4">
<label> Obrázek </label>
<div class="img">
<img src="{% static 'img/veterina-logo.png' %}">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-6">
<h3> Informace o klinice </h3>
<div class="grid clasik">
<div class="grid-body all-border">
<div class="info-text"> Tento text mluví o tom že tato klinika je nejlepší v Ústeckím kraji. Má velmi rozšířené vedění o zvířatech od křečků až po šelmy. V budově vás přivítá velký sortiment kávy a sladkostí v podobě sušenek, nezapomnělo se ani na vaše nejmenší miláčky - v čekarně se nachazí i automat na pamlsko pro pejsky. To vše a jěště více u nás na klinice. </div>
</div>
</div>
<div class="grid clasik">
<div class="grid-title">
<h4> Otevírajicí doba </h4>
</div>
<div class="grid-body dark">
<div class="df jcc">
PO - PÁ: 08:00 - 16:00
</div>
<div class="df jcc">
SO - NE: 08:00 - 16:00
</div>
<div class="df jcc">
Svátky ZAVŘENO
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock content %}

52
home/templates/home/welcome_page.html

@ -0,0 +1,52 @@
{% load i18n wagtailcore_tags %}
<header class="header">
<div class="logo">
<a href="https://wagtail.io/">
<svg class="figure-logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 342.5 126.2"><title>{% trans "Visit the Wagtail website" %}</title><path fill="#FFF" d="M84 1.9v5.7s-10.2-3.8-16.8 3.1c-4.8 5-5.2 10.6-3 18.1 21.6 0 25 12.1 25 12.1L87 27l6.8-8.3c0-9.8-8.1-16.3-9.8-16.8z"/><circle cx="85.9" cy="15.9" r="2.6"/><path d="M89.2 40.9s-3.3-16.6-24.9-12.1c-2.2-7.5-1.8-13 3-18.1C73.8 3.8 84 7.6 84 7.6V1.9C80.4.3 77 0 73.2 0 59.3 0 51.6 10.4 48.3 17.4L9.2 89.3l11-2.1-20.2 39 14.1-2.5L24.9 93c30.6 0 69.8-11 64.3-52.1z"/><path d="M102.4 27l-8.6-8.3L87 27z"/><path fill="#FFF" d="M30 84.1s1-.2 2.8-.6c1.8-.4 4.3-1 7.3-1.8 1.5-.4 3.1-.9 4.8-1.5 1.7-.6 3.5-1.2 5.2-2 1.8-.7 3.6-1.6 5.4-2.6 1.8-1 3.5-2.1 5.1-3.4.4-.3.8-.6 1.2-1l1.2-1c.7-.7 1.5-1.4 2.2-2.2.7-.7 1.3-1.5 1.9-2.3l.9-1.2.4-.6.4-.6c.2-.4.5-.8.7-1.2.2-.4.4-.8.7-1.2l.3-.6.3-.6c.2-.4.4-.8.5-1.2l.9-2.4c.2-.8.5-1.6.7-2.3.2-.7.3-1.5.5-2.1.1-.7.2-1.3.3-2 .1-.6.2-1.2.2-1.7.1-.5.1-1 .2-1.5.1-1.8.1-2.8.1-2.8l1.6.1s-.1 1.1-.2 2.9c-.1.5-.1 1-.2 1.5-.1.6-.1 1.2-.3 1.8-.1.6-.3 1.3-.4 2-.2.7-.4 1.4-.6 2.2-.2.8-.5 1.5-.8 2.4-.3.8-.6 1.6-1 2.5l-.6 1.2-.3.6-.3.6c-.2.4-.5.8-.7 1.3-.3.4-.5.8-.8 1.2-.1.2-.3.4-.4.6l-.4.6-.9 1.2c-.7.8-1.3 1.6-2.1 2.3-.7.8-1.5 1.4-2.3 2.2l-1.2 1c-.4.3-.8.6-1.3.9-1.7 1.2-3.5 2.3-5.3 3.3-1.8.9-3.7 1.8-5.5 2.5-1.8.7-3.6 1.3-5.3 1.8-1.7.5-3.3 1-4.9 1.3-3 .7-5.6 1.3-7.4 1.6-1.6.6-2.6.8-2.6.8z"/><g fill="#231F20"><path d="M127 83.9h-8.8l-12.6-36.4h7.9l9 27.5 9-27.5h7.9l9 27.5 9-27.5h7.9L153 83.9h-8.8L135.6 59 127 83.9zM200.1 83.9h-7V79c-3 3.6-7 5.4-12.1 5.4-3.8 0-6.9-1.1-9.4-3.2s-3.7-5-3.7-8.6c0-3.6 1.3-6.3 4-8 2.6-1.8 6.2-2.7 10.7-2.7h9.9v-1.4c0-4.8-2.7-7.3-8.1-7.3-3.4 0-6.9 1.2-10.5 3.7l-3.4-4.8c4.4-3.5 9.4-5.3 15.1-5.3 4.3 0 7.8 1.1 10.5 3.2 2.7 2.2 4.1 5.6 4.1 10.2v23.7zm-7.7-13.6v-3.1h-8.6c-5.5 0-8.3 1.7-8.3 5.2 0 1.8.7 3.1 2.1 4.1 1.4.9 3.3 1.4 5.7 1.4 2.4 0 4.6-.7 6.4-2.1 1.8-1.3 2.7-3.1 2.7-5.5zM241.7 47.5v31.7c0 6.4-1.7 11.3-5.2 14.5-3.5 3.2-8 4.8-13.4 4.8-5.5 0-10.4-1.7-14.8-5.1l3.6-5.8c3.6 2.7 7.1 4 10.8 4 3.6 0 6.5-.9 8.6-2.8 2.1-1.9 3.2-4.9 3.2-9v-4.7c-1.1 2.1-2.8 3.9-4.9 5.1-2.1 1.3-4.5 1.9-7.1 1.9-4.8 0-8.8-1.7-11.9-5.1-3.1-3.4-4.7-7.6-4.7-12.6s1.6-9.2 4.7-12.6c3.1-3.4 7.1-5.1 11.9-5.1 4.8 0 8.7 2 11.7 6v-5.4h7.5zm-28.4 16.8c0 3 .9 5.6 2.8 7.7 1.8 2.2 4.3 3.2 7.5 3.2 3.1 0 5.7-1 7.6-3.1 1.9-2.1 2.9-4.7 2.9-7.8 0-3.1-1-5.8-2.9-7.9-2-2.2-4.5-3.2-7.6-3.2-3.1 0-5.6 1.1-7.4 3.4-2 2.1-2.9 4.7-2.9 7.7zM260.9 53.6v18.5c0 1.7.5 3.1 1.4 4.1.9 1 2.2 1.5 3.8 1.5 1.6 0 3.2-.8 4.7-2.4l3.1 5.4c-2.7 2.4-5.7 3.6-8.9 3.6-3.3 0-6-1.1-8.3-3.4-2.3-2.3-3.5-5.3-3.5-9.1V53.6h-4.6v-6.2h4.6V36.1h7.7v11.4h9.6v6.2h-9.6zM309.5 83.9h-7V79c-3 3.6-7 5.4-12.1 5.4-3.8 0-6.9-1.1-9.4-3.2s-3.7-5-3.7-8.6c0-3.6 1.3-6.3 4-8 2.6-1.8 6.2-2.7 10.7-2.7h9.9v-1.4c0-4.8-2.7-7.3-8.1-7.3-3.4 0-6.9 1.2-10.5 3.7l-3.4-4.8c4.4-3.5 9.4-5.3 15.1-5.3 4.3 0 7.8 1.1 10.5 3.2 2.7 2.2 4.1 5.6 4.1 10.2v23.7zm-7.7-13.6v-3.1h-8.6c-5.5 0-8.3 1.7-8.3 5.2 0 1.8.7 3.1 2.1 4.1 1.4.9 3.3 1.4 5.7 1.4 2.4 0 4.6-.7 6.4-2.1 1.8-1.3 2.7-3.1 2.7-5.5zM319.3 40.2c-1-1-1.4-2.1-1.4-3.4 0-1.3.5-2.5 1.4-3.4 1-1 2.1-1.4 3.4-1.4 1.3 0 2.5.5 3.4 1.4 1 1 1.4 2.1 1.4 3.4 0 1.3-.5 2.5-1.4 3.4s-2.1 1.4-3.4 1.4c-1.3.1-2.4-.4-3.4-1.4zm7.2 43.7h-7.7V47.5h7.7v36.4zM342.5 83.9h-7.7V33.1h7.7v50.8z"/></g></svg>
</a>
</div>
<div class="header-link">
{% comment %}
This works for all cases but prerelease versions:
{% endcomment %}
<a href="{% wagtail_documentation_path %}/releases/{% wagtail_release_notes_path %}">
{% trans "View the release notes" %}
</a>
</div>
</header>
<main class="main">
<div class="figure">
<svg class="figure-space" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 300" aria-hidden="true">
<path class="egg" fill="currentColor" d="M150 250c-42.741 0-75-32.693-75-90s42.913-110 75-110c32.088 0 75 52.693 75 110s-32.258 90-75 90z"/>
<ellipse fill="#ddd" cx="150" cy="270" rx="40" ry="7"/>
</svg>
</div>
<div class="main-text">
<h1>{% trans "Welcome to your new Wagtail site!" %}</h1>
<p>{% trans 'Please feel free to <a href="https://github.com/wagtail/wagtail/wiki/Slack">join our community on Slack</a>, or get started with one of the links below.' %}</p>
</div>
</main>
<footer class="footer" role="contentinfo">
<a class="option option-one" href="{% wagtail_documentation_path %}/">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" aria-hidden="true"><path d="M9 21c0 .5.4 1 1 1h4c.6 0 1-.5 1-1v-1H9v1zm3-19C8.1 2 5 5.1 5 9c0 2.4 1.2 4.5 3 5.7V17c0 .5.4 1 1 1h6c.6 0 1-.5 1-1v-2.3c1.8-1.3 3-3.4 3-5.7 0-3.9-3.1-7-7-7zm2.9 11.1l-.9.6V16h-4v-2.3l-.9-.6C7.8 12.2 7 10.6 7 9c0-2.8 2.2-5 5-5s5 2.2 5 5c0 1.6-.8 3.2-2.1 4.1z"/></svg>
<div>
<h4>{% trans "Wagtail Documentation" %}</h4>
<p>{% trans "Topics, references, & how-tos" %}</p>
</div>
</a>
<a class="option option-two" href="{% wagtail_documentation_path %}/getting_started/tutorial.html">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" aria-hidden="true"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0l4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z"/></svg>
<div>
<h4>{% trans "Tutorial" %}</h4>
<p>{% trans "Build your first Wagtail site" %}</p>
</div>
</a>
<a class="option option-three" href="{% url 'wagtailadmin_home' %}">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" aria-hidden="true"><path d="M0 0h24v24H0z" fill="none"/><path d="M16.5 13c-1.2 0-3.07.34-4.5 1-1.43-.67-3.3-1-4.5-1C5.33 13 1 14.08 1 16.25V19h22v-2.75c0-2.17-4.33-3.25-6.5-3.25zm-4 4.5h-10v-1.25c0-.54 2.56-1.75 5-1.75s5 1.21 5 1.75v1.25zm9 0H14v-1.25c0-.46-.2-.86-.52-1.22.88-.3 1.96-.53 3.02-.53 2.44 0 5 1.21 5 1.75v1.25zM7.5 12c1.93 0 3.5-1.57 3.5-3.5S9.43 5 7.5 5 4 6.57 4 8.5 5.57 12 7.5 12zm0-5.5c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2zm9 5.5c1.93 0 3.5-1.57 3.5-3.5S18.43 5 16.5 5 13 6.57 13 8.5s1.57 3.5 3.5 3.5zm0-5.5c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2z"/></svg>
<div>
<h4>{% trans "Admin Interface" %}</h4>
<p>{% trans "Create your superuser first!" %}</p>
</div>
</a>
</footer>

0
kontakty/__init__.py

3
kontakty/admin.py

@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

5
kontakty/apps.py

@ -0,0 +1,5 @@
from django.apps import AppConfig
class KontaktyConfig(AppConfig):
name = 'kontakty'

28
kontakty/migrations/0001_initial.py

@ -0,0 +1,28 @@
# Generated by Django 3.1.3 on 2020-11-24 15:35
from django.db import migrations, models
import django.db.models.deletion
import wagtail.core.fields
class Migration(migrations.Migration):
initial = True
dependencies = [
('wagtailcore', '0059_apply_collection_ordering'),
]
operations = [
migrations.CreateModel(
name='KontaktyPage',
fields=[
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
('body', wagtail.core.fields.RichTextField(blank=True)),
],
options={
'abstract': False,
},
bases=('wagtailcore.page',),
),
]

0
kontakty/migrations/__init__.py

22
kontakty/models.py

@ -0,0 +1,22 @@
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 KontaktyPage(Page):
body = RichTextField(blank=True)
search_fields = Page.search_fields + [
index.SearchField('body'),
]
content_panels = Page.content_panels + [
FieldPanel('body', classname="full"),
]

61
kontakty/templates/kontakty/kontakty_page.html

@ -0,0 +1,61 @@
{% extends "base.html" %}
{% load static %}
{% block body_class %}template-homepage{% endblock %}
{% block extra_css %}
{% comment %} Delete the line below if you're just getting started and want to remove the welcome screen! {% endcomment %}
<link rel="stylesheet" href="{% static 'css/welcome_page.css' %}">
{% endblock extra_css %}
{% block content %}
{% comment %} Delete the line below if you're just getting started and want to remove the welcome screen! {% endcomment %}
<div class="content">
<div class="row">
<div class="col-4">
<h3> Místo podnikání </h3>
<div class="grid clasik">
<div class="grid-title">
<h4> Adresa </h4>
</div>
<div class="grid-body">
Lovosice, Pavlova 1356
</div>
</div>
</div>
<div class="col-8">
<h3> Duležitá čísla </h3>
<div class="row">
<div class="col-12">
<div class="grid clasik">
<div class="grid-title">
<h4> Ordinace </h4>
</div>
<div class="grid-body dark">
tel: 752 589 486
</div>
</div>
</div>
<div class="col-6">
<div class="grid clasik">
<div class="grid-title">
<h4> Doktorka </h4>
</div>
<div class="grid-body dark">
tel: 752 589 487
</div>
</div>
</div>
<div class="col-6">
<div class="grid clasik">
<div class="grid-title">
<h4> Sestra </h4>
</div>
<div class="grid-body dark">
tel: 752 589 488
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock content %}

3
kontakty/tests.py

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

3
kontakty/views.py

@ -0,0 +1,3 @@
from django.shortcuts import render
# Create your views here.

10
manage.py

@ -0,0 +1,10 @@
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "veterinahelcl.settings.dev")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)

BIN
media/images/5412827_australsky-ovcak-pes-v1.max-165x165.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
media/images/5412827_australsky-ovcak-pes-v1.max-800x600.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
media/images/5412827_australsky-ovcak-pes-v1.original.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

BIN
media/original_images/5412827_australsky-ovcak-pes-v1.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

2
requirements.txt

@ -0,0 +1,2 @@
Django>=3.1,<3.2
wagtail>=2.11,<2.12

0
search/__init__.py

38
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 %}
<h1>Search</h1>
<form action="{% url 'search' %}" method="get">
<input type="text" name="query"{% if search_query %} value="{{ search_query }}"{% endif %}>
<input type="submit" value="Search" class="button">
</form>
{% if search_results %}
<ul>
{% for result in search_results %}
<li>
<h4><a href="{% pageurl result %}">{{ result }}</a></h4>
{% if result.search_description %}
{{ result.search_description }}
{% endif %}
</li>
{% endfor %}
</ul>
{% if search_results.has_previous %}
<a href="{% url 'search' %}?query={{ search_query|urlencode }}&amp;page={{ search_results.previous_page_number }}">Previous</a>
{% endif %}
{% if search_results.has_next %}
<a href="{% url 'search' %}?query={{ search_query|urlencode }}&amp;page={{ search_results.next_page_number }}">Next</a>
{% endif %}
{% elif search_query %}
No results found
{% endif %}
{% endblock %}

34
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,
})

0
stranka/__init__.py

3
stranka/admin.py

@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

5
stranka/apps.py

@ -0,0 +1,5 @@
from django.apps import AppConfig
class StrankaConfig(AppConfig):
name = 'stranka'

44
stranka/migrations/0001_initial.py

@ -0,0 +1,44 @@
# Generated by Django 3.1.3 on 2020-11-24 14:15
from django.db import migrations, models
import django.db.models.deletion
import modelcluster.fields
import wagtail.core.fields
class Migration(migrations.Migration):
initial = True
dependencies = [
('wagtailcore', '0059_apply_collection_ordering'),
('wagtailimages', '0022_uploadedimage'),
]
operations = [
migrations.CreateModel(
name='StrankaPage',
fields=[
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
('body', wagtail.core.fields.RichTextField(blank=True)),
],
options={
'abstract': False,
},
bases=('wagtailcore.page',),
),
migrations.CreateModel(
name='StrankaPageGalleryImage',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('sort_order', models.IntegerField(blank=True, editable=False, null=True)),
('caption', models.CharField(blank=True, max_length=250)),
('image', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to='wagtailimages.image')),
('page', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='gallery_images', to='stranka.strankapage')),
],
options={
'ordering': ['sort_order'],
'abstract': False,
},
),
]

0
stranka/migrations/__init__.py

35
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'),
]

58
stranka/templates/stranka/stranka_page.html

@ -0,0 +1,58 @@
{% extends "base.html" %}
{% load static %}
{% block body_class %}template-homepage{% endblock %}
{% block extra_css %}
{% comment %} Delete the line below if you're just getting started and want to remove the welcome screen! {% endcomment %}
<link rel="stylesheet" href="{% static 'css/welcome_page.css' %}">
{% endblock extra_css %}
{% block content %}
{% comment %} Delete the line below if you're just getting started and want to remove the welcome screen! {% endcomment %}
<div class="content">
<div class="row">
<div class="col-12">
<h3> Služby </h3>
<div class="grid clasik">
<div class="grid-body all-border">
<table class="table">
<thead class="thead-dark">
<tr>
<th> Název služby </th>
<th class="tac"> Objednání </th>
<th> Možné komplikace </th>
<th class="tac"> Cena </th>
</tr>
</thead>
<tbody>
<tr>
<td> Zastřihávání drápků </td>
<td class="tac"> Ne </td>
<td> Bez komplikací </td>
<td class="tac"> 120pč </td>
</tr>
<tr>
<td> Stříhaní srsti </td>
<td class="tac"> Ano </td>
<td> Bez komplikací </td>
<td class="tac"> 150pč </td>
</tr>
<tr>
<td> Předoperační vyšetření </td>
<td class="tac"> Ano </td>
<td> Bez komplikací </td>
<td class="tac"> 250pč </td>
</tr>
<tr>
<td> Operace hlay </td>
<td class="tac"> Ano </td>
<td> Možná stráta domacího mazlíčka </td>
<td class="tac"> 2 500pč </td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
{% endblock content %}

3
stranka/tests.py

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

3
stranka/views.py

@ -0,0 +1,3 @@
from django.shortcuts import render
# Create your views here.

0
veterinahelcl/__init__.py

0
veterinahelcl/settings/__init__.py

166
veterinahelcl/settings/base.py

@ -0,0 +1,166 @@
"""
Django settings for veterinahelcl 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',
'diskuze',
'stranka',
'kontakty',
]
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 = 'veterinahelcl.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 = 'veterinahelcl.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 = "veterinahelcl"
# 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'

18
veterinahelcl/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 = 'vfybmc0_2a3z7q)h5m3qnpcv1q!$0=*gld4i(==br2v(%(=g-&'
# 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

8
veterinahelcl/settings/production.py

@ -0,0 +1,8 @@
from .base import *
DEBUG = False
try:
from .local import *
except ImportError:
pass

0
veterinahelcl/static/css/veterinahelcl.css

0
veterinahelcl/static/js/veterinahelcl.js

9
veterinahelcl/templates/404.html

@ -0,0 +1,9 @@
{% extends "base.html" %}
{% block body_class %}template-404{% endblock %}
{% block content %}
<h1>Page not found</h1>
<h2>Sorry, this page could not be found.</h2>
{% endblock %}

13
veterinahelcl/templates/500.html

@ -0,0 +1,13 @@
<!DOCTYPE html>
<html class="no-js">
<head>
<meta charset="utf-8" />
<title>Internal server error</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
</head>
<body>
<h1>Internal server error</h1>
<h2>Sorry, there seems to be an error. Please try again soon.</h2>
</body>
</html>

56
veterinahelcl/templates/base.html

@ -0,0 +1,56 @@
{% load static wagtailuserbar %}
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8" />
<title>
{% 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 %}
</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ho+j7jyWK8fNQe+A12Hb8AhRq26LrZ/JpcUGGOn+Y7RsweNrtN/tE3MoK7ZeZDyx" crossorigin="anonymous"></script>
<meta name="description" content="" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
{# Global stylesheets #}
<link rel="stylesheet" type="text/css" href="{% static 'css/veterinahelcl.css' %}">
<link rel="stylesheet" type="text/css" href="{% static 'css/style.css' %}">
{% block extra_css %}
{# Override this in templates to add extra stylesheets #}
{% endblock %}
</head>
<body class="{% block body_class %}{% endblock %}">
{% wagtailuserbar %}
<div class="top-menu">
<div class="logo"> <img src="{% static 'img/veterina-logo.png' %}"> </div>
<ul>
<li><a href="/"> Home </a></li>
<li><a href="/diskuze"> Diskuze </a></li>
<li><a href="/sluzby"> Služby </a></li>
<li><a href="/kontakty"> Kontakty </a></li>
</ul>
</div>
{% block content %}{% endblock %}
{# Global javascript #}
<script type="text/javascript" src="{% static 'js/veterinahelcl.js' %}"></script>
<link type="text/css" href="css/start/jquery-ui-1.8.17.custom.css" rel="stylesheet"/>
<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.8.17.custom.min.js"></script>
{% block extra_js %}
{# Override this in templates to add extra javascript #}
{% endblock %}
</body>
</html>

39
veterinahelcl/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)),
]

16
veterinahelcl/wsgi.py

@ -0,0 +1,16 @@
"""
WSGI config for veterinahelcl 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", "veterinahelcl.settings.dev")
application = get_wsgi_application()
Loading…
Cancel
Save