Metadata-Version: 2.4
Name: django-jalali-date-unfold
Version: 2.0.0
Summary: Jalali Date support for user interface. Easy conversion of DateTimeFiled to JalaliDateTimeField within the admin site, views, forms and templates.
Home-page: http://github.com/sphrlbd/django-jalali-date-unfold
Download-URL: https://pypi.python.org/pypi/django-jalali-date-unfold/
Author: Sepehr Aliabadi
Author-email: sphr.lbd@gmail.com
License: MIT
Keywords: django jalali date unfold
Platform: any
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Framework :: Django
Classifier: Framework :: Django :: 2.2
Classifier: Framework :: Django :: 3.2
Classifier: Framework :: Django :: 4.2
Classifier: Framework :: Django :: 5.0
Requires-Python: >=3
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: django
Requires-Dist: jdatetime
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: download-url
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: license-file
Dynamic: platform
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary





[![PyPi Version](https://img.shields.io/pypi/v/django-jalali-date.svg)](https://pypi.python.org/pypi/django-jalali-date)

[![PyPI - Downloads](https://img.shields.io/pypi/dm/django-jalali-date.svg)](https://pypistats.org/packages/django-jalali-date)

[![Github Tests](https://github.com/a-roomana/django-jalali-date/workflows/Test/badge.svg)](https://github.com/a-roomana/django-jalali-date/actions)

[![GitHub stars](https://img.shields.io/github/stars/a-roomana/django-jalali-date.svg?style=social)](https://github.com/a-roomana/django-jalali-date)



[![Python Version](https://img.shields.io/pypi/pyversions/django-jalali-date.svg)](https://pypi.python.org/pypi/django-jalali-date)



# django-jalali-date



Jalali Date support for user interface. Easy conversion of DateTimeField to JalaliDateTimeField within the admin site, view and templates.





## Dependency



To use this module you need to install jdatetime(and of course you need django) and pytz module which you can install it with easy_install or pip





## Version Compatibility

#### Python

- python 3.8 and below is  compatible with 0.3.2 and below

- python 3.X and above is compatible with 1.0.0 and above



#### Django

I tested the latest version on some Django versions on python 3.8

- django == 4.2

- django == 3.2.8

- django == 2.2.24



I think it will work properly on other versions as well.



If you plan to use it in Django 1.X, install version 0.3.2







## Install



    pip install django-jalali-date   





## Usage



#### settings.py



- don't forget to make sure you've also added `jalali_date` to your `INSTALLED_APPS`.

- any global settings for a Django Jalali Date are kept in a single configuration dictionary named `JALALI_DATE_DEFAULTS`

  - you can change the default display of dates by override `Strftime`

  - you can use your own date picker by override `Static` 

```python

INSTALLED_APPS = [

	'django_apps',

	

	'jalali_date',

	

	'my_apps',

]



# default settings (optional)

JALALI_DATE_DEFAULTS = {

   # if change it to true then all dates of the list_display will convert to the Jalali.

   'LIST_DISPLAY_AUTO_CONVERT': False,

   'Strftime': {

        'date': '%y/%m/%d',

        'datetime': '%H:%M:%S _ %y/%m/%d',

    },

    'Static': {

        'js': [

            'admin/js/django_jalali.min.js',

        ],

        'css': {

            'all': [

              'admin/css/django_jalali.min.css',

            ]

        }

    },

}

```



(Optional) If you want the names of the dates to be displayed in Persian, please add the following command to the settings.

```python

import locale

import sys



if sys.platform.startswith('win32'):

    locale.setlocale(locale.LC_ALL, "Persian_Iran.UTF-8")

else:

    locale.setlocale(locale.LC_ALL, "fa_IR.UTF-8")

```





#### views.py

```python

from jalali_date import datetime2jalali, date2jalali



def my_view(request):

	jalali_join = datetime2jalali(request.user.date_joined).strftime('%y/%m/%d _ %H:%M:%S')

```

#### forms.py

```python

from django import forms

from jalali_date.fields import JalaliDateField, SplitJalaliDateTimeField

from jalali_date.widgets import AdminJalaliDateWidget, AdminSplitJalaliDateTime





class TestForm(forms.ModelForm):

    class Meta:

        model = TestModel

        fields = ('name', 'date', 'date_time')



    def __init__(self, *args, **kwargs):

        super(TestForm, self).__init__(*args, **kwargs)

        self.fields['date'] = JalaliDateField(label=_('date'), # date format is  "yyyy-mm-dd"

            widget=AdminJalaliDateWidget # optional, to use default datepicker

        )



        # you can added a "class" to this field for use your datepicker!

        # self.fields['date'].widget.attrs.update({'class': 'jalali_date-date'})



        self.fields['date_time'] = SplitJalaliDateTimeField(label=_('date time'), 

            widget=AdminSplitJalaliDateTime # required, for decompress DatetimeField to JalaliDateField and JalaliTimeField

        )

```



#### template.html

```html    

{% load jalali_tags %}



<p>{{ request.user.date_joined|to_jalali:'%y/%m/%d _ %H:%M:%S' }}</p>



<form method="post">{% csrf_token %}

    {{ form.as_p }}

    <input type="submit">

</form>



<!-- By default, Datepicker using jQuery, you need to set your script after loading jQuery! -->

	<!-- loading directly -->

		<link rel="stylesheet" href="{% static 'admin/jquery.ui.datepicker.jalali/themes/base/jquery-ui.min.css' %}">

		<script src="{% static 'admin/js/django_jalali.min.js' %}"></script>

	<!-- OR -->

	<!-- loading by form (if used AdminJalaliDateWidget) -->

		{{ form.media }}

```

![example-template-form](https://raw.githubusercontent.com/a-roomana/django-jalali-date/master/screenshots/example-template-form.png)



#### admin.py

```python

from django.contrib import admin

from jalali_date import datetime2jalali, date2jalali

from jalali_date.admin import ModelAdminJalaliMixin, StackedInlineJalaliMixin, TabularInlineJalaliMixin	

    

class MyInlines1(TabularInlineJalaliMixin, admin.TabularInline):

	model = SecendModel



class MyInlines2(StackedInlineJalaliMixin, admin.StackedInline):

	model = ThirdModel

	

@admin.register(FirstModel)

class FirstModelAdmin(ModelAdminJalaliMixin, admin.ModelAdmin):

	#for showing the Jalali date on the list_display, please change the LIST_DISPLAY_AUTO_CONVERT to true or create custom methods. for example:

    list_display = ['some_fields', 'get_created_jalali']

	

	inlines = (MyInlines1, MyInlines2, )

	raw_id_fields = ('some_fields', )

	readonly_fields = ('some_fields', 'date_field',)

	# you can override formfield, for example:

	formfield_overrides = {

	    JSONField: {'widget': JSONEditor},

	}

	

	@admin.display(description='تاریخ ایجاد', ordering='created')

	def get_created_jalali(self, obj):

		return datetime2jalali(obj.created).strftime('%a, %d %b %Y %H:%M:%S')

```

![list-display](https://raw.githubusercontent.com/a-roomana/django-jalali-date/master/screenshots/list-display.png)

![example-admin](https://raw.githubusercontent.com/a-roomana/django-jalali-date/master/screenshots/example-admin.png)

