ACP-Calendar

https://badge.fury.io/py/acp-calendar.png https://api.travis-ci.org/luiscberrocal/django-acp-calendar.svg?branch=master https://coveralls.io/repos/github/luiscberrocal/django-acp-calendar/badge.svg?branch=master Code Climate Requirements Status

Holiday calendar and date management for the Panama Canal. Includes Panama Canal holidays from 2006 to 2017.

Documentation

The full documentation is at http://django-acp-calendar.readthedocs.io/.

Requirements

Requires

  • Python 3.4, 3.5 or 3.6
  • Django 1.8.15, 1.9.10, 1.10.7 or 1.11

Quickstart

Install ACP-Calendar

$ pip install acp-calendar

Open your settings file and include acp_calendar and rest_framework to the THIRD_PARTY_APPS variable on your settings file.

The settings file

DJANGO_APPS = (
# Default Django apps:
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',

# Useful template tags:
# 'django.contrib.humanize',

# Admin
'django.contrib.admin',
)
THIRD_PARTY_APPS = (
    'crispy_forms',  # Form layouts
    'allauth',  # registration
    'allauth.account',  # registration
    'allauth.socialaccount',  # registration
    'rest_framework',
    'acp_calendar',
)

# Apps specific for this project go here.
LOCAL_APPS = (
    'acp_calendar_project.users',  # custom users app

    # Your stuff: custom apps go here
)

# See: https://docs.djangoproject.com/en/dev/ref/settings/#installed-apps
INSTALLED_APPS = DJANGO_APPS + THIRD_PARTY_APPS + LOCAL_APPS

Add the acp_calendar.urls to your urls file.

urlpatterns = [
    url(r'^$', TemplateView.as_view(template_name='pages/home.html'), name='home'),
    url(r'^about/$', TemplateView.as_view(template_name='pages/about.html'), name='about'),

    # Django Admin, use {% url 'admin:index' %}
    url(settings.ADMIN_URL, include(admin.site.urls)),

    # User management
    url(r'^users/', include('acp_calendar_project.users.urls', namespace='users')),
    url(r'^calendar/', include('acp_calendar.urls', namespace='calendar')),
    url(r'^accounts/', include('allauth.urls')),

    # Your stuff: custom urls includes go here


] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Features

Holidays

To get the working days for the Panama Canal between january 1st to january 31st 2016.

In [ 3 ]:  import datetime

In [ 4 ]:  start_date = datetime.date(2016, 1,1)

In [ 5 ]:  end_date = datetime.date(2016,1,31)

In [ 6 ]:  working_days = ACPHoliday.get_working_days(start_date, end_date)

In [ 7 ]:  print(working_days)
19

Fiscal Year

In [ 1 ]:   import datetime

In [ 2 ]:   from acp_calendar.models import FiscalYear

In [ 3 ]:   start_date = datetime.date(2015, 10,1)

In [ 4 ]:   fiscal_year = FiscalYear.create_from_date(start_date)

In [ 5 ]:   print(fiscal_year)
FY16

In [ 6 ]:   fiscal_year.start_date
Out[6]: datetime.date(2015, 10, 1)

In [ 7 ]:   fiscal_year.end_date
Out[7]: datetime.date(2016, 9, 30)

Calculator

To access the calculator go to http://<your_host>:<your_port>/calendar/calculator/

docs/images/calculator_01.png

To use the calculator your base.html must have:

  • A javascript block at the end of the html
  • jQuery (version 2.2.x)
  • jQuery ui (version 1.12.x)

Virtual Environment

Use virtualenv to manage a virtual environment.

In a Mac use the following command to create the virtual environment.

$ python3 /usr/local/lib/python3.4/site-packages/virtualenv.py --no-site-packages acp_calendar_env

Running Tests

Does the code actually work?

$ source acp_calendar_env/bin/activate
(acp_calendar_env) $ pip install -r requirements-test.txt
(acp_calendar_env) $ python runtests.py

Builds

We are using Travis for continuos integration https://travis-ci.org/luiscberrocal/django-acp-calendar/builds

For coverage we are using coveralls https://coveralls.io/github/luiscberrocal/django-acp-calendar

Run bumpversion

$ bumpversion minor

Instead of minor you could also use major o patch depending on the level of the release.

python setup.py sdist bdist_wheel

python setup.py register -r pypitest

python setup.py sdist upload -r pypitest

Check https://testpypi.python.org/pypi/acp-calendar/

python setup.py register -r pypi

python setup.py sdist upload -r pypi

Development

There is a project to use to develop and view the acp_calendar app it is at https://github.com/luiscberrocal/acp-calendar-dev-project

Credits

Tools used in rendering this package: