A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/imkevinxu/django-kevin below:

imkevinxu/django-kevin: Heavily personalized fork of the project template from "Two Scoops of Django 1.6"

A heavily personalized project template for Django 1.8.4 using Postgres for development and production. Ready to deploy on Heroku with a bunch of other goodies.

Forked from the original django-two-scoops-project

Prerequisites: Django

To create a new Django project, run the following command replacing PROJECT_NAME with your actual project name:

django-admin.py startproject --template=https://github.com/imkevinxu/django-kevin/archive/master.zip --extension=py,md,html,json,coveragerc PROJECT_NAME

Afterwards please reference the actual README.md you just created in your new project folder, all the references to "{{ project_name }}" will be changed accordingly.

Make virtual environments

Prerequisites: virtualenv, virtualenvwrapper

cd {{ project_name }}
mkvirtualenv {{ project_name }}-dev && add2virtualenv `pwd`
mkvirtualenv {{ project_name }}-prod && add2virtualenv `pwd`
mkvirtualenv {{ project_name }}-test && add2virtualenv `pwd`

For development:

workon {{ project_name }}-dev
sudo pip install --upgrade pip
sudo pip install --upgrade setuptools
sudo env ARCHFLAGS="-arch i386 -arch x86_64" pip install psycopg2
sudo pip install -r requirements/dev.txt

For production:

workon {{ project_name }}-prod
sudo pip install --upgrade pip
sudo pip install --upgrade setuptools
sudo env ARCHFLAGS="-arch i386 -arch x86_64" pip install psycopg2
sudo pip install -r requirements.txt

For testing:

workon {{ project_name }}-test
sudo pip install --upgrade pip
sudo pip install --upgrade setuptools
sudo env ARCHFLAGS="-arch i386 -arch x86_64" pip install psycopg2
sudo pip install -r requirements/test.txt

Prerequisites: node

Sometimes the install may stall or not install everything. Try running npm list and then manually installing anything that may be missing.

Prerequisites: homebrew

In order to use the grunt task runner you need to install it globally:

sudo npm install -g grunt-cli

In order to be able to lint SCSS files locally you need ruby on your local system and a certain gem. See https://github.com/ahmednuaman/grunt-scss-lint#scss-lint-task

In order to use django-pipeline for post-processing, you need yuglify installed on your local system:

sudo npm install -g yuglify

In order for grunt to notify you of warnings and when the build is finished, you need a notification system installed. Below is the Mac OSX notification command-line tool:

brew install terminal-notifier

In order to use Redis for caching and queuing, you need to download it and have it running in the background. This will also set redis-server to automatically run at launch:

brew install redis
ln -sfv /usr/local/opt/redis/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.redis.plist
launchctl start ~/Library/LaunchAgents/homebrew.mxcl.redis.plist
Set .env.dev variable for dev

The environment variables for development sets the appropriate DJANGO_SETTINGS_MODULE and PYTHONPATH in order to use django-admin.py seemlessly. Necessary for Foreman and other worker processes

.env.dev is not version controlled so the first person to create this project needs to create a .env.dev file for Foreman to read into the environment. Future collaboraters need to email the creator for it.

echo DJANGO_SETTINGS_MODULE=config.settings.dev >> .env.dev
echo PYTHONPATH={{ project_name }} >> .env.dev
echo PYTHONUNBUFFERED=True >> .env.dev
echo PYTHONWARNINGS=ignore:RemovedInDjango19Warning >> .env.dev
echo CACHE=dummy >> .env.dev

Recommended to use foreman to use development environment variables and processes:

echo "env: .env.dev" > .foreman
echo "procfile: Procfile.dev" >> .foreman
Compile initial static assets

This will compile all the files in /{{ project_name }}/static for the first run.

Create local postgres database for dev

Prerequisites: Postgres and Heroku Toolbelt

Install Postgres for your OS here. For Max OSX the easiest option is to download and run Postgres.app.

# Make sure Postgres.app is running
workon {{ project_name }}-dev
createdb {{ project_name }}-dev
foreman run django-admin.py migrate
Run project locally in dev environment

Use the right virtual environment:

workon {{ project_name }}-dev

Start the server with:

Create a local super user with:

foreman run django-admin.py createsuperuser

To run one-off commands use:

foreman run django-admin.py COMMAND

To enable Live Reload, download and turn on a browser extension.

Set .env variable for prod

The environment variables for production must contain a separate SECRET_KEY for security and the appropriate DJANGO_SETTINGS_MODULE and PYTHONPATH in order to use django-admin.py seemlessly. Hacky use of date | md5 to generate a pseudo-random string.

.env is not version controlled so the first person to create this project needs to create a .env file for Foreman and Heroku to read into the environment. Future collaboraters need to email the creator for it.

echo -n SECRET_KEY=`date | md5` >> .env
sleep 1
echo `date | md5` >> .env
echo DJANGO_SETTINGS_MODULE=config.settings.prod >> .env
echo PYTHONPATH={{ project_name }} >> .env
echo WEB_CONCURRENCY=3 >> .env
echo PYTHONUNBUFFERED=True >> .env
echo PYTHONWARNINGS=ignore:RemovedInDjango19Warning >> .env
echo BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-multi.git >> .env

