diff --git a/project/blog/models.py b/project/blog/models.py
index cfbafa7..7756e7d 100644
--- a/project/blog/models.py
+++ b/project/blog/models.py
@@ -1,5 +1,5 @@
from django.db import models
-from project.common.fields import build_stream_field
+from project.common.blocks import build_stream_field
from wagtail.wagtailcore.models import Page
from wagtail.wagtailadmin.edit_handlers import FieldPanel, StreamFieldPanel
from wagtail.wagtailimages.edit_handlers import ImageChooserPanel
diff --git a/project/common/fields.py b/project/common/blocks.py
similarity index 63%
rename from project/common/fields.py
rename to project/common/blocks.py
index 8778ad5..55b5e38 100644
--- a/project/common/fields.py
+++ b/project/common/blocks.py
@@ -3,19 +3,35 @@ from wagtail.wagtailcore import blocks
from wagtail.wagtailimages.blocks import ImageChooserBlock
from wagtail.wagtaildocs.blocks import DocumentChooserBlock
from wagtailmarkdown.blocks import MarkdownBlock
+from wagtail.wagtailembeds.blocks import EmbedBlock
-def build_header_fields():
- for i in range(6):
- h_tag = "h" + str(i + 1)
- yield (h_tag, blocks.CharBlock(classname=h_tag, label=h_tag.upper(), icon="title"))
+HEADING_CHOICES = [('h' + str(i), 'H' + str(i)) for i in range(1, 6)]
-def build_fixed_fields():
- return [
+class HeadingBlock(blocks.StructBlock):
+ size = blocks.ChoiceBlock(choices=HEADING_CHOICES)
+ value = blocks.CharBlock()
+
+ class Meta:
+ icon = 'title'
+ template = 'blocks/heading.html'
+
+
+class VideoBlock(blocks.StructBlock):
+ video = EmbedBlock()
+ caption = blocks.CharBlock()
+
+ class Meta:
+ template = 'blocks/video.html'
+
+
+def build_stream_field():
+ return StreamField([
('ansi', blocks.TextBlock(template="blocks/ansi.html")),
('document', DocumentChooserBlock()),
('gist', blocks.CharBlock(icon="code", template="blocks/gist.html")),
+ ('heading', HeadingBlock()),
('image', ImageChooserBlock()),
('markdown', MarkdownBlock()),
('ol', blocks.ListBlock(blocks.CharBlock(label="List Item"), icon="list-ol", label="Ordered List", template='blocks/ordered-list.html')),
@@ -23,15 +39,5 @@ def build_fixed_fields():
('raw_html', blocks.RawHTMLBlock(label="Raw HTML")),
('secret', blocks.RichTextBlock(icon="password", template='blocks/secret.html')),
('ul', blocks.ListBlock(blocks.CharBlock(label="List Item"), icon="list-ul", label="Unordered List")),
- ]
-
-
-def build_stream_field():
- fields = []
- for field_builder in [
- build_header_fields,
- build_fixed_fields
- ]:
- for field in field_builder():
- fields.append(field)
- return StreamField(fields)
+ ('video', VideoBlock())
+ ])
diff --git a/project/common/models.py b/project/common/models.py
index cf58f72..fb26ccd 100644
--- a/project/common/models.py
+++ b/project/common/models.py
@@ -1,8 +1,9 @@
from wagtail.wagtailcore.models import Page
from django.db import models
+from wagtailmetadata.models import MetadataPageMixin
-class Entity(Page):
+class Entity(MetadataPageMixin, Page):
is_home = False
created = models.DateTimeField(auto_now_add=True)
diff --git a/project/pages/models.py b/project/pages/models.py
index 8d89e6c..59ceb3c 100644
--- a/project/pages/models.py
+++ b/project/pages/models.py
@@ -1,5 +1,5 @@
from django.db import models
-from project.common.fields import build_stream_field
+from project.common.blocks import build_stream_field
from project.common.models import Entity
from wagtail.wagtailcore.models import Page
from wagtail.wagtailcore.fields import RichTextField
diff --git a/project/projects/models.py b/project/projects/models.py
index 373a6b5..5a03170 100644
--- a/project/projects/models.py
+++ b/project/projects/models.py
@@ -1,6 +1,6 @@
from django.db import models
from django.core.exceptions import ValidationError
-from project.common.fields import build_stream_field
+from project.common.blocks import build_stream_field
from wagtail.wagtailcore.models import Page
from wagtail.wagtaildocs.edit_handlers import DocumentChooserPanel
from wagtail.wagtailadmin.edit_handlers import FieldPanel, StreamFieldPanel
diff --git a/project/settings.py b/project/settings.py
index 697a151..ae82e55 100755
--- a/project/settings.py
+++ b/project/settings.py
@@ -41,6 +41,8 @@ INSTALLED_APPS = [
'django.contrib.messages',
'django.contrib.staticfiles',
+ 'wagtailmetadata',
+
'project.blog',
'project.common',
'project.home',
@@ -79,7 +81,7 @@ MIDDLEWARE = [
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'wagtail.wagtailcore.middleware.SiteMiddleware',
- 'wagtail.wagtailredirects.middleware.RedirectMiddleware',
+ 'wagtail.wagtailredirects.middleware.RedirectMiddleware'
]
ROOT_URLCONF = 'project.urls'
@@ -163,3 +165,15 @@ WAGTAILSEARCH_BACKENDS = {
# e.g. in notification emails. Don't include '/admin' or a trailing slash
BASE_URL = 'https://theorangeone.net'
SITE_URL = BASE_URL
+
+
+# Password policy settings
+SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'
+PASSWORD_CHECK_ONLY_AT_LOGIN = True
+PASSWORD_MIN_LENGTH = 7
+PASSWORD_MAX_LENGTH = 25
+PASSWORD_HISTORY_COUNT = 6
+PASSWORD_MIN_LETTERS = 1
+PASSWORD_MIN_NUMBERS = 1
+PASSWORD_MIN_SYMBOLS = 1
+PASSWORD_DIFFERENCE_DISTANCE = 3
diff --git a/requirements.txt b/requirements.txt
index 13ae424..9f3bfe9 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -9,6 +9,7 @@ psycopg2==2.6.2
pygments-style-github==0.4
safety==0.5.1
wagtail>=1.7,<1.8
+wagtail-metadata==0.3.0
git+https://github.com/RealOrangeOne/wagtail-markdown
waitress==1.0.1
whitenoise==3.2.2
diff --git a/static/src/scss/blocks.scss b/static/src/scss/blocks.scss
index b601eae..4d825be 100644
--- a/static/src/scss/blocks.scss
+++ b/static/src/scss/blocks.scss
@@ -5,3 +5,14 @@
max-height: 100vh;
}
}
+
+.block-video {
+ iframe {
+ width: 100%;
+ height: 50vh;
+ }
+
+ span {
+ font-style: italic;
+ }
+}
diff --git a/templates/base.html b/templates/base.html
index 1fd52fb..ba27f88 100755
--- a/templates/base.html
+++ b/templates/base.html
@@ -1,4 +1,4 @@
-{% load static wagtailuserbar %}
+{% load static wagtailuserbar wagtailmetadata_tags %}
@@ -11,6 +11,8 @@
+ {% meta_tags %}
+
{% block extra_css %}{% endblock %}
diff --git a/templates/blocks/heading.html b/templates/blocks/heading.html
new file mode 100644
index 0000000..3a59ef2
--- /dev/null
+++ b/templates/blocks/heading.html
@@ -0,0 +1 @@
+<{{ value.size }}>{{ value.value }}{{ value.size }}>
diff --git a/templates/blocks/video.html b/templates/blocks/video.html
new file mode 100644
index 0000000..d735aa5
--- /dev/null
+++ b/templates/blocks/video.html
@@ -0,0 +1,9 @@
+{% load wagtailcore_tags %}
+
+{% include_block value.video %}
+
+{% if value.caption %}
+
+ {% include_block value.caption %}
+
+{% endif %}
diff --git a/templates/wagtailembeds/embed_frontend.html b/templates/wagtailembeds/embed_frontend.html
new file mode 100644
index 0000000..8deaa8f
--- /dev/null
+++ b/templates/wagtailembeds/embed_frontend.html
@@ -0,0 +1 @@
+{{ embed.html|safe }}