Skip to main content

Philippine Geography models for Django

Project description

PyPi PyPI - Python Version PyPI - Django Version Travis CI CodeFactor Grade Codecov License - MIT

Philippine Geography models for Django

django-ph-geography provides models for integrating regions, provinces, municipalities, and barangays in the Philippines.

Data retrieved from the Philippine Standard Geographic Code (PSGC) published by Philippine Statistics Authority (PSA) on March 31, 2020 (https://psa.gov.ph/classification/psgc/downloads/PSGC%20Publication%20March2020.xlsx).

Table of Contents

Installation

Installing using pip:

pip install django-ph-geography

Add ph_geography to INSTALLED_APPS:

INSTALLED_APPS = [
    ...
    'ph_geography',
]

Migrate app models to database:

python manage.py migrate ph_geography

Load initial data:

python manage.py phgeofixtures

Models

ph_geography.models.Region

Model for regions. Available fields are:

  • code (CharField<max_length=10, unique=True, null=False>): Unique geographical code for region.

  • name (CharField<max_length=100, null=False)>): Geographical name for region.

  • population (PositiveIntegerField<null=True>): Population count based on 2015 POPCEN. Null value means no data is available.

  • island_group (CharField<max_length=1, choices=ISLAND_GROUP_CHOICES, null=False>): Island group where the region is located. Possible values are based on items in model property ISLAND_GROUP_CHOICES:

    • ISLAND_GROUP_LUZON ('L') - Luzon

    • ISLAND_GROUP_VISAYAS ('V') - Visayas

    • ISLAND_GROUP_MINDANAO ('M') - Mindanao

  • is_active (BooleanField<null=False, default=True>): Toggle if region is active (True) or not (False).

ph_geography.models.Province

Model for provinces. Available fields are:

  • code (CharField<max_length=10, unique=True, null=False>): Unique geographical code for region.

  • name (CharField<max_length=100, null=False)>): Geographical name for region.

  • population (PositiveIntegerField<null=True>): Population count based on 2015 POPCEN. Null value means no data is available.

  • region (ForeignKey<Region, related_name='provinces', related_query_name='province', null=False, on_delete=models.CASCADE>): Region where province is located.

  • income_class (CharField<max_length=1, choices=INCOME_CLASS_CHOICES, null=False, blank=True>): Income classification. Blank value means no data is available. Possible values are based on items in model property INCOME_CLASS_CHOICES:

    • INCOME_CLASS_1 ('1') - 1st

    • INCOME_CLASS_2 ('2') - 2nd

    • INCOME_CLASS_3 ('3') - 3rd

    • INCOME_CLASS_4 ('4') - 4th

    • INCOME_CLASS_5 ('5') - 5th

    • INCOME_CLASS_6 ('6') - 6th

    • INCOME_CLASS_SPECIAL ('S') - Special

  • is_active (BooleanField<null=False, default=True>): Toggle if province is active (True) or not (False).

Available properties:

  • island_group: Reference to Region field island_group.

ph_geography.models.Municipality

Model for municipalities and cities. Available fields are:

  • code (CharField<max_length=10, unique=True, null=False>): Unique geographical code for region.

  • name (CharField<max_length=100, null=False)>): Geographical name for region.

  • population (PositiveIntegerField<null=True>): Population count based on 2015 POPCEN. Null value means no data is available.

  • province (ForeignKey<Province, related_name='municipalities', related_query_name='municipality', null=False, on_delete=models.CASCADE>): Province where municipality is located.

  • income_class (CharField<max_length=1, choices=INCOME_CLASS_CHOICES, null=False, blank=True>): Income classification. Blank value means no data is available. Possible values are based on items in model property INCOME_CLASS_CHOICES:

    • INCOME_CLASS_1 ('1') - 1st

    • INCOME_CLASS_2 ('2') - 2nd

    • INCOME_CLASS_3 ('3') - 3rd

    • INCOME_CLASS_4 ('4') - 4th

    • INCOME_CLASS_5 ('5') - 5th

    • INCOME_CLASS_6 ('6') - 6th

    • INCOME_CLASS_SPECIAL ('S') - Special

  • is_city (BooleanField<null=False>): Toggle to define whether the municipality is a city (True) or not (False).

  • is_capital (BooleanField<null=False>): Toggle to define whether the municipality is a capital (True) or not (False).

  • city_class (CharField<max_length=1, choices=CITY_CLASS_CHOICES, null=False, blank=True>): City legal classification. Blank value means no data is available. Possible values are based on items in model property CITY_CLASS_CHOICES:

    • CITY_CLASS_COMPONENT_CITY ('C') - CC

    • CITY_CLASS_INDEPENDENT_COMPONENT_CITY ('I') - ICC

    • CITY_CLASS_HIGHLY_URBANIZED_CITY ('H') - HUC

  • is_active (BooleanField<null=False, default=True>): Toggle if municipality is active (True) or not (False).