Prerequisites: Heroku Toolbelt and heroku-config

First step is to deploy to Heroku with the post_compile script in /bin so that node functions can be installed for python to call them.

git init
git add .
git commit -m "Ready for initial Heroku deploy"
heroku create
heroku config:push
git push heroku master

After post_compile is successful, uncomment the line with the variable STATICFILES_STORAGE in /{{ project_name }}/config/settings/base.py to enable django-pipeline and push again.

git commit -am "Enabled django-pipeline"
git push heroku master
heroku run django-admin.py migrate
heroku open

To run one-off commands like createsuperuser use:

heroku run django-admin.py COMMAND

Debugging tip: sometimes purging the cache can help fix a random error. Just run:

heroku run django-admin.py clear_cache
Run project locally in prod environment

Set the .foreman file to use production environment variables and processes:

echo "env: .env" > .foreman
echo "procfile: Procfile" >> .foreman

Use the right virtual environment:

workon {{ project_name }}-prod

This is meant to mimic production as close as possible using both the production database and environment settings so proceed with caution.

WARNING: If this project has SSL turned on, localhost:5000 won't work anymore because it will always try to redirect to https://localhost:5000. To fix this comment out the SECURITY CONFIGURATION section in /{{ project_name }}/config/settings/prod.py

heroku config:pull
foreman run django-admin.py collectstatic --noinput
foreman start

The site will be located at localhost:5000

Set .env.test variable for test

The environment variables for testing sets the appropriate DJANGO_SETTINGS_MODULE and PYTHONPATH in order to use django-admin.py seemlessly. Necessary for Foreman and other worker processes

.env.test is not version controlled so the first person to create this project needs to create a .env.test file for Foreman to read into the environment. Future collaboraters need to email the creator for it.

echo DJANGO_SETTINGS_MODULE=config.settings.test >> .env.test
echo PYTHONPATH={{ project_name }} >> .env.test
echo PYTHONUNBUFFERED=True >> .env.test
echo PYTHONWARNINGS=ignore:RemovedInDjango19Warning >> .env.test
Run tests locally in test environment

Set the .foreman file to use testing environment variables and processes:

echo "env: .env.test" > .foreman
echo "procfile: Procfile.test" >> .foreman

Use the right virtual environment:

workon {{ project_name }}-test

And have static assets prepared (for coverage tests):

grunt build
foreman run django-admin.py collectstatic --noinput

Automatically run all tests and linters and watch files to continuously run tests:

You can view the results of the tests in HTML at localhost:9000/tests

You can specifically view the results of Django coverage tests at localhost:9000/tests/django

Grunt automatically compiles Jasmine tests written in CoffeeScript at /{{ project_name }}/static/js/tests/coffee and runs the tests upon every save.

You can specifically view the results of Jasmine JS unit tests at localhost:9000/tests/jasmine

You can specifically view the results of JS coverage tests at localhost:9000/tests/jasmine/coverage.html

Enable SSL via Heroku, Cloudflare, or your DNS provider and then uncomment the SECURITY CONFIGURATION section in /{{ project_name }}/config/settings/prod.py to enable security best practices for production.

Scripts can be programmed to be run on the command-line using Invoke for repeated tasks like deployment, building, or cleaning. Write your tasks in tasks.py.

In order to enable redis for caching and queues, add Redis Cloud to Heroku.

heroku addons:add rediscloud:25

Add a Redis Queue worker process to Procfile:

echo "worker: django-admin.py rqworker high default low" >> Procfile

Push the changed Procfile to Heroku:

git add Procfile
git commit -m "Added worker process to Procfile, pushing to Heroku"
git push heroku master

Turn on background job worker with this one-liner:

Add a RQ Scheduler process to Procfile:

echo "scheduler: rqscheduler --url \$REDISCLOUD_URL" >> Procfile

Push the changed Procfile to Heroku:

git add Procfile
git commit -m "Added scheduler process to Procfile, pushing to Heroku"
git push heroku master

Turn on background job scheduler with this one-liner:

To use Amazon S3 as a static and media file storage, create a custom Group and User via IAM and then a custom static bucket and media bucket with public read policies.

Add the following config variables to Heroku:

heroku config:set AWS_ACCESS_KEY_ID=INSERT_ACCESS_KEY_ID
heroku config:set AWS_SECRET_ACCESS_KEY=INSERT_SECRET_ACCESS_KEY
heroku config:set AWS_STATIC_STORAGE_BUCKET_NAME={{ project_name }}-static
heroku config:set AWS_MEDIA_STORAGE_BUCKET_NAME={{ project_name }}-media

Includes a fancy badge for GitHub README

Currently using Django 1.8.4 for the app framework

Currently using NPM engine 2.X. Purpose is to watch and compile frontend files

This project follows best practices as espoused in Two Scoops of Django: Best Practices for Django 1.6.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4