From 04102d7a09c3d1e32f399a56da74a4d1c7739ff7 Mon Sep 17 00:00:00 2001 From: fefa4ka Date: Mon, 6 Jul 2015 02:17:49 +0300 Subject: [PATCH] init --- .gitignore | 5 + manage.py | 10 + requirements.txt | 1 + zsite/__init__.py | 0 zsite/menu.py | 0 zsite/settings.py | 239 ++++++++++++++ zsite/static/.bowerrc | 4 + zsite/static/bower.json | 10 + zsite/static/imgs/logo_en.svg | 22 ++ zsite/static/imgs/logo_ru.png | Bin 0 -> 8230 bytes zsite/static/imgs/logo_ru.svg | 23 ++ zsite/static/imgs/pattern.svg | 448 ++++++++++++++++++++++++++ zsite/static/js/app.js | 1 + zsite/static/less/grid.less | 135 ++++++++ zsite/static/less/main.less | 18 ++ zsite/templates/base.html | 41 +++ zsite/templates/feature.html | 13 + zsite/templates/language_chooser.html | 9 + zsite/templates/mainpage.html | 11 + zsite/templates/menu.html | 19 ++ zsite/templates/page.html | 8 + zsite/urls.py | 24 ++ zsite/wsgi.py | 14 + 23 files changed, 1055 insertions(+) create mode 100644 .gitignore create mode 100755 manage.py create mode 100644 requirements.txt create mode 100644 zsite/__init__.py create mode 100644 zsite/menu.py create mode 100644 zsite/settings.py create mode 100644 zsite/static/.bowerrc create mode 100644 zsite/static/bower.json create mode 100644 zsite/static/imgs/logo_en.svg create mode 100644 zsite/static/imgs/logo_ru.png create mode 100644 zsite/static/imgs/logo_ru.svg create mode 100644 zsite/static/imgs/pattern.svg create mode 100644 zsite/static/js/app.js create mode 100644 zsite/static/less/grid.less create mode 100644 zsite/static/less/main.less create mode 100644 zsite/templates/base.html create mode 100644 zsite/templates/feature.html create mode 100644 zsite/templates/language_chooser.html create mode 100644 zsite/templates/mainpage.html create mode 100644 zsite/templates/menu.html create mode 100644 zsite/templates/page.html create mode 100644 zsite/urls.py create mode 100644 zsite/wsgi.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1151254 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +media/* +static/* +*.pyc +frontend/static/* +zsite/static/vendor/* \ No newline at end of file diff --git a/manage.py b/manage.py new file mode 100755 index 0000000..e75f64a --- /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", "zsite.settings") + + 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..8e25ed5 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +aldryn-newsblog \ No newline at end of file diff --git a/zsite/__init__.py b/zsite/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/zsite/menu.py b/zsite/menu.py new file mode 100644 index 0000000..e69de29 diff --git a/zsite/settings.py b/zsite/settings.py new file mode 100644 index 0000000..e31e0fd --- /dev/null +++ b/zsite/settings.py @@ -0,0 +1,239 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import os +gettext = lambda s: s +DATA_DIR = os.path.dirname(os.path.dirname(__file__)) +""" +Django settings for zsite project. + +For more information on this file, see +https://docs.djangoproject.com/en/1.7/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/1.7/ref/settings/ +""" + +# Build paths inside the project like this: os.path.join(BASE_DIR, ...) +import os +BASE_DIR = os.path.dirname(os.path.dirname(__file__)) + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/1.7/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = '=%%a@whz46w1#=8ffk^a+8vya5fg-kz0ztyz!_@hdg-(5a9q+s' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +TEMPLATE_DEBUG = True + +ALLOWED_HOSTS = [] + + +# Application definition + + + + + +ROOT_URLCONF = 'zsite.urls' + +WSGI_APPLICATION = 'zsite.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/1.7/ref/settings/#databases + + + +# Internationalization +# https://docs.djangoproject.com/en/1.7/topics/i18n/ + +LANGUAGE_CODE = 'ru' + +TIME_ZONE = 'Europe/Moscow' + +USE_I18N = True + +USE_L10N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/1.7/howto/static-files/ + +STATIC_URL = '/static/' +MEDIA_URL = '/media/' +MEDIA_ROOT = os.path.join(DATA_DIR, 'media') +STATIC_ROOT = os.path.join(DATA_DIR, 'static') + +STATICFILES_DIRS = ( + os.path.join(BASE_DIR, 'zsite', 'static'), +) +STATICFILES_STORAGE = 'pipeline.storage.PipelineCachedStorage' +STATICFILES_FINDERS = ( + 'django.contrib.staticfiles.finders.FileSystemFinder', + 'django.contrib.staticfiles.finders.AppDirectoriesFinder', + 'pipeline.finders.PipelineFinder', +) +PIPELINE_COMPILERS = ( + 'pipeline.compilers.less.LessCompiler', +) +PIPELINE_JS = { + 'main': { + 'source_filenames': ( + 'js/app.js', + ), + 'output_filename': 'js/*.js', + }, + 'vendor': { + 'source_filenames': ( + 'vendor/angular/angular.js', + 'vendor/angular-bootstrap/ui-bootstrap.js' + ), + 'output_filename': 'js/vendor.js', + } + +} + +PIPELINE_CSS = { + 'main': { + 'source_filenames': ( + 'less/*.less', + ), + 'output_filename': 'css/main.css', + } +} +SITE_ID = 1 + +TEMPLATE_LOADERS = ( + 'django.template.loaders.filesystem.Loader', + 'django.template.loaders.app_directories.Loader', + 'django.template.loaders.eggs.Loader' +) + +MIDDLEWARE_CLASSES = ( + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.locale.LocaleMiddleware', + 'django.middleware.doc.XViewMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', + 'cms.middleware.user.CurrentUserMiddleware', + 'cms.middleware.page.CurrentPageMiddleware', + 'cms.middleware.toolbar.ToolbarMiddleware', + 'cms.middleware.language.LanguageCookieMiddleware' +) + +TEMPLATE_CONTEXT_PROCESSORS = ( + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + 'django.core.context_processors.i18n', + 'django.core.context_processors.debug', + 'django.core.context_processors.request', + 'django.core.context_processors.media', + 'django.core.context_processors.csrf', + 'django.core.context_processors.tz', + 'sekizai.context_processors.sekizai', + 'django.core.context_processors.static', + 'cms.context_processors.cms_settings' +) + +TEMPLATE_DIRS = ( + os.path.join(BASE_DIR, 'zsite', 'templates'), +) + +INSTALLED_APPS = ( + 'djangocms_admin_style', + 'djangocms_text_ckeditor', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.admin', + 'django.contrib.sites', + 'django.contrib.sitemaps', + 'django.contrib.staticfiles', + 'django.contrib.messages', + 'cms', + 'menus', + 'sekizai', + 'treebeard', + 'djangocms_style', + 'djangocms_column', + 'djangocms_file', + 'djangocms_flash', + 'djangocms_googlemap', + 'djangocms_inherit', + 'djangocms_link', + 'djangocms_picture', + 'djangocms_teaser', + 'djangocms_video', + 'reversion', + 'pipeline', + 'zsite' +) + +LANGUAGES = ( + ## Customize this + ('ru', u'Русский'), + ('en', u'English'), +) + +CMS_LANGUAGES = { + ## Customize this + 'default': { + 'public': True, + 'hide_untranslated': False, + 'redirect_on_fallback': True, + }, + 1: [ + { + 'public': True, + 'code': 'ru', + 'hide_untranslated': False, + 'name': u'Русский', + 'redirect_on_fallback': True, + }, + { + 'public': True, + 'code': 'en', + 'hide_untranslated': False, + 'name': u'English', + 'redirect_on_fallback': True, + }, + ], +} + +CMS_TEMPLATES = ( + ## Customize this + ('page.html', 'Page'), + ('feature.html', 'Page with Feature') +) + +CMS_PERMISSION = True + +CMS_PLACEHOLDER_CONF = {} + +DATABASES = { + 'default': + {'ENGINE': 'django.db.backends.mysql', 'NAME': u'zuykov', 'HOST': u'localhost', 'USER': u'root', 'PASSWORD': '', 'PORT': ''} +} + +MIGRATION_MODULES = { + 'djangocms_column': 'djangocms_column.migrations_django', + 'djangocms_flash': 'djangocms_flash.migrations_django', + 'djangocms_googlemap': 'djangocms_googlemap.migrations_django', + 'djangocms_inherit': 'djangocms_inherit.migrations_django', + 'djangocms_link': 'djangocms_link.migrations_django', + 'djangocms_style': 'djangocms_style.migrations_django', + 'djangocms_file': 'djangocms_file.migrations_django', + 'djangocms_picture': 'djangocms_picture.migrations_django', + 'djangocms_teaser': 'djangocms_teaser.migrations_django', + 'djangocms_video': 'djangocms_video.migrations_django' +} diff --git a/zsite/static/.bowerrc b/zsite/static/.bowerrc new file mode 100644 index 0000000..a6509c2 --- /dev/null +++ b/zsite/static/.bowerrc @@ -0,0 +1,4 @@ +{ + "directory": "vendor", + "json": "bower.json" +} diff --git a/zsite/static/bower.json b/zsite/static/bower.json new file mode 100644 index 0000000..e73e3ab --- /dev/null +++ b/zsite/static/bower.json @@ -0,0 +1,10 @@ +{ + "name": "zuykov", + "version": "0.1.0", + "devDependencies": { + "angular": "1.3.6", + "bootstrap": "3.3.5", + "angular-bootstrap": "~0.10.0" + }, + "dependencies": {} +} diff --git a/zsite/static/imgs/logo_en.svg b/zsite/static/imgs/logo_en.svg new file mode 100644 index 0000000..2bf93dd --- /dev/null +++ b/zsite/static/imgs/logo_en.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/zsite/static/imgs/logo_ru.png b/zsite/static/imgs/logo_ru.png new file mode 100644 index 0000000000000000000000000000000000000000..dfabaaed3745b9ed0e34cdb62a81e85d1ce5321e GIT binary patch literal 8230 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 + + + + + + + + + + \ No newline at end of file diff --git a/zsite/static/imgs/pattern.svg b/zsite/static/imgs/pattern.svg new file mode 100644 index 0000000..b5e73ab --- /dev/null +++ b/zsite/static/imgs/pattern.svg @@ -0,0 +1,448 @@ + + + + + + + + + + + + + + + + + + + + + + + ® + + + ® + + + ® + + + ® + + + + + + + + + © + + + © + + + © + + + + + + + + + + + + + + + + + + + + + + + + ® + + + ® + + + ® + + + ® + + + + + + + + + © + + + © + + + © + + + © + + + + + + + + + + + + + + + + + + + + + ® + + + ® + + + ® + + + ® + + + + + + + + + + + + © + + + © + + + + + + + + + + + + + + + + + + + + + ® + + + ® + + + ® + + + ® + + + + + + + + + © + + + © + + + © + + + + + + + + + + + + + + + ® + + + ® + + + ® + + + ® + + + + + + + + + © + + + © + + + © + + + + + + + + + + + + + + + + + + + + + + + + ® + + + ® + + + ® + + + ® + + + + + + + + + © + + + © + + + © + + + © + + + + + + + + + + + + + + + + + + + + + ® + + + ® + + + ® + + + ® + + + + + + + + + + + + © + + + © + + + + + + + + + + + + + + + + + + + + + + + + ® + + + ® + + + ® + + + ® + + + + + + + + + © + + + © + + + © + + + + + + + + + + + + ® + + + ® + + + ® + + + + + + © + + + © + + + + + + + + + + + + + + + + + + ® + + + ® + + + ® + + + + + + + + + © + + + © + + + © + + + © + + + + + + + + \ No newline at end of file diff --git a/zsite/static/js/app.js b/zsite/static/js/app.js new file mode 100644 index 0000000..303e7b5 --- /dev/null +++ b/zsite/static/js/app.js @@ -0,0 +1 @@ +console.log('Yep'); \ No newline at end of file diff --git a/zsite/static/less/grid.less b/zsite/static/less/grid.less new file mode 100644 index 0000000..46f1c81 --- /dev/null +++ b/zsite/static/less/grid.less @@ -0,0 +1,135 @@ +@grid-columns: 12; +@grid-gutter-width: 30px; +@grid-float-breakpoint: 728px; + +// Creates a wrapper for a series of columns +.make-row(@gutter: @grid-gutter-width) { + // Then clear the floated columns + .clearfix(); + + @media (min-width: @screen-sm-min) { + margin-left: (@gutter / -2); + margin-right: (@gutter / -2); + } + + // Negative margin nested rows out to align the content of columns + .row { + margin-left: (@gutter / -2); + margin-right: (@gutter / -2); + } +} + +// Generate the extra small columns +.make-xs-column(@columns; @gutter: @grid-gutter-width) { + position: relative; + // Prevent columns from collapsing when empty + min-height: 1px; + // Inner gutter via padding + padding-left: (@gutter / 2); + padding-right: (@gutter / 2); + + // Calculate width based on number of columns available + @media (min-width: @grid-float-breakpoint) { + float: left; + width: percentage((@columns / @grid-columns)); + } +} + +// Generate the small columns +.make-sm-column(@columns; @gutter: @grid-gutter-width) { + position: relative; + // Prevent columns from collapsing when empty + min-height: 1px; + // Inner gutter via padding + padding-left: (@gutter / 2); + padding-right: (@gutter / 2); + + // Calculate width based on number of columns available + @media (min-width: @screen-sm-min) { + float: left; + width: percentage((@columns / @grid-columns)); + } +} + +// Generate the small column offsets +.make-sm-column-offset(@columns) { + @media (min-width: @screen-sm-min) { + margin-left: percentage((@columns / @grid-columns)); + } +} +.make-sm-column-push(@columns) { + @media (min-width: @screen-sm-min) { + left: percentage((@columns / @grid-columns)); + } +} +.make-sm-column-pull(@columns) { + @media (min-width: @screen-sm-min) { + right: percentage((@columns / @grid-columns)); + } +} + +// Generate the medium columns +.make-md-column(@columns; @gutter: @grid-gutter-width) { + position: relative; + // Prevent columns from collapsing when empty + min-height: 1px; + // Inner gutter via padding + padding-left: (@gutter / 2); + padding-right: (@gutter / 2); + + // Calculate width based on number of columns available + @media (min-width: @screen-md-min) { + float: left; + width: percentage((@columns / @grid-columns)); + } +} + +// Generate the medium column offsets +.make-md-column-offset(@columns) { + @media (min-width: @screen-md-min) { + margin-left: percentage((@columns / @grid-columns)); + } +} +.make-md-column-push(@columns) { + @media (min-width: @screen-md-min) { + left: percentage((@columns / @grid-columns)); + } +} +.make-md-column-pull(@columns) { + @media (min-width: @screen-md-min) { + right: percentage((@columns / @grid-columns)); + } +} + +// Generate the large columns +.make-lg-column(@columns; @gutter: @grid-gutter-width) { + position: relative; + // Prevent columns from collapsing when empty + min-height: 1px; + // Inner gutter via padding + padding-left: (@gutter / 2); + padding-right: (@gutter / 2); + + // Calculate width based on number of columns available + @media (min-width: @screen-lg-min) { + float: left; + width: percentage((@columns / @grid-columns)); + } +} + +// Generate the large column offsets +.make-lg-column-offset(@columns) { + @media (min-width: @screen-lg-min) { + margin-left: percentage((@columns / @grid-columns)); + } +} +.make-lg-column-push(@columns) { + @media (min-width: @screen-lg-min) { + left: percentage((@columns / @grid-columns)); + } +} +.make-lg-column-pull(@columns) { + @media (min-width: @screen-lg-min) { + right: percentage((@columns / @grid-columns)); + } +} \ No newline at end of file diff --git a/zsite/static/less/main.less b/zsite/static/less/main.less new file mode 100644 index 0000000..174697f --- /dev/null +++ b/zsite/static/less/main.less @@ -0,0 +1,18 @@ +@import '../vendor/bootstrap/less/bootstrap.less'; + +@import 'grid.less'; + +.wrapper { + .make-row(); +} +.header-logo { + .make-lg-column(8); +} +.header-contacts { + .make-lg-column(3); + .make-lg-column-offset(1); +} + +.logo { + height: 100px; +} \ No newline at end of file diff --git a/zsite/templates/base.html b/zsite/templates/base.html new file mode 100644 index 0000000..3786a30 --- /dev/null +++ b/zsite/templates/base.html @@ -0,0 +1,41 @@ +{% load cms_tags staticfiles sekizai_tags menu_tags i18n %} +{% load pipeline %} + + + + + {% block title %}Zuykov and partners{% endblock title %} + + + {% stylesheet 'main' %} + {% javascript 'vendor' %} + {% javascript 'main' %} + + {% render_block "css" %} + + + {% cms_toolbar %} +
+
+ +
+ {% language_chooser 'language_chooser.html' %} + {% page_attribute "page_title" "about" %} +
+
+ + {% block content %}{% endblock content %} +
+ {% render_block "js" %} + + diff --git a/zsite/templates/feature.html b/zsite/templates/feature.html new file mode 100644 index 0000000..73bf355 --- /dev/null +++ b/zsite/templates/feature.html @@ -0,0 +1,13 @@ +{% extends "base.html" %} +{% load cms_tags %} + +{% block title %}{% page_attribute "page_title" %}{% endblock title %} + +{% block content %} +
+ {% placeholder "feature" %} +
+
+ {% placeholder "content" %} +
+{% endblock content %} diff --git a/zsite/templates/language_chooser.html b/zsite/templates/language_chooser.html new file mode 100644 index 0000000..a3aaf0b --- /dev/null +++ b/zsite/templates/language_chooser.html @@ -0,0 +1,9 @@ +{% load i18n menu_tags %} + +{% if languages|length > 1 %} + {% for language in languages %} + {% ifnotequal current_language language.0 %} + {{ language.1 }} + {% endifnotequal %} + {% endfor %} +{% endif %} \ No newline at end of file diff --git a/zsite/templates/mainpage.html b/zsite/templates/mainpage.html new file mode 100644 index 0000000..459c821 --- /dev/null +++ b/zsite/templates/mainpage.html @@ -0,0 +1,11 @@ +{% extends "base.html" %} +{% load cms_tags %} + +{% block content %} +
+ {% placeholder "feature" %} +
+
+ {% placeholder "content" %} +
+{% endblock content %} diff --git a/zsite/templates/menu.html b/zsite/templates/menu.html new file mode 100644 index 0000000..378a412 --- /dev/null +++ b/zsite/templates/menu.html @@ -0,0 +1,19 @@ +{% load i18n menu_tags cache %} + +{% for child in children %} + + {% if class and forloop.last and not forloop.parentloop %}{% endif %} +{% endfor %} diff --git a/zsite/templates/page.html b/zsite/templates/page.html new file mode 100644 index 0000000..b095172 --- /dev/null +++ b/zsite/templates/page.html @@ -0,0 +1,8 @@ +{% extends "base.html" %} +{% load cms_tags %} + +{% block title %}{% page_attribute "page_title" %}{% endblock title %} + +{% block content %} + {% placeholder "content" %} +{% endblock content %} diff --git a/zsite/urls.py b/zsite/urls.py new file mode 100644 index 0000000..f518a71 --- /dev/null +++ b/zsite/urls.py @@ -0,0 +1,24 @@ +from __future__ import print_function +from cms.sitemaps import CMSSitemap +from django.conf.urls import * # NOQA +from django.conf.urls.i18n import i18n_patterns +from django.contrib.staticfiles.urls import staticfiles_urlpatterns +from django.contrib import admin +from django.conf import settings + +admin.autodiscover() + +urlpatterns = i18n_patterns('', + url(r'^admin/', include(admin.site.urls)), # NOQA + url(r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap', + {'sitemaps': {'cmspages': CMSSitemap}}), + url(r'^select2/', include('django_select2.urls')), + url(r'^', include('cms.urls')), +) + +# This is only needed when using runserver. +if settings.DEBUG: + urlpatterns = patterns('', + url(r'^media/(?P.*)$', 'django.views.static.serve', # NOQA + {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}), + ) + staticfiles_urlpatterns() + urlpatterns # NOQA diff --git a/zsite/wsgi.py b/zsite/wsgi.py new file mode 100644 index 0000000..76eb5e8 --- /dev/null +++ b/zsite/wsgi.py @@ -0,0 +1,14 @@ +""" +WSGI config for zsite 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/1.7/howto/deployment/wsgi/ +""" + +import os +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "zsite.settings") + +from django.core.wsgi import get_wsgi_application +application = get_wsgi_application()