[Python-modules-commits] [django-guardian] 05/13: Import django-guardian_1.2.4+git20141127-0.2.dsc

Brian May bam at moszumanska.debian.org
Tue Nov 3 10:02:00 UTC 2015


This is an automated email from the git hooks/post-receive script.

bam pushed a commit to branch master
in repository django-guardian.

commit a9a58ce2bcbef5848efec942cbed6ff5d489265b
Author: Brian May <brian at linuxpenguins.xyz>
Date:   Tue Nov 3 19:47:24 2015 +1100

    Import django-guardian_1.2.4+git20141127-0.2.dsc
---
 debian/changelog                                   |   95 +
 debian/compat                                      |    1 +
 debian/control                                     |   61 +
 debian/copyright                                   |   84 +
 debian/docs                                        |    2 +
 .../0005-Move-migrations-to-south_migrations.patch |  495 ++
 ...e-staticfiles-in-INSTALLED_APPS-only-once.patch |   19 +
 .../0007-Name-INSTALLED_APPS-consistantly.patch    |   21 +
 .../0008-Fix-conflicting-related_name.patch        |   29 +
 .../patches/0009-Add-Django-1.7-migrations.patch   |  155 +
 .../0010-Add-MIDDLEWARE_CLASSES-setting.patch      |   22 +
 ...ixed-Field-list-ends-without-a-blank-line.patch |   30 +
 .../patches/Fixed-django1.6-incompatibility.patch  |   22 +
 .../patches/append_uncompressed_js_libraries.patch | 8445 ++++++++++++++++++++
 .../patches/fixed_title_underline_too_short.patch  |   24 +
 debian/patches/python32.patch                      |   18 +
 debian/patches/remove_non_local_image_uri.patch    |   32 +
 debian/patches/series                              |    2 +
 debian/python-django-guardian-doc.doc-base         |   13 +
 debian/python-django-guardian-doc.docs             |    1 +
 debian/python-django-guardian-doc.links            |   15 +
 debian/python-django-guardian.examples             |    2 +
 debian/python3-django-guardian.examples            |    2 +
 debian/rules                                       |   32 +
 debian/source/format                               |    1 +
 debian/watch                                       |    2 +
 26 files changed, 9625 insertions(+)

diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..6c484aa
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,95 @@
+django-guardian (1.2.4+git20141127-0.2) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Fix changelog message from 0.1. We closed the wrong bug.
+  * Absolutely no other changes from version 0.1.
+
+ -- Brian May <bam at debian.org>  Tue, 09 Dec 2014 11:00:54 +1100
+
+django-guardian (1.2.4+git20141127-0.1) experimental; urgency=low
+
+  * Non-maintainer upload.
+  * Use git version 3b41775705a0466d9033c5f88e425386d7e553cb.
+  * Remove patches from debian/patches that are no longer required.
+  * Add fix for https://github.com/lukaszb/django-guardian/issues/284.
+  * Fix test errors. Closes: #763222.
+  * Increase standards version to 3.9.6.
+  * Requires Puthon >= 2.7.
+
+ -- Brian May <bam at debian.org>  Mon, 24 Nov 2014 12:05:20 +1100
+
+django-guardian (1.2.4-2) unstable; urgency=medium
+
+  * Supported django 1.7 (Closes: #755598)
+    - Added debian/patches:
+      * 0005-Move-migrations-to-south_migrations.patch
+      * 0006-Inlude-staticfiles-in-INSTALLED_APPS-only-once.patch
+      * 0007-Name-INSTALLED_APPS-consistantly.patch
+      * 0008-Fix-conflicting-related_name.patch
+      * 0009-Add-Django-1.7-migrations.patch
+      * 0010-Add-MIDDLEWARE_CLASSES-setting.patch
+    - Thanks for patches and upstream report, Brian May <bam at debian.org>
+  * Added dep3 headers to python32.patch
+
+ -- Kouhei Maeda <mkouhei at palmtb.net>  Wed, 03 Sep 2014 12:35:42 +0900
+
+django-guardian (1.2.4-1.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Python3 package. Closes: #758381.
+
+ -- Brian May <bam at debian.org>  Tue, 19 Aug 2014 11:37:25 +1000
+
+django-guardian (1.2.4-1) unstable; urgency=medium
+
+  * New upstream release
+  * Added debian/patches:
+    - fixed_title_underline_too_short.patch
+    - remove_non_local_image_uri.patch
+
+ -- Kouhei Maeda <mkouhei at palmtb.net>  Sat, 19 Jul 2014 14:33:04 +0900
+
+django-guardian (1.2-1) unstable; urgency=medium
+
+  * New upstream release
+  * debian/control:
+    - Append python-six to Build-Depends and Depends of python-django-guardian.
+  * debian/patches:
+    - Removed Fixed-django1.6-incompatibility.patch
+  * debian/watch
+    - Change PyPI to GitHub repository.
+
+ -- Kouhei Maeda <mkouhei at palmtb.net>  Wed, 02 Apr 2014 21:04:59 +0900
+
+django-guardian (1.1.1-3) unstable; urgency=medium
+
+  * Fixed: get_objects_for_user() is incompatible with Django 1.6 abstract
+    user models (Closes: #739524)
+    - Append debian/patches/Fixed-django1.6-incompatibility.patch
+    - Thanks to report Luke Faraone <lfaraone at debian.org>. 
+  * Removed dead content in debian/patches/ (Closes: #739523)
+    - Append-to-sys_path_to_conf_py.patch
+    - Thanks to report Luke Faraone <lfaraone at debian.org>. 
+
+ -- Kouhei Maeda <mkouhei at palmtb.net>  Thu, 20 Feb 2014 06:49:15 +0900
+
+django-guardian (1.1.1-2) unstable; urgency=medium
+
+  * Fixed: Installs benchmarks and example_project python packages
+    (Closes: #737002) 
+    - Thanks to report Michael Fladischer <FladischerMichael at fladi.at>.
+  * debian/control:
+    - Update Standards-Version to 3.9.5.
+    - Append quilt to Build-Depends.
+  * Change to DEP3 style header
+    - debian/patches/append_uncompressed_js_libraries.patch
+
+ -- Kouhei Maeda <mkouhei at palmtb.net>  Thu, 30 Jan 2014 19:36:25 +0900
+
+django-guardian (1.1.1-1) unstable; urgency=low
+
+  * Initial release (Closes: #724989)
+  * debian/patches:
+    - append_uncompressed_js_libraries.patch
+
+ -- Kouhei Maeda <mkouhei at palmtb.net>  Mon, 30 Sep 2013 18:03:37 +0900
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..45a4fb7
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+8
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..4c26aa2
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,61 @@
+Source: django-guardian
+Section: python
+Priority: optional
+Maintainer: Kouhei Maeda <mkouhei at palmtb.net>
+Build-Depends: debhelper (>= 8.0.0), dh-python,
+    python-all, python-setuptools, python-django (>= 1.2),
+    python-mock (>= 0.7.2), python-six, python-unittest2,
+    python3-all, python3-setuptools, python3-django (>= 1.2),
+    python3-mock (>= 0.7.2), python3-six,
+    python3-sphinx,
+Standards-Version: 3.9.6
+X-Python-Version: >= 2.7
+Homepage: http://github.com/lukaszb/django-guardian
+
+Package: python-django-guardian
+Architecture: all
+Provides: ${python:Provides}
+Depends: ${python:Depends}, ${misc:Depends}, python-django (>= 1.2), python-six
+Suggests: python-django-guardian-doc
+Description: per object permissions of django
+ Implementation of per object permissions as authorization backend which is
+ supported since Django 1.2. It provides features as followings;
+  - Object permissions for Django_
+  - AnonymousUser support
+  - High level API
+  - Heavely tested
+  - Django's admin integration
+  - Decorators
+
+Package: python3-django-guardian
+Architecture: all
+Provides: ${python:Provides}
+Depends: ${python:Depends}, ${misc:Depends}, python3-django (>= 1.2), python3-six
+Suggests: python-django-guardian-doc
+Description: per object permissions of django for Python3
+ For Python3.
+ Implementation of per object permissions as authorization backend which is
+ supported since Django 1.2. It provides features as followings;
+  - Object permissions for Django_
+  - AnonymousUser support
+  - High level API
+  - Heavely tested
+  - Django's admin integration
+  - Decorators
+
+Package: python-django-guardian-doc
+Section: doc
+Architecture: all
+Depends: ${misc:Depends}, libjs-underscore, python-sphinx, sphinx-common
+Description: per object permissions of django (documentation)
+ Implementation of per object permissions as authorization backend which is
+ supported since Django 1.2. It provides features as followings;
+  - Object permissions for Django_
+  - AnonymousUser support
+  - High level API
+  - Heavely tested
+  - Django's admin integration
+  - Decorators
+ .
+ This package contains the HTML documentation.
+
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..7802a8d
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,84 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: django-guardian
+Source: https://pypi.python.org/pypi/django-guardian
+
+Files: *
+Copyright: 2010-2013 Lukasz Balcerzak <lukaszbalcerzak at gmail.com>
+License: BSD-2-Clause
+
+Files: docs/theme/ADCtheme/*
+Copyright: 2009 Corey Oordt
+License: BSD-3-Clause
+
+Files: example_project/static/js/bootstrap.min.js
+       example_project/static/css/bootstrap.min.css
+Copyright: 2012 Twitter, Inc.
+License: Apache-2.0
+
+Files: debian/*
+Copyright: 2013 Kouhei Maeda <mkouhei at palmtb.net>
+License: BSD-2-Clause
+
+License: BSD-2-Clause
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in the
+    documentation and/or other materials provided with the distribution.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+ A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE HOLDERS OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License: BSD-3-Clause
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in the
+    documentation and/or other materials provided with the distribution.
+ 3. Neither the name of the University nor the names of its contributors
+    may be used to endorse or promote products derived from this software
+    without specific prior written permission.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE HOLDERS OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License: Apache-2.0
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ use this file except in compliance with the License. You may obtain a copy of
+ the License at:
+ .
+  http://www.apache.org/licenses/LICENSE-2.0
+ .
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ License for the specific language governing permissions and limitations under
+ the License.
+ .
+ On Debian-based systems the full text of the Apache version 2.0 license can be
+ found in /usr/share/common-licenses/Apache-2.0.
+
diff --git a/debian/docs b/debian/docs
new file mode 100644
index 0000000..c19ffba
--- /dev/null
+++ b/debian/docs
@@ -0,0 +1,2 @@
+README.rst
+AUTHORS
diff --git a/debian/patches/0005-Move-migrations-to-south_migrations.patch b/debian/patches/0005-Move-migrations-to-south_migrations.patch
new file mode 100644
index 0000000..f9c58ec
--- /dev/null
+++ b/debian/patches/0005-Move-migrations-to-south_migrations.patch
@@ -0,0 +1,495 @@
+Description: Move migrations to south_migrations.
+Author: Brian May <brian at microcomaustralia.com.au>
+Bug-Debian: https://bugs.debian.org/758381
+Origin: https://github.com/brianmay/django-guardian/blob/master/debian/patches/0005-Move-migrations-to-south_migrations.patch
+Last-Update: 2014-08-25
+
+--- /dev/null
++++ django-guardian-1.2.4/guardian/south_migrations/0001_initial.py
+@@ -0,0 +1,112 @@
++# encoding: utf-8
++from south.db import db
++from south.v2 import SchemaMigration
++
++from guardian.compat import user_model_label
++from guardian.compat import get_user_model
++
++User = get_user_model()
++
++
++class Migration(SchemaMigration):
++
++    def forwards(self, orm):
++
++        # Adding model 'UserObjectPermission'
++        db.create_table('guardian_userobjectpermission', (
++            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
++            ('permission', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.Permission'])),
++            ('content_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'])),
++            ('object_id', self.gf('django.db.models.fields.PositiveIntegerField')()),
++            ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm[user_model_label])),
++        ))
++        db.send_create_signal('guardian', ['UserObjectPermission'])
++
++        # Adding unique constraint on 'UserObjectPermission', fields ['user', 'permission', 'content_type', 'object_id']
++        db.create_unique('guardian_userobjectpermission', ['user_id', 'permission_id', 'content_type_id', 'object_id'])
++
++        # Adding model 'GroupObjectPermission'
++        db.create_table('guardian_groupobjectpermission', (
++            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
++            ('permission', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.Permission'])),
++            ('content_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'])),
++            ('object_id', self.gf('django.db.models.fields.PositiveIntegerField')()),
++            ('group', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.Group'])),
++        ))
++        db.send_create_signal('guardian', ['GroupObjectPermission'])
++
++        # Adding unique constraint on 'GroupObjectPermission', fields ['group', 'permission', 'content_type', 'object_id']
++        db.create_unique('guardian_groupobjectpermission', ['group_id', 'permission_id', 'content_type_id', 'object_id'])
++
++
++    def backwards(self, orm):
++
++        # Removing unique constraint on 'GroupObjectPermission', fields ['group', 'permission', 'content_type', 'object_id']
++        db.delete_unique('guardian_groupobjectpermission', ['group_id', 'permission_id', 'content_type_id', 'object_id'])
++
++        # Removing unique constraint on 'UserObjectPermission', fields ['user', 'permission', 'content_type', 'object_id']
++        db.delete_unique('guardian_userobjectpermission', ['user_id', 'permission_id', 'content_type_id', 'object_id'])
++
++        # Deleting model 'UserObjectPermission'
++        db.delete_table('guardian_userobjectpermission')
++
++        # Deleting model 'GroupObjectPermission'
++        db.delete_table('guardian_groupobjectpermission')
++
++
++    models = {
++        'auth.group': {
++            'Meta': {'object_name': 'Group'},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
++            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
++        },
++        'auth.permission': {
++            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
++            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
++            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
++        },
++        user_model_label: {
++            'Meta': {'object_name': user_model_label.split('.')[-1], 'db_table': "'%s'" % User._meta.db_table},
++            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
++            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
++            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
++            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
++            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
++            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
++            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
++            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
++            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
++        },
++        'contenttypes.contenttype': {
++            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
++            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
++        },
++        'guardian.groupobjectpermission': {
++            'Meta': {'unique_together': "(['group', 'permission', 'content_type', 'object_id'],)", 'object_name': 'GroupObjectPermission'},
++            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
++            'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
++            'permission': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Permission']"})
++        },
++        'guardian.userobjectpermission': {
++            'Meta': {'unique_together': "(['user', 'permission', 'content_type', 'object_id'],)", 'object_name': 'UserObjectPermission'},
++            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
++            'permission': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Permission']"}),
++            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['%s']" % user_model_label})
++        }
++    }
++
++    complete_apps = ['guardian']
+--- /dev/null
++++ django-guardian-1.2.4/guardian/south_migrations/0002_auto__add_field_groupobjectpermission_object_pk__add_field_userobjectp.py
+@@ -0,0 +1,85 @@
++# encoding: utf-8
++from south.db import db
++from south.v2 import SchemaMigration
++
++from guardian.compat import user_model_label
++
++
++class Migration(SchemaMigration):
++
++    def forwards(self, orm):
++
++        # Adding field 'GroupObjectPermission.object_pk'
++        db.add_column('guardian_groupobjectpermission', 'object_pk', self.gf('django.db.models.fields.TextField')(default=''), keep_default=False)
++
++        # Adding field 'UserObjectPermission.object_pk'
++        db.add_column('guardian_userobjectpermission', 'object_pk', self.gf('django.db.models.fields.TextField')(default=''), keep_default=False)
++
++
++    def backwards(self, orm):
++
++        # Deleting field 'GroupObjectPermission.object_pk'
++        db.delete_column('guardian_groupobjectpermission', 'object_pk')
++
++        # Deleting field 'UserObjectPermission.object_pk'
++        db.delete_column('guardian_userobjectpermission', 'object_pk')
++
++
++    models = {
++        'auth.group': {
++            'Meta': {'object_name': 'Group'},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
++            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
++        },
++        'auth.permission': {
++            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
++            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
++            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
++        },
++        user_model_label: {
++            'Meta': {'object_name': user_model_label.split('.')[-1]},
++            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
++            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
++            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
++            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
++            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
++            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
++            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
++            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
++            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
++        },
++        'contenttypes.contenttype': {
++            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
++            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
++        },
++        'guardian.groupobjectpermission': {
++            'Meta': {'unique_together': "(['group', 'permission', 'content_type', 'object_id'],)", 'object_name': 'GroupObjectPermission'},
++            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
++            'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
++            'object_pk': ('django.db.models.fields.TextField', [], {'default': "''"}),
++            'permission': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Permission']"})
++        },
++        'guardian.userobjectpermission': {
++            'Meta': {'unique_together': "(['user', 'permission', 'content_type', 'object_id'],)", 'object_name': 'UserObjectPermission'},
++            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
++            'object_pk': ('django.db.models.fields.TextField', [], {'default': "''"}),
++            'permission': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Permission']"}),
++            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['%s']" % user_model_label})
++        }
++    }
++
++    complete_apps = ['guardian']
+--- /dev/null
++++ django-guardian-1.2.4/guardian/south_migrations/0003_update_objectpermission_object_pk.py
+@@ -0,0 +1,86 @@
++# encoding: utf-8
++from south.v2 import DataMigration
++
++from guardian.compat import user_model_label
++
++
++class Migration(DataMigration):
++
++    def forwards(self, orm):
++        """
++        Updates ``object_pk`` fields on both ``UserObjectPermission`` and
++        ``GroupObjectPermission`` from ``object_id`` values.
++        """
++        for Model in [orm.UserObjectPermission, orm.GroupObjectPermission]:
++            for obj in Model.objects.all():
++                obj.object_pk = str(obj.object_id)
++                obj.save()
++
++    def backwards(self, orm):
++        """
++        Updates ``object_id`` fields on both ``UserObjectPermission`` and
++        ``GroupObjectPermission`` from ``object_pk`` values.
++        """
++        for Model in [orm.UserObjectPermission, orm.GroupObjectPermission]:
++            for obj in Model.objects.all():
++                obj.object_id = int(obj.object_pk)
++                obj.save()
++
++    models = {
++        'auth.group': {
++            'Meta': {'object_name': 'Group'},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
++            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
++        },
++        'auth.permission': {
++            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
++            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
++            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
++        },
++        user_model_label: {
++            'Meta': {'object_name': user_model_label.split('.')[-1]},
++            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
++            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
++            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
++            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
++            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
++            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
++            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
++            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
++            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
++        },
++        'contenttypes.contenttype': {
++            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
++            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
++        },
++        'guardian.groupobjectpermission': {
++            'Meta': {'unique_together': "(['group', 'permission', 'content_type', 'object_id'],)", 'object_name': 'GroupObjectPermission'},
++            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
++            'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
++            'object_pk': ('django.db.models.fields.TextField', [], {'default': "''"}),
++            'permission': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Permission']"})
++        },
++        'guardian.userobjectpermission': {
++            'Meta': {'unique_together': "(['user', 'permission', 'content_type', 'object_id'],)", 'object_name': 'UserObjectPermission'},
++            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
++            'object_pk': ('django.db.models.fields.TextField', [], {'default': "''"}),
++            'permission': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Permission']"}),
++            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['%s']" % user_model_label})
++        }
++    }
++
++    complete_apps = ['guardian']
+--- /dev/null
++++ django-guardian-1.2.4/guardian/south_migrations/0004_auto__del_field_groupobjectpermission_object_id__del_unique_groupobjec.py
+@@ -0,0 +1,107 @@
++# encoding: utf-8
++from south.db import db
++from south.v2 import SchemaMigration
++
++from guardian.compat import user_model_label
++
++
++class Migration(SchemaMigration):
++
++    def forwards(self, orm):
++
++        # Changing field 'GroupObjectPermission.object_pk'
++        db.alter_column('guardian_groupobjectpermission', 'object_pk', self.gf('django.db.models.fields.CharField')(max_length=255))
++
++        # Changing field 'UserObjectPermission.object_pk'
++        db.alter_column('guardian_userobjectpermission', 'object_pk', self.gf('django.db.models.fields.CharField')(max_length=255))
++
++        # Removing unique constraint on 'UserObjectPermission', fields ['object_id', 'user', 'content_type', 'permission']
++        db.delete_unique('guardian_userobjectpermission', ['object_id', 'user_id', 'content_type_id', 'permission_id'])
++
++        # Removing unique constraint on 'GroupObjectPermission', fields ['group', 'object_id', 'content_type', 'permission']
++        db.delete_unique('guardian_groupobjectpermission', ['group_id', 'object_id', 'content_type_id', 'permission_id'])
++
++        # Adding unique constraint on 'GroupObjectPermission', fields ['object_pk', 'group', 'content_type', 'permission']
++        db.create_unique('guardian_groupobjectpermission', ['object_pk', 'group_id', 'content_type_id', 'permission_id'])
++
++        # Adding unique constraint on 'UserObjectPermission', fields ['object_pk', 'user', 'content_type', 'permission']
++        db.create_unique('guardian_userobjectpermission', ['object_pk', 'user_id', 'content_type_id', 'permission_id'])
++
++
++    def backwards(self, orm):
++
++        # Changing field 'GroupObjectPermission.object_pk'
++        db.alter_column('guardian_groupobjectpermission', 'object_pk', self.gf('django.db.models.fields.TextField')())
++
++        # Changing field 'UserObjectPermission.object_pk'
++        db.alter_column('guardian_userobjectpermission', 'object_pk', self.gf('django.db.models.fields.TextField')())
++
++        # Removing unique constraint on 'UserObjectPermission', fields ['object_pk', 'user', 'content_type', 'permission']
++        db.delete_unique('guardian_userobjectpermission', ['object_pk', 'user_id', 'content_type_id', 'permission_id'])
++
++        # Removing unique constraint on 'GroupObjectPermission', fields ['object_pk', 'group', 'content_type', 'permission']
++        db.delete_unique('guardian_groupobjectpermission', ['object_pk', 'group_id', 'content_type_id', 'permission_id'])
++
++        # Adding unique constraint on 'GroupObjectPermission', fields ['group', 'object_id', 'content_type', 'permission']
++        db.create_unique('guardian_groupobjectpermission', ['group_id', 'object_id', 'content_type_id', 'permission_id'])
++
++        # Adding unique constraint on 'UserObjectPermission', fields ['object_id', 'user', 'content_type', 'permission']
++        db.create_unique('guardian_userobjectpermission', ['object_id', 'user_id', 'content_type_id', 'permission_id'])
++
++
++    models = {
++        'auth.group': {
++            'Meta': {'object_name': 'Group'},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
++            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
++        },
++        'auth.permission': {
++            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
++            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
++            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
++        },
++        user_model_label: {
++            'Meta': {'object_name': user_model_label.split('.')[-1]},
++            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
++            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
++            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
++            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
++            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
++            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
++            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
++            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
++            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
++        },
++        'contenttypes.contenttype': {
++            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
++            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
++        },
++        'guardian.groupobjectpermission': {
++            'Meta': {'unique_together': "(['group', 'permission', 'content_type', 'object_pk'],)", 'object_name': 'GroupObjectPermission'},
++            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
++            'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'object_pk': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'permission': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Permission']"})
++        },
++        'guardian.userobjectpermission': {
++            'Meta': {'unique_together': "(['user', 'permission', 'content_type', 'object_pk'],)", 'object_name': 'UserObjectPermission'},
++            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'object_pk': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'permission': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Permission']"}),
++            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['%s']" % user_model_label})
++        }
++    }
++
++    complete_apps = ['guardian']
+--- /dev/null
++++ django-guardian-1.2.4/guardian/south_migrations/0005_auto__chg_field_groupobjectpermission_object_pk__chg_field_userobjectp.py
+@@ -0,0 +1,84 @@
++# encoding: utf-8
++from south.db import db
++from south.v2 import SchemaMigration
++
++from guardian.compat import user_model_label
++
++
++class Migration(SchemaMigration):
++
++    def forwards(self, orm):
++
++        # Deleting field 'GroupObjectPermission.object_id'
++        db.delete_column('guardian_groupobjectpermission', 'object_id')
++
++        # Deleting field 'UserObjectPermission.object_id'
++        db.delete_column('guardian_userobjectpermission', 'object_id')
++
++
++    def backwards(self, orm):
++
++        # We cannot add back in field 'GroupObjectPermission.object_id'
++        raise RuntimeError(
++            "Cannot reverse this migration. 'GroupObjectPermission.object_id' and its values cannot be restored.")
++
++        # We cannot add back in field 'UserObjectPermission.object_id'
++        raise RuntimeError(
++            "Cannot reverse this migration. 'UserObjectPermission.object_id' and its values cannot be restored.")
++
++    models = {
++        'auth.group': {
++            'Meta': {'object_name': 'Group'},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
++            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
++        },
++        'auth.permission': {
++            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
++            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
++            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
++        },
++        user_model_label: {
++            'Meta': {'object_name': user_model_label.split('.')[-1]},
++            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
++            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
++            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
++            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
++            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
++            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
++            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
++            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
++            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
++            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
++        },
++        'contenttypes.contenttype': {
++            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
++            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
++        },
++        'guardian.groupobjectpermission': {
++            'Meta': {'unique_together': "(['group', 'permission', 'content_type', 'object_pk'],)", 'object_name': 'GroupObjectPermission'},
++            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
++            'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'object_pk': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'permission': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Permission']"})
++        },
++        'guardian.userobjectpermission': {
++            'Meta': {'unique_together': "(['user', 'permission', 'content_type', 'object_pk'],)", 'object_name': 'UserObjectPermission'},
++            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'object_pk': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'permission': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Permission']"}),
++            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['%s']" % user_model_label})
++        }
++    }
++
++    complete_apps = ['guardian']
diff --git a/debian/patches/0006-Inlude-staticfiles-in-INSTALLED_APPS-only-once.patch b/debian/patches/0006-Inlude-staticfiles-in-INSTALLED_APPS-only-once.patch
new file mode 100644
index 0000000..92a7d2b
--- /dev/null
+++ b/debian/patches/0006-Inlude-staticfiles-in-INSTALLED_APPS-only-once.patch
@@ -0,0 +1,19 @@
+Description: Inlude staticfiles in INSTALLED_APPS only once.
+Author: Brian May <brian at microcomaustralia.com.au>
+Bug-Debian: https://bugs.debian.org/758381
+Origin: https://github.com/brianmay/django-guardian/blob/master/debian/patches/0006-Inlude-staticfiles-in-INSTALLED_APPS-only-once.patch
+Last-Update: 2014-08-25
+
+--- django-guardian-1.2.4.orig/example_project/settings.py
++++ django-guardian-1.2.4/example_project/settings.py
+@@ -40,10 +40,6 @@ INSTALLED_APPS = (
+     'core',
+     'integration_tests',
+ )
+-if django.VERSION < (1, 3):
+-    INSTALLED_APPS += ('staticfiles',)
+-else:
+-    INSTALLED_APPS += ('django.contrib.staticfiles',)
+ 
+ if 'GUARDIAN_NO_TESTS_APP' in os.environ:
+     _apps = list(INSTALLED_APPS)
diff --git a/debian/patches/0007-Name-INSTALLED_APPS-consistantly.patch b/debian/patches/0007-Name-INSTALLED_APPS-consistantly.patch
new file mode 100644
index 0000000..896e39e
--- /dev/null
+++ b/debian/patches/0007-Name-INSTALLED_APPS-consistantly.patch
@@ -0,0 +1,21 @@
+Description: Name INSTALLED_APPS consistantly.
+Author: Brian May <brian at microcomaustralia.com.au>
+Bug-Debian: https://bugs.debian.org/758381
+Origin: https://github.com/brianmay/django-guardian/blob/master/debian/patches/0007-Name-INSTALLED_APPS-consistantly.patch
+Last-Update: 2014-08-25
+
+--- django-guardian-1.2.4.orig/example_project/settings.py
++++ django-guardian-1.2.4/example_project/settings.py
+@@ -36,9 +36,9 @@ INSTALLED_APPS = (
+     'django.contrib.staticfiles',
+     'guardian',
+     'guardian.testapp',
+-    'posts',
+-    'core',
+-    'integration_tests',
++    'example_project.posts',
++    'example_project.core',
++    'example_project.integration_tests',
+ )
+ 
+ if 'GUARDIAN_NO_TESTS_APP' in os.environ:
diff --git a/debian/patches/0008-Fix-conflicting-related_name.patch b/debian/patches/0008-Fix-conflicting-related_name.patch
new file mode 100644
index 0000000..ec0e72d
--- /dev/null
+++ b/debian/patches/0008-Fix-conflicting-related_name.patch
@@ -0,0 +1,29 @@
+Description: Fix conflicting related_name.
+Author: Brian May <brian at microcomaustralia.com.au>
+Bug-Debian: https://bugs.debian.org/758381
+Origin: https://github.com/brianmay/django-guardian/blob/master/debian/patches/0008-Fix-conflicting-related_name.patch
+Last-Update: 2014-08-25
+
+--- django-guardian-1.2.4.orig/example_project/core/models.py
++++ django-guardian-1.2.4/example_project/core/models.py
+@@ -1,9 +1,9 @@
+-from django.contrib.auth.models import AbstractUser
+ from django.db import models
++from guardian.testapp.models import CustomUser as BaseCustomUser
+ import datetime
+ 
+ 
+-class CustomUser(AbstractUser):
++class CustomUser(BaseCustomUser):
+     real_username = models.CharField(max_length=120, unique=True)
+     birth_date = models.DateField(null=True, blank=True)
+ 
+--- django-guardian-1.2.4.orig/guardian/testapp/models.py
++++ django-guardian-1.2.4/guardian/testapp/models.py
+@@ -61,4 +61,4 @@ class LogEntryWithGroup(LogEntry):
+ if django.VERSION > (1, 5):
+     from django.contrib.auth.models import AbstractUser
+     class CustomUser(AbstractUser, GuardianUserMixin):
+-        custom_id = models.AutoField(primary_key=True)
+\ No newline at end of file
++        custom_id = models.AutoField(primary_key=True)
diff --git a/debian/patches/0009-Add-Django-1.7-migrations.patch b/debian/patches/0009-Add-Django-1.7-migrations.patch
new file mode 100644
index 0000000..589fb77
--- /dev/null
+++ b/debian/patches/0009-Add-Django-1.7-migrations.patch
@@ -0,0 +1,155 @@
+Description: Add Django 1.7 migrations.
+Author: Brian May <brian at microcomaustralia.com.au>
+Bug-Debian: https://bugs.debian.org/758381
+Origin: https://github.com/brianmay/django-guardian/blob/master/debian/patches/0009-Add-Django-1.7-migrations.patch
+Last-Update: 2014-08-25
+
+--- /dev/null
++++ django-guardian-1.2.4/guardian/testapp/migrations/0001_initial.py
+@@ -0,0 +1,117 @@
++# -*- coding: utf-8 -*-
++from __future__ import unicode_literals
++
++from django.db import models, migrations
++import datetime
++import guardian.mixins
++import django.utils.timezone
++from django.conf import settings
++import django.core.validators
++
++
++class Migration(migrations.Migration):
++
++    dependencies = [
++        ('auth', '0001_initial'),
++        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
++    ]
++
++    operations = [
++        migrations.CreateModel(
++            name='CustomUser',
++            fields=[
++                ('password', models.CharField(max_length=128, verbose_name='password')),
++                ('last_login', models.DateTimeField(default=django.utils.timezone.now, verbose_name='last login')),
++                ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')),
++                ('username', models.CharField(help_text='Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.', unique=True, max_length=30, verbose_name='username', validators=[django.core.validators.RegexValidator('^[\\w. at +-]+$', 'Enter a valid username.', 'invalid')])),
++                ('first_name', models.CharField(max_length=30, verbose_name='first name', blank=True)),
++                ('last_name', models.CharField(max_length=30, verbose_name='last name', blank=True)),
++                ('email', models.EmailField(max_length=75, verbose_name='email address', blank=True)),
++                ('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')),
++                ('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')),
++                ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')),
++                ('custom_id', models.AutoField(serialize=False, primary_key=True)),
++                ('groups', models.ManyToManyField(related_query_name='user', related_name='user_set', to='auth.Group', blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of his/her group.', verbose_name='groups')),
++                ('user_permissions', models.ManyToManyField(related_query_name='user', related_name='user_set', to='auth.Permission', blank=True, help_text='Specific permissions for this user.', verbose_name='user permissions')),
++            ],
++            options={
++                'abstract': False,
++                'verbose_name': 'user',
++                'verbose_name_plural': 'users',
++            },
++            bases=(models.Model, guardian.mixins.GuardianUserMixin),
++        ),
++        migrations.CreateModel(
++            name='Mixed',
++            fields=[
++                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
++                ('name', models.CharField(unique=True, max_length=128)),
++            ],
++            options={
++            },
++            bases=(models.Model,),
++        ),
++        migrations.CreateModel(
++            name='MixedGroupObjectPermission',
++            fields=[
++                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
++                ('content_object', models.ForeignKey(to='testapp.Mixed')),
++                ('group', models.ForeignKey(to='auth.Group')),
++                ('permission', models.ForeignKey(to='auth.Permission')),
++            ],
++            options={
++                'abstract': False,
++            },
++            bases=(models.Model,),
++        ),
++        migrations.CreateModel(
++            name='Project',
++            fields=[
++                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
++                ('name', models.CharField(unique=True, max_length=128)),
++                ('created_at', models.DateTimeField(default=datetime.datetime.now)),
++            ],
++            options={
++                'get_latest_by': 'created_at',
++            },
++            bases=(models.Model,),
++        ),
++        migrations.CreateModel(
++            name='ProjectGroupObjectPermission',
++            fields=[
++                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
++                ('content_object', models.ForeignKey(to='testapp.Project')),
++                ('group', models.ForeignKey(to='auth.Group')),
++                ('permission', models.ForeignKey(to='auth.Permission')),
++            ],
++            options={
++                'abstract': False,
++            },
++            bases=(models.Model,),
... 8815 lines suppressed ...

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/django-guardian.git



More information about the Python-modules-commits mailing list