diff options
| author | CoprDistGit <infra@openeuler.org> | 2023-04-11 21:09:25 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2023-04-11 21:09:25 +0000 |
| commit | e79060247865fe7c8f95ba0303fcae429276c886 (patch) | |
| tree | da9505c57b3a538123e7f75607d0b8eee3807f0b | |
| parent | 047a6159a1d81d6ced8bab7f504c687f089b6ed1 (diff) | |
automatic import of python-django-prices
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-django-prices.spec | 466 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 468 insertions, 0 deletions
@@ -0,0 +1 @@ +/django-prices-2.3.0.tar.gz diff --git a/python-django-prices.spec b/python-django-prices.spec new file mode 100644 index 0000000..c9804cc --- /dev/null +++ b/python-django-prices.spec @@ -0,0 +1,466 @@ +%global _empty_manifest_terminate_build 0 +Name: python-django-prices +Version: 2.3.0 +Release: 1 +Summary: Django fields for the prices module +License: BSD +URL: https://github.com/mirumee/django-prices +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/fb/8d/514f2caef68ec87124b8ec275be307bcc4771398257d1e43245dcfd201a4/django-prices-2.3.0.tar.gz +BuildArch: noarch + +Requires: python3-Babel +Requires: python3-Django +Requires: python3-enmerkar +Requires: python3-prices + +%description +[](https://travis-ci.org/mirumee/django-prices) [](http://codecov.io/github/mirumee/django-prices?branch=master) +# Installation +* `pip install django-prices` +* Add `django_prices` to your `INSTALLED_APPS` at `settings.py` +* Follow `enmerkar` [instructions](https://github.com/Zegocover/enmerkar#using-the-middleware) and update both your `INSTALLED_APPS` and `MIDDLEWARE_CLASSES`. +# Features +Provides support for models: +```python +from django.db import models +from django_prices.models import MoneyField, TaxedMoneyField +class Model(models.Model): + currency = models.CharField(max_length=3, default="BTC") + price_net_amount = models.DecimalField(max_digits=9, decimal_places=2, default="5") + price_net = MoneyField(amount_field="price_net_amount", currency_field="currency") + price_gross_amount = models.DecimalField( + max_digits=9, decimal_places=2, default="5" + ) + price_gross = MoneyField( + amount_field="price_gross_amount", currency_field="currency" + ) + price = TaxedMoneyField( + net_amount_field="price_net_amount", + gross_amount_field="price_gross_amount", + currency="currency", + ) +``` +And forms: +```python +from django import forms +from django_prices.forms import MoneyField +AVAILABLE_CURRENCIES = ["BTC", "USD"] +class ProductForm(forms.Form): + name = forms.CharField(label="Name") + price_net = MoneyField(label="net", available_currencies=AVAILABLE_CURRENCIES) +``` +And validators: +```python +from django import forms +from prices.forms import Money +from django_prices.forms import MoneyField +from django_prices.validators import ( + MaxMoneyValidator, MinMoneyValidator, MoneyPrecisionValidator) +class DonateForm(forms.Form): + donator_name = forms.CharField(label="Your name") + donation = MoneyField( + label="net", + available_currencies=["BTC", "USD"], + max_digits=9, + decimal_places=2, + validators=[ + MoneyPrecisionValidator(), + MinMoneyValidator(Money(5, "USD")), + MaxMoneyValidator(Money(500, "USD")), + ], + ) +``` +It also provides support for templates: +```html+django +{% load prices %} +<p>Price: {{ foo.price.gross|amount }} ({{ foo.price.net|amount }} + {{ foo.price.tax|amount }} tax)</p> +``` +You can also use HTML output from `prices` template tags, they will wrap currency symbol in a `<span>` element: +```html+django +{% load prices %} +<p>Price: {{ foo.price.gross|amount:'html' }} ({{ foo.price.net|amount:'html' }} + {{ foo.price.tax|amount:'html' }} tax)</p> +``` +It will be rendered as a following structure (for example with English locale): +```html +<span class="currency">$</span>15.00 +``` +## How to migrate to django-prices 2.0 +Version 2.0 introduces major changes to how prices data is stored in models, enabling setting price's currency per model instance. +Steps to migrate: +1. In your **forms**: + * remove the `currency` argument + * add `available_currencies` with available choices. + If the form specified `MoneyFields` in `fields` option, replace those with explicit declarations instead: + ```python + AVAILABLE_CURRENCIES = [("BTC", "bitcoins"), ("USD", "US dollar")] + class ModelForm(forms.ModelForm): + class Meta: + model = models.Model + fields = [] + price_net = MoneyField(available_currencies=AVAILABLE_CURRENCIES) + ``` +1. In your **models** using `MoneyField`: + * Replace all occurrences of the `MoneyField` class with `DecimalField` + * Remove the `currency` argument from them + * Change `default` from Money instance to value acceptable by Decimal field + Example of code: + ```python + price_net = MoneyField( + "net", currency="BTC", default=Money("5", "BTC"), max_digits=9, decimal_places=2 + ) + ``` + Updated code: + ```python + price_net = models.DecimalField("net", default="5", max_digits=9, decimal_places=2) + ``` +1. In your **migration** files: + * Replace all occurrences of the `MoneyField` class with `DecimalField` + * Remove the `currency` argument from them + * Change `default` from Money instance to value acceptable by Decimal field + ```python + field = django_prices.models.MoneyField(currency='BTC', decimal_places=2, default='5', max_digits=9, verbose_name='net') + ``` + Updated code: + ```python + field = models.DecimalField(decimal_places=2, default='5', max_digits=9, verbose_name='net') + ``` +1. Rename fields in **models**. Your old field will still store amount of money, so probably the best choice would be `price_net_amount` instead `price_net`. +1. All places which use Models and it's fields can prevent django app from even starting the code. Possible issues: code tries to access non existing fields. Exclude those fields for now from your ModelForms, Graphene types etc. +1. Run `python manage.py makemigrations`. Make sure to do this step before adding new `MoneyFields` to model! If not, django will generate `delete/create` migrations instead of `rename`. +1. Run `python manage.py migrate`. +1. Update `django-prices`. +1. Add `models.CharField` for currency and `MoneyField` to your models: + ```python + currency = models.CharField(max_length=3, default="BTC") + price_net_amount = models.DecimalField("net", default="5", max_digits=9, decimal_places=2) + price_net = MoneyField(amount_field="price_net_amount", currency_field="currency") + ``` +1. Run `python manage.py makemigrations` and `python manage.py migrate`. +1. Change `TaxedMoneyField` declaration: + ```python + price = TaxedMoneyField( + net_amount_field="price_net_amount", + gross_amount_field="price_gross_amount", + currency="currency", + ) + ``` +1. Remember to address changes in previously edited ModelForms + +%package -n python3-django-prices +Summary: Django fields for the prices module +Provides: python-django-prices +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-django-prices +[](https://travis-ci.org/mirumee/django-prices) [](http://codecov.io/github/mirumee/django-prices?branch=master) +# Installation +* `pip install django-prices` +* Add `django_prices` to your `INSTALLED_APPS` at `settings.py` +* Follow `enmerkar` [instructions](https://github.com/Zegocover/enmerkar#using-the-middleware) and update both your `INSTALLED_APPS` and `MIDDLEWARE_CLASSES`. +# Features +Provides support for models: +```python +from django.db import models +from django_prices.models import MoneyField, TaxedMoneyField +class Model(models.Model): + currency = models.CharField(max_length=3, default="BTC") + price_net_amount = models.DecimalField(max_digits=9, decimal_places=2, default="5") + price_net = MoneyField(amount_field="price_net_amount", currency_field="currency") + price_gross_amount = models.DecimalField( + max_digits=9, decimal_places=2, default="5" + ) + price_gross = MoneyField( + amount_field="price_gross_amount", currency_field="currency" + ) + price = TaxedMoneyField( + net_amount_field="price_net_amount", + gross_amount_field="price_gross_amount", + currency="currency", + ) +``` +And forms: +```python +from django import forms +from django_prices.forms import MoneyField +AVAILABLE_CURRENCIES = ["BTC", "USD"] +class ProductForm(forms.Form): + name = forms.CharField(label="Name") + price_net = MoneyField(label="net", available_currencies=AVAILABLE_CURRENCIES) +``` +And validators: +```python +from django import forms +from prices.forms import Money +from django_prices.forms import MoneyField +from django_prices.validators import ( + MaxMoneyValidator, MinMoneyValidator, MoneyPrecisionValidator) +class DonateForm(forms.Form): + donator_name = forms.CharField(label="Your name") + donation = MoneyField( + label="net", + available_currencies=["BTC", "USD"], + max_digits=9, + decimal_places=2, + validators=[ + MoneyPrecisionValidator(), + MinMoneyValidator(Money(5, "USD")), + MaxMoneyValidator(Money(500, "USD")), + ], + ) +``` +It also provides support for templates: +```html+django +{% load prices %} +<p>Price: {{ foo.price.gross|amount }} ({{ foo.price.net|amount }} + {{ foo.price.tax|amount }} tax)</p> +``` +You can also use HTML output from `prices` template tags, they will wrap currency symbol in a `<span>` element: +```html+django +{% load prices %} +<p>Price: {{ foo.price.gross|amount:'html' }} ({{ foo.price.net|amount:'html' }} + {{ foo.price.tax|amount:'html' }} tax)</p> +``` +It will be rendered as a following structure (for example with English locale): +```html +<span class="currency">$</span>15.00 +``` +## How to migrate to django-prices 2.0 +Version 2.0 introduces major changes to how prices data is stored in models, enabling setting price's currency per model instance. +Steps to migrate: +1. In your **forms**: + * remove the `currency` argument + * add `available_currencies` with available choices. + If the form specified `MoneyFields` in `fields` option, replace those with explicit declarations instead: + ```python + AVAILABLE_CURRENCIES = [("BTC", "bitcoins"), ("USD", "US dollar")] + class ModelForm(forms.ModelForm): + class Meta: + model = models.Model + fields = [] + price_net = MoneyField(available_currencies=AVAILABLE_CURRENCIES) + ``` +1. In your **models** using `MoneyField`: + * Replace all occurrences of the `MoneyField` class with `DecimalField` + * Remove the `currency` argument from them + * Change `default` from Money instance to value acceptable by Decimal field + Example of code: + ```python + price_net = MoneyField( + "net", currency="BTC", default=Money("5", "BTC"), max_digits=9, decimal_places=2 + ) + ``` + Updated code: + ```python + price_net = models.DecimalField("net", default="5", max_digits=9, decimal_places=2) + ``` +1. In your **migration** files: + * Replace all occurrences of the `MoneyField` class with `DecimalField` + * Remove the `currency` argument from them + * Change `default` from Money instance to value acceptable by Decimal field + ```python + field = django_prices.models.MoneyField(currency='BTC', decimal_places=2, default='5', max_digits=9, verbose_name='net') + ``` + Updated code: + ```python + field = models.DecimalField(decimal_places=2, default='5', max_digits=9, verbose_name='net') + ``` +1. Rename fields in **models**. Your old field will still store amount of money, so probably the best choice would be `price_net_amount` instead `price_net`. +1. All places which use Models and it's fields can prevent django app from even starting the code. Possible issues: code tries to access non existing fields. Exclude those fields for now from your ModelForms, Graphene types etc. +1. Run `python manage.py makemigrations`. Make sure to do this step before adding new `MoneyFields` to model! If not, django will generate `delete/create` migrations instead of `rename`. +1. Run `python manage.py migrate`. +1. Update `django-prices`. +1. Add `models.CharField` for currency and `MoneyField` to your models: + ```python + currency = models.CharField(max_length=3, default="BTC") + price_net_amount = models.DecimalField("net", default="5", max_digits=9, decimal_places=2) + price_net = MoneyField(amount_field="price_net_amount", currency_field="currency") + ``` +1. Run `python manage.py makemigrations` and `python manage.py migrate`. +1. Change `TaxedMoneyField` declaration: + ```python + price = TaxedMoneyField( + net_amount_field="price_net_amount", + gross_amount_field="price_gross_amount", + currency="currency", + ) + ``` +1. Remember to address changes in previously edited ModelForms + +%package help +Summary: Development documents and examples for django-prices +Provides: python3-django-prices-doc +%description help +[](https://travis-ci.org/mirumee/django-prices) [](http://codecov.io/github/mirumee/django-prices?branch=master) +# Installation +* `pip install django-prices` +* Add `django_prices` to your `INSTALLED_APPS` at `settings.py` +* Follow `enmerkar` [instructions](https://github.com/Zegocover/enmerkar#using-the-middleware) and update both your `INSTALLED_APPS` and `MIDDLEWARE_CLASSES`. +# Features +Provides support for models: +```python +from django.db import models +from django_prices.models import MoneyField, TaxedMoneyField +class Model(models.Model): + currency = models.CharField(max_length=3, default="BTC") + price_net_amount = models.DecimalField(max_digits=9, decimal_places=2, default="5") + price_net = MoneyField(amount_field="price_net_amount", currency_field="currency") + price_gross_amount = models.DecimalField( + max_digits=9, decimal_places=2, default="5" + ) + price_gross = MoneyField( + amount_field="price_gross_amount", currency_field="currency" + ) + price = TaxedMoneyField( + net_amount_field="price_net_amount", + gross_amount_field="price_gross_amount", + currency="currency", + ) +``` +And forms: +```python +from django import forms +from django_prices.forms import MoneyField +AVAILABLE_CURRENCIES = ["BTC", "USD"] +class ProductForm(forms.Form): + name = forms.CharField(label="Name") + price_net = MoneyField(label="net", available_currencies=AVAILABLE_CURRENCIES) +``` +And validators: +```python +from django import forms +from prices.forms import Money +from django_prices.forms import MoneyField +from django_prices.validators import ( + MaxMoneyValidator, MinMoneyValidator, MoneyPrecisionValidator) +class DonateForm(forms.Form): + donator_name = forms.CharField(label="Your name") + donation = MoneyField( + label="net", + available_currencies=["BTC", "USD"], + max_digits=9, + decimal_places=2, + validators=[ + MoneyPrecisionValidator(), + MinMoneyValidator(Money(5, "USD")), + MaxMoneyValidator(Money(500, "USD")), + ], + ) +``` +It also provides support for templates: +```html+django +{% load prices %} +<p>Price: {{ foo.price.gross|amount }} ({{ foo.price.net|amount }} + {{ foo.price.tax|amount }} tax)</p> +``` +You can also use HTML output from `prices` template tags, they will wrap currency symbol in a `<span>` element: +```html+django +{% load prices %} +<p>Price: {{ foo.price.gross|amount:'html' }} ({{ foo.price.net|amount:'html' }} + {{ foo.price.tax|amount:'html' }} tax)</p> +``` +It will be rendered as a following structure (for example with English locale): +```html +<span class="currency">$</span>15.00 +``` +## How to migrate to django-prices 2.0 +Version 2.0 introduces major changes to how prices data is stored in models, enabling setting price's currency per model instance. +Steps to migrate: +1. In your **forms**: + * remove the `currency` argument + * add `available_currencies` with available choices. + If the form specified `MoneyFields` in `fields` option, replace those with explicit declarations instead: + ```python + AVAILABLE_CURRENCIES = [("BTC", "bitcoins"), ("USD", "US dollar")] + class ModelForm(forms.ModelForm): + class Meta: + model = models.Model + fields = [] + price_net = MoneyField(available_currencies=AVAILABLE_CURRENCIES) + ``` +1. In your **models** using `MoneyField`: + * Replace all occurrences of the `MoneyField` class with `DecimalField` + * Remove the `currency` argument from them + * Change `default` from Money instance to value acceptable by Decimal field + Example of code: + ```python + price_net = MoneyField( + "net", currency="BTC", default=Money("5", "BTC"), max_digits=9, decimal_places=2 + ) + ``` + Updated code: + ```python + price_net = models.DecimalField("net", default="5", max_digits=9, decimal_places=2) + ``` +1. In your **migration** files: + * Replace all occurrences of the `MoneyField` class with `DecimalField` + * Remove the `currency` argument from them + * Change `default` from Money instance to value acceptable by Decimal field + ```python + field = django_prices.models.MoneyField(currency='BTC', decimal_places=2, default='5', max_digits=9, verbose_name='net') + ``` + Updated code: + ```python + field = models.DecimalField(decimal_places=2, default='5', max_digits=9, verbose_name='net') + ``` +1. Rename fields in **models**. Your old field will still store amount of money, so probably the best choice would be `price_net_amount` instead `price_net`. +1. All places which use Models and it's fields can prevent django app from even starting the code. Possible issues: code tries to access non existing fields. Exclude those fields for now from your ModelForms, Graphene types etc. +1. Run `python manage.py makemigrations`. Make sure to do this step before adding new `MoneyFields` to model! If not, django will generate `delete/create` migrations instead of `rename`. +1. Run `python manage.py migrate`. +1. Update `django-prices`. +1. Add `models.CharField` for currency and `MoneyField` to your models: + ```python + currency = models.CharField(max_length=3, default="BTC") + price_net_amount = models.DecimalField("net", default="5", max_digits=9, decimal_places=2) + price_net = MoneyField(amount_field="price_net_amount", currency_field="currency") + ``` +1. Run `python manage.py makemigrations` and `python manage.py migrate`. +1. Change `TaxedMoneyField` declaration: + ```python + price = TaxedMoneyField( + net_amount_field="price_net_amount", + gross_amount_field="price_gross_amount", + currency="currency", + ) + ``` +1. Remember to address changes in previously edited ModelForms + +%prep +%autosetup -n django-prices-2.3.0 + +%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-prices -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Tue Apr 11 2023 Python_Bot <Python_Bot@openeuler.org> - 2.3.0-1 +- Package Spec generated @@ -0,0 +1 @@ +559a7f507d3d4cdbfbf0e70a2386ba79 django-prices-2.3.0.tar.gz |
