From 168e59805e97cb927c09ff601793fefdffecb5d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Tue, 6 Sep 2016 18:46:28 +0200 Subject: [PATCH] Added template system to Attract extension. --- .gitignore | 2 + attract_server/__init__.py | 5 +++ attract_server/modules.py | 8 ++-- gulpfile.js | 75 ++++++++++++++++++++++++++++++++ package.json | 24 ++++++++++ src/templates/attract/index.jade | 6 +++ 6 files changed, 116 insertions(+), 4 deletions(-) create mode 100644 gulpfile.js create mode 100644 package.json create mode 100644 src/templates/attract/index.jade diff --git a/.gitignore b/.gitignore index 1c17879..9ac50c8 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,5 @@ __pycache__ /.cache /*.egg-info/ /.eggs/ +/node_modules/ +/attract_server/templates/ diff --git a/attract_server/__init__.py b/attract_server/__init__.py index d935e32..a93f0dd 100644 --- a/attract_server/__init__.py +++ b/attract_server/__init__.py @@ -57,6 +57,11 @@ class AttractExtension(PillarExtension): """ return [blueprint] + @property + def template_path(self): + import os.path + return os.path.join(os.path.dirname(__file__), 'templates') + def setup_app(self, app): """Connects Blinker signals.""" diff --git a/attract_server/modules.py b/attract_server/modules.py index 5fa54c0..6a846e7 100644 --- a/attract_server/modules.py +++ b/attract_server/modules.py @@ -1,15 +1,15 @@ import logging -from flask import Blueprint +from flask import Blueprint, render_template from pillar.api.utils import jsonify blueprint = Blueprint('attract', __name__) log = logging.getLogger(__name__) -@blueprint.route('/jemoeder') -def jemoeder(): - return jsonify({'je': 'moeder'}) +@blueprint.route('/') +def index(): + return render_template('attract/index.html') @blueprint.route('/subversion/kick') diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000..7680a84 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,75 @@ +var argv = require('minimist')(process.argv.slice(2)); +var autoprefixer = require('gulp-autoprefixer'); +var chmod = require('gulp-chmod'); +var concat = require('gulp-concat'); +var gulp = require('gulp'); +var gulpif = require('gulp-if'); +var jade = require('gulp-jade'); +var livereload = require('gulp-livereload'); +var plumber = require('gulp-plumber'); +var rename = require('gulp-rename'); +var sass = require('gulp-sass'); +var sourcemaps = require('gulp-sourcemaps'); +var uglify = require('gulp-uglify'); + +var enabled = { + uglify: argv.production, + maps: argv.production, + failCheck: argv.production, + prettyPug: !argv.production, + liveReload: !argv.production +}; + +/* CSS */ +gulp.task('styles', function() { + gulp.src('src/styles/**/*.sass') + .pipe(gulpif(enabled.failCheck, plumber())) + .pipe(gulpif(enabled.maps, sourcemaps.init())) + .pipe(sass({ + outputStyle: 'compressed'} + )) + .pipe(autoprefixer("last 3 versions")) + .pipe(gulpif(enabled.maps, sourcemaps.write("."))) + .pipe(gulp.dest('attract_server/static/assets/css')) + .pipe(gulpif(enabled.liveReload, livereload())); +}); + + +/* Templates - Jade */ +gulp.task('templates', function() { + gulp.src('src/templates/**/*.jade') + .pipe(gulpif(enabled.failCheck, plumber())) + .pipe(jade({ + pretty: enabled.prettyPug + })) + .pipe(gulp.dest('attract_server/templates/')) + .pipe(gulpif(enabled.liveReload, livereload())); +}); + + +/* Individual Uglified Scripts */ +gulp.task('scripts', function() { + gulp.src('src/scripts/*.js') + .pipe(gulpif(enabled.failCheck, plumber())) + .pipe(gulpif(enabled.maps, sourcemaps.init())) + .pipe(gulpif(enabled.uglify, uglify())) + .pipe(rename({suffix: '.min'})) + .pipe(gulpif(enabled.maps, sourcemaps.write("."))) + .pipe(chmod(644)) + .pipe(gulp.dest('attract_server/static/assets/js/')) + .pipe(gulpif(enabled.liveReload, livereload())); +}); + + +// While developing, run 'gulp watch' +gulp.task('watch',function() { + livereload.listen(); + + gulp.watch('src/styles/**/*.sass',['styles']); + gulp.watch('src/templates/**/*.jade',['templates']); + gulp.watch('src/scripts/*.js',['scripts']); +}); + + +// Run 'gulp' to build everything at once +gulp.task('default', ['styles', 'templates', 'scripts']); diff --git a/package.json b/package.json new file mode 100644 index 0000000..0d52aa8 --- /dev/null +++ b/package.json @@ -0,0 +1,24 @@ +{ + "name": "attract", + "license": "GPL", + "author": "Blender Institute", + "repository": { + "type": "git", + "url": "git://git.blender.org/attract-server.git" + }, + "devDependencies": { + "gulp": "~3.9.1", + "gulp-sass": "~2.3.1", + "gulp-autoprefixer": "~2.3.1", + "gulp-if": "^2.0.1", + "gulp-jade": "~1.1.0", + "gulp-sourcemaps": "~1.6.0", + "gulp-plumber": "~1.1.0", + "gulp-livereload": "~3.8.1", + "gulp-concat": "~2.6.0", + "gulp-uglify": "~1.5.3", + "gulp-rename": "~1.2.2", + "gulp-chmod": "~1.3.0", + "minimist": "^1.2.0" + } +} diff --git a/src/templates/attract/index.jade b/src/templates/attract/index.jade new file mode 100644 index 0000000..d80866f --- /dev/null +++ b/src/templates/attract/index.jade @@ -0,0 +1,6 @@ +| {% extends 'layout.html' %} +| {% block page_title %}Attract{% endblock %} +| {% block body %} +h1 Attract +p This is Attract. Templates are found. +| {% endblock %}