|
| 1 | +#!/bin/bash |
| 2 | + |
| 3 | +set -e # die on errors |
| 4 | +set -x # echo commands as they run |
| 5 | + |
| 6 | +django-admin.py startproject view_project_test |
| 7 | +cd view_project_test |
| 8 | + |
| 9 | +virtualenv .venv |
| 10 | +. .venv/bin/activate |
| 11 | +pip install -r /dev/stdin <<EOF |
| 12 | +Django |
| 13 | +psycopg2 |
| 14 | +dj-database-url |
| 15 | +south |
| 16 | +EOF |
| 17 | +(cd ../../../; python setup.py develop) |
| 18 | + |
| 19 | +export PYTHONPATH="$(pwd):$PYTHONPATH" |
| 20 | +export DJANGO_SETTINGS_MODULE=view_project_test.settings |
| 21 | +export DATABASE_URL="postgresql://localhost/django_postgres_viewtest" |
| 22 | +cat >> view_project_test/settings.py <<EOF |
| 23 | +import dj_database_url |
| 24 | +DATABASES = {'default': dj_database_url.config()} |
| 25 | +INSTALLED_APPS += type(INSTALLED_APPS)(['django_postgres', 'south', 'view_myapp']) |
| 26 | +EOF |
| 27 | + |
| 28 | +django-admin.py startapp view_myapp |
| 29 | +django-admin.py syncdb --noinput |
| 30 | +cat > view_myapp/models.py <<EOF |
| 31 | +from django.db import models |
| 32 | +import django_postgres |
| 33 | +
|
| 34 | +class MyModel(models.Model): |
| 35 | + field1 = models.CharField(max_length=50, default=' ') |
| 36 | + field2 = models.CharField(max_length=49, default=' ') |
| 37 | +
|
| 38 | +
|
| 39 | +class MyView(django_postgres.View): |
| 40 | + projection = ['view_myapp.MyModel.*'] |
| 41 | + sql = '''SELECT * FROM view_myapp_mymodel''' |
| 42 | +EOF |
| 43 | +django-admin.py schemamigration --initial view_myapp |
| 44 | +django-admin.py migrate view_myapp |
| 45 | +django-admin.py sync_pgviews |
| 46 | + |
| 47 | +# Make a breaking change |
| 48 | +sed -i '' -E 's/field2/field3/' view_myapp/models.py |
| 49 | + |
| 50 | +django-admin.py schemamigration --auto view_myapp |
| 51 | +django-admin.py migrate view_myapp |
| 52 | +django-admin.py sync_pgviews |
| 53 | + |
| 54 | +psql -d "$DATABASE_URL" -P tuples_only -c 'SELECT * FROM view_myapp_myview;' |
0 commit comments