Available properties:

  • island_group: Reference to Region field island_group.

  • region: Reference to province field region.

ph_geography.models.Barangay

Model for barangays. Available fields are:

  • code (CharField<max_length=10, unique=True, null=False>): Unique geographical code for region.

  • name (CharField<max_length=100, null=False)>): Geographical name for region.

  • population (PositiveIntegerField<null=True>): Population count based on 2015 POPCEN. Null value means no data is available.

  • municipality (ForeignKey<Municipality>, related_name='barangays', related_query_name='barangay', null=False, on_delete=models.CASCADE>): Municipality where barangay is located.

  • is_urban (NullBooleanField<null=False>): Toggle to define whether the barangay is urban (True) or rural (False). Null value means no data is available.

  • is_active (BooleanField<null=False, default=True>): Toggle if barangay is active (True) or not (False).

Available properties:

  • island_group: Reference to Region field island_group.

  • province: Reference to municipality field province.

  • region: Reference to property province field region.

Monkey Patching

After migrating the models and loading the initial data through fixtures, you can monkey patch (if you’re into it) django-ph-geography models using the provided methods to suit your needs:

Adding new fields

You can use the custom method add_field provided by abstract model class ph_geography.models.PhilippineGeography to add fields to the models provided. Using the said method to the abstract model will apply the action to all subclasses.

Example:

from django.db import models

from ph_geography.models import PhilippineGeography
from ph_geography.models import Region


# Add field to Region, Province, Municipality, Barangay, and any subclass models of PhilippineGeography
PhilippineGeography.add_field('all_models', models.BooleanField(null=True))

# Add field 'single_model' to Region
Region.add_field('single_model', models.BooleanField(null=True))

Removing existing fields

You can use the custom method remove_field provided by abstract model class ph_geography.models.PhilippineGeography to remove fields to the models provided. Using the same method to the abstract model will apply the action to all subclasses.

Example:

from ph_geography.models import PhilippineGeography
from ph_geography.models import Municipality
from ph_geography.models import Region


# Remove field to Region, Province, Municipality, Barangay, and any subclass models of PhilippineGeography
PhilippineGeography.remove_field('population')

# Remove field 'island_group' from Region
Region.remove_field('island_group')

# Multiple fields to remove are supported
Municipality.remove_field('is_city', 'is_capital')

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-ph-geography-1.0.0.tar.gz (696.2 kB view details)

Uploaded Source

Built Distribution

django_ph_geography-1.0.0-py3-none-any.whl (764.0 kB view details)

Uploaded Python 3

File details

Details for the file django-ph-geography-1.0.0.tar.gz.

File metadata

  • Download URL: django-ph-geography-1.0.0.tar.gz
  • Upload date:
  • Size: 696.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.7.3

File hashes

Hashes for django-ph-geography-1.0.0.tar.gz
Algorithm Hash digest
SHA256 11462d14b0086b2374c32b9189d88102a1cb759be32a646ac3ca7f4ea15c2168
MD5 fdfcc4aa7189c190d8cf7684f2588801
BLAKE2b-256 42187b4e02487fb0ecdcc74e9fe7a4a93cc6d3ffd1f587fc2c50925302329f57

See more details on using hashes here.

File details

Details for the file django_ph_geography-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: django_ph_geography-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 764.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.7.3

File hashes

Hashes for django_ph_geography-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5777c00243131a1186ebea93521d6b4c6b9feceab5ca3ab453163a1d9b58f9f8
MD5 83278f340743a9be5eb9f597d620dca0
BLAKE2b-256 abb9455e54b8c73b2ec71adada4d931bac50a0629facb15be2e5b19aa7cab710

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page