ACP-Calendar¶
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/.
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/
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