%global _empty_manifest_terminate_build 0 Name: python-django-orderable Version: 6.1.1 Release: 1 Summary: Add manual sort order to Django objects via an abstract base class and admin classes. License: BSD URL: https://github.com/incuna/django-orderable Source0: https://mirrors.aliyun.com/pypi/web/packages/8f/66/96e5a95b7465d56c44b9ddf05355a18885e4b2e70652a4765e1672b72621/django-orderable-6.1.1.tar.gz BuildArch: noarch %description # Django Orderable Add manual sort order to Django objects via an abstract base class and admin classes. Project includes: * Abstract base Model * Admin class * Inline admin class * Admin templates ## Demo ![django-orderable demo](https://cloud.githubusercontent.com/assets/30606/6326221/667992e0-bb47-11e4-923e-29334573ff5c.gif) ## Installation Grab from the PyPI: pip install django-orderable Add to your INSTALLED_APPS: ... 'orderable', ... Subclass the Orderable class: from orderable.models import Orderable class Book(Orderable): ... Subclass the appropriate Orderable admin classes: from orderable.admin import OrderableAdmin, OrderableTabularInline class SomeInlineClass(OrderableTabularInline): ... class SomeAdminClass(OrderableAdmin): list_display = ('__unicode__', 'sort_order_display') ... jQuery and jQuery UI are used in the Admin for the draggable UI. You may override the versions with your own (rather than using Google's CDN): class SomeAdminClass(OrderableAdmin): class Media: extend = False js = ( 'path/to/jquery.js', 'path/to/jquery.ui.js', ) ## Notes ### `class Meta` If your subclass of `Orderable` defines [`class Meta`](https://docs.djangoproject.com/en/2.0/ref/models/options/) then make sure it subclasses `Orderable.Meta` one so the model is sorted by `sort_order`. ie: class MyOrderable(Orderable): class Meta(Orderable.Meta): ... ### Custom Managers Similarly, if your model has a custom manager, subclass `orderable.managers.OrderableManager` instead of `django.db.models.Manager`. ### Transactions Saving orderable models invokes a fair number of database queries, and in order to avoid race conditions should be run in a transaction. ### Adding Orderable to Existing Models You will need to populate the required `sort_order` field. Typically this is done by adding the field in one migration with a default of `0`, then creating a data migration to set the value to that of its primary key: for obj in orm['appname.Model'].objects.all(): obj.sort_order = obj.pk obj.save() ### Multiple Models using Orderable When multiple models inherit from Orderable the `next()` and `previous()` methods will look for the next/previous model with a sort order. However you'll likely want to have the various sort orders determined by a foreign key or some other predicate. The easiest way (currently) is to override the method in question. %package -n python3-django-orderable Summary: Add manual sort order to Django objects via an abstract base class and admin classes. Provides: python-django-orderable BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-django-orderable # Django Orderable Add manual sort order to Django objects via an abstract base class and admin classes. Project includes: * Abstract base Model * Admin class * Inline admin class * Admin templates ## Demo ![django-orderable demo](https://cloud.githubusercontent.com/assets/30606/6326221/667992e0-bb47-11e4-923e-29334573ff5c.gif) ## Installation Grab from the PyPI: pip install django-orderable Add to your INSTALLED_APPS: ... 'orderable', ... Subclass the Orderable class: from orderable.models import Orderable class Book(Orderable): ... Subclass the appropriate Orderable admin classes: from orderable.admin import OrderableAdmin, OrderableTabularInline class SomeInlineClass(OrderableTabularInline): ... class SomeAdminClass(OrderableAdmin): list_display = ('__unicode__', 'sort_order_display') ... jQuery and jQuery UI are used in the Admin for the draggable UI. You may override the versions with your own (rather than using Google's CDN): class SomeAdminClass(OrderableAdmin): class Media: extend = False js = ( 'path/to/jquery.js', 'path/to/jquery.ui.js', ) ## Notes ### `class Meta` If your subclass of `Orderable` defines [`class Meta`](https://docs.djangoproject.com/en/2.0/ref/models/options/) then make sure it subclasses `Orderable.Meta` one so the model is sorted by `sort_order`. ie: class MyOrderable(Orderable): class Meta(Orderable.Meta): ... ### Custom Managers Similarly, if your model has a custom manager, subclass `orderable.managers.OrderableManager` instead of `django.db.models.Manager`. ### Transactions Saving orderable models invokes a fair number of database queries, and in order to avoid race conditions should be run in a transaction. ### Adding Orderable to Existing Models You will need to populate the required `sort_order` field. Typically this is done by adding the field in one migration with a default of `0`, then creating a data migration to set the value to that of its primary key: for obj in orm['appname.Model'].objects.all(): obj.sort_order = obj.pk obj.save() ### Multiple Models using Orderable When multiple models inherit from Orderable the `next()` and `previous()` methods will look for the next/previous model with a sort order. However you'll likely want to have the various sort orders determined by a foreign key or some other predicate. The easiest way (currently) is to override the method in question. %package help Summary: Development documents and examples for django-orderable Provides: python3-django-orderable-doc %description help # Django Orderable Add manual sort order to Django objects via an abstract base class and admin classes. Project includes: * Abstract base Model * Admin class * Inline admin class * Admin templates ## Demo ![django-orderable demo](https://cloud.githubusercontent.com/assets/30606/6326221/667992e0-bb47-11e4-923e-29334573ff5c.gif) ## Installation Grab from the PyPI: pip install django-orderable Add to your INSTALLED_APPS: ... 'orderable', ... Subclass the Orderable class: from orderable.models import Orderable class Book(Orderable): ... Subclass the appropriate Orderable admin classes: from orderable.admin import OrderableAdmin, OrderableTabularInline class SomeInlineClass(OrderableTabularInline): ... class SomeAdminClass(OrderableAdmin): list_display = ('__unicode__', 'sort_order_display') ... jQuery and jQuery UI are used in the Admin for the draggable UI. You may override the versions with your own (rather than using Google's CDN): class SomeAdminClass(OrderableAdmin): class Media: extend = False js = ( 'path/to/jquery.js', 'path/to/jquery.ui.js', ) ## Notes ### `class Meta` If your subclass of `Orderable` defines [`class Meta`](https://docs.djangoproject.com/en/2.0/ref/models/options/) then make sure it subclasses `Orderable.Meta` one so the model is sorted by `sort_order`. ie: class MyOrderable(Orderable): class Meta(Orderable.Meta): ... ### Custom Managers Similarly, if your model has a custom manager, subclass `orderable.managers.OrderableManager` instead of `django.db.models.Manager`. ### Transactions Saving orderable models invokes a fair number of database queries, and in order to avoid race conditions should be run in a transaction. ### Adding Orderable to Existing Models You will need to populate the required `sort_order` field. Typically this is done by adding the field in one migration with a default of `0`, then creating a data migration to set the value to that of its primary key: for obj in orm['appname.Model'].objects.all(): obj.sort_order = obj.pk obj.save() ### Multiple Models using Orderable When multiple models inherit from Orderable the `next()` and `previous()` methods will look for the next/previous model with a sort order. However you'll likely want to have the various sort orders determined by a foreign key or some other predicate. The easiest way (currently) is to override the method in question. %prep %autosetup -n django-orderable-6.1.1 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-django-orderable -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Fri Jun 09 2023 Python_Bot - 6.1.1-1 - Package Spec generated