diff --git a/python-django-mptt.spec b/python-django-mptt.spec index b5f9afd..6a189bc 100644 --- a/python-django-mptt.spec +++ b/python-django-mptt.spec @@ -1,21 +1,31 @@ +%bcond_without python3 + %global pkgname django-mptt %global obs_ver 0.4.2-4 Summary: Utilities for implementing Modified Preorder Tree Traversal Name: python-django-mptt Version: 0.6.0 -Release: 1%{?dist} +Release: 2%{?dist} License: MIT Group: Development/Libraries URL: http://github.com/django-mptt/django-mptt Source: http://pypi.python.org/packages/source/d/%{pkgname}/%{pkgname}-%{version}.tar.gz +Patch0: python_2_unicode_compatible.patch BuildArch: noarch BuildRequires: python2-devel BuildRequires: python-setuptools +%if 0%{?with_python3} +BuildRequires: python3-devel +BuildRequires: python3-setuptools +%endif # required for check-section BuildRequires: python-django +%if 0%{?with_python3} +BuildRequires: python3-django +%endif Requires: python-django @@ -28,24 +38,74 @@ Obsoletes: %{pkgname} < %{obs_ver} Utilities for implementing Modified Preorder Tree Traversal (MPTT) with your Django Model classes and working with trees of Model instances. + +%if 0%{?with_python3} +%package -n python3-django-mptt +Summary: Utilities for implementing Modified Preorder Tree Traversal +Group: Development/Libraries + +Requires: python3-django + +%description -n python3-django-mptt +Utilities for implementing Modified Preorder Tree Traversal (MPTT) +with your Django Model classes and working with trees of Model instances. +%endif + %prep %setup -q -n %{pkgname}-%{version} +%patch0 -p1 #remove unnecessary language ressources: # de dk,fr, pl rm mptt/locale/??/LC_MESSAGES/django.po +%if 0%{?with_python3} +cp -a . %{py3dir} +%endif + + %build %{__python} setup.py build +%if 0%{?with_python3} +pushd %{py3dir} +%{__python3} setup.py build +popd +%endif # with_python3 + + %install %{__python} setup.py install -O1 --skip-build --root="%{buildroot}" --prefix="%{_prefix}" +%if 0%{?with_python3} +pushd %{py3dir} +%{__python3} setup.py install -O1 --skip-build --root="%{buildroot}" --prefix="%{_prefix}" +popd +%endif # with_python3 + + %find_lang django +%if 0%{?with_python3} +# When creating Python3 package, separate lang to Python 2 and Python 3 files +grep python3 django.lang > python3-django.lang +grep python2 django.lang > python2-django.lang +mv {python2-,}django.lang +%endif # with_python3 + + %check cd tests sh runtests.sh +%if 0%{?with_python3} +pushd %{py3dir} +cd tests +sed -i s/django-admin/python3-django-admin/ runtests.sh +sh runtests.sh +popd +%endif # with_python3 + + %files -f django.lang %doc LICENSE README.rst NOTES %{python_sitelib}/django_mptt-%{version}-py2.*.egg-info @@ -54,7 +114,23 @@ sh runtests.sh %{python_sitelib}/mptt/templates %{python_sitelib}/mptt/templatetags + +%if 0%{?with_python3} +%files -n python3-django-mptt -f python3-django.lang +%doc LICENSE README.rst NOTES +%{python3_sitelib}/django_mptt-%{version}-py3.*.egg-info +%dir %{python_sitelib}/mptt +%{python3_sitelib}/mptt/*.py +%{python3_sitelib}/mptt/templates +%{python3_sitelib}/mptt/templatetags +%{python3_sitelib}/mptt/__pycache__ +%endif # with_python3 + + %changelog +* Mon Nov 25 2013 Jakub Dorňák - 0.6.0-2 +- added python3 subpackage + * Mon Aug 19 2013 Matthias Runge - 0.6.0-1 - update to 0.6.0 - fix ftbfs diff --git a/python_2_unicode_compatible.patch b/python_2_unicode_compatible.patch new file mode 100644 index 0000000..f0efe96 --- /dev/null +++ b/python_2_unicode_compatible.patch @@ -0,0 +1,91 @@ +--- django-mptt-0.6.0/tests/myapp/models.py.orig 2013-11-26 11:47:22.059160623 +0100 ++++ django-mptt-0.6.0/tests/myapp/models.py 2013-11-26 11:51:05.432683714 +0100 +@@ -12,11 +12,11 @@ class CustomTreeManager(TreeManager): + pass + + ++@python_2_unicode_compatible + class Category(MPTTModel): + name = models.CharField(max_length=50) + parent = models.ForeignKey('self', null=True, blank=True, related_name='children') + +- @python_2_unicode_compatible + def __str__(self): + return self.name + +@@ -24,11 +24,11 @@ class Category(MPTTModel): + super(Category, self).delete() + + ++@python_2_unicode_compatible + class Genre(MPTTModel): + name = models.CharField(max_length=50, unique=True) + parent = models.ForeignKey('self', null=True, blank=True, related_name='children') + +- @python_2_unicode_compatible + def __str__(self): + return self.name + +@@ -37,6 +37,7 @@ class Insert(MPTTModel): + parent = models.ForeignKey('self', null=True, blank=True, related_name='children') + + ++@python_2_unicode_compatible + class MultiOrder(MPTTModel): + name = models.CharField(max_length=50) + size = models.PositiveIntegerField() +@@ -46,7 +47,6 @@ class MultiOrder(MPTTModel): + class MPTTMeta: + order_insertion_by = ['name', 'size', '-date'] + +- @python_2_unicode_compatible + def __str__(self): + return self.name + +@@ -61,6 +61,7 @@ class Node(MPTTModel): + tree_id_attr = 'work' + + ++@python_2_unicode_compatible + class OrderedInsertion(MPTTModel): + name = models.CharField(max_length=50) + parent = models.ForeignKey('self', null=True, blank=True, related_name='children') +@@ -68,7 +69,6 @@ class OrderedInsertion(MPTTModel): + class MPTTMeta: + order_insertion_by = ['name'] + +- @python_2_unicode_compatible + def __str__(self): + return self.name + +@@ -84,6 +84,7 @@ class NewStyleMPTTMeta(MPTTModel): + left_attr = 'testing' + + ++@python_2_unicode_compatible + class Person(MPTTModel): + name = models.CharField(max_length=50) + parent = models.ForeignKey('self', null=True, blank=True, related_name='children') +@@ -92,7 +93,6 @@ class Person(MPTTModel): + objects = models.Manager() + my_tree_manager = CustomTreeManager() + +- @python_2_unicode_compatible + def __str__(self): + return self.name + +@@ -101,13 +101,13 @@ class Student(Person): + type = models.CharField(max_length=50) + + ++@python_2_unicode_compatible + class CustomPKName(MPTTModel): + my_id = models.AutoField(db_column='my_custom_name', primary_key=True) + name = models.CharField(max_length=50) + parent = models.ForeignKey('self', null=True, blank=True, + related_name='children', db_column="my_cusom_parent") + +- @python_2_unicode_compatible + def __str__(self): + return self.name +