diff --git a/akvo/rest/serializers/__init__.py b/akvo/rest/serializers/__init__.py index 1f5b36344b..4f8da47bc4 100644 --- a/akvo/rest/serializers/__init__.py +++ b/akvo/rest/serializers/__init__.py @@ -13,21 +13,36 @@ from .employment import EmploymentSerializer from .focus_area import FocusAreaSerializer from .goal import GoalSerializer +from .indicator import IndicatorPeriodSerializer, IndicatorSerializer from .internal_organisation_id import InternalOrganisationIDSerializer from .invoice import InvoiceSerializer +from .keyword import KeywordSerializer +from .legacy_data import LegacyDataSerializer from .link import LinkSerializer from .organisation import OrganisationSerializer from .organisation_location import OrganisationLocationSerializer from .partner_site import PartnerSiteSerializer from .partner_type import PartnerTypeSerializer from .partnership import PartnershipSerializer +from .planned_disbursement import PlannedDisbursementSerializer +from .policy_marker import PolicyMarkerSerializer from .project import ProjectSerializer, ProjectExtraSerializer from .project_comment import ProjectCommentSerializer +from .project_condition import ProjectConditionSerializer +from .project_contact import ProjectContactSerializer +from .project_document import ProjectDocumentSerializer from .project_location import ProjectLocationSerializer from .project_update import ProjectUpdateSerializer, ProjectUpdateExtraSerializer from .project_update_location import ProjectUpdateLocationSerializer from .publishing_status import PublishingStatusSerializer +from .recipient_country import RecipientCountrySerializer +from .region import RecipientRegionSerializer +from .related_project import RelatedProjectSerializer +from .result import ResultSerializer +from .sector import SectorSerializer +from .transaction import TransactionSerializer from .user import UserSerializer, UserDetailsSerializer, UserPasswordSerializer +from .project import ProjectSerializer, ProjectExtraSerializer __all__ = [ 'BenchmarkSerializer', @@ -39,23 +54,40 @@ 'EmploymentSerializer', 'FocusAreaSerializer', 'GoalSerializer', + 'IndicatorPeriodSerializer', + 'IndicatorSerializer', 'InternalOrganisationIDSerializer', 'InvoiceSerializer', + 'KeywordSerializer', + 'LegacyDataSerializer', 'LinkSerializer', 'OrganisationSerializer', 'OrganisationLocationSerializer', 'PartnerSiteSerializer', 'PartnerTypeSerializer', 'PartnershipSerializer', + 'PlannedDisbursementSerializer', + 'PolicyMarkerSerializer', 'ProjectSerializer', 'ProjectExtraSerializer', 'ProjectCommentSerializer', + 'ProjectConditionSerializer', + 'ProjectContactSerializer', + 'ProjectDocumentSerializer', 'ProjectLocationSerializer', 'ProjectUpdateSerializer', 'ProjectUpdateExtraSerializer', 'ProjectUpdateLocationSerializer', 'PublishingStatusSerializer', + 'RecipientCountrySerializer', + 'RecipientRegionSerializer', + 'RelatedProjectSerializer', + 'ResultSerializer', + 'SectorSerializer', + 'TransactionSerializer', 'UserSerializer', 'UserDetailsSerializer', 'UserPasswordSerializer', + 'ProjectSerializer', + 'ProjectExtraSerializer', ] diff --git a/akvo/rest/serializers/indicator.py b/akvo/rest/serializers/indicator.py new file mode 100644 index 0000000000..075e83bdd9 --- /dev/null +++ b/akvo/rest/serializers/indicator.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- + +# Akvo RSR is covered by the GNU Affero General Public License. +# See more details in the license.txt file located at the root folder of the Akvo RSR module. +# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. + + +from akvo.rsr.models import IndicatorPeriod, Indicator + +from .rsr_serializer import BaseRSRSerializer + + +class IndicatorPeriodSerializer(BaseRSRSerializer): + + class Meta: + model = IndicatorPeriod + + +class IndicatorSerializer(BaseRSRSerializer): + + periods = IndicatorPeriodSerializer(many=True, required=False, allow_add_remove=True) + + class Meta: + model = Indicator diff --git a/akvo/rest/serializers/keyword.py b/akvo/rest/serializers/keyword.py new file mode 100644 index 0000000000..93e047daf9 --- /dev/null +++ b/akvo/rest/serializers/keyword.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- + +# Akvo RSR is covered by the GNU Affero General Public License. +# See more details in the license.txt file located at the root folder of the Akvo RSR module. +# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. + + +from akvo.rsr.models import Keyword + +from .rsr_serializer import BaseRSRSerializer + + +class KeywordSerializer(BaseRSRSerializer): + + class Meta: + model = Keyword diff --git a/akvo/rest/serializers/legacy_data.py b/akvo/rest/serializers/legacy_data.py new file mode 100644 index 0000000000..0a2f7a56c6 --- /dev/null +++ b/akvo/rest/serializers/legacy_data.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- + +# Akvo RSR is covered by the GNU Affero General Public License. +# See more details in the license.txt file located at the root folder of the Akvo RSR module. +# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. + + +from akvo.rsr.models import LegacyData + +from .rsr_serializer import BaseRSRSerializer + + +class LegacyDataSerializer(BaseRSRSerializer): + + class Meta: + model = LegacyData diff --git a/akvo/rest/serializers/planned_disbursement.py b/akvo/rest/serializers/planned_disbursement.py new file mode 100644 index 0000000000..4549c34bf6 --- /dev/null +++ b/akvo/rest/serializers/planned_disbursement.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- + +# Akvo RSR is covered by the GNU Affero General Public License. +# See more details in the license.txt file located at the root folder of the Akvo RSR module. +# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. + + +from akvo.rsr.models import PlannedDisbursement + +from .rsr_serializer import BaseRSRSerializer + + +class PlannedDisbursementSerializer(BaseRSRSerializer): + + class Meta: + model = PlannedDisbursement diff --git a/akvo/rest/serializers/policy_marker.py b/akvo/rest/serializers/policy_marker.py new file mode 100644 index 0000000000..79f437db1c --- /dev/null +++ b/akvo/rest/serializers/policy_marker.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- + +# Akvo RSR is covered by the GNU Affero General Public License. +# See more details in the license.txt file located at the root folder of the Akvo RSR module. +# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. + + +from akvo.rsr.models import PolicyMarker + +from .rsr_serializer import BaseRSRSerializer + + +class PolicyMarkerSerializer(BaseRSRSerializer): + + class Meta: + model = PolicyMarker diff --git a/akvo/rest/serializers/project.py b/akvo/rest/serializers/project.py index f12c164190..b7169149d3 100644 --- a/akvo/rest/serializers/project.py +++ b/akvo/rest/serializers/project.py @@ -4,17 +4,36 @@ # See more details in the license.txt file located at the root folder of the Akvo RSR module. # For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. +from rest_framework import serializers + from akvo.rsr.models import Project from ..fields import Base64ImageField +from .budget_item import BudgetItemSerializer +from .legacy_data import LegacyDataSerializer +from .link import LinkSerializer from .partnership import PartnershipSerializer +from .planned_disbursement import PlannedDisbursementSerializer +from .policy_marker import PolicyMarkerSerializer +from .project_comment import ProjectCommentSerializer +from .project_document import ProjectDocumentSerializer from .project_location import ProjectLocationExtraSerializer +from .project_condition import ProjectConditionSerializer +from .project_contact import ProjectContactSerializer +from .project_update import ProjectUpdateSerializer +from .recipient_country import RecipientCountrySerializer +from .region import RecipientRegionSerializer +from .related_project import RelatedProjectSerializer +from .result import ResultSerializer +from .sector import SectorSerializer +from .transaction import TransactionSerializer from .rsr_serializer import BaseRSRSerializer class ProjectSerializer(BaseRSRSerializer): + publishing_status = serializers.Field(source='publishingstatus.status') current_image = Base64ImageField(required=False, allow_empty_file=True) class Meta: @@ -23,9 +42,35 @@ class Meta: class ProjectExtraSerializer(ProjectSerializer): - locations = ProjectLocationExtraSerializer(source='locations', many=True) + publishing_status = serializers.Field(source='publishingstatus.status') + budget_items = BudgetItemSerializer(source='budget_items', many=True, required=False, allow_add_remove=True) + legacy_data = LegacyDataSerializer(source='legacy_data', many=True, required=False, allow_add_remove=True) + links = LinkSerializer(source='links', many=True, required=False, allow_add_remove=True) + locations = ProjectLocationExtraSerializer(source='locations', many=True, required=False, allow_add_remove=True) + planned_disbursements = PlannedDisbursementSerializer( + source='planned_disbursements', many=True, required=False, allow_add_remove=True + ) + policy_markers = PolicyMarkerSerializer(source='policy_markers', many=True, required=False, allow_add_remove=True) + documents = ProjectDocumentSerializer(source='documents', many=True, required=False, allow_add_remove=True) + comments = ProjectCommentSerializer(source='comments', many=True, required=False, allow_add_remove=True) + conditions = ProjectConditionSerializer(source='conditions', many=True, required=False, allow_add_remove=True) + contacts = ProjectContactSerializer(source='contacts', many=True, required=False, allow_add_remove=True) + project_updates = ProjectUpdateSerializer( + source='project_updates', many=True, required=False, allow_add_remove=True + ) + recipient_countries = RecipientCountrySerializer( + source='recipient_countries', many=True, required=False, allow_add_remove=True + ) + recipient_regions = RecipientRegionSerializer( + source='recipient_regions', many=True, required=False, allow_add_remove=True + ) + related_projects = RelatedProjectSerializer( + source='related_projects', many=True, required=False, allow_add_remove=True + ) + results = ResultSerializer(source='results', many=True, required=False, allow_add_remove=True) + sectors = SectorSerializer(source='sectors', many=True, required=False, allow_add_remove=True) + transactions = TransactionSerializer(source='transactions', many=True, required=False, allow_add_remove=True) partnerships = PartnershipSerializer(source='partnerships', many=True) - -class Meta(ProjectSerializer.Meta): + class Meta(ProjectSerializer.Meta): pass diff --git a/akvo/rest/serializers/project_condition.py b/akvo/rest/serializers/project_condition.py new file mode 100644 index 0000000000..fc52ab2ba9 --- /dev/null +++ b/akvo/rest/serializers/project_condition.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- + +# Akvo RSR is covered by the GNU Affero General Public License. +# See more details in the license.txt file located at the root folder of the Akvo RSR module. +# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. + + +from akvo.rsr.models import ProjectCondition + +from .rsr_serializer import BaseRSRSerializer + + +class ProjectConditionSerializer(BaseRSRSerializer): + + class Meta: + model = ProjectCondition diff --git a/akvo/rest/serializers/project_contact.py b/akvo/rest/serializers/project_contact.py new file mode 100644 index 0000000000..e8648736c2 --- /dev/null +++ b/akvo/rest/serializers/project_contact.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- + +# Akvo RSR is covered by the GNU Affero General Public License. +# See more details in the license.txt file located at the root folder of the Akvo RSR module. +# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. + + +from akvo.rsr.models import ProjectContact + +from .rsr_serializer import BaseRSRSerializer + + +class ProjectContactSerializer(BaseRSRSerializer): + + class Meta: + model = ProjectContact diff --git a/akvo/rest/serializers/project_document.py b/akvo/rest/serializers/project_document.py new file mode 100644 index 0000000000..889b03e976 --- /dev/null +++ b/akvo/rest/serializers/project_document.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- + +# Akvo RSR is covered by the GNU Affero General Public License. +# See more details in the license.txt file located at the root folder of the Akvo RSR module. +# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. + + +from akvo.rsr.models import ProjectDocument + +from .rsr_serializer import BaseRSRSerializer + + +class ProjectDocumentSerializer(BaseRSRSerializer): + + class Meta: + model = ProjectDocument diff --git a/akvo/rest/serializers/project_update.py b/akvo/rest/serializers/project_update.py index 0134700a83..c39025dc0b 100644 --- a/akvo/rest/serializers/project_update.py +++ b/akvo/rest/serializers/project_update.py @@ -18,7 +18,7 @@ class ProjectUpdateSerializer(BaseRSRSerializer): - locations = ProjectUpdateLocationSerializer(source='locations', many=True) + locations = ProjectUpdateLocationSerializer(source='locations', many=True, required=False, allow_add_remove=True) photo = Base64ImageField(required=False, allow_empty_file=True) class Meta: diff --git a/akvo/rest/serializers/project_update_location.py b/akvo/rest/serializers/project_update_location.py index 7895af0bf6..e07fd417b4 100644 --- a/akvo/rest/serializers/project_update_location.py +++ b/akvo/rest/serializers/project_update_location.py @@ -16,6 +16,7 @@ class Meta: model = ProjectUpdateLocation exclude = ('location_target',) + class ProjectUpdateLocationExtraSerializer(ProjectUpdateLocationSerializer): class Meta(ProjectUpdateLocationSerializer.Meta): diff --git a/akvo/rest/serializers/recipient_country.py b/akvo/rest/serializers/recipient_country.py new file mode 100644 index 0000000000..7ca55a49ec --- /dev/null +++ b/akvo/rest/serializers/recipient_country.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- + +# Akvo RSR is covered by the GNU Affero General Public License. +# See more details in the license.txt file located at the root folder of the Akvo RSR module. +# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. + + +from akvo.rsr.models import RecipientCountry + +from .rsr_serializer import BaseRSRSerializer + + +class RecipientCountrySerializer(BaseRSRSerializer): + + class Meta: + model = RecipientCountry diff --git a/akvo/rest/serializers/region.py b/akvo/rest/serializers/region.py new file mode 100644 index 0000000000..aa7d359483 --- /dev/null +++ b/akvo/rest/serializers/region.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- + +# Akvo RSR is covered by the GNU Affero General Public License. +# See more details in the license.txt file located at the root folder of the Akvo RSR module. +# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. + + +from akvo.rsr.models import RecipientRegion + +from .rsr_serializer import BaseRSRSerializer + + +class RecipientRegionSerializer(BaseRSRSerializer): + + class Meta: + model = RecipientRegion diff --git a/akvo/rest/serializers/related_project.py b/akvo/rest/serializers/related_project.py new file mode 100644 index 0000000000..10ba4d3c6b --- /dev/null +++ b/akvo/rest/serializers/related_project.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- + +# Akvo RSR is covered by the GNU Affero General Public License. +# See more details in the license.txt file located at the root folder of the Akvo RSR module. +# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. + + +from akvo.rsr.models import RelatedProject + +from .rsr_serializer import BaseRSRSerializer + + +class RelatedProjectSerializer(BaseRSRSerializer): + + class Meta: + model = RelatedProject diff --git a/akvo/rest/serializers/result.py b/akvo/rest/serializers/result.py new file mode 100644 index 0000000000..ff84fe8eb1 --- /dev/null +++ b/akvo/rest/serializers/result.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- + +# Akvo RSR is covered by the GNU Affero General Public License. +# See more details in the license.txt file located at the root folder of the Akvo RSR module. +# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. + + +from akvo.rsr.models import Result + +from .indicator import IndicatorSerializer +from .rsr_serializer import BaseRSRSerializer + + +class ResultSerializer(BaseRSRSerializer): + + indicators = IndicatorSerializer(many=True, required=False, allow_add_remove=True) + + class Meta: + model = Result diff --git a/akvo/rest/serializers/sector.py b/akvo/rest/serializers/sector.py new file mode 100644 index 0000000000..a6ded18778 --- /dev/null +++ b/akvo/rest/serializers/sector.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- + +# Akvo RSR is covered by the GNU Affero General Public License. +# See more details in the license.txt file located at the root folder of the Akvo RSR module. +# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. + + +from akvo.rsr.models import Sector + +from .rsr_serializer import BaseRSRSerializer + + +class SectorSerializer(BaseRSRSerializer): + + class Meta: + model = Sector diff --git a/akvo/rest/serializers/transaction.py b/akvo/rest/serializers/transaction.py new file mode 100644 index 0000000000..ee74fb9ea4 --- /dev/null +++ b/akvo/rest/serializers/transaction.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- + +# Akvo RSR is covered by the GNU Affero General Public License. +# See more details in the license.txt file located at the root folder of the Akvo RSR module. +# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. + + +from akvo.rsr.models import Transaction + +from .rsr_serializer import BaseRSRSerializer + + +class TransactionSerializer(BaseRSRSerializer): + + class Meta: + model = Transaction diff --git a/akvo/rest/serializers/user.py b/akvo/rest/serializers/user.py index 0dcbcbad00..5dd822963b 100644 --- a/akvo/rest/serializers/user.py +++ b/akvo/rest/serializers/user.py @@ -16,7 +16,9 @@ class UserSerializer(BaseRSRSerializer): # Needed to show only the first organisation of the user organisation = OrganisationExtraSerializer(source='first_organisation', required=False) - organisations = OrganisationExtraSerializer(source='organisations', many=True, required=False, allow_add_remove=True) + organisations = OrganisationExtraSerializer( + source='organisations', many=True, required=False, allow_add_remove=True + ) class Meta: model = get_user_model() diff --git a/akvo/rest/urls.py b/akvo/rest/urls.py index 85a2bc7dc0..caa80389db 100644 --- a/akvo/rest/urls.py +++ b/akvo/rest/urls.py @@ -20,22 +20,37 @@ router.register(r'employment', views.EmploymentViewSet) router.register(r'focus_area', views.FocusAreaViewSet) router.register(r'goal', views.GoalViewSet) +router.register(r'indicator', views.IndicatorViewSet) +router.register(r'indicator_period', views.IndicatorPeriodViewSet) router.register(r'internal_organisation_id', views.InternalOrganisationIDViewSet) router.register(r'invoice', views.InvoiceViewSet) +router.register(r'keyword', views.KeywordViewSet) +router.register(r'legacy_data', views.LegacyDataViewSet) router.register(r'link', views.LinkViewSet) router.register(r'organisation', views.OrganisationViewSet) router.register(r'organisation_location', views.OrganisationLocationViewSet) router.register(r'partner_site', views.PartnerSiteViewSet) router.register(r'partner_type', views.PartnerTypeViewSet) router.register(r'partnership', views.PartnershipViewSet) +router.register(r'planned_disbursement', views.PlannedDisbursementViewSet) +router.register(r'policy_marker', views.PolicyMarkerViewSet) router.register(r'project', views.ProjectViewSet) router.register(r'project_extra', views.ProjectExtraViewSet, base_name='project_extra') router.register(r'project_comment', views.ProjectCommentViewSet) +router.register(r'project_condition', views.ProjectConditionViewSet) +router.register(r'project_contact', views.ProjectContactViewSet) +router.register(r'project_document', views.ProjectDocumentViewSet) router.register(r'project_location', views.ProjectLocationViewSet) router.register(r'project_update_extra', views.ProjectUpdateExtraViewSet, base_name='project_update_extra') router.register(r'project_update', views.ProjectUpdateViewSet, base_name='project_update') router.register(r'project_update_location', views.ProjectUpdateLocationViewSet) router.register(r'publishing_status', views.PublishingStatusViewSet) +router.register(r'recipient_country', views.RecipientCountryViewSet) +router.register(r'recipient_region', views.RecipientRegionViewSet) +router.register(r'related_project', views.RelatedProjectViewSet) +router.register(r'result', views.ResultViewSet) +router.register(r'sector', views.SectorViewSet) +router.register(r'transaction', views.TransactionViewSet) router.register(r'user', views.UserViewSet) # Wire up our API using automatic URL routing. diff --git a/akvo/rest/views/__init__.py b/akvo/rest/views/__init__.py index 46f85b17ea..b439ad98a6 100644 --- a/akvo/rest/views/__init__.py +++ b/akvo/rest/views/__init__.py @@ -14,20 +14,34 @@ from .employment import EmploymentViewSet, approve_employment, set_group from .focus_area import FocusAreaViewSet from .goal import GoalViewSet +from .indicator import IndicatorViewSet, IndicatorPeriodViewSet from .internal_organisation_id import InternalOrganisationIDViewSet from .invoice import InvoiceViewSet +from .keyword import KeywordViewSet +from .legacy_data import LegacyDataViewSet from .link import LinkViewSet from .organisation import OrganisationViewSet from .organisation_location import OrganisationLocationViewSet from .partner_site import PartnerSiteViewSet from .partner_type import PartnerTypeViewSet from .partnership import PartnershipViewSet +from .planned_disbursement import PlannedDisbursementViewSet +from .policy_marker import PolicyMarkerViewSet from .project import ProjectViewSet, ProjectExtraViewSet from .project_comment import ProjectCommentViewSet +from .project_document import ProjectDocumentViewSet +from .project_condition import ProjectConditionViewSet +from .project_contact import ProjectContactViewSet from .project_location import ProjectLocationViewSet from .project_update import ProjectUpdateViewSet, ProjectUpdateExtraViewSet from .project_update_location import ProjectUpdateLocationViewSet from .publishing_status import PublishingStatusViewSet +from .recipient_country import RecipientCountryViewSet +from .related_project import RelatedProjectViewSet +from .region import RecipientRegionViewSet +from .result import ResultViewSet +from .sector import SectorViewSet +from .transaction import TransactionViewSet from .user import UserViewSet, change_password, update_details, request_organisation __all__ = [ @@ -42,22 +56,37 @@ 'set_group', 'FocusAreaViewSet', 'GoalViewSet', + 'IndicatorViewSet', + 'IndicatorPeriodViewSet', 'InternalOrganisationIDViewSet', 'InvoiceViewSet', + 'KeywordViewSet', + 'LegacyDataViewSet', 'LinkViewSet', 'OrganisationViewSet', 'OrganisationLocationViewSet', 'PartnerSiteViewSet', 'PartnerTypeViewSet', 'PartnershipViewSet', + 'PlannedDisbursementViewSet', + 'PolicyMarkerViewSet', 'ProjectViewSet', 'ProjectExtraViewSet', 'ProjectCommentViewSet', + 'ProjectConditionViewSet', + 'ProjectContactViewSet', + 'ProjectDocumentViewSet', 'ProjectLocationViewSet', 'ProjectUpdateLocationViewSet', 'ProjectUpdateViewSet', 'ProjectUpdateExtraViewSet', 'PublishingStatusViewSet', + 'RecipientCountryViewSet', + 'RecipientRegionViewSet', + 'RelatedProjectViewSet', + 'ResultViewSet', + 'SectorViewSet', + 'TransactionViewSet', 'UserViewSet', 'change_password', 'update_details', diff --git a/akvo/rest/views/benchmark.py b/akvo/rest/views/benchmark.py index 0cf51e603d..ff3de0ed27 100644 --- a/akvo/rest/views/benchmark.py +++ b/akvo/rest/views/benchmark.py @@ -16,3 +16,4 @@ class BenchmarkViewSet(BaseRSRViewSet): """ queryset = Benchmark.objects.all() serializer_class = BenchmarkSerializer + filter_fields = ('project', ) diff --git a/akvo/rest/views/budget_item.py b/akvo/rest/views/budget_item.py index f45439f7c4..bab78fb9b1 100644 --- a/akvo/rest/views/budget_item.py +++ b/akvo/rest/views/budget_item.py @@ -16,3 +16,4 @@ class BudgetItemViewSet(BaseRSRViewSet): """ queryset = BudgetItem.objects.all() serializer_class = BudgetItemSerializer + filter_fields = ('project', 'label', 'type', ) diff --git a/akvo/rest/views/employment.py b/akvo/rest/views/employment.py index 8202906f6a..5765740435 100644 --- a/akvo/rest/views/employment.py +++ b/akvo/rest/views/employment.py @@ -6,8 +6,6 @@ from django.contrib.auth.models import Group -from rest_framework import filters -from rest_framework import status from rest_framework.decorators import api_view, permission_classes from rest_framework.exceptions import PermissionDenied from rest_framework.permissions import IsAuthenticated @@ -24,8 +22,7 @@ class EmploymentViewSet(BaseRSRViewSet): """ queryset = Employment.objects.all() serializer_class = EmploymentSerializer - filter_backends = (filters.DjangoFilterBackend,) - filter_fields = ('user', 'organisation',) + filter_fields = ('user', 'organisation', 'group', 'is_approved', ) @api_view(['POST']) @permission_classes((IsAuthenticated, )) diff --git a/akvo/rest/views/goal.py b/akvo/rest/views/goal.py index d973df1821..de3164d21b 100644 --- a/akvo/rest/views/goal.py +++ b/akvo/rest/views/goal.py @@ -16,3 +16,4 @@ class GoalViewSet(BaseRSRViewSet): """ queryset = Goal.objects.all() serializer_class = GoalSerializer + filter_fields = ('project', ) diff --git a/akvo/rest/views/indicator.py b/akvo/rest/views/indicator.py new file mode 100644 index 0000000000..396d96d217 --- /dev/null +++ b/akvo/rest/views/indicator.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- + +# Akvo RSR is covered by the GNU Affero General Public License. +# See more details in the license.txt file located at the root folder of the Akvo RSR module. +# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. + + +from akvo.rsr.models import Indicator, IndicatorPeriod + +from ..serializers import IndicatorSerializer, IndicatorPeriodSerializer +from ..viewsets import BaseRSRViewSet + + +class IndicatorViewSet(BaseRSRViewSet): + """ + """ + queryset = Indicator.objects.all() + serializer_class = IndicatorSerializer + filter_fields = ('result', ) + + +class IndicatorPeriodViewSet(BaseRSRViewSet): + """ + """ + queryset = IndicatorPeriod.objects.all() + serializer_class = IndicatorPeriodSerializer + filter_fields = ('indicator', ) diff --git a/akvo/rest/views/internal_organisation_id.py b/akvo/rest/views/internal_organisation_id.py index fc70184e3d..40a9603720 100644 --- a/akvo/rest/views/internal_organisation_id.py +++ b/akvo/rest/views/internal_organisation_id.py @@ -17,6 +17,7 @@ class InternalOrganisationIDViewSet(BaseRSRViewSet): """ serializer_class = InternalOrganisationIDSerializer queryset = InternalOrganisationID.objects.all() + filter_fields = ('recording_org', 'referenced_org', 'identifier', ) def get_queryset(self): """ diff --git a/akvo/rest/views/invoice.py b/akvo/rest/views/invoice.py index 236082288b..70e8b39b15 100644 --- a/akvo/rest/views/invoice.py +++ b/akvo/rest/views/invoice.py @@ -16,3 +16,4 @@ class InvoiceViewSet(BaseRSRViewSet): """ queryset = Invoice.objects.all() serializer_class = InvoiceSerializer + filter_fields = ('project', ) diff --git a/akvo/rest/views/keyword.py b/akvo/rest/views/keyword.py new file mode 100644 index 0000000000..37e12ea325 --- /dev/null +++ b/akvo/rest/views/keyword.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- + +# Akvo RSR is covered by the GNU Affero General Public License. +# See more details in the license.txt file located at the root folder of the Akvo RSR module. +# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. + + +from akvo.rsr.models import Keyword + +from ..serializers import KeywordSerializer +from ..viewsets import BaseRSRViewSet + + +class KeywordViewSet(BaseRSRViewSet): + """ + """ + queryset = Keyword.objects.all() + serializer_class = KeywordSerializer diff --git a/akvo/rest/views/legacy_data.py b/akvo/rest/views/legacy_data.py new file mode 100644 index 0000000000..0f45e3e698 --- /dev/null +++ b/akvo/rest/views/legacy_data.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- + +# Akvo RSR is covered by the GNU Affero General Public License. +# See more details in the license.txt file located at the root folder of the Akvo RSR module. +# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. + + +from akvo.rsr.models import LegacyData + +from ..serializers import LegacyDataSerializer +from ..viewsets import BaseRSRViewSet + + +class LegacyDataViewSet(BaseRSRViewSet): + """ + """ + queryset = LegacyData.objects.all() + serializer_class = LegacyDataSerializer + filter_fields = ('project', ) \ No newline at end of file diff --git a/akvo/rest/views/link.py b/akvo/rest/views/link.py index a461459f5e..daae7f00ca 100644 --- a/akvo/rest/views/link.py +++ b/akvo/rest/views/link.py @@ -16,3 +16,4 @@ class LinkViewSet(BaseRSRViewSet): """ queryset = Link.objects.all() serializer_class = LinkSerializer + filter_fields = ('project', 'kind', ) diff --git a/akvo/rest/views/organisation.py b/akvo/rest/views/organisation.py index da3205c1fe..9f1636b887 100644 --- a/akvo/rest/views/organisation.py +++ b/akvo/rest/views/organisation.py @@ -70,6 +70,7 @@ class OrganisationViewSet(BaseRSRViewSet): queryset = Organisation.objects.all() serializer_class = OrganisationSerializer parser_classes = (AkvoOrganisationParser, JSONParser,) + filter_fields = ('name', 'long_name', 'iati_org_id', ) def get_queryset(self): """ Enable filtering of Organisations on iati_org_id or name diff --git a/akvo/rest/views/partner_site.py b/akvo/rest/views/partner_site.py index 02688e328b..dd01311f23 100644 --- a/akvo/rest/views/partner_site.py +++ b/akvo/rest/views/partner_site.py @@ -16,3 +16,4 @@ class PartnerSiteViewSet(BaseRSRViewSet): """ queryset = PartnerSite.objects.all() serializer_class = PartnerSiteSerializer + filter_fields = ('organisation', ) diff --git a/akvo/rest/views/partnership.py b/akvo/rest/views/partnership.py index a0b3766c5e..8fdc4c9405 100644 --- a/akvo/rest/views/partnership.py +++ b/akvo/rest/views/partnership.py @@ -16,3 +16,4 @@ class PartnershipViewSet(BaseRSRViewSet): """ queryset = Partnership.objects.all() serializer_class = PartnershipSerializer + filter_fields = ('project', 'organisation', 'partner_type', ) diff --git a/akvo/rest/views/planned_disbursement.py b/akvo/rest/views/planned_disbursement.py new file mode 100644 index 0000000000..857988760a --- /dev/null +++ b/akvo/rest/views/planned_disbursement.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- + +# Akvo RSR is covered by the GNU Affero General Public License. +# See more details in the license.txt file located at the root folder of the Akvo RSR module. +# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. + + +from akvo.rsr.models import PlannedDisbursement + +from ..serializers import PlannedDisbursementSerializer +from ..viewsets import BaseRSRViewSet + + +class PlannedDisbursementViewSet(BaseRSRViewSet): + """ + """ + queryset = PlannedDisbursement.objects.all() + serializer_class = PlannedDisbursementSerializer + filter_fields = ('project', 'currency', 'type', ) diff --git a/akvo/rest/views/policy_marker.py b/akvo/rest/views/policy_marker.py new file mode 100644 index 0000000000..f7b55007d8 --- /dev/null +++ b/akvo/rest/views/policy_marker.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- + +# Akvo RSR is covered by the GNU Affero General Public License. +# See more details in the license.txt file located at the root folder of the Akvo RSR module. +# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. + + +from akvo.rsr.models import PolicyMarker + +from ..serializers import PolicyMarkerSerializer +from ..viewsets import BaseRSRViewSet + + +class PolicyMarkerViewSet(BaseRSRViewSet): + """ + """ + queryset = PolicyMarker.objects.all() + serializer_class = PolicyMarkerSerializer + filter_fields = ('project', 'policy_marker', ) diff --git a/akvo/rest/views/project.py b/akvo/rest/views/project.py index 1ec5c1fbd9..5c6518c0df 100644 --- a/akvo/rest/views/project.py +++ b/akvo/rest/views/project.py @@ -16,6 +16,34 @@ class ProjectViewSet(BaseRSRViewSet): """ queryset = Project.objects.all() serializer_class = ProjectSerializer + filter_fields = { + 'title': ['exact', 'icontains'], + 'subtitle': ['exact', 'icontains'], + 'status': ['exact', ], + 'language': ['exact', ], + 'currency': ['exact', ], + 'date_start_planned': ['exact', 'gt', 'gte', 'lt', 'lte', ], + 'date_start_actual': ['exact', 'gt', 'gte', 'lt', 'lte', ], + 'date_end_planned': ['exact', 'gt', 'gte', 'lt', 'lte', ], + 'date_end_actual': ['exact', 'gt', 'gte', 'lt', 'lte', ], + 'created_at': ['exact', 'gt', 'gte', 'lt', 'lte', ], + 'last_modified_at': ['exact', 'gt', 'gte', 'lt', 'lte', ], + 'sync_owner': ['exact', ], + 'iati_activity_id': ['exact', 'icontains', ], + 'hierarchy': ['exact', ], + 'project_scope': ['exact', ], + 'collaboration_type': ['exact', ], + 'default_aid_type': ['exact', ], + 'default_finance_type': ['exact', ], + 'default_flow_type': ['exact', ], + 'default_tied_status': ['exact', ], + 'budget': ['exact', 'gt', 'gte', 'lt', 'lte', ], + 'funds': ['exact', 'gt', 'gte', 'lt', 'lte', ], + 'funds_needed': ['exact', 'gt', 'gte', 'lt', 'lte', ], + 'categories': ['exact', 'in', ], + 'partners': ['exact', 'in', ], + 'keywords': ['exact', 'in', ], + } class ProjectExtraViewSet(ProjectViewSet): @@ -38,4 +66,4 @@ def get_queryset(self): published = self.request.QUERY_PARAMS.get('publishingstatus__status', None) if published in [PublishingStatus.STATUS_PUBLISHED, PublishingStatus.STATUS_UNPUBLISHED]: queryset = queryset.filter(publishingstatus__status=published) - return queryset \ No newline at end of file + return queryset diff --git a/akvo/rest/views/project_comment.py b/akvo/rest/views/project_comment.py index 52163a5f9c..ba13bc2ce0 100644 --- a/akvo/rest/views/project_comment.py +++ b/akvo/rest/views/project_comment.py @@ -16,3 +16,4 @@ class ProjectCommentViewSet(BaseRSRViewSet): """ queryset = ProjectComment.objects.all() serializer_class = ProjectCommentSerializer + filter_fields = ('project', 'user', ) diff --git a/akvo/rest/views/project_condition.py b/akvo/rest/views/project_condition.py new file mode 100644 index 0000000000..294840b085 --- /dev/null +++ b/akvo/rest/views/project_condition.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- + +# Akvo RSR is covered by the GNU Affero General Public License. +# See more details in the license.txt file located at the root folder of the Akvo RSR module. +# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. + + +from akvo.rsr.models import ProjectCondition + +from ..serializers import ProjectConditionSerializer +from ..viewsets import BaseRSRViewSet + + +class ProjectConditionViewSet(BaseRSRViewSet): + """ + """ + queryset = ProjectCondition.objects.all() + serializer_class = ProjectConditionSerializer + filter_fields = ('project', 'type', ) diff --git a/akvo/rest/views/project_contact.py b/akvo/rest/views/project_contact.py new file mode 100644 index 0000000000..eb9b746a76 --- /dev/null +++ b/akvo/rest/views/project_contact.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- + +# Akvo RSR is covered by the GNU Affero General Public License. +# See more details in the license.txt file located at the root folder of the Akvo RSR module. +# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. + + +from akvo.rsr.models import ProjectContact + +from ..serializers import ProjectContactSerializer +from ..viewsets import BaseRSRViewSet + + +class ProjectContactViewSet(BaseRSRViewSet): + """ + """ + queryset = ProjectContact.objects.all() + serializer_class = ProjectContactSerializer + filter_fields = ('project', 'type', ) diff --git a/akvo/rest/views/project_document.py b/akvo/rest/views/project_document.py new file mode 100644 index 0000000000..ddaa08b506 --- /dev/null +++ b/akvo/rest/views/project_document.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- + +# Akvo RSR is covered by the GNU Affero General Public License. +# See more details in the license.txt file located at the root folder of the Akvo RSR module. +# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. + + +from akvo.rsr.models import ProjectDocument + +from ..serializers import ProjectDocumentSerializer +from ..viewsets import BaseRSRViewSet + + +class ProjectDocumentViewSet(BaseRSRViewSet): + """ + """ + queryset = ProjectDocument.objects.all() + serializer_class = ProjectDocumentSerializer + filter_fields = ('project', ) diff --git a/akvo/rest/views/project_location.py b/akvo/rest/views/project_location.py index ddc62d7320..26a99165f0 100644 --- a/akvo/rest/views/project_location.py +++ b/akvo/rest/views/project_location.py @@ -16,3 +16,4 @@ class ProjectLocationViewSet(BaseRSRViewSet): """ queryset = ProjectLocation.objects.all() serializer_class = ProjectLocationSerializer + filter_fields = ('location_target', 'country', ) diff --git a/akvo/rest/views/project_update.py b/akvo/rest/views/project_update.py index db4b28f9a0..b6775d6db9 100644 --- a/akvo/rest/views/project_update.py +++ b/akvo/rest/views/project_update.py @@ -16,6 +16,7 @@ class ProjectUpdateViewSet(BaseRSRViewSet): """ queryset = ProjectUpdate.objects.all() serializer_class = ProjectUpdateSerializer + filter_fields = ('project', 'user', ) paginate_by_param = 'limit' max_paginate_by = 1000 @@ -43,6 +44,7 @@ class ProjectUpdateExtraViewSet(BaseRSRViewSet): """ queryset = ProjectUpdate.objects.all() serializer_class = ProjectUpdateExtraSerializer + filter_fields = ('project', 'user', ) def get_queryset(self): """ Allow simple filtering on selected fields diff --git a/akvo/rest/views/publishing_status.py b/akvo/rest/views/publishing_status.py index af543e5655..28cb96ba01 100644 --- a/akvo/rest/views/publishing_status.py +++ b/akvo/rest/views/publishing_status.py @@ -16,3 +16,4 @@ class PublishingStatusViewSet(BaseRSRViewSet): """ queryset = PublishingStatus.objects.all() serializer_class = PublishingStatusSerializer + filter_fields = ('project', 'status', ) diff --git a/akvo/rest/views/recipient_country.py b/akvo/rest/views/recipient_country.py new file mode 100644 index 0000000000..db66565702 --- /dev/null +++ b/akvo/rest/views/recipient_country.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- + +# Akvo RSR is covered by the GNU Affero General Public License. +# See more details in the license.txt file located at the root folder of the Akvo RSR module. +# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. + + +from akvo.rsr.models import RecipientCountry + +from ..serializers import RecipientCountrySerializer +from ..viewsets import BaseRSRViewSet + + +class RecipientCountryViewSet(BaseRSRViewSet): + """ + """ + queryset = RecipientCountry.objects.all() + serializer_class = RecipientCountrySerializer + filter_fields = ('project', 'country', ) diff --git a/akvo/rest/views/region.py b/akvo/rest/views/region.py new file mode 100644 index 0000000000..13432216af --- /dev/null +++ b/akvo/rest/views/region.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- + +# Akvo RSR is covered by the GNU Affero General Public License. +# See more details in the license.txt file located at the root folder of the Akvo RSR module. +# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. + + +from akvo.rsr.models import RecipientRegion + +from ..serializers import RecipientRegionSerializer +from ..viewsets import BaseRSRViewSet + + +class RecipientRegionViewSet(BaseRSRViewSet): + """ + """ + queryset = RecipientRegion.objects.all() + serializer_class = RecipientRegionSerializer + filter_fields = ('project', 'region', ) diff --git a/akvo/rest/views/related_project.py b/akvo/rest/views/related_project.py new file mode 100644 index 0000000000..8ecf72d776 --- /dev/null +++ b/akvo/rest/views/related_project.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- + +# Akvo RSR is covered by the GNU Affero General Public License. +# See more details in the license.txt file located at the root folder of the Akvo RSR module. +# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. + + +from akvo.rsr.models import RelatedProject + +from ..serializers import RelatedProjectSerializer +from ..viewsets import BaseRSRViewSet + + +class RelatedProjectViewSet(BaseRSRViewSet): + """ + """ + queryset = RelatedProject.objects.all() + serializer_class = RelatedProjectSerializer + filter_fields = ('project', 'related_project', 'relation', ) diff --git a/akvo/rest/views/result.py b/akvo/rest/views/result.py new file mode 100644 index 0000000000..aeceb53a38 --- /dev/null +++ b/akvo/rest/views/result.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- + +# Akvo RSR is covered by the GNU Affero General Public License. +# See more details in the license.txt file located at the root folder of the Akvo RSR module. +# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. + + +from akvo.rsr.models import Result + +from ..serializers import ResultSerializer +from ..viewsets import BaseRSRViewSet + + +class ResultViewSet(BaseRSRViewSet): + """ + """ + queryset = Result.objects.all() + serializer_class = ResultSerializer + filter_fields = ('project', 'type', ) diff --git a/akvo/rest/views/sector.py b/akvo/rest/views/sector.py new file mode 100644 index 0000000000..2f76faf837 --- /dev/null +++ b/akvo/rest/views/sector.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- + +# Akvo RSR is covered by the GNU Affero General Public License. +# See more details in the license.txt file located at the root folder of the Akvo RSR module. +# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. + + +from akvo.rsr.models import Sector + +from ..serializers import SectorSerializer +from ..viewsets import BaseRSRViewSet + + +class SectorViewSet(BaseRSRViewSet): + """ + """ + queryset = Sector.objects.all() + serializer_class = SectorSerializer + filter_fields = ('project', 'sector_code', ) diff --git a/akvo/rest/views/transaction.py b/akvo/rest/views/transaction.py new file mode 100644 index 0000000000..a1608edc99 --- /dev/null +++ b/akvo/rest/views/transaction.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- + +# Akvo RSR is covered by the GNU Affero General Public License. +# See more details in the license.txt file located at the root folder of the Akvo RSR module. +# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. + + +from akvo.rsr.models import Transaction + +from ..serializers import TransactionSerializer +from ..viewsets import BaseRSRViewSet + + +class TransactionViewSet(BaseRSRViewSet): + """ + """ + queryset = Transaction.objects.all() + serializer_class = TransactionSerializer + filter_fields = ( + 'project', 'reference', 'transaction_type', 'currency', 'provider_organisation', 'receiver_organisation', + 'provider_organisation_ref', 'receiver_organisation_ref' + ) diff --git a/akvo/rest/views/user.py b/akvo/rest/views/user.py index 5e88e23dea..bdd538c661 100644 --- a/akvo/rest/views/user.py +++ b/akvo/rest/views/user.py @@ -24,6 +24,7 @@ class UserViewSet(BaseRSRViewSet): """ queryset = get_user_model().objects.all() serializer_class = UserSerializer + filter_fields = ('username', 'email', 'first_name', 'last_name', 'is_active', 'is_staff', 'is_admin', ) @api_view(['POST']) diff --git a/akvo/rest/viewsets.py b/akvo/rest/viewsets.py index 2b2c94509f..22f6b03dc8 100644 --- a/akvo/rest/viewsets.py +++ b/akvo/rest/viewsets.py @@ -6,6 +6,7 @@ from django.shortcuts import get_object_or_404 +from rest_framework import filters from rest_framework import viewsets from rest_framework.authentication import SessionAuthentication from rest_framework.permissions import DjangoObjectPermissions @@ -17,5 +18,7 @@ class BaseRSRViewSet(viewsets.ModelViewSet): """ Base class used for the view sets for RSR models. Provides unified auth and perms settings. """ - authentication_classes = (SessionAuthentication, TastyTokenAuthentication) + authentication_classes = (SessionAuthentication, TastyTokenAuthentication, ) permission_classes = (DjangoObjectPermissions, ) + filter_backends = (filters.DjangoFilterBackend, filters.OrderingFilter, ) + ordering_fields = '__all__' diff --git a/akvo/rsr/admin.py b/akvo/rsr/admin.py index 09515fcbf8..5e0be0fc21 100644 --- a/akvo/rsr/admin.py +++ b/akvo/rsr/admin.py @@ -28,6 +28,7 @@ from akvo.rsr.fields import ValidXMLCharField from rules.contrib.admin import ObjectPermissionsModelAdmin +from nested_inlines.admin import NestedModelAdmin, NestedStackedInline, NestedTabularInline NON_FIELD_ERRORS = '__all__' csrf_protect_m = method_decorator(csrf_protect) @@ -128,15 +129,15 @@ class OrganisationAccountAdmin(admin.ModelAdmin): admin.site.register(get_model('rsr', 'organisationaccount'), OrganisationAccountAdmin) -class LinkInline(admin.StackedInline): +class LinkInline(NestedStackedInline): model = get_model('rsr', 'link') - extra = 1 - list_display = ('url', 'caption', 'show_link') - fieldsets = ( - (None, { - 'fields': ('kind', 'url', 'caption') - }), - ) + fields = ('id', 'kind', 'url', 'caption') + + def get_extra(self, request, obj=None, **kwargs): + if obj: + return 1 if obj.links.count() == 0 else 0 + else: + return 1 class BudgetItemLabelAdmin(admin.ModelAdmin): @@ -163,12 +164,25 @@ def clean(self): raise forms.ValidationError(_("The 'total' budget item cannot be used in combination with other budget items.")) -class BudgetItemAdminInLine(admin.TabularInline): +class BudgetItemAdminInLine(NestedStackedInline): model = get_model('rsr', 'budgetitem') extra = 1 formset = BudgetItemAdminInLineFormSet - fields = ('label', 'other_extra', 'amount', 'type', 'period_start', 'period_start_text', 'period_end', - 'period_end_text', 'value_date') + fieldsets = ( + (None, { + 'fields': ('id', 'label', 'other_extra', 'type', 'amount', 'period_start', 'period_end', 'value_date') + }), + ('IATI fields (advanced)', { + 'classes': ('collapse',), + 'fields': ('period_start_text', 'period_end_text', ) + }) + ) + + def get_extra(self, request, obj=None, **kwargs): + if obj: + return 1 if obj.budget_items.count() == 0 else 0 + else: + return 1 class Media: css = {'all': (os.path.join(settings.STATIC_URL, 'rsr/main/css/src/rsr_admin.css').replace('\\', '/'),)} @@ -228,18 +242,28 @@ class MiniCMSAdmin(admin.ModelAdmin): admin.site.register(get_model('rsr', 'MiniCMS'), MiniCMSAdmin) -class BenchmarkInline(admin.TabularInline): +class BenchmarkInline(NestedStackedInline): model = get_model('rsr', 'benchmark') # only show the value, category and benchmark are not to be edited here - fields = ('value',) + fieldsets = ( + (None, { + 'classes': ('collapse',), + 'fields': ('id', 'value',) + }), + ) extra = 0 max_num = 0 -class GoalInline(admin.TabularInline): +class GoalInline(NestedStackedInline): model = get_model('rsr', 'goal') - fields = ('text',) - extra = 3 + fieldsets = ( + (None, { + 'classes': ('collapse',), + 'fields': ('id', 'text',) + }), + ) + extra = 0 max_num = 8 @@ -306,10 +330,10 @@ def clean_partner_type(self): return data -class PartnershipInline(admin.TabularInline): +class PartnershipInline(NestedStackedInline): model = get_model('rsr', 'Partnership') - exclude = ('iati_activity_id',) - extra = 1 + fields = ('id', 'organisation', 'partner_type', 'funding_amount', 'internal_id', 'partner_type_extra') + extra = 0 form = RSR_PartnershipInlineForm formset = RSR_PartnershipInlineFormFormSet formfield_overrides = { @@ -323,13 +347,18 @@ def get_formset(self, request, *args, **kwargs): formset.request = request return formset + def get_extra(self, request, obj=None, **kwargs): + if obj: + return 1 if obj.partnerships.count() == 0 else 0 + else: + return 1 + -class ProjectLocationInline(admin.StackedInline): +class ProjectLocationInline(NestedStackedInline): model = get_model('rsr', 'projectlocation') - extra = 0 fieldsets = ( (None, { - 'fields': ('latitude', 'longitude', 'city', 'state', 'country', 'address_1', 'address_2', 'postcode') + 'fields': ('id', 'latitude', 'longitude', 'country', 'city', 'state', 'address_1', 'address_2', 'postcode') }), ('IATI fields (advanced)', { 'classes': ('collapse',), @@ -339,115 +368,170 @@ class ProjectLocationInline(admin.StackedInline): }), ) + def get_extra(self, request, obj=None, **kwargs): + if obj: + return 1 if obj.locations.count() == 0 else 0 + else: + return 1 + -class CountryBudgetInline(admin.StackedInline): - model = get_model('rsr', 'CountryBudgetItem') - extra = 0 +class ProjectDocumentInline(NestedStackedInline): + model = get_model('rsr', 'ProjectDocument') fieldsets = ( - ('Country Budget Item', { - 'classes': ('collapse',), - 'fields': ('code', 'description', 'vocabulary', 'percentage') + (None, { + 'fields': ('id', 'url', 'document', 'title', 'format', 'category', 'language') }), ) + def get_extra(self, request, obj=None, **kwargs): + if obj: + return 1 if obj.documents.count() == 0 else 0 + else: + return 1 -class ResultInline(admin.StackedInline): - model = get_model('rsr', 'Result') + +class CountryBudgetInline(NestedStackedInline): + model = get_model('rsr', 'CountryBudgetItem') extra = 0 fieldsets = ( - ('Result', { + ('Country Budget Item', { 'classes': ('collapse',), - 'fields': ('title', 'type', 'aggregation_status', 'description', 'description_type') + 'fields': ('id', 'code', 'description', 'vocabulary', 'percentage') }), ) -class PlannedDisbursementInline(admin.StackedInline): +class IndicatorPeriodInline(NestedStackedInline): + model = get_model('rsr', 'IndicatorPeriod') + fields = ('id', 'period_start', 'period_end', 'target_value', 'target_comment', 'actual_value', 'actual_comment') + + def get_extra(self, request, obj=None, **kwargs): + if obj: + return 1 if obj.periods.count() == 0 else 0 + else: + return 1 + + +class IndicatorInline(NestedStackedInline): + model = get_model('rsr', 'Indicator') + fields = ('id', 'title', 'description', 'measure', 'ascending', 'baseline_year', 'baseline_value', + 'baseline_comment') + inlines = (IndicatorPeriodInline,) + + def get_extra(self, request, obj=None, **kwargs): + if obj: + return 1 if obj.indicators.count() == 0 else 0 + else: + return 1 + + +class ResultInline(NestedStackedInline): + model = get_model('rsr', 'Result') + inlines = (IndicatorInline,) + fields = ('id', 'title', 'description', 'type', 'aggregation_status') + + def get_extra(self, request, obj=None, **kwargs): + if obj: + return 1 if obj.results.count() == 0 else 0 + else: + return 1 + + +class PlannedDisbursementInline(NestedStackedInline): model = get_model('rsr', 'PlannedDisbursement') extra = 0 fieldsets = ( ('Planned Disbursement', { 'classes': ('collapse',), - 'fields': ('currency', 'value', 'value_date', 'period_start', 'period_end', 'type', 'updated') + 'fields': ('id', 'currency', 'value', 'value_date', 'period_start', 'period_end', 'type', 'updated') }), ) -class PolicyMarkerInline(admin.StackedInline): +class PolicyMarkerInline(NestedStackedInline): model = get_model('rsr', 'PolicyMarker') extra = 0 fieldsets = ( ('Policy Marker', { 'classes': ('collapse',), - 'fields': ('policy_marker', 'significance', 'vocabulary', 'description') + 'fields': ('id', 'policy_marker', 'significance', 'vocabulary', 'description') }), ) -class ProjectConditionInline(admin.StackedInline): +class ProjectConditionInline(NestedStackedInline): model = get_model('rsr', 'ProjectCondition') extra = 0 fieldsets = ( ('Project Condition', { 'classes': ('collapse',), - 'fields': ('type', 'text', 'attached') + 'fields': ('id', 'type', 'text', 'attached') }), ) -class ProjectContactInline(admin.StackedInline): +class ProjectContactInline(NestedStackedInline): model = get_model('rsr', 'ProjectContact') - extra = 0 fieldsets = ( - ('Project Contact', { + (None, { + 'fields': ('id', 'type', 'person_name', 'email', 'job_title', 'organisation', 'telephone', + 'mailing_address',) + }), + ('Additional fields', { 'classes': ('collapse',), - 'fields': ('person_name', 'organisation', 'department', 'type', 'email', 'job_title', 'mailing_address', - 'state', 'country', 'telephone', 'website') + 'fields': ('website', 'department', 'country', 'state',) }), ) + def get_extra(self, request, obj=None, **kwargs): + if obj: + return 1 if obj.contacts.count() == 0 else 0 + else: + return 1 + -class RecipientCountryInline(admin.StackedInline): +class RecipientCountryInline(NestedStackedInline): model = get_model('rsr', 'RecipientCountry') extra = 0 fieldsets = ( ('Recipient Country', { 'classes': ('collapse',), - 'fields': ('country', 'percentage', 'text') + 'fields': ('id', 'country', 'percentage', 'text') }), ) -class RecipientRegionInline(admin.StackedInline): +class RecipientRegionInline(NestedStackedInline): model = get_model('rsr', 'RecipientRegion') extra = 0 fieldsets = ( ('Recipient Region', { 'classes': ('collapse',), - 'fields': ('region', 'region_vocabulary', 'percentage', 'text') + 'fields': ('id', 'region', 'region_vocabulary', 'percentage', 'text') }), ) -class SectorInline(admin.StackedInline): +class SectorInline(NestedStackedInline): model = get_model('rsr', 'Sector') - extra = 0 - fieldsets = ( - ('Sector', { - 'classes': ('collapse',), - 'fields': ('sector_code', 'vocabulary', 'percentage', 'text') - }), - ) + fields = ('id', 'sector_code', 'vocabulary', 'percentage', 'text') + def get_extra(self, request, obj=None, **kwargs): + if obj: + return 1 if obj.sectors.count() == 0 else 0 + else: + return 1 -class TransactionInline(admin.StackedInline): + +class TransactionInline(NestedStackedInline): model = get_model('rsr', 'Transaction') - extra = 0 fieldsets = ( - ('Transaction', { + (None, { + 'fields': ('id', 'reference', 'transaction_type', 'value', 'transaction_date', 'description') + }), + ('IATI fields (advanced)', { 'classes': ('collapse',), - 'fields': ('currency', 'value', 'value_date', 'description', 'transaction_date', 'reference', - 'transaction_type', 'transaction_type_text', 'provider_organisation', + 'fields': ('currency', 'value_date', 'transaction_type_text', 'provider_organisation', 'provider_organisation_ref', 'provider_organisation_activity', 'receiver_organisation', 'receiver_organisation_ref', 'receiver_organisation_activity', 'aid_type', 'aid_type_text', 'disbursement_channel', 'disbursement_channel_text', 'finance_type', 'finance_type_text', @@ -455,98 +539,176 @@ class TransactionInline(admin.StackedInline): }), ) + def get_extra(self, request, obj=None, **kwargs): + if obj: + return 1 if obj.transactions.count() == 0 else 0 + else: + return 1 -class LegacyDataInline(admin.StackedInline): +class LegacyDataInline(NestedStackedInline): model = get_model('rsr', 'LegacyData') extra = 0 fieldsets = ( ('Legacy Data', { 'classes': ('collapse',), - 'fields': ('name', 'value', 'iati_equivalent') + 'fields': ('id', 'name', 'value', 'iati_equivalent') }), ) -class ProjectAdmin(TimestampsAdminDisplayMixin, ObjectPermissionsModelAdmin): +class ProjectAdmin(TimestampsAdminDisplayMixin, ObjectPermissionsModelAdmin, NestedModelAdmin): model = get_model('rsr', 'project') inlines = ( - GoalInline, ProjectLocationInline, BudgetItemAdminInLine, BenchmarkInline, PartnershipInline, LinkInline, - ProjectConditionInline, ProjectContactInline, CountryBudgetInline, PlannedDisbursementInline, - PolicyMarkerInline, RecipientCountryInline, RecipientRegionInline, ResultInline, SectorInline, - TransactionInline, LegacyDataInline + ProjectContactInline, PartnershipInline, ProjectDocumentInline, ProjectLocationInline, SectorInline, + BudgetItemAdminInLine, TransactionInline, ResultInline, LinkInline, ProjectConditionInline, CountryBudgetInline, + PlannedDisbursementInline, PolicyMarkerInline, RecipientCountryInline, RecipientRegionInline, LegacyDataInline, + BenchmarkInline, GoalInline, ) save_as = True fieldsets = ( (_(u'General Information'), { 'description': u'

%s

' % _( - u'This section should contain the top-level information about your project which will be publicly available and used within searches. Try to keep your Title and Subtitle short and snappy.' + u'This section should contain the top-level information about your project which will be publicly ' + u'available and used within searches. Try to keep your Title and Subtitle short and snappy.' + ), + 'fields': ('title', 'subtitle', 'iati_activity_id', 'status', 'hierarchy', 'date_start_planned', + 'date_start_actual', 'date_end_planned', 'date_end_actual', 'language', 'currency', + 'donate_button'), + }), + (_(u'Contact Information'), { + 'description': u'

%s

' % _( + u'This section should contain the contact information of your project which will be publicly available.' + u' Try to fill in at least a contact person and email.' + ), + 'fields': (), + }), + (_(u'Reporting Organisation'), { + 'description': u'

%s

' % _( + u'Indicate the reporting organisation of this project. This organisation must be existing ' + u'already in Akvo RSR. If the organisation does not exist in the system, please send the details of ' + u'the organisation including Name, Address, Logo, Contact Person and Website to ' + u'support@akvo.org.' ), - 'fields': ('title', 'subtitle', 'iati_activity_id', 'status', 'language', 'date_start_planned', - 'date_start_actual', 'date_end_planned', 'date_end_actual', 'donate_button', 'hierarchy'), - }), - (_(u'Description'), { + 'fields': ('sync_owner', 'sync_owner_secondary_reporter'), + }), + (_(u'Project Partners'), { 'description': u'

%s

' % _( - u'Here you can complete the in-depth descriptive details regarding your project, its history and plans for the future. Both The Project Plan and Sustainability fields are unlimited, so you can add additional details to your project there.' + u'Add each of the partners you are working with on your project. These organisations must be existing ' + u'already in Akvo RSR. If you are working with a Partner that does not exist in the system, please ' + u'send the details of the organisation including Name, Address, Logo, Contact Person and Website to ' + u'support@akvo.org.' ), - 'fields': ('project_plan_summary', 'background', 'current_status', 'project_plan', 'sustainability', 'target_group',), - }), - (_(u'Goals'), { + 'fields': (), + }), + (_(u'Project Information'), { 'description': u'

%s

' % _( - u'Here you should be entering information about what your project intends to achieve through its implementation.' + u'Here you can complete the in-depth descriptive details regarding your project, its history and plans ' + u'for the future. Both The Project Plan and Sustainability fields are unlimited, so you can add ' + u'additional details to your project there.' ), - 'fields': ('goals_overview',), - }), - (_(u'Photo'), { + 'fields': ('project_plan_summary', 'background', 'current_status', 'project_plan', 'target_group', + 'sustainability', 'goals_overview'), + }), + (_(u'Project Photo'), { 'description': u'

%s

' % _( - u'Please upload a photo that displays an interesting part of your project, plan or implementation.' + u'Adding a photo to your project is important to be able to correctly visualise the project on the web.' + u' Please upload an image that represents the project clearly. Ensure that you have the user rights and' + u' permissions to be able to use this image publicly before uploading.' ), 'fields': ('current_image', 'current_image_caption', 'current_image_credit'), - }), - (_(u'Locations'), { + }), + (_(u'Project Documents'), { 'description': u'

%s

' % _( - u'Here you can add the physical locations where the project is being carried out. These will appear on the map on your project page. Use the link to iTouchMap.com to obtain the Coordinates for your locations, as these are the items that ensure the pin is in the correct place.' + u'You can add any additional supporting documents to your project here. This could be in the form of ' + u'annual reports, baseline surveys, contextual information or any other report or summary that can ' + u'help users understand more about the projects activities.' ), 'fields': (), - }), - (_(u'Budget'), { + }), + (_(u'Project Scope'), { 'description': u'

%s

' % _( - u'Please enter the details of what your project will be spending its available funds on.' + u'The scope of the project refers to the geographical area that the project is active within.

' + u'Also add the physical locations where the project is being carried out. These will appear on ' + u'the map on your project page. Use the link to ' + u'http://mygeoposition.com/ to obtain the coordinates for your locations, as these are the items ' + u'that ensure the pin is in the correct place.' ), - 'fields': ('currency', ), - }), + 'fields': ('project_scope', ), + }), (_(u'Project Focus'), { 'description': u'

%s

' % _( - u'Here you can choose the Categories, & Focus Areas that your project is operating in. Once you have selected those, Save your project and you will then be presented with a list of Benchmarks applicable to your fields which you can define for measuring the success of your project.' + u'The project focus aims to define the broad areas of the project activities. This ensures that the ' + u'project can be collectively grouped with other similar projects to help make the most out of the ' + u'project resources.' ), - 'fields': ('categories',), - }), - (_(u'Partners'), { + 'fields': (), + }), + (_(u'Project Financials - Budgets'), { 'description': u'

%s

' % _( - u'Add each of the partners you are working with on your project. These organisations must be existing already in Akvo RSR. If you are working with a Partner that does not exist in the system, please send the details of the organisation including Name, Address, Logo, Contact Person and Website to support@akvo.org.' + u'You can define the budget information as a total for the whole project or within sections and ' + u'periods to provide more granular information about where the project funds are being spent.' ), 'fields': (), - }), + }), + (_(u'Project Financials - Transactions'), { + 'description': u'

%s

' % _( + u'Transactions refer to the actual transfers of funds between organisations related to the funding ' + u'and expenditure of the project. This information is crucially important when defining the funding ' + u'chain within the development aid sector and can help to shape the overall picture. Providing this ' + u'information can also be beneficial to give clarity on expenditure over periods of time which is ' + u'reflected within the results obtained for the project.' + ), + 'fields': (), + }), + (_(u'Results'), { + 'description': u'

%s

' % _( + u'Here you can record the projected and achieved results for your project. Results are ordered within' + u' a hierarchy that helps to provide a structure under which to report your results. At the top level ' + u'of the results are your project goals. These should be the high level aims of the project and need ' + u'not be something that can be directly counted, but should provide context.

' + u'Within each goal an indicator can be defined. Indicators should be items that can be counted and ' + u'evaluated as the project continues and is completed. Each indicator can be given one or more periods ' + u'of achievement. These periods should cover the dates from which the indicator is evaluated.

' + u'Important note: If a result does not display an indicator or indicator period, ' + u'please save the project first. After saving the project, the indicator (period) will be shown.' + ), + 'fields': (), + }), (_(u'Additional Information'), { 'description': u'

%s

' % _( - u'You can add links to your project such as Organisation Websites or Akvopedia articles containing relevant information to improve the information available to viewers of your project. You can also make notes on the project. These notes are only visible within this Admin so can be used to identify missing information, specific contact details or status changes that you do not want to be visible on your project page.' + u'You can add links to your project such as Organisation Websites or Akvopedia articles containing ' + u'relevant information to improve the information available to viewers of your project. You can also ' + u'make notes on the project. These notes are only visible within this Admin so can be used to identify ' + u'missing information, specific contact details or status changes that you do not want to be visible ' + u'on your project page.' ), 'fields': ('notes',), - }), + }), (_(u'Keywords'), { 'description': u'

%s

' % _( - u'Add keywords belonging to your project. These keywords must be existing already in Akvo RSR. If you want to use a keyword that does not exist in the system, please contact support@akvo.org.' + u'Add keywords belonging to your project. These keywords must be existing already in Akvo RSR. If ' + u'you want to use a keyword that does not exist in the system, please contact ' + u'support@akvo.org.' ), 'fields': ('keywords',), - }), + }), (_(u'Additional IATI information'), { 'description': u'

%s

' % _( u'Optionally, you can add additional information based on the IATI standard.' ), 'classes': ('collapse',), - 'fields': ('project_scope', 'capital_spend_percentage', 'collaboration_type', - 'default_aid_type', 'default_finance_type', 'default_flow_type', 'default_tied_status'), - }), + 'fields': ('capital_spend_percentage', 'default_aid_type', 'default_flow_type', 'default_tied_status', + 'collaboration_type', 'default_finance_type',), + }), + (_(u'Legacy RSR Data'), { + 'description': u'

%s

' % _( + u'Data that was used in RSR v2, but is currently not used anymore. This is still available in order ' + u'to see the old data.' + ), + 'classes': ('collapse',), + 'fields': ('categories', ), + }), ) filter_horizontal = ('keywords',) list_display = ('id', 'title', 'status', 'project_plan_summary', 'latest_update', 'show_current_image', 'is_published', 'show_keywords') @@ -731,20 +893,6 @@ def get_queryset(self, request): admin.site.register(get_user_model(), UserAdmin) -class IndicatorPeriodInline(admin.TabularInline): - model = get_model('rsr', 'IndicatorPeriod') - extra = 1 - - -class ResultIndicatorAdmin(admin.ModelAdmin): - list_display = ('result', 'title', 'description') - list_filter = ('result', 'title') - search_fields = ('result', 'title',) - inlines = (IndicatorPeriodInline,) - -admin.site.register(get_model('rsr', 'Indicator'), ResultIndicatorAdmin) - - class ProjectCommentAdmin(admin.ModelAdmin): list_display = ('project', 'user', 'comment', 'created_at', ) list_filter = ('project', 'created_at', ) diff --git a/akvo/rsr/filters.py b/akvo/rsr/filters.py index 66fcc6f111..3a943e5eda 100644 --- a/akvo/rsr/filters.py +++ b/akvo/rsr/filters.py @@ -8,12 +8,23 @@ import django_filters -from .models import Project, Organisation, Category, FocusArea, ProjectUpdate +from .models import Project, Organisation, Category, ProjectUpdate from .iso3166 import CONTINENTS +from .iati.codelists.codelists_v104 import SECTOR_CATEGORY ANY_CHOICE = (('', 'All'), ) +def sectors(): + sectors_list = [] + for code in SECTOR_CATEGORY: + if Project.objects.filter(sectors__sector_code=code[0]): + code_list = list(code[:2]) + code_list[1] = code_list[1].title() + sectors_list.append(tuple(code_list)) + return sectors_list + + def remove_empty_querydict_items(request_get): # querydicts are immutable getvars = request_get.copy() @@ -36,14 +47,11 @@ class ProjectFilter(django_filters.FilterSet): label='location', name='primary_location__country__continent_code') - # Focus areas - focus_area = django_filters.ChoiceFilter( - choices=([('', 'All')] + - list(FocusArea.objects.all().values_list('id', 'name', - flat=False))[1:]), - label='focus area', - name='categories__focus_area__id', - initial='All') + sector = django_filters.ChoiceFilter( + initial='All', + choices=([('', 'All')] + sectors()), + label='sector', + name='sectors__sector_code') status = django_filters.ChoiceFilter( initial='All', @@ -68,7 +76,7 @@ def get_orgs(): class Meta: model = Project fields = ['status', 'continent', 'organisation', 'category', - 'focus_area', 'title', ] + 'sector', 'title', ] class ProjectUpdateFilter(django_filters.FilterSet): diff --git a/akvo/rsr/iati/codelists/codelists_v201.py b/akvo/rsr/iati/codelists/codelists_v201.py new file mode 100644 index 0000000000..6514522db1 --- /dev/null +++ b/akvo/rsr/iati/codelists/codelists_v201.py @@ -0,0 +1,4279 @@ +# -*- coding: utf-8 -*- + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/PolicyMarker.xml +# Fields: code, name + +POLICY_MARKER = ( + (u'1', u'Gender Equality'), + (u'2', u'Aid to Environment'), + (u'3', u'Participatory Development/Good Governance'), + (u'4', u'Trade Development'), + (u'5', u'Aid Targeting the Objectives of the Convention on Biological Diversity'), + (u'6', u'Aid Targeting the Objectives of the Framework Convention on Climate Change - Mitigation'), + (u'7', u'Aid Targeting the Objectives of the Framework Convention on Climate Change - Adaptation'), + (u'8', u'Aid Targeting the Objectives of the Convention to Combat Desertification'), + (u'9', u'Reproductive, Maternal, Newborn and Child Health (RMNCH)') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/TransactionType.xml +# Fields: code, name, description + +TRANSACTION_TYPE = ( + (u'1', u'Incoming Funds', u'Funds recieved for use on the activity, which can be from an external or internal source. '), + (u'2', u'Commitment', u'A firm, written obligation from a donor or provider to provide a specified amount of funds, under particular terms and conditions, for specific purposes, for the benefit of the recipient. '), + (u'3', u'Disbursement', u'Outgoing funds that are placed at the disposal of a recipient government or organisation, or funds transferred between two separately reported activities.Under IATI traceability standards the recipient of a disbursement should also be required to report their activities to IATI.'), + (u'4', u'Expenditure', u'Outgoing funds that are spent on goods and services for the activity. The recipients of expenditures fall outside of IATI traceability standards.'), + (u'5', u'Interest Repayment', u'The actual amount of interest paid on a loan or line of credit, including fees.'), + (u'6', u'Loan Repayment', u'The actual amount of principal (amortisation) repaid, including any arrears. '), + (u'7', u'Reimbursement', u'A type of disbursement that covers funds that have already been spent by the recipient, as agreed in the terms of the grant or loan'), + (u'8', u'Purchase of Equity', u'Outgoing funds that are used to purchase equity in a business'), + (u'9', u'Sale of Equity', u'Incoming funds from the sale of equity. '), + (u'10', u'Credit Guarantee', u'A commitment made by a funding organisation to underwrite a loan or line of credit entered into by a third party. ') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/LoanRepaymentPeriod.xml +# Fields: code, name, description + +LOAN_REPAYMENT_PERIOD = ( + (u'1', u'Annual', u'The loan has 1 repayment per year'), + (u'2', u'Semi-annual', u'The loan has 2 repayments per year'), + (u'4', u'Quarterly', u'The loan has 4 repayments per year '), + (u'12', u'Monthly', u'The loan has 12, monthly repayments per year') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/LoanRepaymentType.xml +# Fields: code, name, description + +LOAN_REPAYMENT_TYPE = ( + (u'1', u'Equal Principal Payments (EPP)', u'As required and defined by CRS++ reporting format Column 44'), + (u'2', u'Annuity', u'As required and defined by CRS++ reporting format Column 44'), + (u'3', u'Lump sum', u'As required and defined by CRS++ reporting format Column 44'), + (u'5', u'Other', u'As required and defined by CRS++ reporting format Column 44') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/IndicatorMeasure.xml +# Fields: code, name, description + +INDICATOR_MEASURE = ( + (u'1', u'Unit', u'The indicator is measured in units.'), + (u'2', u'Percentage', u'The indicator is measured in percentages') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/BudgetType.xml +# Fields: code, name, description + +BUDGET_TYPE = ( + (u'1', u'Original', u'The original budget allocated to the activity'), + (u'2', u'Revised', u'The updated budget for an activity') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/AidType.xml +# Fields: code, category, name, description + +AID_TYPE = ( + (u'A01', u'A', u'General budget support', u'Unearmarked contributions to the government budget including funding to support the implementation of macroeconomic reforms (structural adjustment programmes, poverty reduction strategies). Budget support is a method of financing a recipient countrys budget through a transfer of resources from an external financing agency to the recipient governments national treasury. The funds thus transferred are managed in accordance with the recipients budgetary procedures. Funds transferred to the national treasury for financing programmes or projects managed according to different budgetary procedures from those of the recipient country, with the intention of earmarking the resources for specific uses, are therefore excluded.'), + (u'A02', u'A', u'Sector budget support', u'Sector budget support, like general budget support, is a financial contribution to a recipient government\s budget. However, in sector budget support, the dialogue between donors and partner governments focuses on sector-specific concerns, rather than on overall policy and budget priorities'), + (u'B01', u'B', u'Core support to NGOs, other private bodies, PPPs and research institutes', u'Funds are paid over to NGOs (local, national and international) for use at the latters discretion, and contribute to programmes and activities which NGOs have developed themselves, and which they implement on their own authority and responsibility. Core contributions to PPPs, funds paid over to foundations (e.g. philanthropic foundations), and contributions to research institutes (public and private) are also recorded here. Annex 2 of the DAC Directives provides a list of INGOs, PPPs and networks core contributions to which may be reported under B01. This list is not exclusive.'), + (u'B02', u'B', u'Core contributions to multilateral institutions', u'These funds are classified as multilateral ODA (all other categories fall under bilateral ODA). The recipient multilateral institution pools contributions so that they lose their identity and become an integral part of its financial assets. See Annex 2 of the DAC Directives for a comprehensive list of agencies core contributions to which may be reported under B02 (Section I. Multilateral institutions).'), + (u'B03', u'B', u'Contributions to specific-purpose programmes and funds managed by international organisations (multilateral, INGO)', u'In addition to their core-funded operations, international organisations set up and raise funds for specific programmes and funds with clearly identified sectoral, thematic or geographical focus. Donors bilateral contributions to such programmes and funds are recorded here, e.g. "UNICEF girls education", "Education For All Fast Track Initiative", various trust funds, including for reconstruction (e.g. Afghanistan Reconstruction Trust Fund).'), + (u'B04', u'B', u'Basket funds/pooled funding', u'The donor contributes funds to an autonomous account, managed jointly with other donors and/or the recipient. The account will have specific purposes, modes of disbursement and accountability mechanisms, and a limited time frame. Basket funds are characterised by common project documents, common funding contracts and common reporting/audit procedures with all donors. Donors contributions to funds managed autonomously by international organisations are recorded under B03.'), + (u'C01', u'C', u'Project-type interventions', u'A project is a set of inputs, activities and outputs, agreed with the partner country*, to reach specific objectives/outcomes within a defined time frame, with a defined budget and a defined geographical area. Projects can vary significantly in terms of objectives, complexity, amounts involved and duration. There are smaller projects that might involve modest financial resources and last only a few months, whereas large projects might involve more significant amounts, entail successive phases and last for many years. A large project with a number of different components is sometimes referred to as a programme, but should nevertheless be recorded here. Feasibility studies, appraisals and evaluations are included (whether designed as part of projects/programmes or dedicated funding arrangements). Aid channelled through NGOs or multilaterals is also recorded here. This includes payments for NGOs and multilaterals to implement donors projects and programmes, and funding of specified NGOs projects. By contrast, core funding of NGOs and multilaterals as well as contributions to specific- purpose funds managed by international organisations are recorded under B. * In the cases of equity investments, humanitarian aid or aid channelled through NGOs, projects are recorded here even if there was no direct agreement between the donor and the partner country.'), + (u'D01', u'D', u'Donor country personnel', u'Experts, consultants, teachers, academics, researchers, volunteers and contributions to public and private bodies for sending experts to developing countries.'), + (u'D02', u'D', u'Other technical assistance', u'Provision, outside projects as described in category C01, of technical assistance in recipient countries (excluding technical assistance performed by donor experts reported under D01, and scholarships/training in donor country reported under E01). This includes training and research; language training; south-south studies; research studies; collaborative research between donor and recipient universities and organisations); local scholarships; development-oriented social and cultural programmes. This category also covers ad hoc contributions such as conferences, seminars and workshops, exchange visits, publications, etc.'), + (u'E01', u'E', u'Scholarships/training in donor country', u'Financial aid awards for individual students and contributions to trainees.'), + (u'E02', u'E', u'Imputed student costs', u'Indirect ("imputed") costs of tuition in donor countries.'), + (u'F01', u'F', u'Debt relief', u'Groups all actions relating to debt (forgiveness, conversions, swaps, buy-backs, rescheduling, refinancing).'), + (u'G01', u'G', u'Administrative costs not included elsewhere', u'Administrative costs of development assistance programmes not already included under other ODA items as an integral part of the costs of delivering or implementing the aid provided. This category covers situation analyses and auditing activities. As regards the salaries component of administrative costs, it relates to in-house agency staff and contractors only; costs associated with donor experts/consultants are to be reported under category C or D01.'), + (u'H01', u'H', u'Development awareness', u'Funding of activities designed to increase public support, i.e. awareness in the donor country of development co-operation efforts, needs and issues.'), + (u'H02', u'H', u'Refugees in donor countries', u'Official sector expenditures for the sustenance of refugees in donor countries during the first twelve months of their stay.') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/Country.xml +# Fields: code, name + +COUNTRY = ( + (u'AF', u'Afghanistan'), + (u'AX', u'Åland Islands'), + (u'AL', u'Albania'), + (u'DZ', u'Algeria'), + (u'AS', u'American Samoa'), + (u'AD', u'Andorra'), + (u'AO', u'Angola'), + (u'AI', u'Anguilla'), + (u'AQ', u'Antarctica'), + (u'AG', u'Antigua and Barbuda'), + (u'AR', u'Argentina'), + (u'AM', u'Armenia'), + (u'AW', u'Aruba'), + (u'AU', u'Australia'), + (u'AT', u'Austria'), + (u'AZ', u'Azerbaijan'), + (u'BS', u'Bahamas'), + (u'BH', u'Bahrain'), + (u'BD', u'Bangladesh'), + (u'BB', u'Barbados'), + (u'BY', u'Belarus'), + (u'BE', u'Belgium'), + (u'BZ', u'Belize'), + (u'BJ', u'Benin'), + (u'BM', u'Bermuda'), + (u'BT', u'Bhutan'), + (u'BO', u'Bolivia, Plurinational State of'), + (u'BQ', u'Bonaire, Saint Eustatius and Saba'), + (u'BA', u'Bosnia and Herzegovina'), + (u'BW', u'Botswana'), + (u'BV', u'Bouvet Island'), + (u'BR', u'Brazil'), + (u'IO', u'British Indian Ocean Territory'), + (u'BN', u'Brunei Darussalam'), + (u'BG', u'Bulgaria'), + (u'BF', u'Burkina Faso'), + (u'BI', u'Burundi'), + (u'KH', u'Cambodia'), + (u'CM', u'Cameroon'), + (u'CA', u'Canada'), + (u'CV', u'Cape Verde'), + (u'KY', u'Cayman Islands'), + (u'CF', u'Central African Republic'), + (u'TD', u'Chad'), + (u'CL', u'Chile'), + (u'CN', u'China'), + (u'CX', u'Christmas Island'), + (u'CC', u'Cocos (Keeling) Islands'), + (u'CO', u'Colombia'), + (u'KM', u'Comoros'), + (u'CG', u'Congo'), + (u'CD', u'Congo, The Democratic Republic of the'), + (u'CK', u'Cook Islands'), + (u'CR', u'Costa Rica'), + (u'CI', u'Côte Divoire'), + (u'HR', u'Croatia'), + (u'CU', u'Cuba'), + (u'CW', u'Curaçao'), + (u'CY', u'Cyprus'), + (u'CZ', u'Czech Republic'), + (u'DK', u'Denmark'), + (u'DJ', u'Djibouti'), + (u'DM', u'Dominica'), + (u'DO', u'Dominican Republic'), + (u'EC', u'Ecuador'), + (u'EG', u'Egypt'), + (u'SV', u'El Salvador'), + (u'GQ', u'Equatorial Guinea'), + (u'ER', u'Eritrea'), + (u'EE', u'Estonia'), + (u'ET', u'Ethiopia'), + (u'FK', u'Falkland Islands (Malvinas)'), + (u'FO', u'Faroe Islands'), + (u'FJ', u'Fiji'), + (u'FI', u'Finland'), + (u'FR', u'France'), + (u'GF', u'French Guiana'), + (u'PF', u'French Polynesia'), + (u'TF', u'French Southern Territories'), + (u'GA', u'Gabon'), + (u'GM', u'Gambia'), + (u'GE', u'Georgia'), + (u'DE', u'Germany'), + (u'GH', u'Ghana'), + (u'GI', u'Gibraltar'), + (u'GR', u'Greece'), + (u'GL', u'Greenland'), + (u'GD', u'Grenada'), + (u'GP', u'Guadeloupe'), + (u'GU', u'Guam'), + (u'GT', u'Guatemala'), + (u'GG', u'Guernsey'), + (u'GN', u'Guinea'), + (u'GW', u'Guinea-Bissau'), + (u'GY', u'Guyana'), + (u'HT', u'Haiti'), + (u'HM', u'Heard Island and Mcdonald Islands'), + (u'VA', u'Holy See (Vatican City State)'), + (u'HN', u'Honduras'), + (u'HK', u'Hong Kong'), + (u'HU', u'Hungary'), + (u'IS', u'Iceland'), + (u'IN', u'India'), + (u'ID', u'Indonesia'), + (u'IR', u'Iran, Islamic Republic of'), + (u'IQ', u'Iraq'), + (u'IE', u'Ireland'), + (u'IM', u'Isle of Man'), + (u'IL', u'Israel'), + (u'IT', u'Italy'), + (u'JM', u'Jamaica'), + (u'JP', u'Japan'), + (u'JE', u'Jersey'), + (u'JO', u'Jordan'), + (u'KZ', u'Kazakhstan'), + (u'KE', u'Kenya'), + (u'KI', u'Kiribati'), + (u'KP', u'Korea, Democratic Peoples Republic of'), + (u'KR', u'Korea, Republic of'), + (u'XK', u'Kosovo'), + (u'KW', u'Kuwait'), + (u'KG', u'Kyrgyzstan'), + (u'LA', u'Lao Peoples Democratic Republic'), + (u'LV', u'Latvia'), + (u'LB', u'Lebanon'), + (u'LS', u'Lesotho'), + (u'LR', u'Liberia'), + (u'LY', u'Libyan Arab Jamahiriya'), + (u'LI', u'Liechtenstein'), + (u'LT', u'Lithuania'), + (u'LU', u'Luxembourg'), + (u'MO', u'Macao'), + (u'MK', u'Macedonia, The Former Yugoslav Republic of'), + (u'MG', u'Madagascar'), + (u'MW', u'Malawi'), + (u'MY', u'Malaysia'), + (u'MV', u'Maldives'), + (u'ML', u'Mali'), + (u'MT', u'Malta'), + (u'MH', u'Marshall Islands'), + (u'MQ', u'Martinique'), + (u'MR', u'Mauritania'), + (u'MU', u'Mauritius'), + (u'YT', u'Mayotte'), + (u'MX', u'Mexico'), + (u'FM', u'Micronesia, Federated States of'), + (u'MD', u'Moldova, Republic of'), + (u'MC', u'Monaco'), + (u'MN', u'Mongolia'), + (u'ME', u'Montenegro'), + (u'MS', u'Montserrat'), + (u'MA', u'Morocco'), + (u'MZ', u'Mozambique'), + (u'MM', u'Myanmar'), + (u'NA', u'Namibia'), + (u'NR', u'Nauru'), + (u'NP', u'Nepal'), + (u'NL', u'Netherlands'), + (u'AN', u'Netherland Antilles'), + (u'NC', u'New Caledonia'), + (u'NZ', u'New Zealand'), + (u'NI', u'Nicaragua'), + (u'NE', u'Niger'), + (u'NG', u'Nigeria'), + (u'NU', u'Niue'), + (u'NF', u'Norfolk Island'), + (u'MP', u'Northern Mariana Islands'), + (u'NO', u'Norway'), + (u'OM', u'Oman'), + (u'PK', u'Pakistan'), + (u'PW', u'Palau'), + (u'PS', u'Palestinian Territory, Occupied'), + (u'PA', u'Panama'), + (u'PG', u'Papua New Guinea'), + (u'PY', u'Paraguay'), + (u'PE', u'Peru'), + (u'PH', u'Philippines'), + (u'PN', u'Pitcairn'), + (u'PL', u'Poland'), + (u'PT', u'Portugal'), + (u'PR', u'Puerto Rico'), + (u'QA', u'Qatar'), + (u'RE', u'Reunion'), + (u'RO', u'Romania'), + (u'RU', u'Russian Federation'), + (u'RW', u'Rwanda'), + (u'BL', u'Saint Barthélemy'), + (u'SH', u'Saint Helena, Ascension and Tristan da Cunha'), + (u'KN', u'Saint Kitts and Nevis'), + (u'LC', u'Saint Lucia'), + (u'MF', u'Saint Martin (French Part)'), + (u'PM', u'Saint Pierre and Miquelon'), + (u'VC', u'Saint Vincent and the Grenadines'), + (u'WS', u'Samoa'), + (u'SM', u'San Marino'), + (u'ST', u'Sao Tome and Principe'), + (u'SA', u'Saudi Arabia'), + (u'SN', u'Senegal'), + (u'RS', u'Serbia'), + (u'SC', u'Seychelles'), + (u'SL', u'Sierra Leone'), + (u'SG', u'Singapore'), + (u'SX', u'Sint Maarten (Dutch Part)'), + (u'SK', u'Slovakia'), + (u'SI', u'Slovenia'), + (u'SB', u'Solomon Islands'), + (u'SO', u'Somalia'), + (u'ZA', u'South Africa'), + (u'GS', u'South Georgia and the South Sandwich Islands'), + (u'SS', u'South Sudan'), + (u'ES', u'Spain'), + (u'LK', u'Sri Lanka'), + (u'SD', u'Sudan'), + (u'SR', u'Suriname'), + (u'SJ', u'Svalbard and Jan Mayen'), + (u'SZ', u'Swaziland'), + (u'SE', u'Sweden'), + (u'CH', u'Switzerland'), + (u'SY', u'Syrian Arab Republic'), + (u'TW', u'Taiwan, Province of China'), + (u'TJ', u'Tajikistan'), + (u'TZ', u'Tanzania, United Republic of'), + (u'TH', u'Thailand'), + (u'TL', u'Timor-Leste'), + (u'TG', u'Togo'), + (u'TK', u'Tokelau'), + (u'TO', u'Tonga'), + (u'TT', u'Trinidad and Tobago'), + (u'TN', u'Tunisia'), + (u'TR', u'Turkey'), + (u'TM', u'Turkmenistan'), + (u'TC', u'Turks and Caicos Islands'), + (u'TV', u'Tuvalu'), + (u'UG', u'Uganda'), + (u'UA', u'Ukraine'), + (u'AE', u'United Arab Emirates'), + (u'GB', u'United Kingdom'), + (u'US', u'United States'), + (u'UM', u'United States Minor Outlying Islands'), + (u'UY', u'Uruguay'), + (u'UZ', u'Uzbekistan'), + (u'VU', u'Vanuatu'), + (u'VE', u'Venezuela, Bolivarian Republic of'), + (u'VN', u'Viet Nam'), + (u'VG', u'Virgin Islands, British'), + (u'VI', u'Virgin Islands, U.S.'), + (u'WF', u'Wallis and Futuna'), + (u'EH', u'Western Sahara'), + (u'YE', u'Yemen'), + (u'ZM', u'Zambia'), + (u'ZW', u'Zimbabwe') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/BudgetIdentifierSector.xml +# Fields: code, category, name + +BUDGET_IDENTIFIER_SECTOR = ( + (u'1.1', u'1', u'Executive'), + (u'1.2', u'1', u'Legislative'), + (u'1.3', u'1', u'Accountability'), + (u'1.3', u'1', u'Accountability'), + (u'1.4', u'1', u'External Affairs'), + (u'1.5', u'1', u'General Personnel Services'), + (u'1.6', u'1', u'Statistics'), + (u'1.7', u'1', u'Other General Services'), + (u'1.8', u'1', u'Elections'), + (u'2.1', u'2', u'Justice, Law and Order'), + (u'2.2', u'2', u'Defence'), + (u'3.1', u'3', u'General Economic, Commercial and Labour Affairs'), + (u'3.2', u'3', u'Public Works'), + (u'3.3', u'3', u'Agriculture'), + (u'3.4', u'3', u'Forestry'), + (u'3.5', u'3', u'Fishing and Hunting'), + (u'3.6', u'3', u'Energy'), + (u'3.7', u'3', u'Mining and Mineral Development'), + (u'3.8', u'3', u'Transport'), + (u'3.9', u'3', u'Industry'), + (u'3.10', u'3', u'Communications'), + (u'3.11', u'3', u'Tourism'), + (u'3.12', u'3', u'Microfinance and financial services'), + (u'4.1', u'4', u'Water supply and Sanitation'), + (u'4.2', u'4', u'Environment'), + (u'5.1', u'5', u'Health'), + (u'5.2', u'5', u'Recreation, Culture and Religion'), + (u'5.3', u'5', u'Education'), + (u'5.4', u'5', u'Social Protection, Land Housing and Community Amenities'), + (u'6.1', u'6', u'Development Partner affairs'), + (u'7.1', u'7', u'External to government sector'), + (u'7.2', u'7', u'General Budget Support') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/DocumentCategory.xml +# Fields: code, category, name, description + +DOCUMENT_CATEGORY = ( + (u'A01', u'A', u'Pre- and post-project impact appraisal', u''), + (u'A02', u'A', u'Objectives / Purpose of activity', u''), + (u'A03', u'A', u'Intended ultimate beneficiaries', u''), + (u'A04', u'A', u'Conditions', u''), + (u'A05', u'A', u'Budget', u''), + (u'A06', u'A', u'Summary information about contract', u''), + (u'A07', u'A', u'Review of project performance and evaluation', u''), + (u'A08', u'A', u'Results, outcomes and outputs', u''), + (u'A09', u'A', u'Memorandum of understanding (If agreed by all parties)', u''), + (u'A10', u'A', u'Tender', u''), + (u'A11', u'A', u'Contract', u''), + (u'A12', u'A', u'Activity web page', u''), + (u'B01', u'B', u'Annual report', u''), + (u'B02', u'B', u'Institutional Strategy paper', u''), + (u'B03', u'B', u'Country strategy paper', u''), + (u'B04', u'B', u'Aid Allocation Policy', u''), + (u'B05', u'B', u'Procurement Policy and Procedure', u''), + (u'B06', u'B', u'Institutional Audit Report', u''), + (u'B07', u'B', u'Country Audit Report', u''), + (u'B08', u'B', u'Exclusions Policy', u''), + (u'B09', u'B', u'Institutional Evaluation Report', u''), + (u'B10', u'B', u'Country Evaluation Report', u''), + (u'B11', u'B', u'Sector strategy', u''), + (u'B12', u'B', u'Thematic strategy', u''), + (u'B13', u'B', u'Country-level Memorandum of Understanding', u''), + (u'B14', u'B', u'Evaluations policy', u''), + (u'B15', u'B', u'General Terms and Conditions', u''), + (u'B16', u'B', u'Organisation web page', u''), + (u'B17', u'B', u'Country/Region web page', u''), + (u'B18', u'B', u'Sector web page', u'') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/LocationType.xml +# Fields: code, category, name, description + +LOCATION_TYPE = ( + (u'AIRQ', u'S', u'abandoned airfield', u'abandoned airfield'), + (u'CMPQ', u'S', u'abandoned camp', u'abandoned camp'), + (u'CNLQ', u'H', u'abandoned canal', u'abandoned canal'), + (u'MFGQ', u'S', u'abandoned factory', u'abandoned factory'), + (u'FRMQ', u'S', u'abandoned farm', u'abandoned farm'), + (u'MNQ', u'S', u'abandoned mine', u'abandoned mine'), + (u'MSSNQ', u'S', u'abandoned mission', u'abandoned mission'), + (u'OILQ', u'S', u'abandoned oil well', u'abandoned oil well'), + (u'PPQ', u'S', u'abandoned police post', u'abandoned police post'), + (u'PPLQ', u'P', u'abandoned populated place', u'abandoned populated place'), + (u'PRNQ', u'S', u'abandoned prison', u'abandoned prison'), + (u'RRQ', u'R', u'abandoned railroad', u'abandoned railroad'), + (u'RSTNQ', u'S', u'abandoned railroad station', u'abandoned railroad station'), + (u'RSTPQ', u'S', u'abandoned railroad stop', u'abandoned railroad stop'), + (u'STMQ', u'H', u'abandoned watercourse', u'a former stream or distributary no longer carrying flowing water, but still evident due to lakes, wetland, topographic or vegetation patterns'), + (u'WLLQ', u'H', u'abandoned well', u'abandoned well'), + (u'ADMD', u'A', u'administrative division', u'an administrative division of a political entity, undifferentiated as to administrative level'), + (u'ADMF', u'S', u'administrative facility', u'a government building'), + (u'AGRC', u'L', u'agricultural colony', u'a tract of land set aside for agricultural settlement'), + (u'AGRF', u'S', u'agricultural facility', u'a building and/or tract of land used for improving agriculture'), + (u'RESA', u'L', u'agricultural reserve', u'a tract of land reserved for agricultural reclamation and/or development'), + (u'SCHA', u'S', u'agricultural school', u'a school with a curriculum focused on agriculture'), + (u'AIRB', u'S', u'airbase', u'an area used to store supplies, provide barracks for air force personnel, hangars and runways for aircraft, and from which operations are initiated'), + (u'AIRF', u'S', u'airfield', u'a place on land where aircraft land and take off; no facilities provided for the commercial handling of passengers and cargo'), + (u'AIRP', u'S', u'airport', u'a place where aircraft regularly land and take off, with runways, navigational aids, and major facilities for the commercial handling of passengers and cargo'), + (u'AMTH', u'S', u'amphitheater', u'an oval or circular structure with rising tiers of seats about a stage or open space'), + (u'STMA', u'H', u'anabranch', u'a diverging branch flowing out of a main stream and rejoining it downstream'), + (u'ANCH', u'H', u'anchorage', u'an area where vessels may anchor'), + (u'RDA', u'R', u'ancient road', u'the remains of a road used by ancient cultures'), + (u'ANS', u'S', u'ancient site', u'a place where archeological remains, old structures, or cultural artifacts are located'), + (u'WALLA', u'S', u'ancient wall', u'the remains of a linear defensive stone structure'), + (u'BLDA', u'S', u'apartment building', u'a building containing several individual apartments'), + (u'AQC', u'S', u'aquaculture facility', u'facility or area for the cultivation of aquatic animals and plants, especially fish, shellfish, and seaweed, in natural or controlled marine or freshwater environments; underwater agriculture'), + (u'CNLA', u'H', u'aqueduct', u'a conduit used to carry water'), + (u'ARCH', u'S', u'arch', u'a natural or man-made structure in the form of an arch'), + (u'LAND', u'L', u'Arctic land', u'a tract of land in the Arctic'), + (u'AREA', u'L', u'area', u'a tract of land without homogeneous character or boundaries'), + (u'ISLF', u'T', u'artificial island', u'an island created by landfill or diking and filling in a wetland, bay, or lagoon'), + (u'RNGA', u'L', u'artillery range', u'a tract of land used for artillery firing practice'), + (u'ASPH', u'T', u'asphalt lake', u'a small basin containing naturally occurring asphalt'), + (u'ASTR', u'S', u'astronomical station', u'a point on the earth whose position has been determined by observations of celestial bodies'), + (u'ASYL', u'S', u'asylum', u'a facility where the insane are cared for and protected'), + (u'ATHF', u'S', u'athletic field', u'a tract of land used for playing team sports, and athletic track and field events'), + (u'ATOL', u'T', u'atoll(s)', u'a ring-shaped coral reef which has closely spaced islands on it encircling a lagoon'), + (u'CTRA', u'S', u'atomic center', u'a facility where atomic research is carried out'), + (u'BDLD', u'T', u'badlands', u'an area characterized by a maze of very closely spaced, deep, narrow, steep-sided ravines, and sharp crests and pinnacles'), + (u'BSTN', u'S', u'baling station', u'a facility for baling agricultural products'), + (u'ESTB', u'S', u'banana plantation', u'an estate that specializes in the growing of bananas'), + (u'BAN', u'S', u'bank', u'an establishment for the custody, loan, exchange or issue of money, for the extension of credit, and for facilitating the transmission of funds'), + (u'BNK', u'H', u'bank(s)', u'an elevation, typically located on a shelf, over which the depth of water is relatively shallow but sufficient for most surface navigation'), + (u'BAR', u'T', u'bar', u'a shallow ridge or mound of coarse unconsolidated material in a stream channel, at the mouth of a stream, estuary, or lagoon and in the wave-break zone along coasts'), + (u'BRKS', u'S', u'barracks', u'a building for lodging military personnel'), + (u'BTL', u'L', u'battlefield', u'a site of a land battle of historical importance'), + (u'BAY', u'H', u'bay', u'a coastal indentation between two capes or headlands, larger than a cove but smaller than a gulf'), + (u'BAYS', u'H', u'bays', u'coastal indentations between two capes or headlands, larger than a cove but smaller than a gulf'), + (u'BCH', u'T', u'beach', u'a shore zone of coarse unconsolidated sediment that extends from the low-water line to the highest reach of storm waves'), + (u'RDGB', u'T', u'beach ridge', u'a ridge of sand just inland and parallel to the beach, usually in series'), + (u'BCHS', u'T', u'beaches', u'a shore zone of coarse unconsolidated sediment that extends from the low-water line to the highest reach of storm waves'), + (u'BCN', u'S', u'beacon', u'a fixed artificial navigation mark'), + (u'BNCH', u'T', u'bench', u'a long, narrow bedrock platform bounded by steeper slopes above and below, usually overlooking a waterbody'), + (u'BGHT', u'H', u'bight(s)', u'an open body of water forming a slight recession in a coastline'), + (u'BLHL', u'T', u'blowhole(s)', u'a hole in coastal rock through which sea water is forced by a rising tide or waves and spurted through an outlet into the air'), + (u'BLOW', u'T', u'blowout(s)', u'a small depression in sandy terrain, caused by wind erosion'), + (u'BTYD', u'S', u'boatyard', u'a waterside facility for servicing, repairing, and building small vessels'), + (u'BOG', u'H', u'bog(s)', u'a wetland characterized by peat forming sphagnum moss, sedge, and other acid-water plants'), + (u'PSTB', u'S', u'border post', u'a post or station at an international boundary for the regulation of movement of people and goods'), + (u'BLDR', u'T', u'boulder field', u'a high altitude or high latitude bare, flat area covered with large angular rocks'), + (u'BP', u'S', u'boundary marker', u'a fixture marking a point along a boundary'), + (u'BRKW', u'S', u'breakwater', u'a structure erected to break the force of waves at the entrance to a harbor or port'), + (u'MFGB', u'S', u'brewery', u'one or more buildings where beer is brewed'), + (u'BDG', u'S', u'bridge', u'a structure erected across an obstacle such as a stream, road, etc., in order to carry roads, railroads, and pedestrians across'), + (u'ZNB', u'A', u'buffer zone', u'a zone recognized as a buffer between two nations in which military presence is minimal or absent'), + (u'BLDG', u'S', u'building(s)', u'a structure built for permanent use, as a house, factory, etc.'), + (u'BUR', u'S', u'burial cave(s)', u'a cave used for human burials'), + (u'BUSH', u'V', u'bush(es)', u'a small clump of conspicuous bushes in an otherwise bare area'), + (u'CTRB', u'L', u'business center', u'a place where a number of businesses are located'), + (u'BUTE', u'T', u'butte(s)', u'a small, isolated, usually flat-topped hill with steep sides'), + (u'CARN', u'S', u'cairn', u'a heap of stones erected as a landmark or for other purposes'), + (u'CLDA', u'T', u'caldera', u'a depression measuring kilometers across formed by the collapse of a volcanic mountain'), + (u'CMP', u'S', u'camp(s)', u'a site occupied by tents, huts, or other shelters for temporary use'), + (u'CNL', u'H', u'canal', u'an artificial watercourse'), + (u'CNLB', u'H', u'canal bend', u'a conspicuously curved or bent section of a canal'), + (u'TNLC', u'H', u'canal tunnel', u'a tunnel through which a canal passes'), + (u'STMC', u'H', u'canalized stream', u'a stream that has been substantially ditched, diked, or straightened'), + (u'MFGC', u'S', u'cannery', u'a building where food items are canned'), + (u'CNYN', u'T', u'canyon', u'a deep, narrow valley with steep sides cutting into a plateau or mountainous area'), + (u'CAPE', u'T', u'cape', u'a land area, more prominent than a point, projecting into the sea and marking a notable change in coastal direction'), + (u'PPLC', u'P', u'capital of a political entity', u'capital of a political entity'), + (u'RTE', u'R', u'caravan route', u'the route taken by caravans'), + (u'CSNO', u'S', u'casino', u'a building used for entertainment, especially gambling'), + (u'CSTL', u'S', u'castle', u'a large fortified building or set of buildings'), + (u'TNKD', u'S', u'cattle dipping tank', u'a small artificial pond used for immersing cattle in chemically treated water for disease control'), + (u'CSWY', u'R', u'causeway', u'a raised roadway across wet ground or shallow water'), + (u'CAVE', u'S', u'cave(s)', u'an underground passageway or chamber, or cavity on the side of a cliff'), + (u'CMTY', u'S', u'cemetery', u'a burial place or ground'), + (u'CHN', u'H', u'channel', u'the deepest part of a stream, bay, lagoon, or strait, through which the main current flows'), + (u'MNCR', u'S', u'chrome mine(s)', u'a mine where chrome ore is extracted'), + (u'CH', u'S', u'church', u'a building for public Christian worship'), + (u'CRQ', u'T', u'cirque', u'a bowl-like hollow partially surrounded by cliffs or steep slopes at the head of a glaciated valley'), + (u'CRQS', u'T', u'cirques', u'bowl-like hollows partially surrounded by cliffs or steep slopes at the head of a glaciated valley'), + (u'CLG', u'L', u'clearing', u'an area in a forest with trees removed'), + (u'CFT', u'T', u'cleft(s)', u'a deep narrow slot, notch, or groove in a coastal cliff'), + (u'CLF', u'T', u'cliff(s)', u'a high, steep to perpendicular slope overlooking a waterbody or lower area'), + (u'HSPC', u'S', u'clinic', u'a medical facility associated with a hospital for outpatients'), + (u'MNC', u'S', u'coal mine(s)', u'a mine where coal is extracted'), + (u'COLF', u'L', u'coalfield', u'a region in which coal deposits of possible economic value occur'), + (u'CST', u'L', u'coast', u'a zone of variable width straddling the shoreline'), + (u'STNC', u'S', u'coast guard station', u'a facility from which the coast is guarded by armed vessels'), + (u'GRVC', u'V', u'coconut grove', u'a planting of coconut trees'), + (u'SCHC', u'S', u'college', u'the grounds and buildings of an institution of higher learning'), + (u'CMN', u'L', u'common', u'a park or pasture for community use'), + (u'COMC', u'S', u'communication center', u'a facility, including buildings, antennae, towers and electronic equipment for receiving and transmitting information'), + (u'CTRCM', u'S', u'community center', u'a facility for community recreation and other activities'), + (u'CNS', u'L', u'concession area', u'a lease of land by a government for economic development, e.g., mining, forestry'), + (u'CONE', u'T', u'cone(s)', u'a conical landform composed of mud or volcanic material'), + (u'CNFL', u'H', u'confluence', u'a place where two or more streams or intermittent streams flow together'), + (u'CRSU', u'U', u'continental rise', u'a gentle slope rising from oceanic depths towards the foot of a continental slope'), + (u'CVNT', u'S', u'convent', u'a building where a community of nuns lives in seclusion'), + (u'MNCU', u'S', u'copper mine(s)', u'a mine where copper ore is extracted'), + (u'MFGCU', u'S', u'copper works', u'a facility for processing copper ore'), + (u'RFC', u'H', u'coral reef(s)', u'a surface-navigation hazard composed of coral'), + (u'CRRL', u'S', u'corral(s)', u'a pen or enclosure for confining or capturing animals'), + (u'CRDR', u'T', u'corridor', u'a strip or area of land having significance as an access way'), + (u'ESTC', u'S', u'cotton plantation', u'an estate specializing in the cultivation of cotton'), + (u'HSEC', u'S', u'country house', u'a large house, mansion, or chateau, on a large estate'), + (u'CTHSE', u'S', u'courthouse', u'a building in which courts of law are held'), + (u'COVE', u'H', u'cove(s)', u'a small coastal indentation, smaller than a bay'), + (u'LKC', u'H', u'crater lake', u'a lake in a crater or caldera'), + (u'LKSC', u'H', u'crater lakes', u'lakes in a crater or caldera'), + (u'CRTR', u'T', u'crater(s)', u'a generally circular saucer or bowl-shaped depression caused by volcanic or meteorite explosive action'), + (u'CUET', u'T', u'cuesta(s)', u'an asymmetric ridge formed on tilted strata'), + (u'CULT', u'V', u'cultivated area', u'an area under cultivation'), + (u'CRNT', u'H', u'current', u'a horizontal flow of water in a given direction with uniform velocity'), + (u'CSTM', u'S', u'customs house', u'a building in a port where customs and duties are paid, and where vessels are entered and cleared'), + (u'PSTC', u'S', u'customs post', u'a building at an international boundary where customs and duties are paid on goods'), + (u'CUTF', u'H', u'cutoff', u'a channel formed as a result of a stream cutting through a meander neck'), + (u'DARY', u'S', u'dairy', u'a facility for the processing, sale and distribution of milk or milk products'), + (u'DAM', u'S', u'dam', u'a barrier constructed across a stream to impound water'), + (u'DEPU', u'U', u'deep', u'a localized deep area within the confines of a larger feature, such as a trough, basin or trench'), + (u'DLTA', u'T', u'delta', u'a flat plain formed by alluvial deposits at the mouth of a stream'), + (u'PCLD', u'A', u'dependent political entity', u'dependent political entity'), + (u'DPR', u'T', u'depression(s)', u'a low area surrounded by higher land and usually characterized by interior drainage'), + (u'DSRT', u'T', u'desert', u'a large area with little or no vegetation due to extreme environmental conditions'), + (u'PPLW', u'P', u'destroyed populated place', u'a village, town or city destroyed by a natural disaster, or by war'), + (u'MNDT', u'S', u'diatomite mine(s)', u'a place where diatomaceous earth is extracted'), + (u'DIKE', u'S', u'dike', u'an earth or stone embankment usually constructed for flood or stream control'), + (u'DIP', u'S', u'diplomatic facility', u'office, residence, or facility of a foreign government, which may include an embassy, consulate, chancery, office of charge d’affaires, or other diplomatic, economic, military, or cultural mission'), + (u'HSPD', u'S', u'dispensary', u'a building where medical or dental aid is dispensed'), + (u'STMD', u'H', u'distributary(-ies)', u'a branch which flows away from the main stream, as in a delta or irrigation canal'), + (u'DTCH', u'H', u'ditch', u'a small artificial watercourse dug for draining or irrigating the land'), + (u'DTCHM', u'H', u'ditch mouth(s)', u'an area where a drainage ditch enters a lagoon, lake or bay'), + (u'DVD', u'T', u'divide', u'a line separating adjacent drainage basins'), + (u'DCK', u'H', u'dock(s)', u'a waterway between two piers, or cut into the land for the berthing of ships'), + (u'DCKB', u'H', u'docking basin', u'a part of a harbor where ships dock'), + (u'DCKY', u'S', u'dockyard', u'a facility for servicing, building, or repairing ships'), + (u'BSND', u'L', u'drainage basin', u'an area drained by a stream'), + (u'CNLD', u'H', u'drainage canal', u'an artificial waterway carrying water away from a wetland or from drainage ditches'), + (u'DTCHD', u'H', u'drainage ditch', u'a ditch which serves to drain the land'), + (u'DCKD', u'S', u'dry dock', u'a dock providing support for a vessel, and means for removing the water so that the bottom of the vessel can be exposed'), + (u'SBED', u'T', u'dry stream bed', u'a channel formerly containing the water of a stream'), + (u'DUNE', u'T', u'dune(s)', u'a wave form, ridge or star shape feature composed of sand'), + (u'RGNE', u'L', u'economic region', u'a region of a country established for economic development or for statistical purposes'), + (u'SCRP', u'T', u'escarpment', u'a long line of cliffs or steep slopes separating level surfaces above and below'), + (u'EST', u'S', u'estate(s)', u'a large commercialized agricultural landholding with associated buildings and other facilities'), + (u'ESTY', u'H', u'estuary', u'a funnel-shaped stream mouth or embayment where fresh water mixes with sea water under tidal influences'), + (u'STNE', u'S', u'experiment station', u'a facility for carrying out experiments'), + (u'FCL', u'S', u'facility', u'a building or buildings housing a center, institute, foundation, hospital, prison, mission, courthouse, etc.'), + (u'CTRF', u'S', u'facility center', u'a place where more than one facility is situated'), + (u'MFG', u'S', u'factory', u'one or more buildings where goods are manufactured, processed or fabricated'), + (u'FAN', u'T', u'fan(s)', u'a fan-shaped wedge of coarse alluvium with apex merging with a mountain stream bed and the fan spreading out at a low angle slope onto an adjacent plain'), + (u'FRM', u'S', u'farm', u'a tract of land with associated buildings devoted to agriculture'), + (u'PPLF', u'P', u'farm village', u'a populated place where the population is largely engaged in agricultural activities'), + (u'FRMS', u'S', u'farms', u'tracts of land with associated buildings devoted to agriculture'), + (u'FRMT', u'S', u'farmstead', u'the buildings and adjacent service areas of a farm'), + (u'FY', u'S', u'ferry', u'a boat or other floating conveyance and terminal facilities regularly used to transport people and vehicles across a waterbody'), + (u'FYT', u'S', u'ferry terminal', u'a place where ferries pick-up and discharge passengers, vehicles and or cargo'), + (u'FLD', u'L', u'field(s)', u'an open as opposed to wooded area'), + (u'FIRE', u'S', u'fire station', u'building housing firefighters and/or fire fighting equipment'), + (u'ADM1', u'A', u'first-order administrative division', u'a primary administrative division of a country, such as a state in the United States'), + (u'FISH', u'H', u'fishing area', u'a fishing ground, bank or area where fishermen go to catch fish'), + (u'PNDSF', u'H', u'fishponds', u'ponds or enclosures in which fish are kept or raised'), + (u'FSR', u'T', u'fissure', u'a crack associated with volcanism'), + (u'FJD', u'H', u'fjord', u'a long, narrow, steep-walled, deep-water arm of the sea at high latitudes, usually along mountainous coasts'), + (u'FJDS', u'H', u'fjords', u'long, narrow, steep-walled, deep-water arms of the sea at high latitudes, usually along mountainous coasts'), + (u'FORD', u'T', u'ford', u'a shallow part of a stream which can be crossed on foot or by land vehicle'), + (u'RESF', u'L', u'forest reserve', u'a forested area set aside for preservation or controlled use'), + (u'STNF', u'S', u'forest station', u'a collection of buildings and facilities for carrying out forest management'), + (u'FRST', u'V', u'forest(s)', u'an area dominated by tree vegetation'), + (u'INLTQ', u'H', u'former inlet', u'an inlet which has been filled in, or blocked by deposits'), + (u'MLSGQ', u'S', u'former sugar mill', u'a sugar mill no longer used as a sugar mill'), + (u'FT', u'S', u'fort', u'a defensive structure or earthworks'), + (u'FRSTF', u'V', u'fossilized forest', u'a forest fossilized by geologic processes and now exposed at the earths surface'), + (u'FNDY', u'S', u'foundry', u'a building or works where metal casting is carried out'), + (u'ADM4', u'A', u'fourth-order administrative division', u'a subdivision of a third-order administrative division'), + (u'ZNF', u'S', u'free trade zone', u'an area, usually a section of a port, where goods may be received and shipped free of customs duty and of most customs regulations'), + (u'PCLF', u'A', u'freely associated state', u'freely associated state'), + (u'DPOF', u'S', u'fuel depot', u'an area where fuel is stored'), + (u'GAP', u'T', u'gap', u'a low place in a ridge, not used for transportation'), + (u'GDN', u'S', u'garden(s)', u'an enclosure for displaying selected plant or animal life'), + (u'GOSP', u'S', u'gas-oil separator plant', u'a facility for separating gas from oil'), + (u'GASF', u'L', u'gasfield', u'an area containing a subterranean store of natural gas of economic value'), + (u'GATE', u'S', u'gate', u'a controlled access entrance or exit'), + (u'GYSR', u'H', u'geyser', u'a type of hot spring with intermittent eruptions of jets of hot water and steam'), + (u'GHAT', u'S', u'ghāt', u'a set of steps leading to a river, which are of religious significance, and at their base is usually a platform for bathing'), + (u'GLCR', u'H', u'glacier(s)', u'a mass of ice, usually at high latitudes or high elevations, with sufficient thickness to flow away from the source area in lobes, tongues, or masses'), + (u'MNAU', u'S', u'gold mine(s)', u'a mine where gold ore, or alluvial gold is extracted'), + (u'RECG', u'S', u'golf course', u'a recreation field where golf is played'), + (u'GRGE', u'T', u'gorge(s)', u'a short, narrow, steep-sided section of a stream valley'), + (u'GRSLD', u'V', u'grassland', u'an area dominated by grass vegetation'), + (u'GRVE', u'S', u'grave', u'a burial site'), + (u'GVL', u'L', u'gravel area', u'an area covered with gravel'), + (u'GRAZ', u'L', u'grazing area', u'an area of grasses and shrubs used for grazing'), + (u'GHSE', u'S', u'guest house', u'a house used to provide lodging for paying guests'), + (u'GULF', u'H', u'gulf', u'a large recess in the coastline, larger than a bay'), + (u'HLT', u'S', u'halting place', u'a place where caravans stop for rest'), + (u'HMCK', u'T', u'hammock(s)', u'a patch of ground, distinct from and slightly above the surrounding plain or wetland. Often occurs in groups'), + (u'AIRG', u'S', u'hangar', u'a covered and usually enclosed area for housing and repairing aircraft'), + (u'VALG', u'T', u'hanging valley', u'a valley the floor of which is notably higher than the valley or shore to which it leads; most common in areas that have been glaciated'), + (u'HBR', u'H', u'harbor(s)', u'a haven or space of deep water so sheltered by the adjacent land as to afford a safe anchorage for ships'), + (u'HDLD', u'T', u'headland', u'a high projection of land extending into a large body of water beyond the line of the coast'), + (u'STMH', u'H', u'headwaters', u'the source and upper part of a stream, including the upper drainage basin'), + (u'HTH', u'V', u'heath', u'an upland moor or sandy area dominated by low shrubby vegetation including heather'), + (u'AIRH', u'S', u'heliport', u'a place where helicopters land and take off'), + (u'HERM', u'S', u'hermitage', u'a secluded residence, usually for religious sects'), + (u'HLL', u'T', u'hill', u'a rounded elevation of limited extent rising above the surrounding land with local relief of less than 300m'), + (u'HLLS', u'T', u'hills', u'rounded elevations of limited extent rising above the surrounding land with local relief of less than 300m'), + (u'ADMDH', u'A', u'historical administrative division', u'a former administrative division of a political entity, undifferentiated as to administrative level'), + (u'ADM1H', u'A', u'historical first-order administrative division', u'a former first-order administrative division'), + (u'ADM4H', u'A', u'historical fourth-order administrative division', u'a former fourth-order administrative division'), + (u'PCLH', u'A', u'historical political entity', u'a former political entity'), + (u'PPLH', u'P', u'historical populated place', u'a populated place that no longer exists'), + (u'RRH', u'R', u'historical railroad', u'a former permanent twin steel-rail track on which freight and passenger cars move long distances'), + (u'RSTNH', u'S', u'historical railroad station', u'a former facility comprising ticket office, platforms, etc. for loading and unloading train passengers and freight'), + (u'RGNH', u'L', u'historical region', u'a former area distinguished by one or more observable physical or cultural characteristics'), + (u'ADM2H', u'A', u'historical second-order administrative division', u'a former second-order administrative division'), + (u'HSTS', u'S', u'historical site', u'a place of historical importance'), + (u'ADM3H', u'A', u'historical third-order administrative division', u'a former third-order administrative division'), + (u'UFHU', u'U', u'historical undersea feature', u'an undersea feature whose existence has been subsequently disproved'), + (u'HMSD', u'S', u'homestead', u'a residence, owners or managers, on a sheep or cattle station, woolshed, outcamp, or Aboriginal outstation, specific to Australia and New Zealand'), + (u'HSP', u'S', u'hospital', u'a building in which sick or injured, especially those confined to bed, are medically treated'), + (u'SPNT', u'H', u'hot spring(s)', u'a place where hot ground water flows naturally out of the ground'), + (u'HTL', u'S', u'hotel', u'a building providing lodging and/or meals for the public'), + (u'HSE', u'S', u'house(s)', u'a building used as a human habitation'), + (u'DEVH', u'L', u'housing development', u'a tract of land on which many houses of similar design are built according to a development plan'), + (u'RESH', u'L', u'hunting reserve', u'a tract of land used primarily for hunting'), + (u'HUT', u'S', u'hut', u'a small primitive house'), + (u'HUTS', u'S', u'huts', u'small primitive houses'), + (u'PSH', u'S', u'hydroelectric power station', u'a building where electricity is generated from water power'), + (u'CAPG', u'H', u'icecap', u'a dome-shaped mass of glacial ice covering an area of mountain summits or other high lands; smaller than an ice sheet'), + (u'DPRG', u'H', u'icecap depression', u'a comparatively depressed area on an icecap'), + (u'DOMG', u'H', u'icecap dome', u'a comparatively elevated area on an icecap'), + (u'RDGG', u'H', u'icecap ridge', u'a linear elevation on an icecap'), + (u'PCLI', u'A', u'independent political entity', u'independent political entity'), + (u'INDS', u'L', u'industrial area', u'an area characterized by industrial activity'), + (u'INLT', u'H', u'inlet', u'a narrow waterway extending into the land, or connecting a bay or lagoon with a larger body of water'), + (u'STNI', u'S', u'inspection station', u'a station at which vehicles, goods, and people are inspected'), + (u'TRGD', u'T', u'interdune trough(s)', u'a long wind-swept trough between parallel longitudinal dunes'), + (u'INTF', u'T', u'interfluve', u'a relatively undissected upland between adjacent stream valleys'), + (u'LKI', u'H', u'intermittent lake', u'intermittent lake'), + (u'LKSI', u'H', u'intermittent lakes', u'intermittent lakes'), + (u'LKOI', u'H', u'intermittent oxbow lake', u'intermittent oxbow lake'), + (u'PNDI', u'H', u'intermittent pond', u'intermittent pond'), + (u'PNDSI', u'H', u'intermittent ponds', u'intermittent ponds'), + (u'POOLI', u'H', u'intermittent pool', u'intermittent pool'), + (u'RSVI', u'H', u'intermittent reservoir', u'intermittent reservoir'), + (u'LKNI', u'H', u'intermittent salt lake', u'intermittent salt lake'), + (u'LKSNI', u'H', u'intermittent salt lakes', u'intermittent salt lakes'), + (u'PNDNI', u'H', u'intermittent salt pond(s)', u'intermittent salt pond(s)'), + (u'STMI', u'H', u'intermittent stream', u'intermittent stream'), + (u'WTLDI', u'H', u'intermittent wetland', u'intermittent wetland'), + (u'RDIN', u'S', u'intersection', u'a junction of two or more highways by a system of separate levels that permit traffic to pass from one to another without the crossing of traffic streams'), + (u'MNFE', u'S', u'iron mine(s)', u'a mine where iron ore is extracted'), + (u'FLDI', u'L', u'irrigated field(s)', u'a tract of level or terraced land which is irrigated'), + (u'CNLI', u'H', u'irrigation canal', u'a canal which serves as a main conduit for irrigation water'), + (u'DTCHI', u'H', u'irrigation ditch', u'a ditch which serves to distribute irrigation water'), + (u'SYSI', u'H', u'irrigation system', u'a network of ditches and one or more of the following elements: water supply, reservoir, canal, pump, well, drain, etc.'), + (u'ISL', u'T', u'island', u'a tract of land, smaller than a continent, surrounded by water at high water'), + (u'ISLS', u'T', u'islands', u'tracts of land, smaller than a continent, surrounded by water at high water'), + (u'STLMT', u'P', u'Israeli settlement', u'Israeli settlement'), + (u'ISTH', u'T', u'isthmus', u'a narrow strip of land connecting two larger land masses and bordered by water'), + (u'JTY', u'S', u'jetty', u'a structure built out into the water at a river mouth or harbor entrance to regulate currents and silting'), + (u'KRST', u'T', u'karst area', u'a distinctive landscape developed on soluble rock such as limestone characterized by sinkholes, caves, disappearing streams, and underground drainage'), + (u'CMPLA', u'S', u'labor camp', u'a camp used by migrant or temporary laborers'), + (u'LGN', u'H', u'lagoon', u'a shallow coastal waterbody, completely or partly separated from a larger body of water by a barrier island, coral reef or other depositional feature'), + (u'LGNS', u'H', u'lagoons', u'shallow coastal waterbodies, completely or partly separated from a larger body of water by a barrier island, coral reef or other depositional feature'), + (u'LK', u'H', u'lake', u'a large inland body of standing water'), + (u'LBED', u'H', u'lake bed(s)', u'a dried up or drained area of a former lake'), + (u'CHNL', u'H', u'lake channel(s)', u'that part of a lake having water deep enough for navigation between islands, shoals, etc.'), + (u'RGNL', u'L', u'lake region', u'a tract of land distinguished by numerous lakes'), + (u'LKS', u'H', u'lakes', u'large inland bodies of standing water'), + (u'ISLT', u'T', u'land-tied island', u'a coastal island connected to the mainland by barrier beaches, levees or dikes'), + (u'LNDF', u'S', u'landfill', u'a place for trash and garbage disposal in which the waste is buried between layers of earth to build up low-lying land'), + (u'LDNG', u'S', u'landing', u'a place where boats receive or discharge passengers and freight, but lacking most port facilities'), + (u'LAVA', u'T', u'lava area', u'an area of solidified lava'), + (u'MNPB', u'S', u'lead mine(s)', u'a mine where lead ore is extracted'), + (u'LTER', u'A', u'leased area', u'a tract of land leased by the United Kingdom from the Peoples Republic of China to form part of Hong Kong'), + (u'LEPC', u'S', u'leper colony', u'a settled area inhabited by lepers in relative isolation'), + (u'HSPL', u'S', u'leprosarium', u'an asylum or hospital for lepers'), + (u'LEV', u'T', u'levee', u'a natural low embankment bordering a distributary or meandering stream; often built up artificially to control floods'), + (u'LTHSE', u'S', u'lighthouse', u'a distinctive structure exhibiting a major navigation light'), + (u'MFGLM', u'S', u'limekiln', u'a furnace in which limestone is reduced to lime'), + (u'GOVL', u'S', u'local government office', u'a facility housing local governmental offices, usually a city, town, or village hall'), + (u'LCTY', u'L', u'locality', u'a minor area or place of unspecified or mixed character and indefinite boundaries'), + (u'LOCK', u'S', u'lock(s)', u'a basin in a waterway with gates at each end by means of which vessels are passed from one water level to another'), + (u'CMPL', u'S', u'logging camp', u'a camp used by loggers'), + (u'STMSB', u'H', u'lost river', u'a surface stream that disappears into an underground channel, or dries up in an arid area'), + (u'MVA', u'L', u'maneuver area', u'a tract of land where military field exercises are carried out'), + (u'ISLM', u'T', u'mangrove island', u'a mangrove swamp surrounded by a waterbody'), + (u'MGV', u'H', u'mangrove swamp', u'a tropical tidal mud flat characterized by mangrove vegetation'), + (u'MAR', u'S', u'marina', u'a harbor facility for small boats, yachts, etc.'), + (u'CHNM', u'H', u'marine channel', u'that part of a body of water deep enough for navigation through an area otherwise not suitable'), + (u'SCHN', u'S', u'maritime school', u'a school at which maritime sciences form the core of the curriculum'), + (u'MKT', u'S', u'market', u'a place where goods are bought and sold at regular intervals'), + (u'MRSH', u'H', u'marsh(es)', u'a wetland dominated by grass-like vegetation'), + (u'MDW', u'V', u'meadow', u'a small, poorly drained area dominated by grassy vegetation'), + (u'NKM', u'T', u'meander neck', u'a narrow strip of land between the two limbs of a meander loop at its narrowest point'), + (u'CTRM', u'S', u'medical center', u'a complex of health care buildings including two or more of the following: hospital, medical school, clinic, pharmacy, doctors offices, etc.'), + (u'MESA', u'T', u'mesa(s)', u'a flat-topped, isolated elevation with steep slopes on all sides, less extensive than a plateau'), + (u'STNM', u'S', u'meteorological station', u'a station at which weather elements are recorded'), + (u'MILB', u'L', u'military base', u'a place used by an army or other armed service for storing arms and supplies, and for accommodating and training troops, a base from which operations can be initiated'), + (u'INSM', u'S', u'military installation', u'a facility for use of and control by armed forces'), + (u'SCHM', u'S', u'military school', u'a school at which military science forms the core of the curriculum'), + (u'ML', u'S', u'mill(s)', u'a building housing machines for transforming, shaping, finishing, grinding, or extracting products'), + (u'MN', u'S', u'mine(s)', u'a site where mineral ores are extracted from the ground by excavating surface pits and subterranean passages'), + (u'MNA', u'L', u'mining area', u'an area of mine sites where minerals and ores are extracted'), + (u'CMPMN', u'S', u'mining camp', u'a camp used by miners'), + (u'MSSN', u'S', u'mission', u'a place characterized by dwellings, school, church, hospital and other facilities operated by a religious group for the purpose of providing charitable services and to propagate religion'), + (u'MOLE', u'S', u'mole', u'a massive structure of masonry or large stones serving as a pier or breakwater'), + (u'MSTY', u'S', u'monastery', u'a building and grounds where a community of monks lives in seclusion'), + (u'MNMT', u'S', u'monument', u'a commemorative structure or statue'), + (u'MOOR', u'H', u'moor(s)', u'an area of open ground overlaid with wet peaty soils'), + (u'MRN', u'T', u'moraine', u'a mound, ridge, or other accumulation of glacial till'), + (u'MSQE', u'S', u'mosque', u'a building for public Islamic worship'), + (u'MND', u'T', u'mound(s)', u'a low, isolated, rounded hill'), + (u'MT', u'T', u'mountain', u'an elevation standing high above the surrounding area with small summit area, steep slopes and local relief of 300m or more'), + (u'MTS', u'T', u'mountains', u'a mountain range or a group of mountains or high ridges'), + (u'FLTM', u'H', u'mud flat(s)', u'a relatively level area of mud either between high and low tide lines, or subject to flooding'), + (u'MFGM', u'S', u'munitions plant', u'a factory where ammunition is made'), + (u'MUS', u'S', u'museum', u'a building where objects of permanent interest in one or more of the arts and sciences are preserved and exhibited'), + (u'NRWS', u'H', u'narrows', u'a navigable narrow part of a bay, strait, river, etc.'), + (u'TNLN', u'R', u'natural tunnel', u'a cave that is open at both ends'), + (u'RESN', u'L', u'nature reserve', u'an area reserved for the maintenance of a natural habitat'), + (u'NVB', u'L', u'naval base', u'an area used to store supplies, provide barracks for troops and naval personnel, a port for naval vessels, and from which operations are initiated'), + (u'CNLN', u'H', u'navigation canal(s)', u'a watercourse constructed for navigation of vessels'), + (u'CHNN', u'H', u'navigation channel', u'a buoyed channel of sufficient depth for the safe navigation of vessels'), + (u'MNNI', u'S', u'nickel mine(s)', u'a mine where nickel ore is extracted'), + (u'NOV', u'S', u'novitiate', u'a religious house or school where novices are trained'), + (u'PSN', u'S', u'nuclear power station', u'nuclear power station'), + (u'NTK', u'T', u'nunatak', u'a rock or mountain peak protruding through glacial ice'), + (u'NTKS', u'T', u'nunataks', u'rocks or mountain peaks protruding through glacial ice'), + (u'NSY', u'S', u'nursery(-ies)', u'a place where plants are propagated for transplanting or grafting'), + (u'OAS', u'L', u'oasis(-es)', u'an area in a desert made productive by the availability of water'), + (u'OBPT', u'S', u'observation point', u'a wildlife or scenic observation point'), + (u'OBS', u'S', u'observatory', u'a facility equipped for observation of atmospheric or space phenomena'), + (u'OCN', u'H', u'ocean', u'one of the major divisions of the vast expanse of salt water covering part of the earth'), + (u'BLDO', u'S', u'office building', u'commercial building where business and/or services are conducted'), + (u'CMPO', u'S', u'oil camp', u'a camp used by oilfield workers'), + (u'ESTO', u'S', u'oil palm plantation', u'an estate specializing in the cultivation of oil palm trees'), + (u'OILP', u'R', u'oil pipeline', u'a pipeline used for transporting oil'), + (u'OILJ', u'S', u'oil pipeline junction', u'a section of an oil pipeline where two or more pipes join together'), + (u'TRMO', u'S', u'oil pipeline terminal', u'a tank farm or loading facility at the end of an oil pipeline'), + (u'PMPO', u'S', u'oil pumping station', u'a facility for pumping oil through a pipeline'), + (u'OILR', u'S', u'oil refinery', u'a facility for converting crude oil into refined petroleum products'), + (u'OILW', u'S', u'oil well', u'a well from which oil may be pumped'), + (u'OILF', u'L', u'oilfield', u'an area containing a subterranean store of petroleum of economic value'), + (u'GRVO', u'V', u'olive grove', u'a planting of olive trees'), + (u'MLO', u'S', u'olive oil mill', u'a mill where oil is extracted from olives'), + (u'OCH', u'V', u'orchard(s)', u'a planting of fruit or nut trees'), + (u'MLM', u'S', u'ore treatment plant', u'a facility for improving the metal content of ore by concentration'), + (u'OVF', u'H', u'overfalls', u'an area of breaking waves caused by the meeting of currents or by waves moving against the current'), + (u'LKO', u'H', u'oxbow lake', u'a crescent-shaped lake commonly found adjacent to meandering streams'), + (u'PGDA', u'S', u'pagoda', u'a tower-like storied structure, usually a Buddhist shrine'), + (u'PAL', u'S', u'palace', u'a large stately house, often a royal or presidential residence'), + (u'GRVP', u'V', u'palm grove', u'a planting of palm trees'), + (u'RESP', u'L', u'palm tree reserve', u'an area of palm trees where use is controlled'), + (u'PAN', u'T', u'pan', u'a near-level shallow, natural depression or basin, usually containing an intermittent lake, pond, or pool'), + (u'PANS', u'T', u'pans', u'a near-level shallow, natural depression or basin, usually containing an intermittent lake, pond, or pool'), + (u'PRSH', u'A', u'parish', u'an ecclesiastical district'), + (u'PRK', u'L', u'park', u'an area, often of forested land, maintained as a place of beauty, or for recreation'), + (u'PRKGT', u'S', u'park gate', u'a controlled access to a park'), + (u'PRKHQ', u'S', u'park headquarters', u'a park administrative facility'), + (u'GARG', u'S', u'parking garage', u'a building or underground facility used exclusively for parking vehicles'), + (u'PKLT', u'S', u'parking lot', u'an area used for parking vehicles'), + (u'PASS', u'T', u'pass', u'a break in a mountain range or other high obstruction, used for transportation from one side to the other [See also gap]'), + (u'PSTP', u'S', u'patrol post', u'a post from which patrols are sent out'), + (u'PK', u'T', u'peak', u'a pointed elevation atop a mountain, ridge, or other hypsographic feature'), + (u'PKS', u'T', u'peaks', u'pointed elevations atop a mountain, ridge, or other hypsographic features'), + (u'PEAT', u'L', u'peat cutting area', u'an area where peat is harvested'), + (u'PEN', u'T', u'peninsula', u'an elongate area of land projecting into a body of water and nearly surrounded by water'), + (u'BSNP', u'L', u'petroleum basin', u'an area underlain by an oil-rich structural basin'), + (u'MFGPH', u'S', u'phosphate works', u'a facility for producing fertilizer'), + (u'PIER', u'S', u'pier', u'a structure built out into navigable water on piles providing berthing for ships and recreation'), + (u'GRVPN', u'V', u'pine grove', u'a planting of pine trees'), + (u'MNPL', u'S', u'placer mine(s)', u'a place where heavy metals are concentrated and running water is used to extract them from unconsolidated sediments'), + (u'PLN', u'T', u'plain(s)', u'an extensive area of comparatively level to gently undulating land, lacking surface irregularities, and usually adjacent to a higher area'), + (u'PLAT', u'T', u'plateau', u'an elevated plain with steep slopes on one or more sides, and often with incised streams'), + (u'PT', u'T', u'point', u'a tapering piece of land projecting into a body of water, less prominent than a cape'), + (u'PTS', u'T', u'points', u'tapering pieces of land projecting into a body of water, less prominent than a cape'), + (u'PLDR', u'T', u'polder', u'an area reclaimed from the sea by diking and draining'), + (u'PP', u'S', u'police post', u'a building in which police are stationed'), + (u'PCL', u'A', u'political entity', u'political entity'), + (u'PND', u'H', u'pond', u'a small standing waterbody'), + (u'PNDS', u'H', u'ponds', u'small standing waterbodies'), + (u'POOL', u'H', u'pool(s)', u'a small and comparatively still, deep part of a larger body of water such as a stream or harbor; or a small body of standing water'), + (u'PPLL', u'P', u'populated locality', u'an area similar to a locality but with a small group of dwellings or other buildings'), + (u'PPL', u'P', u'populated place', u'a city, town, village, or other agglomeration of buildings where people live and work'), + (u'PPLS', u'P', u'populated places', u'cities, towns, villages, or other agglomerations of buildings where people live and work'), + (u'PRT', u'L', u'port', u'a place provided with terminal and transfer facilities for loading and discharging waterborne cargo or passengers, usually located in a harbor'), + (u'PTGE', u'R', u'portage', u'a place where boats, goods, etc., are carried overland between navigable waters'), + (u'PO', u'S', u'post office', u'a public building in which mail is received, sorted and distributed'), + (u'PS', u'S', u'power station', u'a facility for generating electric power'), + (u'PRN', u'S', u'prison', u'a facility for confining prisoners'), + (u'PRMN', u'R', u'promenade', u'a place for public walking, usually along a beach front'), + (u'PROM', u'T', u'promontory(-ies)', u'a bluff or prominent hill overlooking or projecting into a lowland'), + (u'PYR', u'S', u'pyramid', u'an ancient massive structure of square ground plan with four triangular faces meeting at a point and used for enclosing tombs'), + (u'PYRS', u'S', u'pyramids', u'ancient massive structures of square ground plan with four triangular faces meeting at a point and used for enclosing tombs'), + (u'MNQR', u'S', u'quarry(-ies)', u'a surface mine where building stone or gravel and sand, etc. are extracted'), + (u'QUAY', u'S', u'quay', u'a structure of solid construction along a shore or bank which provides berthing for ships and which generally provides cargo handling facilities'), + (u'QCKS', u'L', u'quicksand', u'an area where loose sand with water moving through it may become unstable when heavy objects are placed at the surface, causing them to sink'), + (u'RECR', u'S', u'racetrack', u'a track where races are held'), + (u'OBSR', u'S', u'radio observatory', u'a facility equipped with an array of antennae for receiving radio waves from space'), + (u'STNR', u'S', u'radio station', u'a facility for producing and transmitting information by radio waves'), + (u'RR', u'R', u'railroad', u'a permanent twin steel-rail track on which freight and passenger cars move long distances'), + (u'RJCT', u'R', u'railroad junction', u'a place where two or more railroad tracks join'), + (u'RSD', u'S', u'railroad siding', u'a short track parallel to and joining the main track'), + (u'RSGNL', u'S', u'railroad signal', u'a signal at the entrance of a particular section of track governing the movement of trains'), + (u'RSTN', u'S', u'railroad station', u'a facility comprising ticket office, platforms, etc. for loading and unloading train passengers and freight'), + (u'RSTP', u'S', u'railroad stop', u'a place lacking station facilities where trains stop to pick up and unload passengers and freight'), + (u'TNLRR', u'R', u'railroad tunnel', u'a tunnel through which a railroad passes'), + (u'RYD', u'R', u'railroad yard', u'a system of tracks used for the making up of trains, and switching and storing freight cars'), + (u'RNCH', u'S', u'ranch(es)', u'a large farm specializing in extensive grazing of livestock'), + (u'RPDS', u'H', u'rapids', u'a turbulent section of a stream associated with a steep, irregular stream bed'), + (u'RVN', u'H', u'ravine(s)', u'a small, narrow, deep, steep-sided stream channel, smaller than a gorge'), + (u'RCH', u'H', u'reach', u'a straight section of a navigable stream or channel between two bends'), + (u'RF', u'H', u'reef(s)', u'a surface-navigation hazard composed of consolidated material'), + (u'PRNJ', u'S', u'reformatory', u'a facility for confining, training, and reforming young law offenders'), + (u'CMPRF', u'S', u'refugee camp', u'a camp used by refugees'), + (u'RGN', u'L', u'region', u'an area distinguished by one or more observable physical or cultural characteristics'), + (u'CTRR', u'S', u'religious center', u'a facility where more than one religious activity is carried out, e.g., retreat, school, monastery, worship'), + (u'PPLR', u'P', u'religious populated place', u'a populated place whose population is largely engaged in religious occupations'), + (u'RLG', u'S', u'religious site', u'an ancient site of significant religious importance'), + (u'ITTR', u'S', u'research institute', u'a facility where research is carried out'), + (u'RESV', u'L', u'reservation', u'a tract of land set aside for aboriginal, tribal, or native populations'), + (u'RES', u'L', u'reserve', u'a tract of public land reserved for future use or restricted as to use'), + (u'RSV', u'H', u'reservoir(s)', u'an artificial pond or lake'), + (u'RSRT', u'S', u'resort', u'a specialized facility for vacation, health, or participation sports activities'), + (u'RHSE', u'S', u'resthouse', u'a structure maintained for the rest and shelter of travelers'), + (u'RLGR', u'S', u'retreat', u'a place of temporary seclusion, especially for religious groups'), + (u'RDGE', u'T', u'ridge(s)', u'a long narrow elevation with steep sides, and a more or less continuous crest'), + (u'RD', u'R', u'road', u'an open way with improved surface for transportation of animals, people and vehicles'), + (u'RDB', u'R', u'road bend', u'a conspicuously curved or bent section of a road'), + (u'RDCUT', u'R', u'road cut', u'an excavation cut through a hill or ridge for a road'), + (u'RDJCT', u'R', u'road junction', u'a place where two or more roads join'), + (u'TNLRD', u'R', u'road tunnel', u'a tunnel through which a road passes'), + (u'RDST', u'H', u'roadstead', u'an open anchorage affording less protection than a harbor'), + (u'RK', u'T', u'rock', u'a conspicuous, isolated rocky mass'), + (u'HMDA', u'T', u'rock desert', u'a relatively sand-free, high bedrock plateau in a hot desert, with or without a gravel veneer'), + (u'RKFL', u'T', u'rockfall', u'an irregular mass of fallen rock at the base of a cliff or steep slope'), + (u'RKS', u'T', u'rocks', u'conspicuous, isolated rocky masses'), + (u'RKRY', u'S', u'rookery', u'a breeding place of a colony of birds or seals'), + (u'ESTR', u'S', u'rubber plantation', u'an estate which specializes in growing and tapping rubber trees'), + (u'RUIN', u'S', u'ruin(s)', u'a destroyed or decayed structure which is no longer functional'), + (u'BDGQ', u'S', u'ruined bridge', u'a destroyed or decayed bridge which is no longer functional'), + (u'DAMQ', u'S', u'ruined dam', u'a destroyed or decayed dam which is no longer functional'), + (u'SBKH', u'H', u'sabkha(s)', u'a salt flat or salt encrusted plain subject to periodic inundation from flooding or high tides'), + (u'SDL', u'T', u'saddle', u'a broad, open pass crossing a ridge or between hills or mountains'), + (u'SALT', u'L', u'salt area', u'a shallow basin or flat where salt accumulates after periodic inundation'), + (u'MFGN', u'H', u'salt evaporation ponds', u'diked salt ponds used in the production of solar evaporated salt'), + (u'LKN', u'H', u'salt lake', u'an inland body of salt water with no outlet'), + (u'LKSN', u'H', u'salt lakes', u'inland bodies of salt water with no outlet'), + (u'MRSHN', u'H', u'salt marsh', u'a flat area, subject to periodic salt water inundation, dominated by grassy salt-tolerant plants'), + (u'MNN', u'S', u'salt mine(s)', u'a mine from which salt is extracted'), + (u'PNDN', u'H', u'salt pond', u'a small standing body of salt water often in a marsh or swamp, usually along a seacoast'), + (u'PNDSN', u'H', u'salt ponds', u'small standing bodies of salt water often in a marsh or swamp, usually along a seacoast'), + (u'SNTR', u'S', u'sanatorium', u'a facility where victims of physical or mental disorders are treated'), + (u'SAND', u'T', u'sand area', u'a tract of land covered with sand'), + (u'ERG', u'T', u'sandy desert', u'an extensive tract of shifting sand and sand dunes'), + (u'STNS', u'S', u'satellite station', u'a facility for tracking and communicating with orbiting satellites'), + (u'MLSW', u'S', u'sawmill', u'a mill where logs or lumber are sawn to specified shapes and sizes'), + (u'SCH', u'S', u'school', u'building(s) where instruction in one or more branches of knowledge takes place'), + (u'ADMS', u'A', u'school district', u'school district'), + (u'STNB', u'S', u'scientific research base', u'a scientific facility used as a base from which research is carried out or monitored'), + (u'SCRB', u'V', u'scrubland', u'an area of low trees, bushes, and shrubs stunted by some environmental limitation'), + (u'SEA', u'H', u'sea', u'a large body of salt water more or less confined by continuous land or chains of islands forming a subdivision of an ocean'), + (u'SCNU', u'U', u'seachannel', u'a continuously sloping, elongated depression commonly found in fans or plains and customarily bordered by levees on one or two sides'), + (u'SCSU', u'U', u'seachannels', u'continuously sloping, elongated depressions commonly found in fans or plains and customarily bordered by levees on one or two sides'), + (u'SMU', u'U', u'seamount', u'an elevation rising generally more than 1,000 meters and of limited extent across the summit'), + (u'SMSU', u'U', u'seamounts', u'elevations rising generally more than 1,000 meters and of limited extent across the summit'), + (u'AIRS', u'H', u'seaplane landing area', u'a place on a waterbody where floatplanes land and take off'), + (u'PPLA', u'P', u'seat of a first-order administrative division', u'seat of a first-order administrative division (PPLC takes precedence over PPLA)'), + (u'PPLA4', u'P', u'seat of a fourth-order administrative division', u'seat of a fourth-order administrative division'), + (u'PPLA2', u'P', u'seat of a second-order administrative division', u'seat of a second-order administrative division'), + (u'PPLA3', u'P', u'seat of a third-order administrative division', u'seat of a third-order administrative division'), + (u'ADM2', u'A', u'second-order administrative division', u'a subdivision of a first-order administrative division'), + (u'BNKX', u'H', u'section of bank', u'section of bank'), + (u'CNLX', u'H', u'section of canal', u'section of canal'), + (u'ESTX', u'S', u'section of estate', u'section of estate'), + (u'HBRX', u'H', u'section of harbor', u'section of harbor'), + (u'PCLIX', u'A', u'section of independent political entity', u'section of independent political entity'), + (u'STMIX', u'H', u'section of intermittent stream', u'section of intermittent stream'), + (u'ISLX', u'T', u'section of island', u'section of island'), + (u'LGNX', u'H', u'section of lagoon', u'section of lagoon'), + (u'LKX', u'H', u'section of lake', u'section of lake'), + (u'PENX', u'T', u'section of peninsula', u'section of peninsula'), + (u'PLNX', u'T', u'section of plain', u'section of plain'), + (u'PLATX', u'T', u'section of plateau', u'section of plateau'), + (u'PPLX', u'P', u'section of populated place', u'section of populated place'), + (u'RFX', u'H', u'section of reef', u'section of reef'), + (u'STMX', u'H', u'section of stream', u'section of stream'), + (u'VALX', u'T', u'section of valley', u'section of valley'), + (u'WADX', u'H', u'section of wadi', u'section of wadi'), + (u'FLLSX', u'H', u'section of waterfall(s)', u'section of waterfall(s)'), + (u'PCLS', u'A', u'semi-independent political entity', u'semi-independent political entity'), + (u'SWT', u'S', u'sewage treatment plant', u'facility for the processing of sewage and/or wastewater'), + (u'SHPF', u'S', u'sheepfold', u'a fence or wall enclosure for sheep and other small herd animals'), + (u'SHOL', u'H', u'shoal(s)', u'a surface-navigation hazard composed of unconsolidated material'), + (u'SHOPC', u'S', u'shopping center or mall', u'an urban shopping area featuring a variety of shops surrounding a usually open-air concourse reserved for pedestrian traffic; or a large suburban building or group of buildings containing various shops with associated passageways'), + (u'SHOR', u'T', u'shore', u'a narrow zone bordering a waterbody which covers and uncovers at high and low water, respectively'), + (u'SHRN', u'S', u'shrine', u'a structure or place memorializing a person or religious concept'), + (u'SILL', u'H', u'sill', u'the low part of a gap or saddle separating basins'), + (u'SINK', u'T', u'sinkhole', u'a small crater-shape depression in a karst area'), + (u'ESTSL', u'S', u'sisal plantation', u'an estate that specializes in growing sisal'), + (u'SLID', u'T', u'slide', u'a mound of earth material, at the base of a slope and the associated scoured area'), + (u'SLP', u'T', u'slope(s)', u'a surface with a relatively uniform slope angle'), + (u'SLCE', u'S', u'sluice', u'a conduit or passage for carrying off surplus water from a waterbody, usually regulated by means of a sluice gate'), + (u'SNOW', u'L', u'snowfield', u'an area of permanent snow and ice forming the accumulation area of a glacier'), + (u'SD', u'H', u'sound', u'a long arm of the sea forming a channel between the mainland and an island or islands; or connecting two larger bodies of water'), + (u'SPA', u'S', u'spa', u'a resort area usually developed around a medicinal spring'), + (u'CTRS', u'S', u'space center', u'a facility for launching, tracking, or controlling satellites and space vehicles'), + (u'SPLY', u'S', u'spillway', u'a passage or outlet through which surplus water flows over, around or through a dam'), + (u'SPIT', u'T', u'spit', u'a narrow, straight or curved continuation of a beach into a waterbody'), + (u'SPNG', u'H', u'spring(s)', u'a place where ground water flows naturally out of the ground'), + (u'SPUR', u'T', u'spur(s)', u'a subordinate ridge projecting outward from a hill, mountain or other elevation'), + (u'SQR', u'S', u'square', u'a broad, open, public area near the center of a town or city'), + (u'STBL', u'S', u'stable', u'a building for the shelter and feeding of farm animals, especially horses'), + (u'STDM', u'S', u'stadium', u'a structure with an enclosure for athletic games with tiers of seats for spectators'), + (u'STPS', u'S', u'steps', u'stones or slabs placed for ease in ascending or descending a steep slope'), + (u'STKR', u'R', u'stock route', u'a route taken by livestock herds'), + (u'REG', u'T', u'stony desert', u'a desert plain characterized by a surface veneer of gravel and stones'), + (u'RET', u'S', u'store', u'a building where goods and/or services are offered for sale'), + (u'SHSE', u'S', u'storehouse', u'a building for storing goods, especially provisions'), + (u'STRT', u'H', u'strait', u'a relatively narrow waterway, usually narrower and less extensive than a sound, connecting two larger bodies of water'), + (u'STM', u'H', u'stream', u'a body of running water moving to a lower level in a channel on land'), + (u'BNKR', u'H', u'stream bank', u'a sloping margin of a stream channel which normally confines the stream to its channel on land'), + (u'STMB', u'H', u'stream bend', u'a conspicuously curved or bent segment of a stream'), + (u'STMGS', u'S', u'stream gauging station', u'named place where a measuring station for a watercourse, reservoir or other water body exists'), + (u'STMM', u'H', u'stream mouth(s)', u'a place where a stream discharges into a lagoon, lake, or the sea'), + (u'STMS', u'H', u'streams', u'bodies of running water moving to a lower level in a channel on land'), + (u'ST', u'R', u'street', u'a paved urban thoroughfare'), + (u'DAMSB', u'S', u'sub-surface dam', u'a dam put down to bedrock in a sand river'), + (u'SUBW', u'S', u'subway', u'a railroad used for mass public transportation primarily in urban areas, all or part of the system may be located below, above, or at ground level'), + (u'SUBS', u'S', u'subway station', u'a facility comprising ticket office, platforms, etc. for loading and unloading subway passengers'), + (u'MLSG', u'S', u'sugar mill', u'a facility where sugar cane is processed into raw sugar'), + (u'ESTSG', u'S', u'sugar plantation', u'an estate that specializes in growing sugar cane'), + (u'MFGSG', u'S', u'sugar refinery', u'a facility for converting raw sugar into refined sugar'), + (u'SPNS', u'H', u'sulphur spring(s)', u'a place where sulphur ground water flows naturally out of the ground'), + (u'SWMP', u'H', u'swamp', u'a wetland dominated by tree vegetation'), + (u'SYG', u'S', u'synagogue', u'a place for Jewish worship and religious instruction'), + (u'TMTU', u'U', u'tablemount (or guyot)', u'a seamount having a comparatively smooth, flat top'), + (u'TMSU', u'U', u'tablemounts (or guyots)', u'seamounts having a comparatively smooth, flat top'), + (u'TAL', u'T', u'talus slope', u'a steep concave slope formed by an accumulation of loose rock fragments at the base of a cliff or steep slope'), + (u'OILT', u'S', u'tank farm', u'a tract of land occupied by large, cylindrical, metal tanks in which oil or liquid petrochemicals are stored'), + (u'ESTT', u'S', u'tea plantation', u'an estate which specializes in growing tea bushes'), + (u'SCHT', u'S', u'technical school', u'post-secondary school with a specifically technical or vocational curriculum'), + (u'TMPL', u'S', u'temple(s)', u'an edifice dedicated to religious worship'), + (u'AIRT', u'S', u'terminal', u'airport facilities for the handling of freight and passengers'), + (u'TRR', u'T', u'terrace', u'a long, narrow alluvial platform bounded by steeper slopes above and below, usually overlooking a waterbody'), + (u'TERR', u'A', u'territory', u'territory'), + (u'ADM3', u'A', u'third-order administrative division', u'a subdivision of a second-order administrative division'), + (u'CRKT', u'H', u'tidal creek(s)', u'a meandering channel in a coastal wetland subject to bi-directional tidal currents'), + (u'FLTT', u'H', u'tidal flat(s)', u'a large flat area of mud or sand attached to the shore and alternately covered and uncovered by the tide'), + (u'MNSN', u'S', u'tin mine(s)', u'a mine where tin ore is extracted'), + (u'TOLL', u'S', u'toll gate/barrier', u'highway toll collection station'), + (u'TMB', u'S', u'tomb(s)', u'a structure for interring bodies'), + (u'TOWR', u'S', u'tower', u'a high conspicuous structure, typically much higher than its diameter'), + (u'RDCR', u'S', u'traffic circle', u'a road junction formed around a central circle about which traffic moves in one direction only'), + (u'TRL', u'R', u'trail', u'a path, track, or route used by pedestrians, animals, or off-road vehicles'), + (u'TRANT', u'S', u'transit terminal', u'facilities for the handling of vehicular freight and passengers'), + (u'TREE', u'V', u'tree(s)', u'a conspicuous tree used as a landmark'), + (u'TRIG', u'S', u'triangulation station', u'a point on the earth whose position has been determined by triangulation'), + (u'TRB', u'L', u'tribal area', u'a tract of land used by nomadic or other tribes'), + (u'TUND', u'V', u'tundra', u'a marshy, treeless, high latitude plain, dominated by mosses, lichens, and low shrub vegetation under permafrost conditions'), + (u'TNL', u'R', u'tunnel', u'a subterranean passageway for transportation'), + (u'TNLS', u'R', u'tunnels', u'subterranean passageways for transportation'), + (u'CNLSB', u'H', u'underground irrigation canal(s)', u'a gently inclined underground tunnel bringing water for irrigation from aquifers'), + (u'LKSB', u'H', u'underground lake', u'a standing body of water in a cave'), + (u'APNU', u'U', u'undersea apron', u'a gentle slope, with a generally smooth surface, particularly found around groups of islands and seamounts'), + (u'ARCU', u'U', u'undersea arch', u'a low bulge around the southeastern end of the island of Hawaii'), + (u'ARRU', u'U', u'undersea arrugado', u'an area of subdued corrugations off Baja California'), + (u'BNKU', u'U', u'undersea bank', u'an elevation, typically located on a shelf, over which the depth of water is relatively shallow but sufficient for safe surface navigation'), + (u'BKSU', u'U', u'undersea banks', u'elevations, typically located on a shelf, over which the depth of water is relatively shallow but sufficient for safe surface navigation'), + (u'BSNU', u'U', u'undersea basin', u'a depression more or less equidimensional in plan and of variable extent'), + (u'BNCU', u'U', u'undersea bench', u'a small terrace'), + (u'BDLU', u'U', u'undersea borderland', u'a region adjacent to a continent, normally occupied by or bordering a shelf, that is highly irregular with depths well in excess of those typical of a shelf'), + (u'CNYU', u'U', u'undersea canyon', u'a relatively narrow, deep depression with steep sides, the bottom of which generally has a continuous slope'), + (u'CNSU', u'U', u'undersea canyons', u'relatively narrow, deep depressions with steep sides, the bottom of which generally has a continuous slope'), + (u'CDAU', u'U', u'undersea cordillera', u'an entire mountain system including the subordinate ranges, interior plateaus, and basins'), + (u'ESCU', u'U', u'undersea escarpment (or scarp)', u'an elongated and comparatively steep slope separating flat or gently sloping areas'), + (u'FANU', u'U', u'undersea fan', u'a relatively smooth feature normally sloping away from the lower termination of a canyon or canyon system'), + (u'FLTU', u'U', u'undersea flat', u'a small level or nearly level area'), + (u'FRKU', u'U', u'undersea fork', u'a branch of a canyon or valley'), + (u'FRSU', u'U', u'undersea forks', u'a branch of a canyon or valley'), + (u'FRZU', u'U', u'undersea fracture zone', u'an extensive linear zone of irregular topography of the sea floor, characterized by steep-sided or asymmetrical ridges, troughs, or escarpments'), + (u'FURU', u'U', u'undersea furrow', u'a closed, linear, narrow, shallow depression'), + (u'GAPU', u'U', u'undersea gap', u'a narrow break in a ridge or rise'), + (u'GLYU', u'U', u'undersea gully', u'a small valley-like feature'), + (u'HLLU', u'U', u'undersea hill', u'an elevation rising generally less than 500 meters'), + (u'HLSU', u'U', u'undersea hills', u'elevations rising generally less than 500 meters'), + (u'HOLU', u'U', u'undersea hole', u'a small depression of the sea floor'), + (u'KNLU', u'U', u'undersea knoll', u'an elevation rising generally more than 500 meters and less than 1,000 meters and of limited extent across the summit'), + (u'KNSU', u'U', u'undersea knolls', u'elevations rising generally more than 500 meters and less than 1,000 meters and of limited extent across the summits'), + (u'LDGU', u'U', u'undersea ledge', u'a rocky projection or outcrop, commonly linear and near shore'), + (u'LEVU', u'U', u'undersea levee', u'an embankment bordering a canyon, valley, or seachannel'), + (u'MDVU', u'U', u'undersea median valley', u'the axial depression of the mid-oceanic ridge system'), + (u'MESU', u'U', u'undersea mesa', u'an isolated, extensive, flat-topped elevation on the shelf, with relatively steep sides'), + (u'MOTU', u'U', u'undersea moat', u'an annular depression that may not be continuous, located at the base of many seamounts, islands, and other isolated elevations'), + (u'MNDU', u'U', u'undersea mound', u'a low, isolated, rounded hill'), + (u'MTU', u'U', u'undersea mountain', u'a well-delineated subdivision of a large and complex positive feature'), + (u'MTSU', u'U', u'undersea mountains', u'well-delineated subdivisions of a large and complex positive feature'), + (u'PKU', u'U', u'undersea peak', u'a prominent elevation, part of a larger feature, either pointed or of very limited extent across the summit'), + (u'PKSU', u'U', u'undersea peaks', u'prominent elevations, part of a larger feature, either pointed or of very limited extent across the summit'), + (u'PNLU', u'U', u'undersea pinnacle', u'a high tower or spire-shaped pillar of rock or coral, alone or cresting a summit'), + (u'PLNU', u'U', u'undersea plain', u'a flat, gently sloping or nearly level region'), + (u'PLTU', u'U', u'undersea plateau', u'a comparatively flat-topped feature of considerable extent, dropping off abruptly on one or more sides'), + (u'PLFU', u'U', u'undersea platform', u'a flat or gently sloping underwater surface extending seaward from the shore'), + (u'PRVU', u'U', u'undersea province', u'a region identifiable by a group of similar physiographic features whose characteristics are markedly in contrast with surrounding areas'), + (u'RMPU', u'U', u'undersea ramp', u'a gentle slope connecting areas of different elevations'), + (u'RNGU', u'U', u'undersea range', u'a series of associated ridges or seamounts'), + (u'RAVU', u'U', u'undersea ravine', u'a small canyon'), + (u'RFU', u'U', u'undersea reef', u'a surface-navigation hazard composed of consolidated material'), + (u'RFSU', u'U', u'undersea reefs', u'surface-navigation hazards composed of consolidated material'), + (u'RDGU', u'U', u'undersea ridge', u'a long narrow elevation with steep sides'), + (u'RDSU', u'U', u'undersea ridges', u'long narrow elevations with steep sides'), + (u'RISU', u'U', u'undersea rise', u'a broad elevation that rises gently, and generally smoothly, from the sea floor'), + (u'SDLU', u'U', u'undersea saddle', u'a low part, resembling in shape a saddle, in a ridge or between contiguous seamounts'), + (u'SHFU', u'U', u'undersea shelf', u'a zone adjacent to a continent (or around an island) that extends from the low water line to a depth at which there is usually a marked increase of slope towards oceanic depths'), + (u'EDGU', u'U', u'undersea shelf edge', u'a line along which there is a marked increase of slope at the outer margin of a continental shelf or island shelf'), + (u'SHVU', u'U', u'undersea shelf valley', u'a valley on the shelf, generally the shoreward extension of a canyon'), + (u'SHLU', u'U', u'undersea shoal', u'a surface-navigation hazard composed of unconsolidated material'), + (u'SHSU', u'U', u'undersea shoals', u'hazards to surface navigation composed of unconsolidated material'), + (u'SILU', u'U', u'undersea sill', u'the low part of an underwater gap or saddle separating basins, including a similar feature at the mouth of a fjord'), + (u'SLPU', u'U', u'undersea slope', u'the slope seaward from the shelf edge to the beginning of a continental rise or the point where there is a general reduction in slope'), + (u'SPRU', u'U', u'undersea spur', u'a subordinate elevation, ridge, or rise projecting outward from a larger feature'), + (u'TERU', u'U', u'undersea terrace', u'a relatively flat horizontal or gently inclined surface, sometimes long and narrow, which is bounded by a steeper ascending slope on one side and by a steep descending slope on the opposite side'), + (u'TNGU', u'U', u'undersea tongue', u'an elongate (tongue-like) extension of a flat sea floor into an adjacent higher feature'), + (u'TRNU', u'U', u'undersea trench', u'a long, narrow, characteristically very deep and asymmetrical depression of the sea floor, with relatively steep sides'), + (u'TRGU', u'U', u'undersea trough', u'a long depression of the sea floor characteristically flat bottomed and steep sided, and normally shallower than a trench'), + (u'VALU', u'U', u'undersea valley', u'a relatively shallow, wide depression, the bottom of which usually has a continuous gradient'), + (u'VLSU', u'U', u'undersea valleys', u'a relatively shallow, wide depression, the bottom of which usually has a continuous gradient'), + (u'USGE', u'S', u'United States Government Establishment', u'a facility operated by the United States Government in Panama'), + (u'UPLD', u'T', u'upland', u'an extensive interior region of high land with low to moderate surface relief'), + (u'VAL', u'T', u'valley', u'an elongated depression usually traversed by a stream'), + (u'VALS', u'T', u'valleys', u'elongated depressions usually traversed by a stream'), + (u'VETF', u'S', u'veterinary facility', u'a building or camp at which veterinary services are available'), + (u'VIN', u'V', u'vineyard', u'a planting of grapevines'), + (u'VINS', u'V', u'vineyards', u'plantings of grapevines'), + (u'VLC', u'T', u'volcano', u'a conical elevation composed of volcanic materials with a crater at the top'), + (u'WAD', u'H', u'wadi', u'a valley or ravine, bounded by relatively steep banks, which in the rainy season becomes a watercourse; found primarily in North Africa and the Middle East'), + (u'WADB', u'H', u'wadi bend', u'a conspicuously curved or bent segment of a wadi'), + (u'WADJ', u'H', u'wadi junction', u'a place where two or more wadies join'), + (u'WADM', u'H', u'wadi mouth', u'the lower terminus of a wadi where it widens into an adjoining floodplain, depression, or waterbody'), + (u'WADS', u'H', u'wadies', u'valleys or ravines, bounded by relatively steep banks, which in the rainy season become watercourses; found primarily in North Africa and the Middle East'), + (u'WALL', u'S', u'wall', u'a thick masonry structure, usually enclosing a field or building, or forming the side of a structure'), + (u'MLWTR', u'S', u'water mill', u'a mill powered by running water'), + (u'PMPW', u'S', u'water pumping station', u'a facility for pumping water from a major well or through a pipeline'), + (u'RSVT', u'H', u'water tank', u'a contained pool or tank of water at, below, or above ground level'), + (u'WTRC', u'H', u'watercourse', u'a natural, well-defined channel produced by flowing water, or an artificial channel designed to carry flowing water'), + (u'FLLS', u'H', u'waterfall(s)', u'a perpendicular or very steep descent of the water of a stream'), + (u'WTRH', u'H', u'waterhole(s)', u'a natural hole, hollow, or small depression that contains water, used by man and animals, especially in arid areas'), + (u'WTRW', u'S', u'waterworks', u'a facility for supplying potable water through a water source and a system of pumps and filtration beds'), + (u'WEIR', u'S', u'weir(s)', u'a small dam in a stream, designed to raise the water level or to divert stream flow through a desired channel'), + (u'WLL', u'H', u'well', u'a cylindrical hole, pit, or tunnel drilled or dug down to a depth from which water, oil, or gas can be pumped or brought to the surface'), + (u'WLLS', u'H', u'wells', u'cylindrical holes, pits, or tunnels drilled or dug down to a depth from which water, oil, or gas can be pumped or brought to the surface'), + (u'WTLD', u'H', u'wetland', u'an area subject to inundation, usually characterized by bog, marsh, or swamp vegetation'), + (u'STNW', u'S', u'whaling station', u'a facility for butchering whales and processing train oil'), + (u'WHRF', u'S', u'wharf(-ves)', u'a structure of open rather than solid construction along a shore or a bank which provides berthing for ships and cargo-handling facilities'), + (u'WHRL', u'H', u'whirlpool', u'a turbulent, rotating movement of water in a stream'), + (u'RESW', u'L', u'wildlife reserve', u'a tract of public land reserved for the preservation of wildlife'), + (u'MLWND', u'S', u'windmill', u'a mill or water pump powered by wind'), + (u'WRCK', u'S', u'wreck', u'the site of the remains of a wrecked vessel'), + (u'ZN', u'A', u'zone', u'zone'), + (u'ZOO', u'S', u'zoo', u'a zoological garden or park where wild animals are kept for exhibition') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/BudgetIdentifierSector-category.xml +# Fields: code, name + +BUDGET_IDENTIFIER_SECTOR_CATEGORY = ( + (u'1', u'General Public Service'), + (u'2', u'Justice, Law, Order and Security'), + (u'3', u'Economic Affairs'), + (u'4', u'Water, Natural Resource Management and Environment'), + (u'5', u'Social Affairs'), + (u'6', u'Development Partner Affairs'), + (u'7', u'General Budget Support and Aid support external to General Government Sector') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/VerificationStatus.xml +# Fields: code, name, description + +VERIFICATION_STATUS = ( + (u'0', u'Not verified', u'The data published for the activity has not been verified'), + (u'1', u'Verified', u'The data published for the activity has been verified. ') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/GeographicLocationReach.xml +# Fields: code, name, description + +GEOGRAPHIC_LOCATION_REACH = ( + (u'1', u'Activity', u'The location specifies where the activity is carried out'), + (u'2', u'Intended Beneficiaries', u'The location specifies where the intended beneficiaries of the activity live') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/ResultType.xml +# Fields: code, name, description + +RESULT_TYPE = ( + (u'1', u'Output', u'Results of the activity that came about as a direct effect of your work and specific, what is done, and what communities are reached. For example, X number of individuals '), + (u'2', u'Outcome', u'Results of the activity that produce an effect on the overall communities or issues you serve. For example lower rate of infection after a vaccination procgramme'), + (u'3', u'Impact', u'The long term effects of the outcomes, that lead to larger, over arching results, such as improved life-expectancy.'), + (u'9', u'Other', u'Another type of result, not specified above.') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/RelatedActivityType.xml +# Fields: code, name, description + +RELATED_ACTIVITY_TYPE = ( + (u'1', u'Parent', u'An activity that contains sub-activities (sub-components) which are reported separately to IATI'), + (u'2', u'Child', u'A sub-activity (or sub-component) that sits within a larger activity (parent) which is also reported to IATI'), + (u'3', u'Sibling', u'A sub-activity (or sub-component) that is related to another sub-activity with the same parent '), + (u'4', u'Co-funded', u'An activity that receives funding from more than one organisation'), + (u'5', u'Third Party', u'A report by another organisation on the same activity you are reporting (excluding activities reported as part of a financial transaction - e.g. provider-activity-id or a co-funded activity, using code 4)') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/OrganisationType.xml +# Fields: code, name + +ORGANISATION_TYPE = ( + (u'10', u'Government'), + (u'15', u'Other Public Sector'), + (u'21', u'International NGO'), + (u'22', u'National NGO'), + (u'23', u'Regional NGO'), + (u'30', u'Public Private Partnership'), + (u'40', u'Multilateral'), + (u'60', u'Foundation'), + (u'70', u'Private Sector'), + (u'80', u'Academic, Training and Research') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/GazetteerAgency.xml +# Fields: code, name + +GAZETTEER_AGENCY = ( + (u'1', u'Geonames.org'), + (u'2', u'National Geospatial-Intelligence Agency'), + (u'3', u'Open Street Map') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/ActivityDateType.xml +# Fields: code, name, description + +ACTIVITY_DATE_TYPE = ( + (u'1', u'Planned start', u'The date on which the activity is planned to start, for example the date of the first planned disbursement or when physical activity starts.'), + (u'2', u'Actual start', u'The actual date the activity starts, for example the date of the first disbursement or when physical activity starts.'), + (u'3', u'Planned End', u'The date on which the activity is planned to end, for example the date of the last planned disbursement or when physical activity is complete.'), + (u'4', u'Actual end', u'The actual date the activity ends, for example the date of the last disbursement or when physical activity is complete.') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/PolicyMarkerVocabulary.xml +# Fields: code, name, description + +POLICY_MARKER_VOCABULARY = ( + (u'1', u'OECD DAC CRS', u'The policy marker is an OECD DAC CRS policy marker, Reported in columns 20-23, 28-31 and 54 of CRS++ reporting format.'), + (u'99', u'Reporting Organisation', u'The policy marker is one that is defined and tracked by the reporting organisation') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/ActivityStatus.xml +# Fields: code, name, description + +ACTIVITY_STATUS = ( + (u'1', u'Pipeline/identification', u'The activity is being scoped or planned '), + (u'2', u'Implementation', u'The activity is currently being implemented'), + (u'3', u'Completion', u'Physical activity is complete or the final disbursement has been made.'), + (u'4', u'Post-completion', u'Physical activity is complete or the final disbursement has been made, but the activity remains open pending financial sign off or M&E'), + (u'5', u'Cancelled', u'The activity has been cancelled'), + (u'6', u'Suspended', u'The activity has been temporarily suspended') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/TiedStatus.xml +# Fields: code, name, description + +TIED_STATUS = ( + (u'3', u'Partially tied', u'Official Development Assistance for which the associated goods and services must be procured from a restricted number of countries, which must however include substantially all aid recipient countries and can include the donor country.'), + (u'4', u'Tied', u'Official grants or loans where procurement of the goods or services involved is limited to the donor country or to a group of countries which does not include substantially all aid recipient countries.'), + (u'5', u'Untied', u'Untied aid is defined as loans and grants whose proceeds are fully and freely available to finance procurement from all OECD countries and substantially all developing countries.') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/CollaborationType.xml +# Fields: code, name, description + +COLLABORATION_TYPE = ( + (u'1', u'Bilateral', u'Bilateral transactions are those undertaken by a donor, excluding core contributions to other organisations (codes 2 and 3 below). It includes transactions channelled through other organisations.'), + (u'2', u'Multilateral', u'Multilateral contributions are those made to a recipient institution which: i. conducts all or part of its activities in favour of development; ii. is an international agency, institution or organisation whose members are governments, or a fund managed autonomously by such an agency; and iii. pools contributions so that they lose their identity and become an integral part of its financial assets.'), + (u'3', u'Bilateral, core contributions to NGOs and other private bodies / PPPs', u'Bilateral funds paid over to national and international non-governmental organisations (NGOs), Public Private Partnerships (PPPs), or other private bodies for use at their discretion.'), + (u'4', u'Multilateral outflows', u'Aid activities financed from the multilateral institutions regular budgets.'), + (u'6', u'Private sector outflow', u''), + (u'7', u'Bilateral, ex-post reporting on NGOs activities funded through core contributions', u'') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/OrganisationIdentifier.xml +# Fields: code, name + +ORGANISATION_IDENTIFIER = ( + (u'AT-1', u'Federal Ministry of Finance'), + (u'AT-10', u'Ministry for Agriculture and Environment'), + (u'AT-11', u'Ministry of Defense'), + (u'AT-12', u'Ministry of Interior'), + (u'AT-2', u'Various ministries'), + (u'AT-3', u'Federal Government of Austria'), + (u'AT-4', u'Oesterreichische Kontrollbank AG'), + (u'AT-5', u'Federal Ministry of Foreign Affairs'), + (u'AT-6', u'Provincial governments, local communities '), + (u'AT-8', u'Austrian Development Agency'), + (u'AT-9', u'Education and Science Ministry'), + (u'AT-99', u'Miscellaneous'), + (u'AU-5', u'Australian Agency for International Development'), + (u'AU-72', u'Export Finance and Insurance Corporation'), + (u'BE-10', u'Directorate General for Co-operation and Development'), + (u'BE-20', u'Official Federal Service of Foreign Affairs (excl. DGCD)'), + (u'BE-30', u'Official Federal Service of Finance'), + (u'BE-31', u'Ducroire National Office'), + (u'BE-39', u'Other Official Federal Services'), + (u'BE-70', u'Flanders Official Regional Ministries'), + (u'BE-80', u'Walloon Official Regional Ministries'), + (u'BE-91', u'Brussels Official Regional Ministries'), + (u'BE-94', u'German speaking Official Regional Ministries'), + (u'CA-1', u'Canadian International Development Agency'), + (u'CA-2', u'International Development Research Centre'), + (u'CA-31', u'Export Development Corporation'), + (u'CA-4', u'Department of Finance'), + (u'CH-1', u'Federal Administration (various departments)'), + (u'CH-10', u'Swiss Agency for the Environment, Forests and Landscape '), + (u'CH-11', u'Municipalities'), + (u'CH-4', u'Swiss Agency for Development and Co-operation'), + (u'CH-5', u'State Secretariat for Economic Affairs'), + (u'CH-6', u'Federal Department of Foreign Affairs'), + (u'CH-7', u'State Secretariat for Education and Research'), + (u'CH-8', u'Federal Office for Migration'), + (u'CH-9', u'Federal Department for Defence, Civil Protection and Sports '), + (u'DE-1', u'Bundesministerium für Wirtschaftliche Zusammenarbeit und Entwicklung'), + (u'DE-11', u'Foreign Office'), + (u'DE-12', u'Federal States & Local Governments'), + (u'DE-14', u'Federal Institutions'), + (u'DE-16', u'Federal Ministries'), + (u'DE-17', u'Foundations/Societies/Misc. (non federal)'), + (u'DE-2', u'Kreditanstalt für Wiederaufbau'), + (u'DE-34', u'Hermes Kreditversicherungs-AG'), + (u'DE-4', u'German Investment and Development Company'), + (u'DE-52', u'Deutsche Gesellschaft für Technische Zusammenarbeit'), + (u'DK-1', u'Ministry of Foreign Affairs'), + (u'DK-2', u'Danish International Development Agency (Not in CRS Directives)'), + (u'DK-4', u'Not in CRS Directives'), + (u'DK-72', u'EKR'), + (u'ES-1', u'Instituto de Credito Oficial'), + (u'ES-10', u'Ministry of Environment'), + (u'ES-11', u'Ministry of Health'), + (u'ES-12', u'Ministry of Labour and Social Affairs'), + (u'ES-13', u'Ministry of Interior'), + (u'ES-14', u'Ministry of Public Administration'), + (u'ES-15', u'Compania Espanola de Seguros de Credito a la Exportación'), + (u'ES-16', u'Municipalities'), + (u'ES-17', u'Miscellaneous'), + (u'ES-18', u'Ministry of Science and Technology'), + (u'ES-19', u'Ministry of Defense'), + (u'ES-2', u'Autonomous Governments'), + (u'ES-4', u'Ministry of Agriculture, Fisheries, and Food '), + (u'ES-5', u'Ministry of Foreign Affairs'), + (u'ES-6', u'Ministry of Economy and Finance'), + (u'ES-7', u'Ministry of Education, Culture and Sports '), + (u'ES-8', u'Ministry of Public Works'), + (u'ES-9', u'Ministry of Industry and Energy'), + (u'EU-1', u'Commission of the European Communities'), + (u'EU-2', u'European Development Fund'), + (u'EU-3', u'European Investment Bank'), + (u'EU-4', u'Humanitarian Aid Office of the European Commission'), + (u'FI-1', u'Finnish Government'), + (u'FI-2', u'FinnFund'), + (u'FI-3', u'Ministry of Foreign Affairs'), + (u'FI-4', u'FIDE'), + (u'FI-72', u'FinnVera'), + (u'FR-10', u'Ministry of Economy, Finance and Industry '), + (u'FR-17', u'Ministry of Education, Higher education and Research '), + (u'FR-3', u'French Development Agency'), + (u'FR-43', u'Coface'), + (u'FR-6', u'Ministry of Foreign Affairs'), + (u'GB-1', u'Department for International Development'), + (u'GB-2', u'CDC Capital Partners PLC'), + (u'GB-5', u'Export Credit Guarantee Department'), + (u'GR-1', u'Ministry of Foreign Affairs'), + (u'GR-2', u'Ministry of National Economy'), + (u'GR-20', u'Miscellaneous'), + (u'GR-3', u'Ministry of the Interior, Public Administration and Decentralisation '), + (u'GR-4', u'Ministry of National Defence'), + (u'GR-5', u'Ministry of the Environment, Land Planning and Public Works '), + (u'GR-6', u'Ministry of National Education and Religions'), + (u'GR-7', u'Ministry of Agriculture'), + (u'GR-8', u'Ministry of Health - Welfare'), + (u'GR-9', u'Ministry of Merchant Marine'), + (u'IE-1', u'Department of Foreign Affairs'), + (u'IE-71', u'Department of Industry and Commerce'), + (u'IT-2', u'Agenzia Erogazioni Per lAgricoltura'), + (u'IT-4', u'Direzione Generale per la Cooperazione allo Sviluppo'), + (u'IT-5', u'Not in CRS Directives'), + (u'IT-7', u'Central administration'), + (u'IT-74', u'Sezione Speciale per lAssicurazione del Credito allEsportazione'), + (u'IT-8', u'Local administration'), + (u'IT-9', u'Artigiancassa'), + (u'JP-1', u'Ministry of Agriculture, Forestry and Fisheries '), + (u'JP-10', u'Japan Overseas Development Co-operation'), + (u'JP-11', u'Japan Bank for International Co-operation'), + (u'JP-12', u'Other Ministries'), + (u'JP-13', u'Public Corporations'), + (u'JP-14', u'Prefectures'), + (u'JP-15', u'Ordinance-designed Cities'), + (u'JP-2', u'Ministry of Foreign Affairs'), + (u'JP-7', u'Overseas Fishery Co-operation Foundation'), + (u'JP-71', u'Nippon Export and Investment Insurance'), + (u'JP-8', u'Japanese International Co-operation Agency'), + (u'LU-1', u'Lux-Development'), + (u'LU-2', u'Ministry of Foreign Affairs'), + (u'LU-22', u'Ducroire Office'), + (u'NL-1', u'Ministry of Foreign Affairs (DGIS)'), + (u'NL-33', u'NCM Credit Management Worldwide'), + (u'NL-4', u'Netherlands Gov. through Netherlands Investment Bank for Developing Countries'), + (u'NO-1', u'Norwegian Agency for Development Co-operation'), + (u'NO-4', u'Ministry of Foreign Affairs'), + (u'NO-7', u'Statens Nærings og Distriksutviklingsfond'), + (u'NO-71', u'Garantiinstituttet for Eksportkreditt'), + (u'NO-72', u'Eksport Finans'), + (u'NO-8', u'NORFUND'), + (u'NZ-1', u'Ministry of Foreign Affairs and Trade'), + (u'NZ-2', u'New Zealand International Aid and Development Agency'), + (u'PT-1', u'Portuguese Government'), + (u'PT-2', u'Institute for Portuguese Development Aid'), + (u'PT-3', u'Other'), + (u'PT-71', u'Conselho de garantias financeiras'), + (u'SE-2', u'Ministry of Foreign Affairs'), + (u'SE-6', u'Swedish International Development Authority'), + (u'SE-71', u'Swedish Export Credits Guarantee Board'), + (u'US-1', u'Agency for International Development'), + (u'US-10', u'Peace Corps'), + (u'US-11', u'State Department'), + (u'US-12', u'Trade and Development Agency'), + (u'US-13', u'African Development Foundation'), + (u'US-15', u'Centers for Disease Control and Prevention'), + (u'US-16', u'National Institutes of Health'), + (u'US-17', u'Department of Labor'), + (u'US-2', u'Department of Agriculture'), + (u'US-31', u'Export Import Bank'), + (u'US-5', u'Department of Transportation'), + (u'US-6', u'Department of Treasury'), + (u'US-7', u'Department of Defense'), + (u'US-8', u'Miscellaneous'), + (u'US-9', u'Department of Interior'), + (u'41101', u'Convention to Combat Desertification'), + (u'41102', u'Desert Locust Control Organisation for Eastern Africa'), + (u'41103', u'Economic Commission for Africa'), + (u'41104', u'Economic Commission for Latin America and the Caribbean'), + (u'41105', u'Economic and Social Commission for Western Asia'), + (u'41106', u'Economic and Social Commission for Asia and the Pacific'), + (u'41107', u'International Atomic Energy Agency (Contributions to Technical Cooperation Fund Only)'), + (u'41108', u'International Fund for Agricultural Development'), + (u'41109', u'International Research and Training Institute for the Advancement of Women'), + (u'41110', u'Joint United Nations Programme on HIV/AIDS'), + (u'41111', u'United Nations Capital Development Fund'), + (u'41112', u'United Nations Conference on Trade and Development'), + (u'41114', u'United Nations Development Programme'), + (u'41116', u'United Nations Environment Programme'), + (u'41118', u'United Nations Framework Convention on Climate Change'), + (u'41119', u'United Nations Population Fund'), + (u'41120', u'United Nations Human Settlement Programme'), + (u'41121', u'United Nations Office of the United Nations High Commissioner for Refugees'), + (u'41122', u'United Nations Childrens Fund'), + (u'41123', u'United Nations Industrial Development Organisation'), + (u'41124', u'United Nations Development Fund for Women'), + (u'41125', u'United Nations Institute for Training and Research'), + (u'41126', u'United Nations Mine Action Service'), + (u'41127', u'United Nations Office of Co-ordination of Humanitarian Affairs'), + (u'41128', u'United Nations Office on Drugs and Crime'), + (u'41129', u'United Nations Research Institute for Social Development'), + (u'41130', u'United Nations Relief and Works Agency for Palestine Refugees in the Near East'), + (u'41131', u'United Nations System Staff College'), + (u'41132', u'United Nations System Standing Committee on Nutrition'), + (u'41133', u'United Nations Special Initiative on Africa'), + (u'41134', u'United Nations University (including Endowment Fund)'), + (u'41135', u'United Nations Volunteers'), + (u'41136', u'United Nations Voluntary Fund on Disability'), + (u'41137', u'United Nations Voluntary Fund for Technical Co-operation in the Field of Human Rights'), + (u'41138', u'United Nations Voluntary Fund for Victims of Torture'), + (u'41140', u'World Food Programme'), + (u'41141', u'United Nations Peacebuilding Fund (Window Two: Restricted Contributions Only)'), + (u'41142', u'United Nations Democracy Fund'), + (u'41143', u'World Health Organisation - core voluntary contributions account'), + (u'41301', u'Food and Agricultural Organisation'), + (u'41302', u'International Labour Organisation'), + (u'41303', u'International Telecommunications Union'), + (u'41304', u'United Nations Educational, Scientific and Cultural Organisation '), + (u'41305', u'United Nations'), + (u'41306', u'Universal Postal Union'), + (u'41307', u'World Health Organisation - assessed contributions'), + (u'41308', u'World Intellectual Property Organisation'), + (u'41309', u'World Meteorological Organisation'), + (u'41310', u'United Nations Department of Peacekeeping Operations (excluding UNTSO, UNMOGIP, UNFICYP, UNDOF) '), + (u'41311', u'United Nations Peacebuilding Fund (Window One: Flexible Contributions Only)'), + (u'41312', u'International Atomic Energy Agency - assessed contributions'), + (u'41313', u'United Nations High Commissioner for Human Rights (extrabudgetary contributions only)'), + (u'41314', u'United Nations Economic Commission for Europe (extrabudgetary contributions only)'), + (u'42001', u'European Commission - Development Share of Budget'), + (u'42003', u'European Commission - European Development Fund'), + (u'42004', u'European Investment Bank (interest subsidies only)'), + (u'42005', u'Facility for Euro-Mediterranean Investment and Partnership Trust Fund'), + (u'42006', u'Global Energy Efficiency and Renewable Energy Fund'), + (u'43001', u'International Monetary Fund - Poverty Reduction and Growth Facility Trust'), + (u'43002', u'International Monetary Fund - Poverty Reduction and Growth Facility - Heavily Indebted Poor Countries Initiative Trust (includes HIPC, PRGF and PRGF-HIPC sub-accounts) '), + (u'43003', u'International Monetary Fund - Subsidization of IMF Emergency Assistance for Natural Disasters'), + (u'44001', u'International Bank for Reconstruction and Development'), + (u'44002', u'International Development Association'), + (u'44003', u'International Development Association - Heavily Indebted Poor Countries Debt Initiative Trust Fund'), + (u'44004', u'International Finance Corporation'), + (u'44005', u'Multilateral Investment Guarantee Agency'), + (u'44006', u'Advance Market Commitments'), + (u'44007', u'International Development Association - Multilateral Debt Relief Initiative'), + (u'45001', u'World Trade Organisation - International Trade Centre'), + (u'45002', u'World Trade Organisation - Advisory Centre on WTO Law'), + (u'45003', u'World Trade Organisation - Doha Development Agenda Global Trust Fund'), + (u'46001', u'African Solidarity Fund'), + (u'46002', u'African Development Bank'), + (u'46003', u'African Development Fund'), + (u'46004', u'Asian Development Bank'), + (u'46005', u'Asian Development Fund'), + (u'46006', u'Black Sea Trade and Development Bank'), + (u'46007', u'Central American Bank for Economic Integration'), + (u'46008', u'Andean Development Corporation'), + (u'46009', u'Caribbean Development Bank'), + (u'46012', u'Inter-American Development Bank, Inter-American Investment Corporation and Multilateral Investment Fund '), + (u'46013', u'Inter-American Development Fund for Special Operations'), + (u'47001', u'African Capacity Building Foundation'), + (u'47002', u'Asian Productivity Organisation'), + (u'47003', u'Association of South East Asian Nations: Economic Co-operation'), + (u'47004', u'ASEAN Cultural Fund'), + (u'47005', u'African Union (excluding peacekeeping facilities)'), + (u'47008', u'World Vegetable Centre'), + (u'47009', u'African and Malagasy Council for Higher Education'), + (u'47010', u'Commonwealth Agency for Public Administration and Management'), + (u'47011', u'Caribbean Community Secretariat'), + (u'47012', u'Caribbean Epidemiology Centre'), + (u'47013', u'Commonwealth Foundation'), + (u'47014', u'Commonwealth Fund for Technical Co-operation'), + (u'47015', u'Consultative Group on International Agricultural Research'), + (u'47016', u'Commonwealth Institute'), + (u'47017', u'International Centre for Tropical Agriculture'), + (u'47018', u'Centre for International Forestry Research'), + (u'47019', u'International Centre for Advanced Mediterranean Agronomic Studies'), + (u'47020', u'International Maize and Wheat Improvement Centre'), + (u'47021', u'International Potato Centre'), + (u'47022', u'Convention on International Trade in Endangered Species of Wild Flora and Fauna'), + (u'47023', u'Commonwealth Legal Advisory Service'), + (u'47024', u'Commonwealth Media Development Fund'), + (u'47025', u'Commonwealth of Learning'), + (u'47026', u'Community of Portuguese Speaking Countries'), + (u'47027', u'Colombo Plan'), + (u'47028', u'Commonwealth Partnership for Technical Management'), + (u'47029', u'Sahel and West Africa Club'), + (u'47030', u'Commonwealth Scientific Council'), + (u'47031', u'Commonwealth Small States Office'), + (u'47032', u'Commonwealth Trade and Investment Access Facility'), + (u'47033', u'Commonwealth Youth Programme'), + (u'47034', u'Economic Community of West African States'), + (u'47035', u'Environmental Development Action in the Third World'), + (u'47036', u'European and Mediterranean Plant Protection Organisation'), + (u'47037', u'Eastern-Regional Organisation of Public Administration'), + (u'47038', u'INTERPOL Fund for Aid and Technical Assistance to Developing Countries'), + (u'47040', u'Forum Fisheries Agency'), + (u'47041', u'Food and Fertilizer Technology Centre'), + (u'47042', u'Foundation for International Training'), + (u'47043', u'Global Crop Diversity Trust'), + (u'47044', u'Global Environment Facility'), + (u'47045', u'Global Fund to Fight AIDS, Tuberculosis and Malaria '), + (u'47046', u'International Organisation of the Francophonic'), + (u'47047', u'International African Institute'), + (u'47048', u'Inter-American Indian Institute'), + (u'47049', u'International Bureau of Education - International Educational Reporting System (IERS)'), + (u'47050', u'International Cotton Advisory Committee'), + (u'47051', u'International Centre for Agricultural Research in Dry Areas'), + (u'47053', u'Centre for Health and Population Research'), + (u'47054', u'International Centre of Insect Physiology and Ecology'), + (u'47055', u'International Centre for Development Oriented Research in Agriculture'), + (u'47056', u'World AgroForestry Centre'), + (u'47057', u'International Crop Research for Semi-Arid Tropics'), + (u'47058', u'International Institute for Democracy and Electoral Assistance'), + (u'47059', u'International Development Law Organisation'), + (u'47060', u'International Institute for Cotton'), + (u'47061', u'Inter-American Institute for Co-operation on Agriculture'), + (u'47062', u'International Institute of Tropical Agriculture'), + (u'47063', u'International Livestock Research Institute'), + (u'47064', u'International Network for Bamboo and Rattan'), + (u'47065', u'Intergovernmental Oceanographic Commission'), + (u'47066', u'International Organisation for Migration'), + (u'47067', u'Intergovernmental Panel on Climate Change'), + (u'47068', u'Asia-Pacific Fishery Commission'), + (u'47069', u'Biodiversity International'), + (u'47070', u'International Rice Research Institute'), + (u'47071', u'International Seed Testing Association'), + (u'47073', u'International Tropical Timber Organisation'), + (u'47074', u'International Vaccine Institute'), + (u'47075', u'International Water Management Institute'), + (u'47076', u'Justice Studies Centre of the Americas'), + (u'47077', u'Mekong River Commission'), + (u'47078', u'Multilateral Fund for the Implementation of the Montreal Protocol'), + (u'47079', u'Organisation of American States'), + (u'47080', u'Organisation for Economic Co-operation and Development (Contributions to special funds for Technical Co-operation Activities Only)'), + (u'47081', u'OECD Development Centre'), + (u'47082', u'Organisation of Eastern Caribbean States'), + (u'47083', u'Pan-American Health Organisation'), + (u'47084', u'Pan-American Institute of Geography and History'), + (u'47085', u'Pan-American Railway Congress Association'), + (u'47086', u'Private Infrastructure Development Group'), + (u'47087', u'Pacific Islands Forum Secretariat'), + (u'47088', u'Relief Net'), + (u'47089', u'Southern African Development Community'), + (u'47090', u'Southern African Transport and Communications Commission'), + (u'47091', u'(Colombo Plan) Special Commonwealth African Assistance Programme'), + (u'47092', u'South East Asian Fisheries Development Centre'), + (u'47093', u'South East Asian Ministers of Education'), + (u'47094', u'South Pacific Applied Geoscience Commission'), + (u'47095', u'South Pacific Board for Educational Assessment'), + (u'47096', u'Secretariat of the Pacific Community'), + (u'47097', u'Pacific Regional Environment Programme'), + (u'47098', u'Unrepresented Nations and Peoples Organisation'), + (u'47099', u'University of the South Pacific'), + (u'47100', u'West African Monetary Union'), + (u'47101', u'Africa Rice Centre'), + (u'47102', u'World Customs Organisation Fellowship Programme'), + (u'47103', u'World Maritime University'), + (u'47104', u'WorldFish Centre'), + (u'47105', u'Common Fund for Commodities'), + (u'47106', u'Geneva Centre for the Democratic Control of Armed Forces'), + (u'47107', u'International Finance Facility for Immunisation'), + (u'47108', u'Multi-Country Demobilisation and Reintegration Program'), + (u'47109', u'Asia-Pacific Economic Cooperation Support Fund (except contributions tied to counter-terrorism activities)'), + (u'47110', u'Organisation of the Black Sea Economic Cooperation'), + (u'47111', u'Adaptation Fund'), + (u'47112', u'Central European Initiative - Special Fund for Climate and Environmental Protection'), + (u'47113', u'Economic and Monetary Community of Central Africa'), + (u'47116', u'Integrated Framework for Trade-Related Technical Assistance to Least Developed Countries'), + (u'47117', u'New Partnership for Africas Development'), + (u'47118', u'Regional Organisation for the Strengthening of Supreme Audit Institutions of Francophone Sub-Saharan Countries'), + (u'47119', u'Sahara and Sahel Observatory'), + (u'47120', u'South Asian Association for Regional Cooperation'), + (u'47121', u'United Cities and Local Governments of Africa'), + (u'47122', u'Global Alliance for Vaccines and Immunization'), + (u'47123', u'Geneva International Centre for Humanitarian Demining'), + (u'47125', u'European Bank for Reconstruction and Development - Early Transition Countries Initiative'), + (u'47126', u'European Bank for Reconstruction and Development - Western Balkans Trust Fund'), + (u'47127', u'Latin-American Energy Organisation'), + (u'21001', u'Association of Geoscientists for International Development'), + (u'21002', u'Agency for International Trade Information and Co-operation'), + (u'21003', u'Latin American Council for Social Sciences'), + (u'21004', u'Council for the Development of Economic and Social Research in Africa'), + (u'21005', u'Consumer Unity and Trust Society International'), + (u'21006', u'Development Gateway Foundation'), + (u'21007', u'Environmental Liaison Centre International'), + (u'21008', u'Eurostep'), + (u'21009', u'Forum for Agricultural Research in Africa'), + (u'21010', u'Forum for African Women Educationalists'), + (u'21011', u'Global Campaign for Education'), + (u'21013', u'Health Action International'), + (u'21014', u'Human Rights Information and Documentation Systems'), + (u'21015', u'International Catholic Rural Association'), + (u'21016', u'International Committee of the Red Cross'), + (u'21017', u'International Centre for Trade and Sustainable Development'), + (u'21018', u'International Federation of Red Cross and Red Crescent Societies'), + (u'21019', u'International Federation of Settlements and Neighbourhood Centres'), + (u'21020', u'International HIV/AIDS Alliance'), + (u'21021', u'International Institute for Environment and Development'), + (u'21022', u'International Network for Alternative Financial Institutions'), + (u'21023', u'International Planned Parenthood Federation'), + (u'21024', u'Inter Press Service, International Association '), + (u'21025', u'International Seismological Centre'), + (u'21026', u'International Service for Human Rights'), + (u'21027', u'International Trust Fund for Demining and Mine Victims Assistance'), + (u'21028', u'International University Exchange Fund - IUEF Stip. in Africa and Latin America'), + (u'21029', u'Doctors Without Borders'), + (u'21030', u'Pan African Institute for Development'), + (u'21031', u'PANOS Institute'), + (u'21032', u'Population Services International'), + (u'21033', u'Transparency International'), + (u'21034', u'International Union Against Tuberculosis and Lung Disease'), + (u'21035', u'World Organisation Against Torture'), + (u'21036', u'World University Service'), + (u'21037', u'Womens World Banking'), + (u'21038', u'International Alert'), + (u'21039', u'International Institute for Sustainable Development'), + (u'21040', u'International Womens Tribune Centre'), + (u'21041', u'Society for International Development'), + (u'21042', u'International Peacebuilding Alliance'), + (u'21043', u'European Parliamentarians for Africa'), + (u'21044', u'International Council for the Control of Iodine Deficiency Disorders'), + (u'21045', u'African Medical and Research Foundation'), + (u'21046', u'Agency for Cooperation and Research in Development'), + (u'21047', u'AgriCord'), + (u'21048', u'Association of African Universities'), + (u'21049', u'European Centre for Development Policy Management'), + (u'21050', u'Geneva Call'), + (u'21051', u'Institut Supérieur Panafricaine dEconomie Coopérative'), + (u'21053', u'IPAS-Protecting Womens Health, Advancing Womens Reproductive Rights '), + (u'21054', u'Life and Peace Institute'), + (u'21055', u'Regional AIDS Training Network'), + (u'21056', u'Renewable Energy and Energy Efficiency Partnership'), + (u'21057', u'International Centre for Transitional Justice'), + (u'30001', u'Global Alliance for Improved Nutrition'), + (u'30003', u'Global e-Schools and Communities Initiative'), + (u'30004', u'Global Water Partnership'), + (u'30005', u'International AIDS Vaccine Initiative'), + (u'30006', u'International Partnership on Microbicides'), + (u'30007', u'Global Alliance for ICT and Development'), + (u'30008', u'Cities Alliance'), + (u'30009', u'Small Arms Survey'), + (u'30010', u'International drug purchase facility'), + (u'30011', u'International Union for the Conservation of Nature'), + (u'31001', u'Global Development Network'), + (u'31002', u'Global Knowledge Partnership') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/GeographicalPrecision.xml +# Fields: code, name, description + +GEOGRAPHICAL_PRECISION = ( + (u'1', u'Exact location', u'The coordinates corresponds to an exact location, such as a populated place or a hill. The code is also used for locations that join a location which is a line (such as a road or railroad). Lines are not coded only the points that connect lines. All points that are mentioned in the source are coded.'), + (u'2', u'Near exact location', u'The location is mentioned in the source as being "near", in the "area" of, or up to 25 km away from an exact location. The coordinates refer to that adjacent, exact, location.'), + (u'3', u'Second order administrative division', u'The location is, or lies in, a second order administrative division (ADM2), such as a district, municipality or commune'), + (u'4', u'First order administrative division', u'The location is, or lies in, a first order administrative division (ADM1), such as a province, state or governorate.'), + (u'5', u'Estimated coordinates', u'The location can only be related to estimated coordinates, such as when a location lies between populated places; along rivers, roads and borders; more than 25 km away from a specific location; or when sources refer to parts of a country greater than ADM1 (e.g. "northern Uganda").'), + (u'6', u'Independent political entity', u'The location can only be related to an independent political entity, meaning the pair of coordinates that represent a country.'), + (u'7', u'Unclear - capital', u'Unclear. The capital is assumed to be one of two possible locations. (The other option is the country level, with precision 9.)'), + (u'8', u'Local or national capital', u'The location is estimated to be a seat of an administrative division (local capital) or the national capital. If aid goes to Luanda without further specification on the location, and there is an ADM1 and a capital called Luanda, then code the coordinates of the capital with precision 8. If it is not spelled out that aid goes to the capital; but if it is clear that it goes to a government ministry or to government financial institutions; and if those institutions are most likely located in the capital; then the coordinates of the capital are coded with precision 8. (However, if it can be verified that the recipient institution is located in the capital then precision 1 is used.)'), + (u'9', u'Unclear - country', u'Unclear. The locations is estimated to be the country level (often paired with the capital, with precision 7)') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/DisbursementChannel.xml +# Fields: code, name, description + +DISBURSEMENT_CHANNEL = ( + (u'1', u'Money is disbursed through central Ministry of Finance or Treasury', u'Money is disbursed through central Ministry of Finance or Treasury'), + (u'2', u'Money is disbursed directly to the implementing institution and managed through a separate bank account', u'Money is disbursed directly to the implementing institution and managed through a separate bank account'), + (u'3', u'Aid in kind: Donors utilise third party agencies, e.g. NGOs or management companies', u'Aid in kind: Donors utilise third party agencies, e.g. NGOs or management companies'), + (u'4', u'Aid in kind: Donors manage funds themselves', u'Aid in kind: Donors manage funds themselves') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/FlowType.xml +# Fields: code, name, description + +FLOW_TYPE = ( + (u'10', u'ODA', u'Aide Publique au Développement'), + (u'20', u'OOF', u'Other Official Flows'), + (u'30', u'Private NGO and other private sources', u'ONG et autres sources'), + (u'35', u'Private Market'), + (u'40', u'Non flow', u'e.g. GNI'), + (u'50', u'Other flows', u'e.g. non-ODA component of peacebuilding operations') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/SectorCategory.xml +# Fields: code, name, description + +SECTOR_CATEGORY = ( + (u'111', u'Education, level unspecified', u'Education sector policy, planning and programmes; aid to education ministries, administration and management systems; institution capacity building and advice; school management and governance; curriculum and materials development; unspecified education activities.'), + (u'112', u'Basic education', u'Formal and non-formal primary education for children; all elementary and first cycle systematic instruction; provision of learning materials.'), + (u'113', u'Secondary education', u'Second cycle systematic instruction at both junior and senior levels.'), + (u'114', u'Post-secondary education', u'Degree and diploma programmes at universities, colleges and polytechnics; scholarships.'), + (u'121', u'Health, general', u'Health sector policy, planning and programmes; aid to health ministries, public health administration; institution capacity building and advice; medical insurance programmes; unspecified health activities.'), + (u'122', u'Basic health', u'Basic and primary health care programmes; paramedical and nursing care programmes; supply of drugs, medicines and vaccines related to basic health care.'), + (u'130', u'POPULATION POLICIES/PROGRAMMES AND REPRODUCTIVE HEALTH', u'Population/development policies; census work, vital registration; migration data; demographic research/analysis; reproductive health research; unspecified population activities.'), + (u'140', u'WATER AND SANITATION', u'Water sector policy, planning and programmes; water legislation and management; institution capacity building and advice; water supply assessments and studies; groundwater, water quality and watershed studies; hydrogeology; excluding agricultural water resources (31140).'), + (u'151', u'Government and civil society, general', u'Macro-economic, fiscal and monetary policy and planning; social planning; economic and social analysis and forecasting; development planning and preparation of structural reforms; organisational development; support to ministries involved in aid co-ordination; other ministries and government departments when sector cannot be specified. (Use code 51010 for budget support to macroeconomic reforms.)'), + (u'152', u'Conflict prevention and resolution, peace and security', u'Technical co-operation provided to parliament, government ministries, law enforcement agencies and the judiciary to assist review and reform of the security system to improve democratic governance and civilian control; technical co-operation provided to government to improve civilian oversight and democratic control of budgeting, management, accountability and auditing of security expenditure, including military budgets, as part of a public expenditure management programme; assistance to civil society to enhance its competence and capacity to scrutinise the security system so that it is managed in accordance with democratic norms and principles of accountability, transparency and good governance.'), + (u'160', u'OTHER SOCIAL INFRASTRUCTURE AND SERVICES', u'Social legislation and administration; institution capacity building and advice; social security and other social schemes; special programmes for the elderly, orphans, the disabled, street children; social dimensions of structural adjustment; unspecified social infrastructure and services, including consumer protection.'), + (u'210', u'TRANSPORT AND STORAGE', u'Transport sector policy, planning and programmes; aid to transport ministries; institution capacity building and advice; unspecified transport; activities that combine road, rail, water and/or air transport.'), + (u'220', u'COMMUNICATION', u'Communications sector policy, planning and programmes; institution capacity building and advice; including postal services development; unspecified communications activities.'), + (u'230', u'ENERGY GENERATION AND SUPPLY', u'Energy sector policy, planning and programmes; aid to energy ministries; institution capacity building and advice; unspecified energy activities including energy conservation.'), + (u'240', u'BANKING AND FINANCIAL SERVICES', u'Finance sector policy, planning and programmes; institution capacity building and advice; financial markets and systems.'), + (u'250', u'BUSINESS AND OTHER SERVICES', u'Support to trade and business associations, chambers of commerce; legal and regulatory reform aimed at improving business and investment climate; private sector institution capacity building and advice; trade information; public-private sector networking including trade fairs; e?commerce. Where sector cannot be specified: general support to private sector enterprises (in particular, use code 32130 for enterprises in the industrial sector).'), + (u'311', u'AGRICULTURE', u'Agricultural sector policy, planning and programmes; aid to agricultural ministries; institution capacity building and advice; unspecified agriculture.'), + (u'312', u'FORESTRY', u'Forestry sector policy, planning and programmes; institution capacity building and advice; forest surveys; unspecified forestry and agro-forestry activities.'), + (u'313', u'FISHING', u'Fishing sector policy, planning and programmes; institution capacity building and advice; ocean and coastal fishing; marine and freshwater fish surveys and prospecting; fishing boats/equipment; unspecified fishing activities.'), + (u'321', u'INDUSTRY', u'Industrial sector policy, planning and programmes; institution capacity building and advice; unspecified industrial activities; manufacturing of goods not specified below.'), + (u'322', u'MINERAL RESOURCES AND MINING', u'Mineral and mining sector policy, planning and programmes; mining legislation, mining cadastre, mineral resources inventory, information systems, institution capacity building and advice; unspecified mineral resources exploitation.'), + (u'323', u'CONSTRUCTION', u'Construction sector policy and planning; excluding construction activities within specific sectors (e.g., hospital or school construction).'), + (u'331', u'TRADE POLICY AND REGULATIONS AND TRADE-RELATED ADJUSTMENT', u'Trade policy and planning; support to ministries and departments responsible for trade policy; trade-related legislation and regulatory reforms; policy analysis and implementation of multilateral trade agreements e.g. technical barriers to trade and sanitary and phytosanitary measures (TBT/SPS) except at regional level (see 33130); mainstreaming trade in national development strategies (e.g. poverty reduction strategy papers); wholesale/retail trade; unspecified trade and trade promotion activities.'), + (u'332', u'TOURISM', u''), + (u'410', u'General environmental protection', u'Environmental policy, laws, regulations and economic instruments; administrational institutions and practices; environmental and land use planning and decision-making procedures; seminars, meetings; miscellaneous conservation and protection measures not specified below.'), + (u'430', u'Other multisector', u''), + (u'510', u'General budget support', u'Unearmarked contributions to the government budget; support for the implementation of macroeconomic reforms (structural adjustment programmes, poverty reduction strategies); general programme assistance (when not allocable by sector).'), + (u'520', u'Developmental food aid/Food security assistance', u'Supply of edible human food under national or international programmes including transport costs; cash payments made for food supplies; project food aid and food aid for market sales when benefiting sector not specified; excluding emergency food aid.'), + (u'530', u'Other commodity assistance', u'Capital goods and services; lines of credit.'), + (u'600', u'ACTION RELATING TO DEBT', u'Actions falling outside the code headings below; training in debt management.'), + (u'720', u'Emergency Response', u'Shelter, water, sanitation and health services, supply of medicines and other non-food relief items; assistance to refugees and internally displaced people in developing countries other than for food (72040) or protection (72050).'), + (u'730', u'Reconstruction relief and rehabilitation', u'Short-term reconstruction work after emergency or conflict limited to restoring pre-existing infrastructure (e.g. repair or construction of roads, bridges and ports, restoration of essential facilities, such as water and sanitation, shelter, health care services); social and economic rehabilitation in the aftermath of emergencies to facilitate transition and enable populations to return to their previous livelihood or develop a new livelihood in the wake of an emergency situation (e.g. trauma counselling and treatment, employment programmes).'), + (u'740', u'Disaster prevention and preparedness', u'Disaster risk reduction activities (e.g. developing knowledge, natural risks cartography, legal norms for construction); early warning systems; emergency contingency stocks and contingency planning including preparations for forced displacement.'), + (u'910', u'ADMINISTRATIVE COSTS OF DONORS', u''), + (u'920', u'SUPPORT TO NON- GOVERNMENTAL ORGANISATIONS (NGOs)', u'In the donor country.'), + (u'930', u'REFUGEES IN DONOR COUNTRIES', u''), + (u'998', u'UNALLOCATED/ UNSPECIFIED', u'Contributions to general development of the recipient should be included under programme assistance (51010).') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/RegionVocabulary.xml +# Fields: code, name, description + +REGION_VOCABULARY = ( + (u'1', u'OECD DAC', u'Supra-national regions according to OECD DAC CRS recipient codes'), + (u'2', u'UN', u'Supra-national regions maintained by UN Statistics Division') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/OrganisationRegistrationAgency.xml +# Fields: code, category, url, name, description + +ORGANISATION_REGISTRATION_AGENCY = ( + (u'AF-CBR', u'AF', u'http://acbr.gov.af/', u'Afghanistan Central Business Registry', u'Website not yet searchable '), + (u'AF-MOE', u'AF', u'http://moec.gov.af/en', u'Ministry of Economy', u''), + (u'AU-ABN', u'AU', u'http://abr.business.gov.au/', u'Australian Business Register', u''), + (u'AU-ACNC', u'AU', u'http://www.acnc.gov.au/ACNC/', u'Australian Charities and Not-for-profits Commission', u''), + (u'BE-BCE_KBO', u'BE', u'economie.fgov.be/fr/entreprises/BCE', u'Banque Carrefour des entreprises / Kruispuntbank van ondernemingen', u''), + (u'CA-CRA_ACR', u'CA', u'http://www.cra-arc.gc.ca/', u'Canadian Revenue Agency / Agence du revenu du Canada', u'CRA_ACR is legal requirement for bilingual use'), + (u'ES-DIR3', u'ES', u'http://administracionelectronica.gob.es/ctt/dir3/descargas', u'Common Directory of Organizational Units and Offices - DIR3', u'EXCEL Tables: http://administracionelectronica.gob.es/ctt/resources/Soluciones/238/Area%20descargas/Listado%20Oficinas%20AGE.xlsx?idIniciativa=238&idElemento=2745'), + (u'ET-MFA', u'ET', u'http://www.mfa.gov.et/', u'Ministry of Foreign Affairs', u'Charities are registered but no openly searchable database yet available. '), + (u'FI-PRO', u'FI', u'http://www.prh.fi/en/index.html', u'Finnish Patent and Registration office', u''), + (u'FR-RCS', u'FR', u'http://www.infogreffe.fr', u'Registre de Commerce et des Societies /Trade and Companies Register - Commercial Court Registry', u''), + (u'GB-CHC', u'GB', u'http://www.charity-commission.gov.uk/', u'Charity Commission', u''), + (u'GB-COH', u'GB', u'http://www.companieshouse.gov.uk/', u'Companies House', u''), + (u'GB-GOVUK', u'GB', u'https://www.gov.uk/government/organisations', u'UK Government Departments, Agencies & Public Bodies', u'Use the final segment of the url (below /organisations) as the "registration number", converting all "-" to "_". Keep "registration number" portion all lowercase. '), + (u'GB-NIC', u'GB', u'http://www.charitycommissionni.org.uk/', u'The Charity Commission for Northern Ireland', u''), + (u'GB-REV', u'GB', u'http://www.hmrc.gov.uk/', u'HM Revenue and Customs', u''), + (u'GB-SC', u'GB', u'http://www.oscr.org.uk/', u'Scottish Charity Register', u''), + (u'GH-DSW', u'GH', u'', u'Department of Social Welfare', u''), + (u'ID-KDN', u'ID', u'http://www.kemendagri.go.id/media/filemanager/2011/02/22/d/a/daf.ormas___lsm_2010.pdf', u'Ministry Home affairs/ Kementerian Dalam Negeri', u'NGO registration can also be done through Ministry Home affairs/ Kementerian Dalam Negeri'), + (u'ID-KHH', u'ID', u'http://www.kemenkumham.go.id/', u'Ministry of Justice & Human Rights/ Kementerian Hukum Dan Hak', u'Company registration is done through Ministry of Justice & Human Rights/ Kementerian Hukum Dan Hak'), + (u'ID-KLN', u'ID', u'http://www.kemlu.go.id/', u'Ministry of Foreign affairs/ Kementerian Luar Negeri', u'International NGO registration is done through Ministry of Foreign affairs/ Kementerian Luar Negeri'), + (u'ID-PRO', u'ID', u'http://www.satulayanan.net/layanan/pendaftaran-lsm-atau-ormas/perizinan-lsm-atau-ormas-baru', u'NGOs registered at Provinicial Level', u'Registration for NGO in Indonesia can be done at the provincial level. Because there is regional autonomy, each provincial has different requirements. Website is just one example'), + (u'IE-CHY', u'IE', u'', u'Irish Register of Charities', u''), + (u'IE-CRO', u'IE', u'http://www.cro.ie/', u'Irish CompaniesRegistration Office', u''), + (u'IM-CR', u'IM', u'http://www.gov.im/ded/companies/companiesregistry.xml?menuid=21615', u'Isle of Man Companies Registry', u''), + (u'IM-GR', u'IM', u'http://www.gov.im/registries/courts/charities/', u'Isle of Man Index of Registered Charities', u''), + (u'KE-NCB', u'KE', u'http://www.ngobureau.or.ke/', u'NGOs Coordination Board', u''), + (u'KE-RCO', u'KE', u'http://www.attorney-general.go.ke/', u'Registar of Companies', u''), + (u'KE-RSO', u'KE', u'http://www.attorney-general.go.ke/', u'Registrar of Societies', u''), + (u'LS-LCN', u'LS', u'http://www.lcn.org.ls/', u'Lesotho Council of Non Governmental Organisations', u''), + (u'MM-MHA', u'MM', u'No url for the ministry (as at 2/10/2013)', u'Ministry of Home Affairs - Central Committee for the Registration and Supervision of Organisations', u'The MHA assigns a registration number to each NGO - this number is time limited, for example 4 years, after which the registration is reviewed.'), + (u'MW-CNM', u'MW', u'http://www.congoma.mw/index.html', u'The Council for Non Governmental Organisations in Malawi', u''), + (u'MW-MRA', u'MW', u'http://www.mra.mw/', u'Malawi Revenue Authority', u''), + (u'MW-NBM', u'MW', u'http://ngoboardmalawi.mw/directory.php', u'NGO Board of Malawi', u'There is a pdf file with a list of registered NGOs, but these do not appear to be registration numbers. New database is planned'), + (u'MW-RG', u'MW', u'', u'Registrar General, Department of Justice', u''), + (u'NL-KVK', u'NL', u'http://www.kvk.nl/', u'Kamer van Koophandel', u''), + (u'NO-BRC', u'NO', u'http://www.brreg.no/', u'Brønnøysundregistrene', u''), + (u'NP-CRO', u'NP', u'http://www.cro.gov.np/', u'Company Registrar Office', u''), + (u'NP-SWC', u'NP', u'http://www.swc.org.np/', u'NGO registration', u''), + (u'SE-BLV', u'SE', u'http://www.bolagsverket.se/', u'Bolagsverket / Swedish Companies Registration Office', u''), + (u'SK-ZRSR', u'SK', u'http://www.zrsr.sk/default.aspx?LANG=en', u'Slovakia Ministry Of Interior Trade Register', u'Most organisations (including NGOs) have to be registered with the Ministry of Interior for the Trade Register Of The Slovak Republic (Živnostensky Register Slovenskej Republiky) and are allocated a unique registration number'), + (u'UA-EDR', u'UA', u'http://irc.gov.ua/ua/Poshuk-v-YeDR.html', u'United State Register, Ukraine', u''), + (u'UG-NGB', u'UG', u'http://www.mia.go.ug/?page_id=62', u'NGO Board, Ministry of Internal Affairs', u''), + (u'UG-RSB', u'UG', u'http://www.ursb.go.ug/', u'Registration Services Bureau', u''), + (u'US-DOS', u'US', u'http://www.companieshouse.gov.uk/links/usaLink.shtml', u'Corporation registration is the responsibility of each state (see link)', u''), + (u'US-EIN', u'US', u'http://www.irs.gov/businesses/small/article/0,,id=98350,00.html', u'Internal Revenue Service / Employer Identification Number', u''), + (u'US-USAGOV', u'US', u'http://www.usa.gov/directory/federal/index.shtml', u'Index of U.S. Government Departments and Agencies', u'Use the final segment of the url (below /federal and excluding the extension) as the "registration number", converting all "-" to "_". Keep "registration number" portion all lowercase. '), + (u'XI-IATI', u'XI', u'http://iatistandard.org/codelists/IATIOrganisationIdentifier/', u'International Aid Transparency Initiative Organisation Identifier', u'XI-IATI is a list of organisation identifiers that is maintained by the IATI Secretariat. Any publisher may apply to the IATI Technical Team for an identifier to be generated.'), + (u'XM-DAC', u'XM', u'http://www.oecd.org/dac/stats/dacandcrscodelists.htm', u'OECD Development Assistance Committee', u'See Donor, Agency, and Delivery Channel codes'), + (u'XM-OCHA', u'XM', u'http://www.unocha.org', u'United Nations Office for the Coordination of Humanitarian Affairs', u'OCHA is the part of the United Nations Secretariat responsible for bringing together humanitarian actors to ensure a coherent response to emergencies.'), + (u'ZA-CIP', u'ZA', u'http://www.cipro.gov.za/', u'Companies and Intellectual Property Commission (CIPC)', u''), + (u'ZA-NPO', u'', u'ZA', u'http://www.npo.gov.za/', u'Association for Non-Profit Organisations'), + (u'ZA-PBO', u'ZA', u'http://www.sars.gov.za/home.asp?pid=170', u'SA Revenue Service Tax Exemption Unit / Public Benefit Organisations', u''), + (u'ZM-NRB', u'ZM', u'', u'Non Governmental Organisation Registration Board', u''), + (u'ZM-PCR', u'ZM', u'http://www.pacra.org.zm/', u'Patents and Companies Registration Agency', u''), + (u'ZW-PVO', u'ZW', u'', u'Private Voluntary Organisations Council', u''), + (u'ZW-ROD', u'ZW', u'', u'Registrar of Deeds', u'') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/PolicySignificance.xml +# Fields: code, name, description + +POLICY_SIGNIFICANCE = ( + (u'0', u'not targeted', u'The score "not targeted" means that the activity was examined but found not to target the policy objective.'), + (u'1', u'significant objective', u'Significant (secondary) policy objectives are those which, although important, were not the prime motivation for undertaking the activity.'), + (u'2', u'principal objective', u'Principal (primary) policy objectives are those which can be identified as being fundamental in the design and impact of the activity and which are an explicit objective of the activity. They may be selected by answering the question "Would the activity have been undertaken without this objective?"'), + (u'3', u'principal objective AND in support of an action programme', u'For desertification-related aid only'), + (u'4', u'Explicit primary objective') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/GeographicExactness.xml +# Fields: code, name, description + +GEOGRAPHIC_EXACTNESS = ( + (u'1', u'Exact', u'The designated geographic location is exact'), + (u'2', u'Approximate', u'The designated geographic location is approximate') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/Sector.xml +# Fields: code, category, name, description + +SECTOR = ( + (u'11110', u'111', u'Education policy and administrative management', u'Education sector policy, planning and programmes; aid to education ministries, administration and management systems; institution capacity building and advice; school management and governance; curriculum and materials development; unspecified education activities.'), + (u'11120', u'111', u'Education facilities and training', u'Educational buildings, equipment, materials; subsidiary services to education (boarding facilities, staff housing); language training; colloquia, seminars, lectures, etc.'), + (u'11130', u'111', u'Teacher training', u'Teacher education (where the level of education is unspecified); in-service and pre-service training; materials development.'), + (u'11182', u'111', u'Educational research', u'Research and studies on education effectiveness, relevance and quality; systematic evaluation and monitoring.'), + (u'11220', u'112', u'Primary education', u'Formal and non-formal primary education for children; all elementary and first cycle systematic instruction; provision of learning materials.'), + (u'11230', u'112', u'Basic life skills for youth and adults', u'Formal and non-formal education for basic life skills for young people and adults (adults education); literacy and numeracy training.'), + (u'11240', u'112', u'Early childhood education', u'Formal and non-formal pre-school education.'), + (u'11320', u'113', u'Secondary education', u'Second cycle systematic instruction at both junior and senior levels.'), + (u'11330', u'113', u'Vocational training', u'Elementary vocational training and secondary level technical education; on-the job training; apprenticeships; including informal vocational training.'), + (u'11420', u'114', u'Higher education', u'Degree and diploma programmes at universities, colleges and polytechnics; scholarships.'), + (u'11430', u'114', u'Advanced technical and managerial training', u'Professional-level vocational training programmes and in-service training.'), + (u'12110', u'121', u'Health policy and administrative management', u'Health sector policy, planning and programmes; aid to health ministries, public health administration; institution capacity building and advice; medical insurance programmes; unspecified health activities.'), + (u'12181', u'121', u'Medical education/training', u'Medical education and training for tertiary level services.'), + (u'12182', u'121', u'Medical research', u'General medical research (excluding basic health research).'), + (u'12191', u'121', u'Medical services', u'Laboratories, specialised clinics and hospitals (including equipment and supplies); ambulances; dental services; mental health care; medical rehabilitation; control of non-infectious diseases; drug and substance abuse control [excluding narcotics traffic control (16063)].'), + (u'12220', u'122', u'Basic health care', u'Basic and primary health care programmes; paramedical and nursing care programmes; supply of drugs, medicines and vaccines related to basic health care.'), + (u'12230', u'122', u'Basic health infrastructure', u'District-level hospitals, clinics and dispensaries and related medical equipment; excluding specialised hospitals and clinics (12191).'), + (u'12240', u'122', u'Basic nutrition', u'Direct feeding programmes (maternal feeding, breastfeeding and weaning foods, child feeding, school feeding); determination of micro-nutrient deficiencies; provision of vitamin A, iodine, iron etc.; monitoring of nutritional status; nutrition and food hygiene education; household food security.'), + (u'12250', u'122', u'Infectious disease control', u'Immunisation; prevention and control of infectious and parasite diseases, except malaria (12262), tuberculosis (12263), HIV/AIDS and other STDs (13040). It includes diarrheal diseases, vector-borne diseases (e.g. river blindness and guinea worm), viral diseases, mycosis, helminthiasis, zoonosis, diseases by other bacteria and viruses, pediculosis, etc.'), + (u'12261', u'122', u'Health education', u'Information, education and training of the population for improving health knowledge and practices; public health and awareness campaigns.'), + (u'12262', u'122', u'Malaria control', u'Prevention and control of malaria.'), + (u'12263', u'122', u'Tuberculosis control', u'Immunisation, prevention and control of tuberculosis.'), + (u'12281', u'122', u'Health personnel development', u'Training of health staff for basic health care services.'), + (u'13010', u'130', u'Population policy and administrative management', u'Population/development policies; census work, vital registration; migration data; demographic research/analysis; reproductive health research; unspecified population activities.'), + (u'13020', u'130', u'Reproductive health care', u'Promotion of reproductive health; prenatal and postnatal care including delivery; prevention and treatment of infertility; prevention and management of consequences of abortion; safe motherhood activities.'), + (u'13030', u'130', u'Family planning', u'Family planning services including counselling; information, education and communication (IEC) activities; delivery of contraceptives; capacity building and training.'), + (u'13040', u'130', u'STD control including HIV/AIDS', u'All activities related to sexually transmitted diseases and HIV/AIDS control e.g. information, education and communication; testing; prevention; treatment, care.'), + (u'13081', u'130', u'Personnel development for population and reproductive health', u'Education and training of health staff for population and reproductive health care services.'), + (u'14010', u'140', u'Water resources policy and administrative management', u'Water sector policy, planning and programmes; water legislation and management; institution capacity building and advice; water supply assessments and studies; groundwater, water quality and watershed studies; hydrogeology; excluding agricultural water resources (31140).'), + (u'14015', u'140', u'Water resources protection', u'Inland surface waters (rivers, lakes, etc.); conservation and rehabilitation of ground water; prevention of water contamination from agro-chemicals, industrial effluents.'), + (u'14020', u'140', u'Water supply and sanitation - large systems', u'Water desalination plants; intakes, storage, treatment, pumping stations, conveyance and distribution systems; sewerage; domestic and industrial waste water treatment plants.'), + (u'14021', u'140', u'Water supply - large systems ', u'Potable water treatment plants; intake works; storage; water supply pumping stations; large scale transmission / conveyance and distribution systems.'), + (u'14022', u'140', u'Sanitation - large systems', u'Large scale sewerage including trunk sewers and sewage pumping stations; domestic and industrial waste water treatment plants.'), + (u'14030', u'140', u'Basic drinking water supply and basic sanitation', u'Water supply and sanitation through low-cost technologies such as handpumps, spring catchment, gravity-fed systems, rain water collection, storage tanks, small distribution systems; latrines, small-bore sewers, on-site disposal (septic tanks).'), + (u'14031', u'140', u'Basic drinking water supply', u'Rural water supply schemes using handpumps, spring catchments, gravity-fed systems, rainwater collection and fog harvesting, storage tanks, small distribution systems typically with shared connections/points of use. Urban schemes using handpumps and local neighbourhood networks including those with shared connections.'), + (u'14032', u'140', u'Basic sanitation', u'Latrines, on-site disposal and alternative sanitation systems, including the promotion of household and community investments in the construction of these facilities. (Use code 12261 for activities promoting improved personal hygiene practices.)'), + (u'14040', u'140', u'River development', u'Integrated river basin projects; river flow control; dams and reservoirs [excluding dams primarily for irrigation (31140) and hydropower (23065) and activities related to river transport (21040)].'), + (u'14050', u'140', u'Waste management/disposal', u'Municipal and industrial solid waste management, including hazardous and toxic waste; collection, disposal and treatment; landfill areas; composting and reuse.'), + (u'14081', u'140', u'Education and training in water supply and sanitation', u''), + (u'15110', u'151', u'Economic and development policy/planning', u'Institution-building assistance to strengthen core public sector management systems and capacities. This includes macro-economic and other policy management, co-ordination, planning and reform; human resource management; organisational development; civil service reform; e‑government; development planning, monitoring and evaluation; support to ministries involved in aid co-ordination; other ministries and government departments when sector cannot be specified. (Use specific sector codes for development of systems and capacities in sector ministries.) '), + (u'15111', u'151', u'Public finance management', u'Fiscal policy and planning; support to ministries of finance; strengthening financial and managerial accountability; public expenditure management; improving financial management systems; tax policy and administration; budget drafting; inter-governmental fiscal relations, public audit, public debt. (Use code 33120 for customs.) '), + (u'15112', u'151', u'Decentralisation and support to subnational government', u'Decentralisation processes (including political, administrative and fiscal dimensions); intergovernmental relations and federalism; strengthening departments of regional and local government, regional and local authorities and their national associations. (Use specific sector codes for decentralisation of sector management and services.) '), + (u'15113', u'151', u'Anti-corruption organisations and institutions', u'Specialised organisations, institutions and frameworks for the prevention of and combat against corruption, bribery, money-laundering and other aspects of organised crime, with or without law enforcement powers, e.g. anti-corruption commissions and monitoring bodies, special investigation services, institutions and initiatives of integrity and ethics oversight, specialised NGOs, other civil society and citizens’ organisations directly concerned with corruption. '), + (u'15120', u'151', u'Public sector financial management', u'Strengthening financial and managerial accountability; public expenditure management; improving financial management systems; tax assessment procedures; budget drafting; field auditing; measures against waste, fraud and corruption.'), + (u'15130', u'151', u'Legal and judicial development', u'Constitutional development, legal drafting; institutional strengthening of legal and judicial systems; legal training and education; legal advice and services; crime prevention.'), + (u'15140', u'151', u'Government administration', u'Systems of government including parliament, local government, decentralisation; civil service and civil service reform. Including general services by government (or commissioned by government) not elsewhere specified e.g. police, fire protection; cartography, meteorology, legal metrology, aerial surveys and remote sensing; administrative buildings.'), + (u'15150', u'151', u'Democratic participation and civil society', u'Support to the exercise of democracy and diverse forms of participation of citizens beyond elections (15151); direct democracy instruments such as referenda and citizens’ initiatives; support to organisations to represent and advocate for their members, to monitor, engage and hold governments to account, and to help citizens learn to act in the public sphere; curricula and teaching for civic education at various levels. (This purpose code is restricted to activities targeting governance issues. When assistance to civil society is for non-governance purposes use other appropriate purpose codes.)'), + (u'15151', u'151', u'Elections', u'Electoral management bodies and processes, election observation, voters education. (Use code 15230 when in the context of an international peacekeeping operation.)'), + (u'15152', u'151', u'Legislatures and political parties', u'Assistance to strengthen key functions of legislatures/ parliaments including subnational assemblies and councils (representation; oversight; legislation), such as improving the capacity of legislative bodies, improving legislatures’ committees and administrative procedures,; research and information management systems; providing training programmes for legislators and support personnel. Assistance to political parties and strengthening of party systems.'), + (u'15153', u'151', u'Media and free flow of information', u'Activities that support free and uncensored flow of information on public issues; activities that increase the editorial and technical skills and the integrity of the print and broadcast media, e.g. training of journalists. (Use codes 22010-22040 for provision of equipment and capital assistance to media.)'), + (u'15160', u'151', u'Human rights', u'Measures to support specialised official human rights institutions and mechanisms at universal, regional, national and local levels in their statutory roles to promote and protect civil and political, economic, social and cultural rights as defined in international conventions and covenants; translation of international human rights commitments into national legislation; reporting and follow-up; human rights dialogue. Human rights defenders and human rights NGOs; human rights advocacy, activism, mobilisation; awareness raising and public human rights education. Human rights programming targeting specific groups, e.g. children, persons with disabilities, migrants, ethnic, religious, linguistic and sexual minorities, indigenous people and those suffering from caste discrimination, victims of trafficking, victims of torture. (Use code 15230 when in the context of an international peacekeeping operation) '), + (u'15161', u'151', u'Elections', u'Electoral assistance and monitoring, voters education [other than in connection with UN peace building (15230)].'), + (u'15162', u'151', u'Human rights', u'Monitoring of human rights performance; support for national and regional human rights bodies; protection of ethnic, religious and cultural minorities [other than in connection with un peace building (15230)].'), + (u'15163', u'151', u'Free flow of information', u'Uncensored flow of information on public issues, including activities that increase the professionalism, skills and integrity of the print and broadcast media (e.g. training of journalists).'), + (u'15164', u'151', u'Womens equality organisations and institutions', u'Support for institutions and organisations (governmental and non-governmental) working for gender equality and womens empowerment.'), + (u'15170', u'151', u'Womens equality organisations and institutions *', u' Support for institutions and organisations (governmental and non-governmental) working for gender equality and womens empowerment.'), + (u'15210', u'152', u'Security system management and reform', u'Technical co-operation provided to parliament, government ministries, law enforcement agencies and the judiciary to assist review and reform of the security system to improve democratic governance and civilian control; technical co-operation provided to government to improve civilian oversight and democratic control of budgeting, management, accountability and auditing of security expenditure, including military budgets, as part of a public expenditure management programme; assistance to civil society to enhance its competence and capacity to scrutinise the security system so that it is managed in accordance with democratic norms and principles of accountability, transparency and good governance.'), + (u'15220', u'152', u'Civilian peace-building, conflict prevention and resolution', u'Support for civilian activities related to peace building, conflict prevention and resolution, including capacity building, monitoring, dialogue and information exchange.'), + (u'15230', u'152', u'Post-conflict peace-building (UN)', u'Participation in the post-conflict peace-building phase of United Nations peace operations (activities such as human rights and elections monitoring, rehabilitation of demobilised soldiers, rehabilitation of basic national infrastructure, monitoring or retraining of civil administrators and police forces, training in customs and border control procedures, advice or training in fiscal or macroeconomic stabilisation policy, repatriation and demobilisation of armed factions, and disposal of their weapons; support for landmine removal). Direct contributions to the UN peacekeeping budget are excluded from bilateral ODA (they are reportable in part as multilateral ODA).'), + (u'15240', u'152', u'Reintegration and SALW control', u'Reintegration of demobilised military personnel into the economy; conversion of production facilities from military to civilian outputs; technical co-operation to control, prevent and/or reduce the proliferation of small arms and light weapons (SALW) - see para. 39 of the DAC Statistical Reporting Directives for definition of SALW activities covered. [Other than in connection with UN peace-building (15230) or child soldiers (15261)].'), + (u'15250', u'152', u'Land mine clearance', u'Explosive mine removal for developmental purposes [other than in connection with UN peace-building (15230)].'), + (u'15261', u'152', u'Child soldiers (Prevention and demobilisation)', u'Technical co-operation provided to government and assistance to civil society organisations to support and apply legislation designed to prevent the recruitment of child soldiers, and to demobilise, disarm, reintegrate, repatriate and resettle (DDR) child soldiers.'), + (u'16010', u'160', u'Social/ welfare services', u'Social legislation and administration; institution capacity building and advice; social security and other social schemes; special programmes for the elderly, orphans, the disabled, street children; social dimensions of structural adjustment; unspecified social infrastructure and services, including consumer protection.'), + (u'16020', u'160', u'Employment policy and administrative management', u'Employment policy and planning; labour law; labour unions; institution capacity building and advice; support programmes for unemployed; employment creation and income generation programmes; occupational safety and health; combating child labour.'), + (u'16030', u'160', u'Housing policy and administrative management', u'Housing sector policy, planning and programmes; excluding low-cost housing and slum clearance (16040).'), + (u'16040', u'160', u'Low-cost housing', u'Including slum clearance.'), + (u'16050', u'160', u'Multisector aid for basic social services', u'Basic social services are defined to include basic education, basic health, basic nutrition, population/reproductive health and basic drinking water supply and basic sanitation.'), + (u'16061', u'160', u'Culture and recreation', u'Including libraries and museums.'), + (u'16062', u'160', u'Statistical capacity building', u'Both in national statistical offices and any other government ministries.'), + (u'16063', u'160', u'Narcotics control', u'In-country and customs controls including training of the police; educational programmes and awareness campaigns to restrict narcotics traffic and in-country distribution.'), + (u'16064', u'160', u'Social mitigation of HIV/AIDS', u'Special programmes to address the consequences of HIV/AIDS, e.g. social, legal and economic assistance to people living with HIV/AIDS including food security and employment; support to vulnerable groups and children orphaned by HIV/AIDS; human rights of HIV/AIDS affected people.'), + (u'21010', u'210', u'Transport policy and administrative management', u'Transport sector policy, planning and programmes; aid to transport ministries; institution capacity building and advice; unspecified transport; activities that combine road, rail, water and/or air transport.'), + (u'21020', u'210', u'Road transport', u'Road infrastructure, road vehicles; passenger road transport, motor passenger cars.'), + (u'21030', u'210', u'Rail transport', u'Rail infrastructure, rail equipment, locomotives, other rolling stock; including light rail (tram) and underground systems.'), + (u'21040', u'210', u'Water transport', u'Harbours and docks, harbour guidance systems, ships and boats; river and other inland water transport, inland barges and vessels.'), + (u'21050', u'210', u'Air transport', u'Airports, airport guidance systems, aeroplanes, aeroplane maintenance equipment.'), + (u'21061', u'210', u'Storage', u'Whether or not related to transportation.'), + (u'21081', u'210', u'Education and training in transport and storage', u''), + (u'22010', u'220', u'Communications policy and administrative management', u'Communications sector policy, planning and programmes; institution capacity building and advice; including postal services development; unspecified communications activities.'), + (u'22020', u'220', u'Telecommunications', u'Telephone networks, telecommunication satellites, earth stations.'), + (u'22030', u'220', u'Radio/television/print media', u'Radio and TV links, equipment; newspapers; printing and publishing.'), + (u'22040', u'220', u'Information and communication technology (ICT)', u'Computer hardware and software; internet access; IT training. When sector cannot be specified.'), + (u'23010', u'230', u'Energy policy and administrative management', u'Energy sector policy, planning and programmes; aid to energy ministries; institution capacity building and advice; unspecified energy activities including energy conservation.'), + (u'23020', u'230', u'Power generation/non-renewable sources', u'Thermal power plants including when heat source cannot be determined; combined gas-coal power plants.'), + (u'23030', u'230', u'Power generation/renewable sources', u'Including policy, planning, development programmes, surveys and incentives. Fuelwood/ charcoal production should be included under forestry (31261).'), + (u'23040', u'230', u'Electrical transmission/ distribution', u'Distribution from power source to end user; transmission lines.'), + (u'23050', u'230', u'Gas distribution', u'Delivery for use by ultimate consumer.'), + (u'23061', u'230', u'Oil-fired power plants', u'Including diesel power plants.'), + (u'23062', u'230', u'Gas-fired power plants', u''), + (u'23063', u'230', u'Coal-fired power plants', u''), + (u'23064', u'230', u'Nuclear power plants', u'Including nuclear safety.'), + (u'23065', u'230', u'Hydro-electric power plants', u'Including power-generating river barges.'), + (u'23066', u'230', u'Geothermal energy', u''), + (u'23067', u'230', u'Solar energy', u'Including photo-voltaic cells, solar thermal applications and solar heating.'), + (u'23068', u'230', u'Wind power', u'Wind energy for water lifting and electric power generation.'), + (u'23069', u'230', u'Ocean power', u'Including ocean thermal energy conversion, tidal and wave power.'), + (u'23070', u'230', u'Biomass', u'Densification technologies and use of biomass for direct power generation including biogas, gas obtained from sugar cane and other plant residues, anaerobic digesters.'), + (u'23081', u'230', u'Energy education/training', u'Applies to all energy sub-sectors; all levels of training.'), + (u'23082', u'230', u'Energy research', u'Including general inventories, surveys.'), + (u'24010', u'240', u'Financial policy and administrative management', u'Finance sector policy, planning and programmes; institution capacity building and advice; financial markets and systems.'), + (u'24020', u'240', u'Monetary institutions', u'Central banks.'), + (u'24030', u'240', u'Formal sector financial intermediaries', u'All formal sector financial intermediaries; credit lines; insurance, leasing, venture capital, etc. (except when focused on only one sector).'), + (u'24040', u'240', u'Informal/semi-formal financial intermediaries', u'Micro credit, savings and credit co-operatives etc.'), + (u'24081', u'240', u'Education/training in banking and financial services', u''), + (u'25010', u'250', u'Business support services and institutions', u'Support to trade and business associations, chambers of commerce; legal and regulatory reform aimed at improving business and investment climate; private sector institution capacity building and advice; trade information; public-private sector networking including trade fairs; e?commerce. Where sector cannot be specified: general support to private sector enterprises (in particular, use code 32130 for enterprises in the industrial sector).'), + (u'25020', u'250', u'Privatisation', u'When sector cannot be specified. Including general state enterprise restructuring or demonopolisation programmes; planning, programming, advice.'), + (u'31110', u'311', u'Agricultural policy and administrative management', u'Agricultural sector policy, planning and programmes; aid to agricultural ministries; institution capacity building and advice; unspecified agriculture.'), + (u'31120', u'311', u'Agricultural development', u'Integrated projects; farm development.'), + (u'31130', u'311', u'Agricultural land resources', u'Including soil degradation control; soil improvement; drainage of water logged areas; soil desalination; agricultural land surveys; land reclamation; erosion control, desertification control.'), + (u'31140', u'311', u'Agricultural water resources', u'Irrigation, reservoirs, hydraulic structures, ground water exploitation for agricultural use.'), + (u'31150', u'311', u'Agricultural inputs', u'Supply of seeds, fertilizers, agricultural machinery/equipment.'), + (u'31161', u'311', u'Food crop production', u'Including grains (wheat, rice, barley, maize, rye, oats, millet, sorghum); horticulture; vegetables; fruit and berries; other annual and perennial crops. [Use code 32161 for agro-industries.]'), + (u'31162', u'311', u'Industrial crops/export crops', u'Including sugar; coffee, cocoa, tea; oil seeds, nuts, kernels; fibre crops; tobacco; rubber. [Use code 32161 for agro-industries.]'), + (u'31163', u'311', u'Livestock', u'Animal husbandry; animal feed aid.'), + (u'31164', u'311', u'Agrarian reform', u'Including agricultural sector adjustment.'), + (u'31165', u'311', u'Agricultural alternative development', u'Projects to reduce illicit drug cultivation through other agricultural marketing and production opportunities (see code 43050 for non-agricultural alternative development).'), + (u'31166', u'311', u'Agricultural extension', u'Non-formal training in agriculture.'), + (u'31181', u'311', u'Agricultural education/training', u''), + (u'31182', u'311', u'Agricultural research', u'Plant breeding, physiology, genetic resources, ecology, taxonomy, disease control, agricultural bio-technology; including livestock research (animal health, breeding and genetics, nutrition, physiology).'), + (u'31191', u'311', u'Agricultural services', u'Marketing policies and organisation; storage and transportation, creation of strategic reserves.'), + (u'31192', u'311', u'Plant and post-harvest protection and pest control', u'Including integrated plant protection, biological plant protection activities, supply and management of agrochemicals, supply of pesticides, plant protection policy and legislation.'), + (u'31193', u'311', u'Agricultural financial services', u'Financial intermediaries for the agricultural sector including credit schemes; crop insurance.'), + (u'31194', u'311', u'Agricultural co-operatives', u'Including farmersÂ’ organisations.'), + (u'31195', u'311', u'Livestock/veterinary services', u'Animal health and management, genetic resources, feed resources.'), + (u'31210', u'312', u'Forestry policy and administrative management', u'Forestry sector policy, planning and programmes; institution capacity building and advice; forest surveys; unspecified forestry and agro-forestry activities.'), + (u'31220', u'312', u'Forestry development', u'Afforestation for industrial and rural consumption; exploitation and utilisation; erosion control, desertification control; integrated forestry projects.'), + (u'31261', u'312', u'Fuelwood/charcoal', u'Forestry development whose primary purpose is production of fuelwood and charcoal.'), + (u'31281', u'312', u'Forestry education/training', u''), + (u'31282', u'312', u'Forestry research', u'Including artificial regeneration, genetic improvement, production methods, fertilizer, harvesting.'), + (u'31291', u'312', u'Forestry services', u''), + (u'31310', u'313', u'Fishing policy and administrative management', u'Fishing sector policy, planning and programmes; institution capacity building and advice; ocean and coastal fishing; marine and freshwater fish surveys and prospecting; fishing boats/equipment; unspecified fishing activities.'), + (u'31320', u'313', u'Fishery development', u'Exploitation and utilisation of fisheries; fish stock protection; aquaculture; integrated fishery projects.'), + (u'31381', u'313', u'Fishery education/training', u''), + (u'31382', u'313', u'Fishery research', u'Pilot fish culture; marine/freshwater biological research.'), + (u'31391', u'313', u'Fishery services', u'Fishing harbours; fish markets; fishery transport and cold storage.'), + (u'32110', u'321', u'Industrial policy and administrative management', u'Industrial sector policy, planning and programmes; institution capacity building and advice; unspecified industrial activities; manufacturing of goods not specified below.'), + (u'32120', u'321', u'Industrial development', u''), + (u'32130', u'321', u'Small and medium-sized enterprises (SME) development', u'Direct support to the development of small and medium-sized enterprises in the industrial sector, including accounting, auditing and advisory services.'), + (u'32140', u'321', u'Cottage industries and handicraft', u''), + (u'32161', u'321', u'Agro-industries', u'Staple food processing, dairy products, slaughter houses and equipment, meat and fish processing and preserving, oils/fats, sugar refineries, beverages/tobacco, animal feeds production.'), + (u'32162', u'321', u'Forest industries', u'Wood production, pulp/paper production.'), + (u'32163', u'321', u'Textiles, leather and substitutes', u'Including knitting factories.'), + (u'32164', u'321', u'Chemicals', u'Industrial and non-industrial production facilities; includes pesticides production.'), + (u'32165', u'321', u'Fertilizer plants', u''), + (u'32166', u'321', u'Cement/lime/plaster', u''), + (u'32167', u'321', u'Energy manufacturing', u'Including gas liquefaction; petroleum refineries.'), + (u'32168', u'321', u'Pharmaceutical production', u'Medical equipment/supplies; drugs, medicines, vaccines; hygienic products.'), + (u'32169', u'321', u'Basic metal industries', u'Iron and steel, structural metal production.'), + (u'32170', u'321', u'Non-ferrous metal industries', u''), + (u'32171', u'321', u'Engineering', u'Manufacturing of electrical and non-electrical machinery, engines/turbines.'), + (u'32172', u'321', u'Transport equipment industry', u'Shipbuilding, fishing boats building; railroad equipment; motor vehicles and motor passenger cars; aircraft; navigation/guidance systems.'), + (u'32182', u'321', u'Technological research and development', u'Including industrial standards; quality management; metrology; testing; accreditation; certification.'), + (u'32210', u'322', u'Mineral/mining policy and administrative management', u'Mineral and mining sector policy, planning and programmes; mining legislation, mining cadastre, mineral resources inventory, information systems, institution capacity building and advice; unspecified mineral resources exploitation.'), + (u'32220', u'322', u'Mineral prospection and exploration', u'Geology, geophysics, geochemistry; excluding hydrogeology (14010) and environmental geology (41010), mineral extraction and processing, infrastructure, technology, economics, safety and environment management.'), + (u'32261', u'322', u'Coal', u'Including lignite and peat.'), + (u'32262', u'322', u'Oil and gas', u'Petroleum, natural gas, condensates, liquefied petroleum gas (LPG), liquefied natural gas (LNG); including drilling and production.'), + (u'32263', u'322', u'Ferrous metals', u'Iron and ferro-alloy metals.'), + (u'32264', u'322', u'Nonferrous metals', u'Aluminium, copper, lead, nickel, tin, zinc.'), + (u'32265', u'322', u'Precious metals/materials', u'Gold, silver, platinum, diamonds, gemstones.'), + (u'32266', u'322', u'Industrial minerals', u'Baryte, limestone, feldspar, kaolin, sand, gypsym, gravel, ornamental stones.'), + (u'32267', u'322', u'Fertilizer minerals', u'Phosphates, potash.'), + (u'32268', u'322', u'Offshore minerals', u'Polymetallic nodules, phosphorites, marine placer deposits.'), + (u'32310', u'323', u'Construction policy and administrative management', u'Construction sector policy and planning; excluding construction activities within specific sectors (e.g., hospital or school construction).'), + (u'33110', u'331', u'Trade policy and administrative management', u'Trade policy and planning; support to ministries and departments responsible for trade policy; trade-related legislation and regulatory reforms; policy analysis and implementation of multilateral trade agreements e.g. technical barriers to trade and sanitary and phytosanitary measures (TBT/SPS) except at regional level (see 33130); mainstreaming trade in national development strategies (e.g. poverty reduction strategy papers); wholesale/retail trade; unspecified trade and trade promotion activities.'), + (u'33120', u'331', u'Trade facilitation', u'Simplification and harmonisation of international import and export procedures (e.g. customs valuation, licensing procedures, transport formalities, payments, insurance); support to customs departments; tariff reforms.'), + (u'33130', u'331', u'Regional trade agreements (RTAs)', u'Support to regional trade arrangements [e.g. Southern African Development Community (SADC), Association of Southeast Asian Nations (ASEAN), Free Trade Area of the Americas (FTAA), African Caribbean Pacific/European Union (ACP/EU)], including work on technical barriers to trade and sanitary and phytosanitary measures (TBT/SPS) at regional level; elaboration of rules of origin and introduction of special and differential treatment in RTAs.'), + (u'33140', u'331', u'Multilateral trade negotiations', u'Support developing countries effective participation in multilateral trade negotiations, including training of negotiators, assessing impacts of negotiations; accession to the World Trade Organisation (WTO) and other multilateral trade-related organisations.'), + (u'33150', u'331', u'Trade-related adjustment', u'Contributions to the government budget to assist the implementation of recipients own trade reforms and adjustments to trade policy measures by other countries; assistance to manage shortfalls in the balance of payments due to changes in the world trading environment.'), + (u'33181', u'331', u'Trade education/training', u'Human resources development in trade not included under any of the above codes. Includes university programmes in trade.'), + (u'33210', u'332', u'Tourism policy and administrative management', u''), + (u'41010', u'410', u'Environmental policy and administrative management', u'Environmental policy, laws, regulations and economic instruments; administrational institutions and practices; environmental and land use planning and decision-making procedures; seminars, meetings; miscellaneous conservation and protection measures not specified below.'), + (u'41020', u'410', u'Biosphere protection', u'Air pollution control, ozone layer preservation; marine pollution control.'), + (u'41030', u'410', u'Bio-diversity', u'Including natural reserves and actions in the surrounding areas; other measures to protect endangered or vulnerable species and their habitats (e.g. wetlands preservation).'), + (u'41040', u'410', u'Site preservation', u'Applies to unique cultural landscape; including sites/objects of historical, archeological, aesthetic, scientific or educational value.'), + (u'41050', u'410', u'Flood prevention/control', u'Floods from rivers or the sea; including sea water intrusion control and sea level rise related activities.'), + (u'41081', u'410', u'Environmental education/ training', u''), + (u'41082', u'410', u'Environmental research', u'Including establishment of databases, inventories/accounts of physical and natural resources; environmental profiles and impact studies if not sector specific.'), + (u'43010', u'430', u'Multisector aid', u''), + (u'43030', u'430', u'Urban development and management', u'Integrated urban development projects; local development and urban management; urban infrastructure and services; municipal finances; urban environmental management; urban development and planning; urban renewal and urban housing; land information systems.'), + (u'43040', u'430', u'Rural development', u'Integrated rural development projects; e.g. regional development planning; promotion of decentralised and multi-sectoral competence for planning, co-ordination and management; implementation of regional development and measures (including natural reserve management); land management; land use planning; land settlement and resettlement activities [excluding resettlement of refugees and internally displaced persons (72010)]; functional integration of rural and urban areas; geographical information systems.'), + (u'43050', u'430', u'Non-agricultural alternative development', u'Projects to reduce illicit drug cultivation through, for example, non-agricultural income opportunities, social and physical infrastructure (see code 31165 for agricultural alternative development).'), + (u'43081', u'430', u'Multisector education/training', u'Including scholarships.'), + (u'43082', u'430', u'Research/scientific institutions', u'When sector cannot be identified.'), + (u'51010', u'510', u'General budget support', u'Unearmarked contributions to the government budget; support for the implementation of macroeconomic reforms (structural adjustment programmes, poverty reduction strategies); general programme assistance (when not allocable by sector).'), + (u'52010', u'520', u'Food aid/Food security programmes', u'Supply of edible human food under national or international programmes including transport costs; cash payments made for food supplies; project food aid and food aid for market sales when benefiting sector not specified; excluding emergency food aid.'), + (u'53030', u'530', u'Import support (capital goods)', u'Capital goods and services; lines of credit.'), + (u'53040', u'530', u'Import support (commodities)', u'Commodities, general goods and services, oil imports.'), + (u'60010', u'600', u'Action relating to debt', u'Actions falling outside the code headings below; training in debt management.'), + (u'60020', u'600', u'Debt forgiveness', u''), + (u'60030', u'600', u'Relief of multilateral debt', u'Grants or credits to cover debt owed to multilateral financial institutions; including contributions to Heavily Indebted Poor Countries (HIPC) Trust Fund.'), + (u'60040', u'600', u'Rescheduling and refinancing', u''), + (u'60061', u'600', u'Debt for development swap', u'Allocation of debt claims to use for development (e.g., debt for education, debt for environment).'), + (u'60062', u'600', u'Other debt swap', u'Where the debt swap benefits an external agent i.e. is not specifically for development purposes.'), + (u'60063', u'600', u'Debt buy-back', u'Purchase of debt for the purpose of cancellation.'), + (u'72010', u'720', u'Material relief assistance and services', u'Shelter, water, sanitation and health services, supply of medicines and other non-food relief items; assistance to refugees and internally displaced people in developing countries other than for food (72040) or protection (72050).'), + (u'72040', u'720', u'Emergency food aid', u'Food aid normally for general free distribution or special supplementary feeding programmes; short-term relief to targeted population groups affected by emergency situations. Excludes non-emergency food security assistance programmes/food aid (52010).'), + (u'72050', u'720', u'Relief co-ordination; protection and support services', u'Measures to co-ordinate delivery of humanitarian aid, including logistics and communications systems; measures to promote and protect the safety, well-being, dignity and integrity of civilians and those no longer taking part in hostilities. (Activities designed to protect the security of persons or property through the use or display of force are not reportable as ODA.)'), + (u'73010', u'730', u'Reconstruction relief and rehabilitation', u'Short-term reconstruction work after emergency or conflict limited to restoring pre-existing infrastructure (e.g. repair or construction of roads, bridges and ports, restoration of essential facilities, such as water and sanitation, shelter, health care services); social and economic rehabilitation in the aftermath of emergencies to facilitate transition and enable populations to return to their previous livelihood or develop a new livelihood in the wake of an emergency situation (e.g. trauma counselling and treatment, employment programmes).'), + (u'74010', u'740', u'Disaster prevention and preparedness', u'Disaster risk reduction activities (e.g. developing knowledge, natural risks cartography, legal norms for construction); early warning systems; emergency contingency stocks and contingency planning including preparations for forced displacement.'), + (u'91010', u'910', u'Administrative costs', u''), + (u'92010', u'920', u'Support to national NGOs', u'In the donor country.'), + (u'92020', u'920', u'Support to international NGOs', u''), + (u'92030', u'920', u'Support to local and regional NGOs', u'In the recipient country or region.'), + (u'93010', u'930', u'Refugees in donor countries', u''), + (u'99810', u'998', u'Sectors not specified', u'Contributions to general development of the recipient should be included under programme assistance (51010).'), + (u'99820', u'998', u'Promotion of development awareness', u'Spending in donor country for heightened awareness/interest in development co-operation (brochures, lectures, special research projects, etc.).') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/GeographicVocabulary.xml +# Fields: code, url, name + +GEOGRAPHIC_VOCABULARY = ( + (u'A1', u'http://www.fao.org/geonetwork/srv/en/metadata.show?id=12691', u'Global Admininistrative Unit Layers'), + (u'A2', u'http://www.unsalb.org/', u'UN Second Administrative Level Boundary Project', u'Note: the unsalb.org website is no longer accessible, and public access to the boundaries resources has been removed http://www.ungiwg.org/content/united-nations-international-and-administrative-boundaries-resources'), + (u'A3', u'http://www.gadm.org/', u'Global Administrative Areas'), + (u'A4', u'http://www.iso.org/iso/country_codes.htm', u'ISO Country (3166-1 alpha-2)'), + (u'G1', u'http://www.geonames.org/', u'Geonames'), + (u'G2', u'http://www.openstreetmap.org/', u'OpenStreetMap', u'Note: the code should be formed by prefixing the relevant OpenStreetMap ID with node/ way/ or relation/ as appropriate, e.g. node/1234567') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/FinanceType.xml +# Fields: code, category, name + +FINANCE_TYPE = ( + (u'110', u'100', u'Aid grant excluding debt reorganisation'), + (u'111', u'100', u'Subsidies to national private investors'), + (u'210', u'200', u'Interest subsidy grant in AF'), + (u'211', u'200', u'Interest subsidy to national private exporters'), + (u'310', u'300', u'Deposit basis'), + (u'311', u'300', u'Encashment basis'), + (u'410', u'400', u'Aid loan excluding debt reorganisation'), + (u'411', u'400', u'Investment-related loan to developing countries'), + (u'412', u'400', u'Loan in a joint venture with the recipient'), + (u'413', u'400', u'Loan to national private investor'), + (u'414', u'400', u'Loan to national private exporter'), + (u'451', u'450', u'Non-banks guaranteed export credits'), + (u'452', u'450', u'Non-banks non-guaranteed portions of guaranteed export credits'), + (u'453', u'450', u'Bank export credits'), + (u'510', u'500', u'Acquisition of equity as part of a joint venture with the recipient'), + (u'511', u'500', u'Acquisition of equity not part of joint venture in developing countries'), + (u'512', u'500', u'Other acquisition of equity. Investment in a country on the DAC List of ODA Recipients that is not made to acquire a lasting interest in an enterprise.'), + (u'610', u'600', u'Debt forgiveness: ODA claims (P)'), + (u'611', u'600', u'Debt forgiveness: ODA claims (I)'), + (u'612', u'600', u'Debt forgiveness: OOF claims (P)'), + (u'613', u'600', u'Debt forgiveness: OOF claims (I)'), + (u'614', u'600', u'Debt forgiveness: Private claims (P)'), + (u'615', u'600', u'Debt forgiveness: Private claims (I)'), + (u'616', u'600', u'Debt forgiveness: OOF claims (DSR)'), + (u'617', u'600', u'Debt forgiveness: Private claims (DSR)'), + (u'618', u'600', u'Debt forgiveness: Other'), + (u'620', u'600', u'Debt rescheduling: ODA claims (P)'), + (u'621', u'600', u'Debt rescheduling: ODA claims (I)'), + (u'622', u'600', u'Debt rescheduling: OOF claims (P)'), + (u'623', u'600', u'Debt rescheduling: OOF claims (I)'), + (u'624', u'600', u'Debt rescheduling: Private claims (P)'), + (u'625', u'600', u'Debt rescheduling: Private claims (I)'), + (u'626', u'600', u'Debt rescheduling: OOF claims (DSR)'), + (u'627', u'600', u'Debt rescheduling: Private claims (DSR)'), + (u'630', u'600', u'Debt rescheduling: OOF claim (DSR - original loan principal)'), + (u'631', u'600', u'Debt rescheduling: OOF claim (DSR - original loan interest)'), + (u'632', u'600', u'Debt rescheduling: Private claim (DSR - original loan principal)'), + (u'710', u'700', u'Foreign direct investment'), + (u'711', u'700', u'Other foreign direct investment, including reinvested earnings'), + (u'810', u'800', u'Bank bonds'), + (u'811', u'800', u'Non-bank bonds'), + (u'910', u'900', u'Other bank securities/claims'), + (u'911', u'900', u'Other non-bank securities/claims'), + (u'912', u'900', u'Securities and other instruments issued by multilateral agencies') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/ConditionType.xml +# Fields: code, name, description + +CONDITION_TYPE = ( + (u'1', u'Policy', u'The condition attached requires a particular policy to be implemented by the recipient'), + (u'2', u'Performance', u'The condition attached requires certain outputs or outcomes to be achieved by the recipient'), + (u'3', u'Fiduciary', u'The condition attached requires use of certain public financial management or public accountability measures by the recipient') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/LocationType-category.xml +# Fields: code, name + +LOCATION_TYPE_CATEGORY = ( + (u'A', u'Administrative Region'), + (u'H', u'Hydrographic'), + (u'L', u'Area'), + (u'P', u'Populated Place'), + (u'R', u'Streets/Highways/Roads'), + (u'S', u'Spot Features'), + (u'T', u'Hypsographic'), + (u'U', u'Undersea'), + (u'V', u'Vegetation') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/Language.xml +# Fields: code, name + +LANGUAGE = ( + (u'aa', u'Afar'), + (u'ab', u'Abkhazian'), + (u'ae', u'Avestan'), + (u'af', u'Afrikaans'), + (u'ak', u'Akan'), + (u'am', u'Amharic'), + (u'an', u'Aragonese'), + (u'ar', u'Arabic'), + (u'as', u'Assamese'), + (u'av', u'Avaric'), + (u'ay', u'Aymara'), + (u'az', u'Azerbaijani'), + (u'ba', u'Bashkir'), + (u'be', u'Belarusian'), + (u'bg', u'Bulgarian'), + (u'bh', u'Bihari languages'), + (u'bi', u'Bislama'), + (u'bm', u'Bambara'), + (u'bn', u'Bengali'), + (u'bo', u'Tibetan'), + (u'br', u'Breton'), + (u'bs', u'Bosnian'), + (u'ca', u'Catalan; Valencian'), + (u'ce', u'Chechen'), + (u'ch', u'Chamorro'), + (u'co', u'Corsican'), + (u'cr', u'Cree'), + (u'cs', u'Czech'), + (u'cv', u'Chuvash'), + (u'cy', u'Welsh'), + (u'da', u'Danish'), + (u'de', u'German'), + (u'dv', u'Divehi; Dhivehi; Maldivian'), + (u'dz', u'Dzongkha'), + (u'ee', u'Ewe'), + (u'el', u'Greek'), + (u'en', u'English'), + (u'eo', u'Esperanto'), + (u'es', u'Spanish; Castilian'), + (u'et', u'Estonian'), + (u'eu', u'Basque'), + (u'fa', u'Persian'), + (u'ff', u'Fulah'), + (u'fi', u'Finnish'), + (u'fj', u'Fijian'), + (u'fo', u'Faroese'), + (u'fr', u'French'), + (u'fy', u'Western Frisian'), + (u'ga', u'Irish'), + (u'gd', u'Gaelic; Scottish Gaelic'), + (u'gl', u'Galician'), + (u'gn', u'Guarani'), + (u'gu', u'Gujarati'), + (u'gv', u'Manx'), + (u'ha', u'Hausa'), + (u'he', u'Hebrew'), + (u'hi', u'Hindi'), + (u'ho', u'Hiri Motu'), + (u'hr', u'Croatian'), + (u'ht', u'Haitian; Haitian Creole'), + (u'hu', u'Hungarian'), + (u'hy', u'Armenian'), + (u'hz', u'Herero'), + (u'id', u'Indonesian'), + (u'ig', u'Igbo'), + (u'ii', u'Sichuan Yi; Nuosu'), + (u'ik', u'Inupiaq'), + (u'io', u'Ido'), + (u'is', u'Icelandic'), + (u'it', u'Italian'), + (u'iu', u'Inuktitut'), + (u'ja', u'Japanese'), + (u'jv', u'Javanese'), + (u'ka', u'Georgian'), + (u'kg', u'Kongo'), + (u'ki', u'Kikuyu; Gikuyu'), + (u'kj', u'Kuanyama; Kwanyama'), + (u'kk', u'Kazakh'), + (u'kl', u'Kalaallisut; Greenlandic'), + (u'km', u'Central Khmer'), + (u'kn', u'Kannada'), + (u'ko', u'Korean'), + (u'kr', u'Kanuri'), + (u'ks', u'Kashmiri'), + (u'ku', u'Kurdish'), + (u'kv', u'Komi'), + (u'kw', u'Cornish'), + (u'ky', u'Kirghiz; Kyrgyz'), + (u'la', u'Latin'), + (u'lb', u'Luxembourgish; Letzeburgesch'), + (u'lg', u'Ganda'), + (u'li', u'Limburgan; Limburger; Limburgish'), + (u'ln', u'Lingala'), + (u'lo', u'Lao'), + (u'lt', u'Lithuanian'), + (u'lu', u'Luba-Katanga'), + (u'lv', u'Latvian'), + (u'mg', u'Malagasy'), + (u'mh', u'Marshallese'), + (u'mi', u'Maori'), + (u'mk', u'Macedonian'), + (u'ml', u'Malayalam'), + (u'mn', u'Mongolian'), + (u'mr', u'Marathi'), + (u'ms', u'Malay'), + (u'mt', u'Maltese'), + (u'my', u'Burmese'), + (u'na', u'Nauru'), + (u'nb', u'BokmĂĽl, Norwegian; Norwegian BokmĂĽl'), + (u'nd', u'Ndebele, North; North Ndebele'), + (u'ne', u'Nepali'), + (u'ng', u'Ndonga'), + (u'nl', u'Dutch; Flemish'), + (u'nn', u'Norwegian Nynorsk; Nynorsk, Norwegian'), + (u'no', u'Norwegian'), + (u'nr', u'Ndebele, South; South Ndebele'), + (u'nv', u'Navajo; Navaho'), + (u'ny', u'Chichewa; Chewa; Nyanja'), + (u'oc', u'Occitan (post 1500)'), + (u'oj', u'Ojibwa'), + (u'om', u'Oromo'), + (u'or', u'Oriya'), + (u'os', u'Ossetian; Ossetic'), + (u'pa', u'Panjabi; Punjabi'), + (u'pi', u'Pali'), + (u'pl', u'Polish'), + (u'ps', u'Pushto; Pashto'), + (u'pt', u'Portuguese'), + (u'qu', u'Quechua'), + (u'rm', u'Romansh'), + (u'rn', u'Rundi'), + (u'ro', u'Romanian; Moldavian; Moldovan'), + (u'ru', u'Russian'), + (u'rw', u'Kinyarwanda'), + (u'sa', u'Sanskrit'), + (u'sc', u'Sardinian'), + (u'sd', u'Sindhi'), + (u'se', u'Northern Sami'), + (u'sg', u'Sango'), + (u'si', u'Sinhala; Sinhalese'), + (u'sk', u'Slovak'), + (u'sl', u'Slovenian'), + (u'sm', u'Samoan'), + (u'sn', u'Shona'), + (u'so', u'Somali'), + (u'sq', u'Albanian'), + (u'sr', u'Serbian'), + (u'ss', u'Swati'), + (u'st', u'Sotho, Southern'), + (u'su', u'Sundanese'), + (u'sv', u'Swedish'), + (u'sw', u'Swahili'), + (u'ta', u'Tamil'), + (u'te', u'Telugu'), + (u'tg', u'Tajik'), + (u'th', u'Thai'), + (u'ti', u'Tigrinya'), + (u'tk', u'Turkmen'), + (u'tl', u'Tagalog'), + (u'tn', u'Tswana'), + (u'to', u'Tonga (Tonga Islands)'), + (u'tr', u'Turkish'), + (u'ts', u'Tsonga'), + (u'tt', u'Tatar'), + (u'tw', u'Twi'), + (u'ty', u'Tahitian'), + (u'ug', u'Uighur; Uyghur'), + (u'uk', u'Ukrainian'), + (u'ur', u'Urdu'), + (u'uz', u'Uzbek'), + (u've', u'Venda'), + (u'vi', u'Vietnamese'), + (u'vo', u'VolapĂźk'), + (u'wa', u'Walloon'), + (u'wo', u'Wolof'), + (u'xh', u'Xhosa'), + (u'yi', u'Yiddish'), + (u'yo', u'Yoruba'), + (u'za', u'Zhuang; Chuang'), + (u'zh', u'Chinese'), + (u'zu', u'Zulu') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/BudgetIdentifierVocabulary.xml +# Fields: code, name, description + +BUDGET_IDENTIFIER_VOCABULARY = ( + (u'1', u'IATI', u'The budget identifier reported uses IATI budget identifier categories'), + (u'2', u'Country Chart of Accounts', u'The budget identifier reported corresponds to the recipient country chart of accounts'), + (u'3', u'Other Country System', u'The budget identifier reported corresponds to a recipient country system other than the chart of accounts'), + (u'4', u'Reporting Organisation', u'The budget identifier reported corresponds to categories that are specific to the reporting organisation'), + (u'5', u'Other', u'The budget identifier reported uses a different vocabulary, not specified in the codelist ') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/Currency.xml +# Fields: code, name + +CURRENCY = ( + (u'AED', u'UAE Dirham'), + (u'AFN', u'Afghani'), + (u'ALL', u'Lek'), + (u'AMD', u'Armenian Dram'), + (u'ANG', u'Netherlands Antillian Guilder'), + (u'AOA', u'Kwanza'), + (u'ARS', u'Argentine Peso'), + (u'AUD', u'Australian Dollar'), + (u'AWG', u'Aruban Guilder'), + (u'AZN', u'Azerbaijanian Manat'), + (u'BAM', u'Convertible Marks'), + (u'BBD', u'Barbados Dollar'), + (u'BDT', u'Taka'), + (u'BGN', u'Bulgarian Lev'), + (u'BHD', u'Bahraini Dinar'), + (u'BIF', u'Burundi Franc'), + (u'BMD', u'Bermudian Dollar'), + (u'BND', u'Brunei Dollar'), + (u'BOB', u'Boliviano'), + (u'BOV', u'Mvdol'), + (u'BRL', u'Brazilian Real'), + (u'BSD', u'Bahamian Dollar'), + (u'BTN', u'Ngultrum'), + (u'BWP', u'Pula'), + (u'BYR', u'Belarussian Ruble'), + (u'BZD', u'Belize Dollar'), + (u'CAD', u'Canadian Dollar'), + (u'CDF', u'Congolese Franc'), + (u'CHF', u'Swiss Franc'), + (u'CLF', u'Unidades de fomento'), + (u'CLP', u'Chilean Peso'), + (u'CNY', u'Yuan Renminbi'), + (u'COP', u'Colombian Peso'), + (u'COU', u'Unidad de Valor Real'), + (u'CRC', u'Costa Rican Colon'), + (u'CUC', u'Peso Convertible'), + (u'CUP', u'Cuban Peso'), + (u'CVE', u'Cape Verde Escudo'), + (u'CZK', u'Czech Koruna'), + (u'DJF', u'Djibouti Franc'), + (u'DKK', u'Danish Krone'), + (u'DOP', u'Dominican Peso'), + (u'DZD', u'Algerian Dinar'), + (u'EEK', u'Kroon'), + (u'EGP', u'Egyptian Pound'), + (u'ERN', u'Nakfa'), + (u'ETB', u'Ethiopian Birr'), + (u'EUR', u'Euro'), + (u'FJD', u'Fiji Dollar'), + (u'FKP', u'Falkland Islands Pound'), + (u'GBP', u'Pound Sterling'), + (u'GEL', u'Lari'), + (u'GHS', u'Cedi'), + (u'GIP', u'Gibraltar Pound'), + (u'GMD', u'Dalasi'), + (u'GNF', u'Guinea Franc'), + (u'GTQ', u'Quetzal'), + (u'GYD', u'Guyana Dollar'), + (u'HKD', u'Hong Kong Dollar'), + (u'HNL', u'Lempira'), + (u'HRK', u'Croatian Kuna'), + (u'HTG', u'Gourde'), + (u'HUF', u'Forint'), + (u'IDR', u'Rupiah'), + (u'ILS', u'New Israeli Sheqel'), + (u'INR', u'Indian Rupee'), + (u'IQD', u'Iraqi Dinar'), + (u'IRR', u'Iranian Rial'), + (u'ISK', u'Iceland Krona'), + (u'JMD', u'Jamaican Dollar'), + (u'JOD', u'Jordanian Dinar'), + (u'JPY', u'Yen'), + (u'KES', u'Kenyan Shilling'), + (u'KGS', u'Som'), + (u'KHR', u'Riel'), + (u'KMF', u'Comoro Franc'), + (u'KPW', u'North Korean Won'), + (u'KRW', u'Won'), + (u'KWD', u'Kuwaiti Dinar'), + (u'KYD', u'Cayman Islands Dollar'), + (u'KZT', u'Tenge'), + (u'LAK', u'Kip'), + (u'LBP', u'Lebanese Pound'), + (u'LKR', u'Sri Lanka Rupee'), + (u'LRD', u'Liberian Dollar'), + (u'LSL', u'Loti'), + (u'LTL', u'Lithuanian Litas'), + (u'LVL', u'Latvian Lats'), + (u'LYD', u'Libyan Dinar'), + (u'MAD', u'Moroccan Dirham'), + (u'MDL', u'Moldovan Leu'), + (u'MGA', u'Malagasy Ariary'), + (u'MKD', u'Denar'), + (u'MMK', u'Kyat'), + (u'MNT', u'Tugrik'), + (u'MOP', u'Pataca'), + (u'MRO', u'Ouguiya'), + (u'MUR', u'Mauritius Rupee'), + (u'MVR', u'Rufiyaa'), + (u'MWK', u'Malawi Kwacha'), + (u'MXN', u'Mexican Peso'), + (u'MXV', u'Mexican Unidad de Inversion (UDI)'), + (u'MYR', u'Malaysian Ringgit'), + (u'MZN', u'Metical'), + (u'NAD', u'Namibia Dollar'), + (u'NGN', u'Naira'), + (u'NIO', u'Cordoba Oro'), + (u'NOK', u'Norwegian Krone'), + (u'NPR', u'Nepalese Rupee'), + (u'NZD', u'New Zealand Dollar'), + (u'OMR', u'Rial Omani'), + (u'PAB', u'Balboa'), + (u'PEN', u'Nuevo Sol'), + (u'PGK', u'Kina'), + (u'PHP', u'Philippine Peso'), + (u'PKR', u'Pakistan Rupee'), + (u'PLN', u'Zloty'), + (u'PYG', u'Guarani'), + (u'QAR', u'Qatari Rial'), + (u'RON', u'New Leu'), + (u'RSD', u'Serbian Dinar'), + (u'RUB', u'Russian Ruble'), + (u'RWF', u'Rwanda Franc'), + (u'SAR', u'Saudi Riyal'), + (u'SBD', u'Solomon Islands Dollar'), + (u'SCR', u'Seychelles Rupee'), + (u'SDG', u'Sudanese Pound'), + (u'SEK', u'Swedish Krona'), + (u'SGD', u'Singapore Dollar'), + (u'SHP', u'Saint Helena Pound'), + (u'SLL', u'Leone'), + (u'SOS', u'Somali Shilling'), + (u'SSP', u'South Sudanese Pound'), + (u'SRD', u'Surinam Dollar'), + (u'STD', u'Dobra'), + (u'SVC', u'El Salvador Colon'), + (u'SYP', u'Syrian Pound'), + (u'SZL', u'Lilangeni'), + (u'THB', u'Baht'), + (u'TJS', u'Somoni'), + (u'TMT', u'Manat'), + (u'TND', u'Tunisian Dinar'), + (u'TOP', u'Paanga'), + (u'TRY', u'Turkish Lira'), + (u'TTD', u'Trinidad and Tobago Dollar'), + (u'TWD', u'New Taiwan Dollar'), + (u'TZS', u'Tanzanian Shilling'), + (u'UAH', u'Hryvnia'), + (u'UGX', u'Uganda Shilling'), + (u'USD', u'US Dollar'), + (u'USN', u'US Dollar (Next day)'), + (u'USS', u'US Dollar (Same day)'), + (u'UYI', u'Uruguay Peso en Unidades Indexadas'), + (u'UYU', u'Peso Uruguayo'), + (u'UZS', u'Uzbekistan Sum'), + (u'VEF', u'Bolivar'), + (u'VND', u'Dong'), + (u'VUV', u'Vatu'), + (u'WST', u'Tala'), + (u'XAF', u'CFA Franc BEAC'), + (u'XCD', u'East Caribbean Dollar'), + (u'XOF', u'CFA Franc BCEAO'), + (u'XPF', u'CFP Franc'), + (u'YER', u'Yemeni Rial'), + (u'ZAR', u'Rand'), + (u'ZMK', u'Zambian Kwacha'), + (u'ZWL', u'Zimbabwe Dollar') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/CRSAddOtherFlags.xml +# Fields: code, name, description + +C_R_S_ADD_OTHER_FLAGS = ( + (u'1', u'Free standing technical cooperation', u'Free standing technical cooperation (Col 24 in CRS++ Reporting format)'), + (u'2', u'Programme-based approach', u'Programme-based approach (Col 25 in CRS++ Reporting format)'), + (u'3', u'Investment project', u'Investment project (Col 26 in CRS++ Reporting format)'), + (u'4', u'Associated financing', u'Associated financing (Col 27 in CRS++ Reporting format)') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/ActivityScope.xml +# Fields: code, name, description + +ACTIVITY_SCOPE = ( + (u'1', u'Global', u'The activity scope is global'), + (u'2', u'Regional', u'The activity scope is a supranational region'), + (u'3', u'Multi-national', u'The activity scope covers multiple countries, that dont constitute a region'), + (u'4', u'National', u'The activity scope covers one country'), + (u'5', u'Sub-national: Multi-first-level administrative areas', u'The activity scope covers more than one first-level subnational administrative areas (e.g. counties, provinces, states)'), + (u'6', u'Sub-national: Single first-level administrative area', u'The activity scope covers one first-level subnational administrative area (e.g. country, province, state)'), + (u'7', u'Sub-national: Single second-level administrative area', u'The activity scope covers one second-level subnational administrative area (e.g. municipality or district)'), + (u'8', u'Single location', u'The activity scope covers one single location (e.g. town, village, farm)') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/Region.xml +# Fields: code, name + +REGION = ( + (u'88', u'States Ex-Yugoslavia unspecified'), + (u'89', u'Europe, regional'), + (u'189', u'North of Sahara, regional'), + (u'289', u'South of Sahara, regional'), + (u'298', u'Africa, regional'), + (u'380', u'West Indies, regional'), + (u'389', u'North and Central America, regional'), + (u'489', u'South America, regional'), + (u'498', u'America, regional'), + (u'589', u'Middle East, regional'), + (u'619', u'Central Asia, regional'), + (u'679', u'South Asia, regional'), + (u'689', u'South and Central Asia, regional'), + (u'789', u'Far East Asia, regional'), + (u'798', u'Asia, regional'), + (u'889', u'Oceania, regional'), + (u'998', u'Developing countries, unspecified') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/OtherIdentifierType.xml +# Fields: code, name + +OTHER_IDENTIFIER_TYPE = ( + (u'A1', u'Reporting Organisations internal activity identifier'), + (u'A2', u'CRS Activity identifier'), + (u'A3', u'Previous Activity Identifier', u'The standard insists that once an activity has been reported to IATI its identifier MUST NOT be changed, even if the reporting organisation changes its organisation identifier. There may be exceptional circumstances in which this rule cannot be followed, in which case the previous identifier should be reported using this code.'), + (u'A9', u'Other Activity Identifier'), + (u'B1', u'Previous Reporting Organisation Identifier'), + (u'B9', u'Other Organisation Identifier') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/PublisherType.xml +# Fields: code, name, description + +PUBLISHER_TYPE = ( + (u'1', u'Aid Provider', u'A government, organisation, agency or institution that provides aid funds.'), + (u'2', u'Aid Recipient', u'A government, organisation, agency or institution that recieves aid funds.'), + (u'3', u'Aggregator', u'An organisation that collects and reproduces information from other providers or recipients') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/OrganisationRole.xml +# Fields: code, name, description + +ORGANISATION_ROLE = ( + (u'1', u'Funding', u'The government or organisation which provides funds to the activity. '), + (u'2', u'Accountable', u'An organisation responsible for oversight of the activity and its outcomes'), + (u'3', u'Extending', u'An organisation that manages the budget and direction of an activity on behalf of the funding organisation'), + (u'4', u'Implementing', u'The organisation that physically carries out the activity or intervention. ') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/BudgetIdentifier.xml +# Fields: code, category, name + +BUDGET_IDENTIFIER = ( + (u'1.1.1', u'1.1', u'Executive - executive'), + (u'1.2.1', u'1.2', u'Legislative - legislative'), + (u'1.3.1', u'1.3', u'Accountability - macroeconomic policy'), + (u'1.3.2', u'1.3', u'Accountability - budgeting'), + (u'1.3.3', u'1.3', u'Accountability - planning'), + (u'1.3.4', u'1.3', u'Accountability - Treasury/Accounts'), + (u'1.3.5', u'1.3', u'Accountability - debt and aid management'), + (u'1.3.6', u'1.3', u'Accountability - tax policy'), + (u'1.3.7', u'1.3', u'Accountability - tax collection'), + (u'1.3.8', u'1.3', u'Accountability - local government finance'), + (u'1.3.9', u'1.3', u'Accountability - other central transfers to institutions '), + (u'1.3.10', u'1.3', u'Accountability - national audit'), + (u'1.3.11', u'1.3', u'Accountability - national monitoring and evaluation'), + (u'1.3.12', u'1.3', u'Accountability - monetary institutions'), + (u'1.3.13', u'1.3', u'Accountability - financial sector policy and regulation'), + (u'1.4.1', u'1.4', u'External Affairs - foreign affairs '), + (u'1.4.2', u'1.4', u'External Affairs - diplomatic missions'), + (u'1.4.3', u'1.4', u'External Affairs - official development assistance'), + (u'1.5.1', u'1.5', u'General Personnel Services - general personnel services'), + (u'1.6.1', u'1.6', u'Statistics - statistics'), + (u'1.7.1', u'1.7', u'Other General Services - support to civil society '), + (u'1.7.2', u'1.7', u'Other General Services - central procurement'), + (u'1.7.3', u'1.7', u'Other General Services - Local Government Administration'), + (u'1.7.4', u'1.7', u'Other General Services - other general services'), + (u'1.8.1', u'1.8', u'Elections - elections'), + (u'2.1.1', u'2.1', u'Justice, Law and Order - policy, planning and administration'), + (u'2.1.2', u'2.1', u'Justice, Law and Order - police'), + (u'2.1.2', u'2.1', u'Justice, Law and Order - fire'), + (u'2.1.3', u'2.1', u'Justice, Law and Order - judicial affairs'), + (u'2.1.4', u'2.1', u'Justice, Law and Order - Ombudsman'), + (u'2.1.5', u'2.1', u'Justice, Law and Order - human rights affairs'), + (u'2.1.6', u'2.1', u'Justice, Law and Order - immigration'), + (u'2.1.7', u'2.1', u'Justice, Law and Order - anti corruption'), + (u'2.1.8', u'2.1', u'Justice, Law and Order - prisons'), + (u'2.1.9', u'2.1', u'Justice, Law and Order - peace building'), + (u'2.1.10', u'2.1', u'Justice, Law and Order - demobilisation'), + (u'2.2.1', u'2.2', u'Defence - policy, planning and administration'), + (u'2.2.2', u'2.2', u'Defence - military'), + (u'2.2.3', u'2.2', u'Defence - civil defence'), + (u'2.2.4', u'2.2', u'Defence - foreign military aid'), + (u'3.1.1', u'3.1', u'General Economic, Commercial and Labour Affairs - policy, planning and administration'), + (u'3.1.2', u'3.1', u'General Economic, Commercial and Labour Affairs - general economic affairs'), + (u'3.1.3', u'3.1', u'General Economic, Commercial and Labour Affairs - investment promotion'), + (u'3.1.4', u'3.1', u'General Economic, Commercial and Labour Affairs - privatisation'), + (u'3.1.5', u'3.1', u'General Economic, Commercial and Labour Affairs - trade'), + (u'3.1.6', u'3.1', u'General Economic, Commercial and Labour Affairs - labour'), + (u'3.1.7', u'3.1', u'General Economic, Commercial and Labour Affairs - national standards development'), + (u'3.2.1', u'3.2', u'Public Works - policy, planning and administration'), + (u'3.2.2', u'3.2', u'Public Works - construction regulation'), + (u'3.2.3', u'3.2', u'Public Works - mechanical services'), + (u'3.3.1', u'3.3', u'Agriculture - policy, planning and administration'), + (u'3.3.2', u'3.3', u'Agriculture - irrigation'), + (u'3.3.3', u'3.3', u'Agriculture - inputs'), + (u'3.3.4', u'3.3', u'Agriculture - food crop'), + (u'3.3.5', u'3.3', u'Agriculture - industrial crop'), + (u'3.3.6', u'3.3', u'Agriculture - livestock'), + (u'3.3.7', u'3.3', u'Agriculture - agricultural training and extension'), + (u'3.3.8', u'3.3', u'Agriculture - research'), + (u'3.3.9', u'3.3', u'Agriculture - other services'), + (u'3.4.1', u'3.4', u'Forestry - policy, planning and administration'), + (u'3.4.2', u'3.4', u'Forestry - development and services'), + (u'3.4.3', u'3.4', u'Forestry - education/training'), + (u'3.4.4', u'3.4', u'Forestry - research'), + (u'3.5.1', u'3.5', u'Fishing and Hunting - policy, planning and administration'), + (u'3.5.2', u'3.5', u'Fishing and Hunting - development and services'), + (u'3.5.3', u'3.5', u'Fishing and Hunting - education and training'), + (u'3.5.4', u'3.5', u'Fishing and Hunting - research'), + (u'3.6.1', u'3.6', u'Energy - policy, planning and administration'), + (u'3.6.2', u'3.6', u'Energy - education and training'), + (u'3.6.3', u'3.6', u'Energy - energy regulation'), + (u'3.6.4', u'3.6', u'Energy - electricity transmission'), + (u'3.6.5', u'3.6', u'Energy - nuclear'), + (u'3.6.6', u'3.6', u'Energy - power generation'), + (u'3.6.7', u'3.6', u'Energy - gas '), + (u'3.7.1', u'3.7', u'Mining and Mineral Development - policy, planning and administration'), + (u'3.7.2', u'3.7', u'Mining and Mineral Development - prospection and exploration'), + (u'3.7.3', u'3.7', u'Mining and Mineral Development - coal and other solid mineral fuels'), + (u'3.7.4', u'3.7', u'Mining and Mineral Development - petroleum and gas'), + (u'3.7.6', u'3.7', u'Mining and Mineral Development - other fuel'), + (u'3.7.7', u'3.7', u'Mining and Mineral Development - non fuel minerals'), + (u'3.8.1', u'3.8', u'Transport - policy, planning and administration'), + (u'3.8.2', u'3.8', u'Transport - transport regulation'), + (u'3.8.3', u'3.8', u'Transport - feeder road construction'), + (u'3.8.4', u'3.8', u'Transport - feeder road maintenance'), + (u'3.8.5', u'3.8', u'Transport - national road construction'), + (u'3.8.6', u'3.8', u'Transport - national road maintenance'), + (u'3.8.7', u'3.8', u'Transport - rail'), + (u'3.8.8', u'3.8', u'Transport - water'), + (u'3.8.9', u'3.8', u'Transport - air'), + (u'3.8.10', u'3.8', u'Transport - pipeline'), + (u'3.8.11', u'3.8', u'Transport - storage and distribution'), + (u'3.8.12', u'3.8', u'Transport - public transport services'), + (u'3.8.13', u'3.8', u'Transport - meteorological services'), + (u'3.8.14', u'3.8', u'Transport - education and training'), + (u'3.9.1', u'3.9', u'Industry - policy, planning and administration'), + (u'3.9.2', u'3.9', u'Industry - development and services'), + (u'3.9.3', u'3.9', u'Industry - industrial research'), + (u'3.9.4', u'3.9', u'Industry - (investment in industry)'), + (u'3.10.1', u'3.10', u'Communications - policy, planning and administration'), + (u'3.10.2', u'3.10', u'Communications - ICT Infrastructure'), + (u'3.10.3', u'3.10', u'Communications - telecoms and postal services'), + (u'3.10.4', u'3.10', u'Communications - information services'), + (u'3.11.1', u'3.11', u'Tourism - policy, planning and administration'), + (u'3.11.2', u'3.11', u'Tourism - services'), + (u'3.12.1', u'3.12', u'Microfinance and financial services - Microfinance and financial services'), + (u'4.1.1', u'4.1', u'Water supply and Sanitation - policy, planning and administration'), + (u'4.1.2', u'4.1', u'Water supply and Sanitation - education/training'), + (u'4.1.3', u'4.1', u'Water supply and Sanitation - rural water supply and sanitation'), + (u'4.1.4', u'4.1', u'Water supply and Sanitation - urban water supply and sanitation'), + (u'4.1.5', u'4.1', u'Water supply and Sanitation - rural water supply'), + (u'4.1.6', u'4.1', u'Water supply and Sanitation - urban water supply'), + (u'4.1.7', u'4.1', u'Water supply and Sanitation - rural sanitation'), + (u'4.1.8', u'4.1', u'Water supply and Sanitation - urban sanitation'), + (u'4.1.9', u'4.1', u'Water supply and Sanitation - sewage and waste management'), + (u'4.2.1', u'4.2', u'Environment - policy, planning and administration'), + (u'4.2.2', u'4.2', u'Environment - research/ education and training'), + (u'4.2.3', u'4.2', u'Environment - natural resource management'), + (u'4.2.4', u'4.2', u'Environment - water resources management'), + (u'4.2.5', u'4.2', u'Environment - wildlife protection, parks and site preservation'), + (u'5.1.1', u'5.1', u'Health - policy, planning and administration'), + (u'5.2.1', u'5.2', u'Recreation, Culture and Religion - recreation and sport'), + (u'5.2.2', u'5.2', u'Recreation, Culture and Religion - culture'), + (u'5.2.3', u'5.2', u'Recreation, Culture and Religion - broadcasting and publishing'), + (u'5.2.4', u'5.2', u'Recreation, Culture and Religion - religion'), + (u'5.3.1', u'5.3', u'Education - administration, policy and planning'), + (u'5.3.2', u'5.3', u'Education - research'), + (u'5.3.3', u'5.3', u'Education - pre-primary'), + (u'5.3.4', u'5.3', u'Education - primary'), + (u'5.3.5', u'5.3', u'Education - lower secondary'), + (u'5.3.6', u'5.3', u'Education - upper secondary'), + (u'5.3.7', u'5.3', u'Education - post secondary non tertiary '), + (u'5.3.8', u'5.3', u'Education - tertiary'), + (u'5.3.9', u'5.3', u'Education - vocational training'), + (u'5.3.10', u'5.3', u'Education - advanced technical and managerial training'), + (u'5.3.11', u'5.3', u'Education - basic adult education'), + (u'5.3.12', u'5.3', u'Education - teacher training'), + (u'5.3.13', u'5.3', u'Education - subsidiary services'), + (u'5.4.1', u'5.4', u'Social Protection, Land Housing and Community Amenities - policy, planning and administration'), + (u'5.4.2', u'5.4', u'Social Protection, Land Housing and Community Amenities - social security (excl pensions)'), + (u'5.4.3', u'5.4', u'Social Protection, Land Housing and Community Amenities - general pensions'), + (u'5.4.4', u'5.4', u'Social Protection, Land Housing and Community Amenities - civil service and military pensions'), + (u'5.4.5', u'5.4', u'Social Protection, Land Housing and Community Amenities - social services (incl youth development and women+ children)'), + (u'5.4.6', u'5.4', u'Social Protection, Land Housing and Community Amenities - land policy and management'), + (u'5.4.7', u'5.4', u'Social Protection, Land Housing and Community Amenities - rural devt'), + (u'5.4.8', u'5.4', u'Social Protection, Land Housing and Community Amenities - urban devt'), + (u'5.4.9', u'5.4', u'Social Protection, Land Housing and Community Amenities - housing and community amenities'), + (u'5.4.10', u'5.4', u'Social Protection, Land Housing and Community Amenities - emergency relief'), + (u'5.4.11', u'5.4', u'Social Protection, Land Housing and Community Amenities - disaster prevention and preparedness'), + (u'5.4.12', u'5.4', u'Social Protection, Land Housing and Community Amenities - support to refugees and internally displaced persons'), + (u'6.1.1', u'6.1', u'Development Partner affairs - policy planning and administration'), + (u'6.1.2', u'6.1', u'Development Partner affairs - Technical staff services'), + (u'7.1.1', u'7.1', u'External to government sector - External to general government sector'), + (u'7.2.1', u'7.2', u'General Budget Support - General Budget Support') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/FinanceType-category.xml +# Fields: code, name, description + +FINANCE_TYPE_CATEGORY = ( + (u'100', u'GRANT', u'Transfers in cash or in kind for which no legal debt is incurred by the recipient.'), + (u'200', u'INTEREST SUBSIDY', u'Subsidies to soften the terms of private export credits, or loans or credits by the banking sector.'), + (u'300', u'CAPITAL SUBSCRIPTION', u'Payments to multilateral agencies in the form of notes and similar instruments, unconditionally cashable at sight by the recipient institutions.'), + (u'400', u'LOAN', u'Transfers in cash or in kind for which the recipient incurs legal debt.'), + (u'450', u'EXPORT CREDIT', u'Official or private loans which are primarily export-facilitating in purpose. They are usually tied to a specific export from the extending country and not represented by a negotiable instrument.'), + (u'500', u'EQUITY', u'Investment in a country on the DAC List of ODA Recipients that is not made to acquire a lasting interest in an enterprise.'), + (u'600', u'DEBT RELIEF', u'Debt cancellations, debt conversions, debt rescheduling within or outside the framework of the Paris Club.'), + (u'700', u'INVESTMENT', u'Investment made by a private entity resident in a reporting country to acquire or add to a lasting interest(1) in an enterprise in a country on the DAC List of ODA Recipients.'), + (u'800', u'BONDS', u'Acquisition of bonds issued by developing countries.'), + (u'900', u'OTHER SECURITIES/CLAIMS', u'') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/DescriptionType.xml +# Fields: code, name, description + +DESCRIPTION_TYPE = ( + (u'1', u'General', u'Unstructured, long description of the activity '), + (u'2', u'Objectives', u'Specific objectives for the activity, e.g. taken from logical framework'), + (u'3', u'Target Groups', u'Details of groups that are intended to benefit from the activity'), + (u'4', u'Other', u'For miscellaneous use. A further classification or breakdown may be included in the narrative') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/SectorVocabulary.xml +# Fields: code, url, name, description + +SECTOR_VOCABULARY = ( + (u'1', u'http://www.oecd.org/dac/stats/dacandcrscodelists.htm', u'OECD DAC CRS Purpose Codes (5 digit)', u'The sector reported corresponds to an OECD DAC CRS 5-digit purpose code'), + (u'2', u'http://www.oecd.org/dac/stats/dacandcrscodelists.htm', u'OECD DAC CRS Purpose Codes (3 digit)', u'The sector reported corresponds to an OECD DAC CRS 3-digit purpose code'), + (u'3', u'http://unstats.un.org/unsd/cr/registry/regcst.asp?Cl=4', u'Classification of the Functions of Government (UN)', u'The sector reported corresponds to the UN Classification of the Functions of Government (CoFoG)'), + (u'4', u'http://ec.europa.eu/eurostat/ramon/nomenclatures/index.cfm?TargetUrl=LST_NOM_DTL&StrNom=NACE_REV2&StrLanguageCode=EN', u'Statistical classification of economic activities in the European Community', u'The sector reported corresponds to the statistical classifications of economic activities in the European Community'), + (u'5', u'http://nccs.urban.org/classification/NTEE.cfm', u'National Taxonomy for Exempt Entities (USA)', u'The sector reported corresponds to the National Taxonomy for Exempt Entities (NTEE) - USA'), + (u'6', u'AidData', u'The sector reported corresponds to AidData classifications'), + (u'99', u'Reporting Organisation', u'The sector reported corresponds to a sector vocabulary maintained by the reporting organisation for this activity'), + (u'98', u'Reporting Organisation 2', u'The sector reported corresponds to a sector vocabulary maintained by the reporting organisation for this activity (if they are referencing more than one)') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/FileFormat.xml +# Fields: code, category + +FILE_FORMAT = ( + (u'application/1d-interleaved-parityfec', u'application'), + (u'application/3gpp-ims+xml', u'application'), + (u'application/activemessage', u'application'), + (u'application/activemessage', u'application'), + (u'application/alto-costmap+json', u'application'), + (u'application/alto-costmapfilter+json', u'application'), + (u'application/alto-directory+json', u'application'), + (u'application/alto-endpointprop+json', u'application'), + (u'application/alto-endpointpropparams+json', u'application'), + (u'application/alto-endpointcost+json', u'application'), + (u'application/alto-endpointcostparams+json', u'application'), + (u'application/alto-error+json', u'application'), + (u'application/alto-networkmapfilter+json', u'application'), + (u'application/alto-networkmap+json', u'application'), + (u'application/andrew-inset', u'application'), + (u'application/applefile', u'application'), + (u'application/atom+xml', u'application'), + (u'application/atomcat+xml', u'application'), + (u'application/atomdeleted+xml', u'application'), + (u'application/atomicmail', u'application'), + (u'application/atomsvc+xml', u'application'), + (u'application/auth-policy+xml', u'application'), + (u'application/bacnet-xdd+zip', u'application'), + (u'application/batch-SMTP', u'application'), + (u'application/beep+xml', u'application'), + (u'application/calendar+json', u'application'), + (u'application/calendar+xml', u'application'), + (u'application/call-completion', u'application'), + (u'application/cals-1840', u'application'), + (u'application/cbor', u'application'), + (u'application/ccmp+xml', u'application'), + (u'application/ccxml+xml', u'application'), + (u'application/cdmi-capability', u'application'), + (u'application/cdmi-container', u'application'), + (u'application/cdmi-domain', u'application'), + (u'application/cdmi-object', u'application'), + (u'application/cdmi-queue', u'application'), + (u'application/cea-2018+xml', u'application'), + (u'application/cellml+xml', u'application'), + (u'application/cfw', u'application'), + (u'application/cms', u'application'), + (u'application/cnrp+xml', u'application'), + (u'application/commonground', u'application'), + (u'application/conference-info+xml', u'application'), + (u'application/cpl+xml', u'application'), + (u'application/csrattrs', u'application'), + (u'application/csta+xml', u'application'), + (u'application/CSTAdata+xml', u'application'), + (u'application/cybercash', u'application'), + (u'application/dash+xml', u'application'), + (u'application/dashdelta', u'application'), + (u'application/davmount+xml', u'application'), + (u'application/dca-rft', u'application'), + (u'application/dec-dx', u'application'), + (u'application/dialog-info+xml', u'application'), + (u'application/dicom', u'application'), + (u'application/dns', u'application'), + (u'application/dskpp+xml', u'application'), + (u'application/dssc+der', u'application'), + (u'application/dssc+xml', u'application'), + (u'application/dvcs', u'application'), + (u'application/ecmascript', u'application'), + (u'application/EDI-consent', u'application'), + (u'application/EDIFACT', u'application'), + (u'application/EDI-X12', u'application'), + (u'application/emma+xml', u'application'), + (u'application/emotionml+xml', u'application'), + (u'application/encaprtp', u'application'), + (u'application/epp+xml', u'application'), + (u'application/eshop', u'application'), + (u'application/example', u'application'), + (u'application/exi', u'application'), + (u'application/fastinfoset', u'application'), + (u'application/fastsoap', u'application'), + (u'application/fdt+xml', u'application'), + (u'application/fits', u'application'), + (u'application/font-sfnt', u'application'), + (u'application/font-tdpfr', u'application'), + (u'application/font-woff', u'application'), + (u'application/framework-attributes+xml', u'application'), + (u'application/gzip', u'application'), + (u'application/H224', u'application'), + (u'application/held+xml', u'application'), + (u'application/http', u'application'), + (u'application/hyperstudio', u'application'), + (u'application/ibe-key-request+xml', u'application'), + (u'application/ibe-pkg-reply+xml', u'application'), + (u'application/ibe-pp-data', u'application'), + (u'application/iges', u'application'), + (u'application/im-iscomposing+xml', u'application'), + (u'application/index', u'application'), + (u'application/index.cmd', u'application'), + (u'application/index.obj', u'application'), + (u'application/index.response', u'application'), + (u'application/index.vnd', u'application'), + (u'application/inkml+xml', u'application'), + (u'application/iotp', u'application'), + (u'application/ipfix', u'application'), + (u'application/ipp', u'application'), + (u'application/isup', u'application'), + (u'application/its+xml', u'application'), + (u'application/javascript', u'application'), + (u'application/jrd+json', u'application'), + (u'application/json', u'application'), + (u'application/json-patch+json', u'application'), + (u'application/kpml-request+xml', u'application'), + (u'application/kpml-response+xml', u'application'), + (u'application/ld+json', u'application'), + (u'application/link-format', u'application'), + (u'application/load-control+xml', u'application'), + (u'application/lost+xml', u'application'), + (u'application/lostsync+xml', u'application'), + (u'application/mac-binhex40', u'application'), + (u'application/macwriteii', u'application'), + (u'application/mads+xml', u'application'), + (u'application/marc', u'application'), + (u'application/marcxml+xml', u'application'), + (u'application/mathematica', u'application'), + (u'application/mathml-content+xml', u'application'), + (u'application/mathml-presentation+xml', u'application'), + (u'application/mathml+xml', u'application'), + (u'application/mbms-associated-procedure-description+xml', u'application'), + (u'application/mbms-deregister+xml', u'application'), + (u'application/mbms-envelope+xml', u'application'), + (u'application/mbms-msk-response+xml', u'application'), + (u'application/mbms-msk+xml', u'application'), + (u'application/mbms-protection-description+xml', u'application'), + (u'application/mbms-reception-report+xml', u'application'), + (u'application/mbms-register-response+xml', u'application'), + (u'application/mbms-register+xml', u'application'), + (u'application/mbms-schedule+xml', u'application'), + (u'application/mbms-user-service-description+xml', u'application'), + (u'application/mbox', u'application'), + (u'application/media_control+xml', u'application'), + (u'application/media-policy-dataset+xml', u'application'), + (u'application/mediaservercontrol+xml', u'application'), + (u'application/metalink4+xml', u'application'), + (u'application/mets+xml', u'application'), + (u'application/mikey', u'application'), + (u'application/mods+xml', u'application'), + (u'application/moss-keys', u'application'), + (u'application/moss-signature', u'application'), + (u'application/mosskey-data', u'application'), + (u'application/mosskey-request', u'application'), + (u'application/mp21', u'application'), + (u'application/mp4', u'application'), + (u'application/mpeg4-generic', u'application'), + (u'application/mpeg4-iod', u'application'), + (u'application/mpeg4-iod-xmt', u'application'), + (u'application/mrb-consumer+xml', u'application'), + (u'application/mrb-publish+xml', u'application'), + (u'application/msc-ivr+xml', u'application'), + (u'application/msc-mixer+xml', u'application'), + (u'application/msword', u'application'), + (u'application/mxf', u'application'), + (u'application/nasdata', u'application'), + (u'application/news-checkgroups', u'application'), + (u'application/news-groupinfo', u'application'), + (u'application/news-transmission', u'application'), + (u'application/nlsml+xml', u'application'), + (u'application/nss', u'application'), + (u'application/ocsp-request', u'application'), + (u'application/ocsp-response', u'application'), + (u'application/octet-stream', u'application'), + (u'application/oda', u'application'), + (u'application/ODX', u'application'), + (u'application/oebps-package+xml', u'application'), + (u'application/ogg', u'application'), + (u'application/oxps', u'application'), + (u'application/p2p-overlay+xml', u'application'), + (u'application/parityfec', u'application'), + (u'application/patch-ops-error+xml', u'application'), + (u'application/pdf', u'application'), + (u'application/PDX', u'application'), + (u'application/pgp-encrypted', u'application'), + (u'application/pgp-keys', u'application'), + (u'application/pgp-signature', u'application'), + (u'application/pidf-diff+xml', u'application'), + (u'application/pidf+xml', u'application'), + (u'application/pkcs10', u'application'), + (u'application/pkcs7-mime', u'application'), + (u'application/pkcs7-signature', u'application'), + (u'application/pkcs8', u'application'), + (u'application/pkix-attr-cert', u'application'), + (u'application/pkix-cert', u'application'), + (u'application/pkix-crl', u'application'), + (u'application/pkix-pkipath', u'application'), + (u'application/pkixcmp', u'application'), + (u'application/pls+xml', u'application'), + (u'application/poc-settings+xml', u'application'), + (u'application/postscript', u'application'), + (u'application/provenance+xml', u'application'), + (u'application/prs.alvestrand.titrax-sheet', u'application'), + (u'application/prs.cww', u'application'), + (u'application/prs.hpub+zip', u'application'), + (u'application/prs.nprend', u'application'), + (u'application/prs.plucker', u'application'), + (u'application/prs.rdf-xml-crypt', u'application'), + (u'application/prs.xsf+xml', u'application'), + (u'application/pskc+xml', u'application'), + (u'application/rdf+xml', u'application'), + (u'application/qsig', u'application'), + (u'application/raptorfec', u'application'), + (u'application/reginfo+xml', u'application'), + (u'application/relax-ng-compact-syntax', u'application'), + (u'application/remote-printing', u'application'), + (u'application/reputon+json', u'application'), + (u'application/resource-lists-diff+xml', u'application'), + (u'application/resource-lists+xml', u'application'), + (u'application/riscos', u'application'), + (u'application/rlmi+xml', u'application'), + (u'application/rls-services+xml', u'application'), + (u'application/rpki-ghostbusters', u'application'), + (u'application/rpki-manifest', u'application'), + (u'application/rpki-roa', u'application'), + (u'application/rpki-updown', u'application'), + (u'application/rtf', u'application'), + (u'application/rtploopback', u'application'), + (u'application/rtx', u'application'), + (u'application/samlassertion+xml', u'application'), + (u'application/samlmetadata+xml', u'application'), + (u'application/sbml+xml', u'application'), + (u'application/scvp-cv-request', u'application'), + (u'application/scvp-cv-response', u'application'), + (u'application/scvp-vp-request', u'application'), + (u'application/scvp-vp-response', u'application'), + (u'application/sdp', u'application'), + (u'application/sep-exi', u'application'), + (u'application/sep+xml', u'application'), + (u'application/session-info', u'application'), + (u'application/set-payment', u'application'), + (u'application/set-payment-initiation', u'application'), + (u'application/set-registration', u'application'), + (u'application/set-registration-initiation', u'application'), + (u'application/sgml', u'application'), + (u'application/sgml-open-catalog', u'application'), + (u'application/shf+xml', u'application'), + (u'application/sieve', u'application'), + (u'application/simple-filter+xml', u'application'), + (u'application/simple-message-summary', u'application'), + (u'application/simpleSymbolContainer', u'application'), + (u'application/slate', u'application'), + (u'application/smil', u'application'), + (u'application/smil+xml', u'application'), + (u'application/smpte336m', u'application'), + (u'application/soap+fastinfoset', u'application'), + (u'application/soap+xml', u'application'), + (u'application/sparql-query', u'application'), + (u'application/sparql-results+xml', u'application'), + (u'application/spirits-event+xml', u'application'), + (u'application/sql', u'application'), + (u'application/srgs', u'application'), + (u'application/srgs+xml', u'application'), + (u'application/sru+xml', u'application'), + (u'application/ssml+xml', u'application'), + (u'application/tamp-apex-update', u'application'), + (u'application/tamp-apex-update-confirm', u'application'), + (u'application/tamp-community-update', u'application'), + (u'application/tamp-community-update-confirm', u'application'), + (u'application/tamp-error', u'application'), + (u'application/tamp-sequence-adjust', u'application'), + (u'application/tamp-sequence-adjust-confirm', u'application'), + (u'application/tamp-status-query', u'application'), + (u'application/tamp-status-response', u'application'), + (u'application/tamp-update', u'application'), + (u'application/tamp-update-confirm', u'application'), + (u'application/tei+xml', u'application'), + (u'application/thraud+xml', u'application'), + (u'application/timestamp-query', u'application'), + (u'application/timestamp-reply', u'application'), + (u'application/timestamped-data', u'application'), + (u'application/ttml+xml', u'application'), + (u'application/tve-trigger', u'application'), + (u'application/ulpfec', u'application'), + (u'application/urc-grpsheet+xml', u'application'), + (u'application/urc-ressheet+xml', u'application'), + (u'application/urc-targetdesc+xml', u'application'), + (u'application/urc-uisocketdesc+xml', u'application'), + (u'application/vcard+json', u'application'), + (u'application/vcard+xml', u'application'), + (u'application/vemmi', u'application'), + (u'application/vnd.3gpp.bsf+xml', u'application'), + (u'application/vnd.3gpp.pic-bw-large', u'application'), + (u'application/vnd.3gpp.pic-bw-small', u'application'), + (u'application/vnd.3gpp.pic-bw-var', u'application'), + (u'application/vnd.3gpp.sms', u'application'), + (u'application/vnd.3gpp2.bcmcsinfo+xml', u'application'), + (u'application/vnd.3gpp2.sms', u'application'), + (u'application/vnd.3gpp2.tcap', u'application'), + (u'application/vnd.3M.Post-it-Notes', u'application'), + (u'application/vnd.accpac.simply.aso', u'application'), + (u'application/vnd.accpac.simply.imp', u'application'), + (u'application/vnd.acucobol', u'application'), + (u'application/vnd.acucorp', u'application'), + (u'application/vnd.adobe.flash.movie', u'application'), + (u'application/vnd.adobe.formscentral.fcdt', u'application'), + (u'application/vnd.adobe.fxp', u'application'), + (u'application/vnd.adobe.partial-upload', u'application'), + (u'application/vnd.adobe.xdp+xml', u'application'), + (u'application/vnd.adobe.xfdf', u'application'), + (u'application/vnd.aether.imp', u'application'), + (u'application/vnd.ah-barcode', u'application'), + (u'application/vnd.ahead.space', u'application'), + (u'application/vnd.airzip.filesecure.azf', u'application'), + (u'application/vnd.airzip.filesecure.azs', u'application'), + (u'application/vnd.americandynamics.acc', u'application'), + (u'application/vnd.amiga.ami', u'application'), + (u'application/vnd.amundsen.maze+xml', u'application'), + (u'application/vnd.anser-web-certificate-issue-initiation', u'application'), + (u'application/vnd.antix.game-component', u'application'), + (u'application/vnd.api+json', u'application'), + (u'application/vnd.apple.mpegurl', u'application'), + (u'application/vnd.apple.installer+xml', u'application'), + (u'application/vnd.arastra.swi', u'application'), + (u'application/vnd.aristanetworks.swi', u'application'), + (u'application/vnd.astraea-software.iota', u'application'), + (u'application/vnd.audiograph', u'application'), + (u'application/vnd.autopackage', u'application'), + (u'application/vnd.avistar+xml', u'application'), + (u'application/vnd.balsamiq.bmml+xml', u'application'), + (u'application/vnd.bekitzur-stech+json', u'application'), + (u'application/vnd.blueice.multipass', u'application'), + (u'application/vnd.bluetooth.ep.oob', u'application'), + (u'application/vnd.bluetooth.le.oob', u'application'), + (u'application/vnd.bmi', u'application'), + (u'application/vnd.businessobjects', u'application'), + (u'application/vnd.cab-jscript', u'application'), + (u'application/vnd.canon-cpdl', u'application'), + (u'application/vnd.canon-lips', u'application'), + (u'application/vnd.cendio.thinlinc.clientconf', u'application'), + (u'application/vnd.century-systems.tcp_stream', u'application'), + (u'application/vnd.chemdraw+xml', u'application'), + (u'application/vnd.chipnuts.karaoke-mmd', u'application'), + (u'application/vnd.cinderella', u'application'), + (u'application/vnd.cirpack.isdn-ext', u'application'), + (u'application/vnd.claymore', u'application'), + (u'application/vnd.cloanto.rp9', u'application'), + (u'application/vnd.clonk.c4group', u'application'), + (u'application/vnd.cluetrust.cartomobile-config', u'application'), + (u'application/vnd.cluetrust.cartomobile-config-pkg', u'application'), + (u'application/vnd.collection.doc+json', u'application'), + (u'application/vnd.collection+json', u'application'), + (u'application/vnd.collection.next+json', u'application'), + (u'application/vnd.commerce-battelle', u'application'), + (u'application/vnd.commonspace', u'application'), + (u'application/vnd.cosmocaller', u'application'), + (u'application/vnd.contact.cmsg', u'application'), + (u'application/vnd.crick.clicker', u'application'), + (u'application/vnd.crick.clicker.keyboard', u'application'), + (u'application/vnd.crick.clicker.palette', u'application'), + (u'application/vnd.crick.clicker.template', u'application'), + (u'application/vnd.crick.clicker.wordbank', u'application'), + (u'application/vnd.criticaltools.wbs+xml', u'application'), + (u'application/vnd.ctc-posml', u'application'), + (u'application/vnd.ctct.ws+xml', u'application'), + (u'application/vnd.cups-pdf', u'application'), + (u'application/vnd.cups-postscript', u'application'), + (u'application/vnd.cups-ppd', u'application'), + (u'application/vnd.cups-raster', u'application'), + (u'application/vnd.cups-raw', u'application'), + (u'application/vnd.curl', u'application'), + (u'application/vnd.cyan.dean.root+xml', u'application'), + (u'application/vnd.cybank', u'application'), + (u'application/vnd.dart', u'application'), + (u'application/vnd.data-vision.rdz', u'application'), + (u'application/vnd.dece.data', u'application'), + (u'application/vnd.dece.ttml+xml', u'application'), + (u'application/vnd.dece.unspecified', u'application'), + (u'application/vnd.dece.zip', u'application'), + (u'application/vnd.denovo.fcselayout-link', u'application'), + (u'application/vnd.desmume.movie', u'application'), + (u'application/vnd.dir-bi.plate-dl-nosuffix', u'application'), + (u'application/vnd.dm.delegation+xml', u'application'), + (u'application/vnd.dna', u'application'), + (u'application/vnd.document+json', u'application'), + (u'application/vnd.dolby.mobile.1', u'application'), + (u'application/vnd.dolby.mobile.2', u'application'), + (u'application/vnd.dpgraph', u'application'), + (u'application/vnd.dreamfactory', u'application'), + (u'application/vnd.dtg.local', u'application'), + (u'application/vnd.dtg.local.flash', u'application'), + (u'application/vnd.dtg.local.html', u'application'), + (u'application/vnd.dvb.ait', u'application'), + (u'application/vnd.dvb.dvbj', u'application'), + (u'application/vnd.dvb.esgcontainer', u'application'), + (u'application/vnd.dvb.ipdcdftnotifaccess', u'application'), + (u'application/vnd.dvb.ipdcesgaccess', u'application'), + (u'application/vnd.dvb.ipdcesgaccess2', u'application'), + (u'application/vnd.dvb.ipdcesgpdd', u'application'), + (u'application/vnd.dvb.ipdcroaming', u'application'), + (u'application/vnd.dvb.iptv.alfec-base', u'application'), + (u'application/vnd.dvb.iptv.alfec-enhancement', u'application'), + (u'application/vnd.dvb.notif-aggregate-root+xml', u'application'), + (u'application/vnd.dvb.notif-container+xml', u'application'), + (u'application/vnd.dvb.notif-generic+xml', u'application'), + (u'application/vnd.dvb.notif-ia-msglist+xml', u'application'), + (u'application/vnd.dvb.notif-ia-registration-request+xml', u'application'), + (u'application/vnd.dvb.notif-ia-registration-response+xml', u'application'), + (u'application/vnd.dvb.notif-init+xml', u'application'), + (u'application/vnd.dvb.pfr', u'application'), + (u'application/vnd.dvb.service', u'application'), + (u'application/vnd.dxr', u'application'), + (u'application/vnd.dynageo', u'application'), + (u'application/vnd.easykaraoke.cdgdownload', u'application'), + (u'application/vnd.ecdis-update', u'application'), + (u'application/vnd.ecowin.chart', u'application'), + (u'application/vnd.ecowin.filerequest', u'application'), + (u'application/vnd.ecowin.fileupdate', u'application'), + (u'application/vnd.ecowin.series', u'application'), + (u'application/vnd.ecowin.seriesrequest', u'application'), + (u'application/vnd.ecowin.seriesupdate', u'application'), + (u'application/vnd.emclient.accessrequest+xml', u'application'), + (u'application/vnd.enliven', u'application'), + (u'application/vnd.eprints.data+xml', u'application'), + (u'application/vnd.epson.esf', u'application'), + (u'application/vnd.epson.msf', u'application'), + (u'application/vnd.epson.quickanime', u'application'), + (u'application/vnd.epson.salt', u'application'), + (u'application/vnd.epson.ssf', u'application'), + (u'application/vnd.ericsson.quickcall', u'application'), + (u'application/vnd.eszigno3+xml', u'application'), + (u'application/vnd.etsi.aoc+xml', u'application'), + (u'application/vnd.etsi.asic-s+zip', u'application'), + (u'application/vnd.etsi.asic-e+zip', u'application'), + (u'application/vnd.etsi.cug+xml', u'application'), + (u'application/vnd.etsi.iptvcommand+xml', u'application'), + (u'application/vnd.etsi.iptvdiscovery+xml', u'application'), + (u'application/vnd.etsi.iptvprofile+xml', u'application'), + (u'application/vnd.etsi.iptvsad-bc+xml', u'application'), + (u'application/vnd.etsi.iptvsad-cod+xml', u'application'), + (u'application/vnd.etsi.iptvsad-npvr+xml', u'application'), + (u'application/vnd.etsi.iptvservice+xml', u'application'), + (u'application/vnd.etsi.iptvsync+xml', u'application'), + (u'application/vnd.etsi.iptvueprofile+xml', u'application'), + (u'application/vnd.etsi.mcid+xml', u'application'), + (u'application/vnd.etsi.mheg5', u'application'), + (u'application/vnd.etsi.overload-control-policy-dataset+xml', u'application'), + (u'application/vnd.etsi.pstn+xml', u'application'), + (u'application/vnd.etsi.sci+xml', u'application'), + (u'application/vnd.etsi.simservs+xml', u'application'), + (u'application/vnd.etsi.timestamp-token', u'application'), + (u'application/vnd.etsi.tsl+xml', u'application'), + (u'application/vnd.etsi.tsl.der', u'application'), + (u'application/vnd.eudora.data', u'application'), + (u'application/vnd.ezpix-album', u'application'), + (u'application/vnd.ezpix-package', u'application'), + (u'application/vnd.f-secure.mobile', u'application'), + (u'application/vnd.fdf', u'application'), + (u'application/vnd.fdsn.mseed', u'application'), + (u'application/vnd.fdsn.seed', u'application'), + (u'application/vnd.ffsns', u'application'), + (u'application/vnd.fints', u'application'), + (u'application/vnd.FloGraphIt', u'application'), + (u'application/vnd.fluxtime.clip', u'application'), + (u'application/vnd.font-fontforge-sfd', u'application'), + (u'application/vnd.framemaker', u'application'), + (u'application/vnd.frogans.fnc', u'application'), + (u'application/vnd.frogans.ltf', u'application'), + (u'application/vnd.fsc.weblaunch', u'application'), + (u'application/vnd.fujitsu.oasys', u'application'), + (u'application/vnd.fujitsu.oasys2', u'application'), + (u'application/vnd.fujitsu.oasys3', u'application'), + (u'application/vnd.fujitsu.oasysgp', u'application'), + (u'application/vnd.fujitsu.oasysprs', u'application'), + (u'application/vnd.fujixerox.ART4', u'application'), + (u'application/vnd.fujixerox.ART-EX', u'application'), + (u'application/vnd.fujixerox.ddd', u'application'), + (u'application/vnd.fujixerox.docuworks', u'application'), + (u'application/vnd.fujixerox.docuworks.binder', u'application'), + (u'application/vnd.fujixerox.docuworks.container', u'application'), + (u'application/vnd.fujixerox.HBPL', u'application'), + (u'application/vnd.fut-misnet', u'application'), + (u'application/vnd.fuzzysheet', u'application'), + (u'application/vnd.genomatix.tuxedo', u'application'), + (u'application/vnd.geocube+xml', u'application'), + (u'application/vnd.geogebra.file', u'application'), + (u'application/vnd.geogebra.tool', u'application'), + (u'application/vnd.geometry-explorer', u'application'), + (u'application/vnd.geonext', u'application'), + (u'application/vnd.geoplan', u'application'), + (u'application/vnd.geospace', u'application'), + (u'application/vnd.globalplatform.card-content-mgt', u'application'), + (u'application/vnd.globalplatform.card-content-mgt-response', u'application'), + (u'application/vnd.gmx', u'application'), + (u'application/vnd.google-earth.kml+xml', u'application'), + (u'application/vnd.google-earth.kmz', u'application'), + (u'application/vnd.grafeq', u'application'), + (u'application/vnd.gridmp', u'application'), + (u'application/vnd.groove-account', u'application'), + (u'application/vnd.groove-help', u'application'), + (u'application/vnd.groove-identity-message', u'application'), + (u'application/vnd.groove-injector', u'application'), + (u'application/vnd.groove-tool-message', u'application'), + (u'application/vnd.groove-tool-template', u'application'), + (u'application/vnd.groove-vcard', u'application'), + (u'application/vnd.hal+json', u'application'), + (u'application/vnd.hal+xml', u'application'), + (u'application/vnd.HandHeld-Entertainment+xml', u'application'), + (u'application/vnd.hbci', u'application'), + (u'application/vnd.hcl-bireports', u'application'), + (u'application/vnd.heroku+json', u'application'), + (u'application/vnd.hhe.lesson-player', u'application'), + (u'application/vnd.hp-HPGL', u'application'), + (u'application/vnd.hp-hpid', u'application'), + (u'application/vnd.hp-hps', u'application'), + (u'application/vnd.hp-jlyt', u'application'), + (u'application/vnd.hp-PCL', u'application'), + (u'application/vnd.hp-PCLXL', u'application'), + (u'application/vnd.httphone', u'application'), + (u'application/vnd.hydrostatix.sof-data', u'application'), + (u'application/vnd.hzn-3d-crossword', u'application'), + (u'application/vnd.ibm.afplinedata', u'application'), + (u'application/vnd.ibm.electronic-media', u'application'), + (u'application/vnd.ibm.MiniPay', u'application'), + (u'application/vnd.ibm.modcap', u'application'), + (u'application/vnd.ibm.rights-management', u'application'), + (u'application/vnd.ibm.secure-container', u'application'), + (u'application/vnd.iccprofile', u'application'), + (u'application/vnd.ieee.1905', u'application'), + (u'application/vnd.igloader', u'application'), + (u'application/vnd.immervision-ivp', u'application'), + (u'application/vnd.immervision-ivu', u'application'), + (u'application/vnd.informedcontrol.rms+xml', u'application'), + (u'application/vnd.infotech.project', u'application'), + (u'application/vnd.infotech.project+xml', u'application'), + (u'application/vnd.informix-visionary', u'application'), + (u'application/vnd.innopath.wamp.notification', u'application'), + (u'application/vnd.insors.igm', u'application'), + (u'application/vnd.intercon.formnet', u'application'), + (u'application/vnd.intergeo', u'application'), + (u'application/vnd.intertrust.digibox', u'application'), + (u'application/vnd.intertrust.nncp', u'application'), + (u'application/vnd.intu.qbo', u'application'), + (u'application/vnd.intu.qfx', u'application'), + (u'application/vnd.iptc.g2.catalogitem+xml', u'application'), + (u'application/vnd.iptc.g2.conceptitem+xml', u'application'), + (u'application/vnd.iptc.g2.knowledgeitem+xml', u'application'), + (u'application/vnd.iptc.g2.newsitem+xml', u'application'), + (u'application/vnd.iptc.g2.newsmessage+xml', u'application'), + (u'application/vnd.iptc.g2.packageitem+xml', u'application'), + (u'application/vnd.iptc.g2.planningitem+xml', u'application'), + (u'application/vnd.ipunplugged.rcprofile', u'application'), + (u'application/vnd.irepository.package+xml', u'application'), + (u'application/vnd.is-xpr', u'application'), + (u'application/vnd.isac.fcs', u'application'), + (u'application/vnd.jam', u'application'), + (u'application/vnd.japannet-directory-service', u'application'), + (u'application/vnd.japannet-jpnstore-wakeup', u'application'), + (u'application/vnd.japannet-payment-wakeup', u'application'), + (u'application/vnd.japannet-registration', u'application'), + (u'application/vnd.japannet-registration-wakeup', u'application'), + (u'application/vnd.japannet-setstore-wakeup', u'application'), + (u'application/vnd.japannet-verification', u'application'), + (u'application/vnd.japannet-verification-wakeup', u'application'), + (u'application/vnd.jcp.javame.midlet-rms', u'application'), + (u'application/vnd.jisp', u'application'), + (u'application/vnd.joost.joda-archive', u'application'), + (u'application/vnd.jsk.isdn-ngn', u'application'), + (u'application/vnd.kahootz', u'application'), + (u'application/vnd.kde.karbon', u'application'), + (u'application/vnd.kde.kchart', u'application'), + (u'application/vnd.kde.kformula', u'application'), + (u'application/vnd.kde.kivio', u'application'), + (u'application/vnd.kde.kontour', u'application'), + (u'application/vnd.kde.kpresenter', u'application'), + (u'application/vnd.kde.kspread', u'application'), + (u'application/vnd.kde.kword', u'application'), + (u'application/vnd.kenameaapp', u'application'), + (u'application/vnd.kidspiration', u'application'), + (u'application/vnd.Kinar', u'application'), + (u'application/vnd.koan', u'application'), + (u'application/vnd.kodak-descriptor', u'application'), + (u'application/vnd.las.las+xml', u'application'), + (u'application/vnd.liberty-request+xml', u'application'), + (u'application/vnd.llamagraphics.life-balance.desktop', u'application'), + (u'application/vnd.llamagraphics.life-balance.exchange+xml', u'application'), + (u'application/vnd.lotus-1-2-3', u'application'), + (u'application/vnd.lotus-approach', u'application'), + (u'application/vnd.lotus-freelance', u'application'), + (u'application/vnd.lotus-notes', u'application'), + (u'application/vnd.lotus-organizer', u'application'), + (u'application/vnd.lotus-screencam', u'application'), + (u'application/vnd.lotus-wordpro', u'application'), + (u'application/vnd.macports.portpkg', u'application'), + (u'application/vnd.marlin.drm.actiontoken+xml', u'application'), + (u'application/vnd.marlin.drm.conftoken+xml', u'application'), + (u'application/vnd.marlin.drm.license+xml', u'application'), + (u'application/vnd.marlin.drm.mdcf', u'application'), + (u'application/vnd.mason+json', u'application'), + (u'application/vnd.mcd', u'application'), + (u'application/vnd.medcalcdata', u'application'), + (u'application/vnd.mediastation.cdkey', u'application'), + (u'application/vnd.meridian-slingshot', u'application'), + (u'application/vnd.MFER', u'application'), + (u'application/vnd.mfmp', u'application'), + (u'application/vnd.micrografx.flo', u'application'), + (u'application/vnd.micrografx.igx', u'application'), + (u'application/vnd.mif', u'application'), + (u'application/vnd.minisoft-hp3000-save', u'application'), + (u'application/vnd.mitsubishi.misty-guard.trustweb', u'application'), + (u'application/vnd.Mobius.DAF', u'application'), + (u'application/vnd.Mobius.DIS', u'application'), + (u'application/vnd.Mobius.MBK', u'application'), + (u'application/vnd.Mobius.MQY', u'application'), + (u'application/vnd.Mobius.MSL', u'application'), + (u'application/vnd.Mobius.PLC', u'application'), + (u'application/vnd.Mobius.TXF', u'application'), + (u'application/vnd.mophun.application', u'application'), + (u'application/vnd.mophun.certificate', u'application'), + (u'application/vnd.motorola.flexsuite', u'application'), + (u'application/vnd.motorola.flexsuite.adsi', u'application'), + (u'application/vnd.motorola.flexsuite.fis', u'application'), + (u'application/vnd.motorola.flexsuite.gotap', u'application'), + (u'application/vnd.motorola.flexsuite.kmr', u'application'), + (u'application/vnd.motorola.flexsuite.ttc', u'application'), + (u'application/vnd.motorola.flexsuite.wem', u'application'), + (u'application/vnd.motorola.iprm', u'application'), + (u'application/vnd.mozilla.xul+xml', u'application'), + (u'application/vnd.ms-artgalry', u'application'), + (u'application/vnd.ms-asf', u'application'), + (u'application/vnd.ms-cab-compressed', u'application'), + (u'application/vnd.mseq', u'application'), + (u'application/vnd.ms-excel', u'application'), + (u'application/vnd.ms-excel.addin.macroEnabled.12', u'application'), + (u'application/vnd.ms-excel.sheet.binary.macroEnabled.12', u'application'), + (u'application/vnd.ms-excel.sheet.macroEnabled.12', u'application'), + (u'application/vnd.ms-excel.template.macroEnabled.12', u'application'), + (u'application/vnd.ms-fontobject', u'application'), + (u'application/vnd.ms-htmlhelp', u'application'), + (u'application/vnd.ms-ims', u'application'), + (u'application/vnd.ms-lrm', u'application'), + (u'application/vnd.ms-office.activeX+xml', u'application'), + (u'application/vnd.ms-officetheme', u'application'), + (u'application/vnd.ms-playready.initiator+xml', u'application'), + (u'application/vnd.ms-powerpoint', u'application'), + (u'application/vnd.ms-powerpoint.addin.macroEnabled.12', u'application'), + (u'application/vnd.ms-powerpoint.presentation.macroEnabled.12', u'application'), + (u'application/vnd.ms-powerpoint.slide.macroEnabled.12', u'application'), + (u'application/vnd.ms-powerpoint.slideshow.macroEnabled.12', u'application'), + (u'application/vnd.ms-powerpoint.template.macroEnabled.12', u'application'), + (u'application/vnd.ms-project', u'application'), + (u'application/vnd.ms-tnef', u'application'), + (u'application/vnd.ms-windows.printerpairing', u'application'), + (u'application/vnd.ms-wmdrm.lic-chlg-req', u'application'), + (u'application/vnd.ms-wmdrm.lic-resp', u'application'), + (u'application/vnd.ms-wmdrm.meter-chlg-req', u'application'), + (u'application/vnd.ms-wmdrm.meter-resp', u'application'), + (u'application/vnd.ms-word.document.macroEnabled.12', u'application'), + (u'application/vnd.ms-word.template.macroEnabled.12', u'application'), + (u'application/vnd.ms-works', u'application'), + (u'application/vnd.ms-wpl', u'application'), + (u'application/vnd.ms-xpsdocument', u'application'), + (u'application/vnd.msign', u'application'), + (u'application/vnd.multiad.creator', u'application'), + (u'application/vnd.multiad.creator.cif', u'application'), + (u'application/vnd.musician', u'application'), + (u'application/vnd.music-niff', u'application'), + (u'application/vnd.muvee.style', u'application'), + (u'application/vnd.mynfc', u'application'), + (u'application/vnd.ncd.control', u'application'), + (u'application/vnd.ncd.reference', u'application'), + (u'application/vnd.nervana', u'application'), + (u'application/vnd.netfpx', u'application'), + (u'application/vnd.neurolanguage.nlu', u'application'), + (u'application/vnd.nintendo.snes.rom', u'application'), + (u'application/vnd.nintendo.nitro.rom', u'application'), + (u'application/vnd.nitf', u'application'), + (u'application/vnd.noblenet-directory', u'application'), + (u'application/vnd.noblenet-sealer', u'application'), + (u'application/vnd.noblenet-web', u'application'), + (u'application/vnd.nokia.catalogs', u'application'), + (u'application/vnd.nokia.conml+wbxml', u'application'), + (u'application/vnd.nokia.conml+xml', u'application'), + (u'application/vnd.nokia.iptv.config+xml', u'application'), + (u'application/vnd.nokia.iSDS-radio-presets', u'application'), + (u'application/vnd.nokia.landmark+wbxml', u'application'), + (u'application/vnd.nokia.landmark+xml', u'application'), + (u'application/vnd.nokia.landmarkcollection+xml', u'application'), + (u'application/vnd.nokia.ncd', u'application'), + (u'application/vnd.nokia.n-gage.ac+xml', u'application'), + (u'application/vnd.nokia.n-gage.data', u'application'), + (u'application/vnd.nokia.n-gage.symbian.install', u'application'), + (u'application/vnd.nokia.pcd+wbxml', u'application'), + (u'application/vnd.nokia.pcd+xml', u'application'), + (u'application/vnd.nokia.radio-preset', u'application'), + (u'application/vnd.nokia.radio-presets', u'application'), + (u'application/vnd.novadigm.EDM', u'application'), + (u'application/vnd.novadigm.EDX', u'application'), + (u'application/vnd.novadigm.EXT', u'application'), + (u'application/vnd.ntt-local.content-share', u'application'), + (u'application/vnd.ntt-local.file-transfer', u'application'), + (u'application/vnd.ntt-local.sip-ta_remote', u'application'), + (u'application/vnd.ntt-local.sip-ta_tcp_stream', u'application'), + (u'application/vnd.oasis.opendocument.chart', u'application'), + (u'application/vnd.oasis.opendocument.chart-template', u'application'), + (u'application/vnd.oasis.opendocument.database', u'application'), + (u'application/vnd.oasis.opendocument.formula', u'application'), + (u'application/vnd.oasis.opendocument.formula-template', u'application'), + (u'application/vnd.oasis.opendocument.graphics', u'application'), + (u'application/vnd.oasis.opendocument.graphics-template', u'application'), + (u'application/vnd.oasis.opendocument.image', u'application'), + (u'application/vnd.oasis.opendocument.image-template', u'application'), + (u'application/vnd.oasis.opendocument.presentation', u'application'), + (u'application/vnd.oasis.opendocument.presentation-template', u'application'), + (u'application/vnd.oasis.opendocument.spreadsheet', u'application'), + (u'application/vnd.oasis.opendocument.spreadsheet-template', u'application'), + (u'application/vnd.oasis.opendocument.text', u'application'), + (u'application/vnd.oasis.opendocument.text-master', u'application'), + (u'application/vnd.oasis.opendocument.text-template', u'application'), + (u'application/vnd.oasis.opendocument.text-web', u'application'), + (u'application/vnd.obn', u'application'), + (u'application/vnd.oftn.l10n+json', u'application'), + (u'application/vnd.oipf.contentaccessdownload+xml', u'application'), + (u'application/vnd.oipf.contentaccessstreaming+xml', u'application'), + (u'application/vnd.oipf.cspg-hexbinary', u'application'), + (u'application/vnd.oipf.dae.svg+xml', u'application'), + (u'application/vnd.oipf.dae.xhtml+xml', u'application'), + (u'application/vnd.oipf.mippvcontrolmessage+xml', u'application'), + (u'application/vnd.oipf.pae.gem', u'application'), + (u'application/vnd.oipf.spdiscovery+xml', u'application'), + (u'application/vnd.oipf.spdlist+xml', u'application'), + (u'application/vnd.oipf.ueprofile+xml', u'application'), + (u'application/vnd.oipf.userprofile+xml', u'application'), + (u'application/vnd.olpc-sugar', u'application'), + (u'application/vnd.oma.bcast.associated-procedure-parameter+xml', u'application'), + (u'application/vnd.oma.bcast.drm-trigger+xml', u'application'), + (u'application/vnd.oma.bcast.imd+xml', u'application'), + (u'application/vnd.oma.bcast.ltkm', u'application'), + (u'application/vnd.oma.bcast.notification+xml', u'application'), + (u'application/vnd.oma.bcast.provisioningtrigger', u'application'), + (u'application/vnd.oma.bcast.sgboot', u'application'), + (u'application/vnd.oma.bcast.sgdd+xml', u'application'), + (u'application/vnd.oma.bcast.sgdu', u'application'), + (u'application/vnd.oma.bcast.simple-symbol-container', u'application'), + (u'application/vnd.oma.bcast.smartcard-trigger+xml', u'application'), + (u'application/vnd.oma.bcast.sprov+xml', u'application'), + (u'application/vnd.oma.bcast.stkm', u'application'), + (u'application/vnd.oma.cab-address-book+xml', u'application'), + (u'application/vnd.oma.cab-feature-handler+xml', u'application'), + (u'application/vnd.oma.cab-pcc+xml', u'application'), + (u'application/vnd.oma.cab-subs-invite+xml', u'application'), + (u'application/vnd.oma.cab-user-prefs+xml', u'application'), + (u'application/vnd.oma.dcd', u'application'), + (u'application/vnd.oma.dcdc', u'application'), + (u'application/vnd.oma.dd2+xml', u'application'), + (u'application/vnd.oma.drm.risd+xml', u'application'), + (u'application/vnd.oma.group-usage-list+xml', u'application'), + (u'application/vnd.oma.pal+xml', u'application'), + (u'application/vnd.oma.poc.detailed-progress-report+xml', u'application'), + (u'application/vnd.oma.poc.final-report+xml', u'application'), + (u'application/vnd.oma.poc.groups+xml', u'application'), + (u'application/vnd.oma.poc.invocation-descriptor+xml', u'application'), + (u'application/vnd.oma.poc.optimized-progress-report+xml', u'application'), + (u'application/vnd.oma.push', u'application'), + (u'application/vnd.oma.scidm.messages+xml', u'application'), + (u'application/vnd.oma.xcap-directory+xml', u'application'), + (u'application/vnd.omads-email+xml', u'application'), + (u'application/vnd.omads-file+xml', u'application'), + (u'application/vnd.omads-folder+xml', u'application'), + (u'application/vnd.omaloc-supl-init', u'application'), + (u'application/vnd.oma-scws-config', u'application'), + (u'application/vnd.oma-scws-http-request', u'application'), + (u'application/vnd.oma-scws-http-response', u'application'), + (u'application/vnd.openeye.oeb', u'application'), + (u'application/vnd.openxmlformats-officedocument.custom-properties+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.customXmlProperties+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.drawing+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.drawingml.chart+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.extended-properties+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.presentationml.commentAuthors+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.presentationml.comments+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.presentationml.handoutMaster+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.presentationml.notesMaster+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.presentationml.notesSlide+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.presentationml.presentation', u'application'), + (u'application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.presentationml.presProps+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.presentationml.slide', u'application'), + (u'application/vnd.openxmlformats-officedocument.presentationml.slide+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.presentationml.slideshow', u'application'), + (u'application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.presentationml.slideUpdateInfo+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.presentationml.tableStyles+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.presentationml.tags+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.presentationml.template', u'application'), + (u'application/vnd.openxmlformats-officedocument.presentationml.template.main+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.presentationml.viewProps+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', u'application'), + (u'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.spreadsheetml.template', u'application'), + (u'application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.theme+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.themeOverride+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.vmlDrawing', u'application'), + (u'application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.wordprocessingml.document', u'application'), + (u'application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.wordprocessingml.template', u'application'), + (u'application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml', u'application'), + (u'application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml', u'application'), + (u'application/vnd.openxmlformats-package.core-properties+xml', u'application'), + (u'application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml', u'application'), + (u'application/vnd.openxmlformats-package.relationships+xml', u'application'), + (u'application/vnd.orange.indata', u'application'), + (u'application/vnd.osa.netdeploy', u'application'), + (u'application/vnd.osgeo.mapguide.package', u'application'), + (u'application/vnd.osgi.bundle', u'application'), + (u'application/vnd.osgi.dp', u'application'), + (u'application/vnd.osgi.subsystem', u'application'), + (u'application/vnd.otps.ct-kip+xml', u'application'), + (u'application/vnd.palm', u'application'), + (u'application/vnd.paos.xml', u'application'), + (u'application/vnd.pawaafile', u'application'), + (u'application/vnd.pcos', u'application'), + (u'application/vnd.pg.format', u'application'), + (u'application/vnd.pg.osasli', u'application'), + (u'application/vnd.piaccess.application-licence', u'application'), + (u'application/vnd.picsel', u'application'), + (u'application/vnd.pmi.widget', u'application'), + (u'application/vnd.poc.group-advertisement+xml', u'application'), + (u'application/vnd.pocketlearn', u'application'), + (u'application/vnd.powerbuilder6', u'application'), + (u'application/vnd.powerbuilder6-s', u'application'), + (u'application/vnd.powerbuilder7', u'application'), + (u'application/vnd.powerbuilder75', u'application'), + (u'application/vnd.powerbuilder75-s', u'application'), + (u'application/vnd.powerbuilder7-s', u'application'), + (u'application/vnd.preminet', u'application'), + (u'application/vnd.previewsystems.box', u'application'), + (u'application/vnd.proteus.magazine', u'application'), + (u'application/vnd.publishare-delta-tree', u'application'), + (u'application/vnd.pvi.ptid1', u'application'), + (u'application/vnd.pwg-multiplexed', u'application'), + (u'application/vnd.pwg-xhtml-print+xml', u'application'), + (u'application/vnd.qualcomm.brew-app-res', u'application'), + (u'application/vnd.Quark.QuarkXPress', u'application'), + (u'application/vnd.quobject-quoxdocument', u'application'), + (u'application/vnd.radisys.moml+xml', u'application'), + (u'application/vnd.radisys.msml-audit-conf+xml', u'application'), + (u'application/vnd.radisys.msml-audit-conn+xml', u'application'), + (u'application/vnd.radisys.msml-audit-dialog+xml', u'application'), + (u'application/vnd.radisys.msml-audit-stream+xml', u'application'), + (u'application/vnd.radisys.msml-audit+xml', u'application'), + (u'application/vnd.radisys.msml-conf+xml', u'application'), + (u'application/vnd.radisys.msml-dialog-base+xml', u'application'), + (u'application/vnd.radisys.msml-dialog-fax-detect+xml', u'application'), + (u'application/vnd.radisys.msml-dialog-fax-sendrecv+xml', u'application'), + (u'application/vnd.radisys.msml-dialog-group+xml', u'application'), + (u'application/vnd.radisys.msml-dialog-speech+xml', u'application'), + (u'application/vnd.radisys.msml-dialog-transform+xml', u'application'), + (u'application/vnd.radisys.msml-dialog+xml', u'application'), + (u'application/vnd.radisys.msml+xml', u'application'), + (u'application/vnd.rainstor.data', u'application'), + (u'application/vnd.rapid', u'application'), + (u'application/vnd.realvnc.bed', u'application'), + (u'application/vnd.recordare.musicxml', u'application'), + (u'application/vnd.recordare.musicxml+xml', u'application'), + (u'application/vnd.RenLearn.rlprint', u'application'), + (u'application/vnd.rig.cryptonote', u'application'), + (u'application/vnd.route66.link66+xml', u'application'), + (u'application/vnd.rs-274x', u'application'), + (u'application/vnd.ruckus.download', u'application'), + (u'application/vnd.s3sms', u'application'), + (u'application/vnd.sailingtracker.track', u'application'), + (u'application/vnd.sbm.cid', u'application'), + (u'application/vnd.sbm.mid2', u'application'), + (u'application/vnd.scribus', u'application'), + (u'application/vnd.sealed.3df', u'application'), + (u'application/vnd.sealed.csf', u'application'), + (u'application/vnd.sealed.doc', u'application'), + (u'application/vnd.sealed.eml', u'application'), + (u'application/vnd.sealed.mht', u'application'), + (u'application/vnd.sealed.net', u'application'), + (u'application/vnd.sealed.ppt', u'application'), + (u'application/vnd.sealed.tiff', u'application'), + (u'application/vnd.sealed.xls', u'application'), + (u'application/vnd.sealedmedia.softseal.html', u'application'), + (u'application/vnd.sealedmedia.softseal.pdf', u'application'), + (u'application/vnd.seemail', u'application'), + (u'application/vnd.sema', u'application'), + (u'application/vnd.semd', u'application'), + (u'application/vnd.semf', u'application'), + (u'application/vnd.shana.informed.formdata', u'application'), + (u'application/vnd.shana.informed.formtemplate', u'application'), + (u'application/vnd.shana.informed.interchange', u'application'), + (u'application/vnd.shana.informed.package', u'application'), + (u'application/vnd.SimTech-MindMapper', u'application'), + (u'application/vnd.siren+json', u'application'), + (u'application/vnd.smaf', u'application'), + (u'application/vnd.smart.notebook', u'application'), + (u'application/vnd.smart.teacher', u'application'), + (u'application/vnd.software602.filler.form+xml', u'application'), + (u'application/vnd.software602.filler.form-xml-zip', u'application'), + (u'application/vnd.solent.sdkm+xml', u'application'), + (u'application/vnd.spotfire.dxp', u'application'), + (u'application/vnd.spotfire.sfs', u'application'), + (u'application/vnd.sss-cod', u'application'), + (u'application/vnd.sss-dtf', u'application'), + (u'application/vnd.sss-ntf', u'application'), + (u'application/vnd.stepmania.package', u'application'), + (u'application/vnd.stepmania.stepchart', u'application'), + (u'application/vnd.street-stream', u'application'), + (u'application/vnd.sun.wadl+xml', u'application'), + (u'application/vnd.sus-calendar', u'application'), + (u'application/vnd.svd', u'application'), + (u'application/vnd.swiftview-ics', u'application'), + (u'application/vnd.syncml.dm.notification', u'application'), + (u'application/vnd.syncml.dmddf+xml', u'application'), + (u'application/vnd.syncml.dmtnds+wbxml', u'application'), + (u'application/vnd.syncml.dmtnds+xml', u'application'), + (u'application/vnd.syncml.dmddf+wbxml', u'application'), + (u'application/vnd.syncml.dm+wbxml', u'application'), + (u'application/vnd.syncml.dm+xml', u'application'), + (u'application/vnd.syncml.ds.notification', u'application'), + (u'application/vnd.syncml+xml', u'application'), + (u'application/vnd.tao.intent-module-archive', u'application'), + (u'application/vnd.tcpdump.pcap', u'application'), + (u'application/vnd.tmobile-livetv', u'application'), + (u'application/vnd.trid.tpt', u'application'), + (u'application/vnd.triscape.mxs', u'application'), + (u'application/vnd.trueapp', u'application'), + (u'application/vnd.truedoc', u'application'), + (u'application/vnd.ubisoft.webplayer', u'application'), + (u'application/vnd.ufdl', u'application'), + (u'application/vnd.uiq.theme', u'application'), + (u'application/vnd.umajin', u'application'), + (u'application/vnd.unity', u'application'), + (u'application/vnd.uoml+xml', u'application'), + (u'application/vnd.uplanet.alert', u'application'), + (u'application/vnd.uplanet.alert-wbxml', u'application'), + (u'application/vnd.uplanet.bearer-choice', u'application'), + (u'application/vnd.uplanet.bearer-choice-wbxml', u'application'), + (u'application/vnd.uplanet.cacheop', u'application'), + (u'application/vnd.uplanet.cacheop-wbxml', u'application'), + (u'application/vnd.uplanet.channel', u'application'), + (u'application/vnd.uplanet.channel-wbxml', u'application'), + (u'application/vnd.uplanet.list', u'application'), + (u'application/vnd.uplanet.listcmd', u'application'), + (u'application/vnd.uplanet.listcmd-wbxml', u'application'), + (u'application/vnd.uplanet.list-wbxml', u'application'), + (u'application/vnd.uplanet.signal', u'application'), + (u'application/vnd.vcx', u'application'), + (u'application/vnd.vd-study', u'application'), + (u'application/vnd.vectorworks', u'application'), + (u'application/vnd.verimatrix.vcas', u'application'), + (u'application/vnd.vidsoft.vidconference', u'application'), + (u'application/vnd.visio', u'application'), + (u'application/vnd.visionary', u'application'), + (u'application/vnd.vividence.scriptfile', u'application'), + (u'application/vnd.vsf', u'application'), + (u'application/vnd.wap.sic', u'application'), + (u'application/vnd.wap.slc', u'application'), + (u'application/vnd.wap.wbxml', u'application'), + (u'application/vnd.wap.wmlc', u'application'), + (u'application/vnd.wap.wmlscriptc', u'application'), + (u'application/vnd.webturbo', u'application'), + (u'application/vnd.wfa.p2p', u'application'), + (u'application/vnd.wfa.wsc', u'application'), + (u'application/vnd.windows.devicepairing', u'application'), + (u'application/vnd.wmc', u'application'), + (u'application/vnd.wmf.bootstrap', u'application'), + (u'application/vnd.wolfram.mathematica', u'application'), + (u'application/vnd.wolfram.mathematica.package', u'application'), + (u'application/vnd.wolfram.player', u'application'), + (u'application/vnd.wordperfect', u'application'), + (u'application/vnd.wqd', u'application'), + (u'application/vnd.wrq-hp3000-labelled', u'application'), + (u'application/vnd.wt.stf', u'application'), + (u'application/vnd.wv.csp+xml', u'application'), + (u'application/vnd.wv.csp+wbxml', u'application'), + (u'application/vnd.wv.ssp+xml', u'application'), + (u'application/vnd.xacml+json', u'application'), + (u'application/vnd.xara', u'application'), + (u'application/vnd.xfdl', u'application'), + (u'application/vnd.xfdl.webform', u'application'), + (u'application/vnd.xmi+xml', u'application'), + (u'application/vnd.xmpie.cpkg', u'application'), + (u'application/vnd.xmpie.dpkg', u'application'), + (u'application/vnd.xmpie.plan', u'application'), + (u'application/vnd.xmpie.ppkg', u'application'), + (u'application/vnd.xmpie.xlim', u'application'), + (u'application/vnd.yamaha.hv-dic', u'application'), + (u'application/vnd.yamaha.hv-script', u'application'), + (u'application/vnd.yamaha.hv-voice', u'application'), + (u'application/vnd.yamaha.openscoreformat.osfpvg+xml', u'application'), + (u'application/vnd.yamaha.openscoreformat', u'application'), + (u'application/vnd.yamaha.remote-setup', u'application'), + (u'application/vnd.yamaha.smaf-audio', u'application'), + (u'application/vnd.yamaha.smaf-phrase', u'application'), + (u'application/vnd.yamaha.through-ngn', u'application'), + (u'application/vnd.yamaha.tunnel-udpencap', u'application'), + (u'application/vnd.yellowriver-custom-menu', u'application'), + (u'application/vnd.zul', u'application'), + (u'application/vnd.zzazz.deck+xml', u'application'), + (u'application/voicexml+xml', u'application'), + (u'application/vq-rtcpxr', u'application'), + (u'application/watcherinfo+xml', u'application'), + (u'application/whoispp-query', u'application'), + (u'application/whoispp-response', u'application'), + (u'application/widget', u'application'), + (u'application/wita', u'application'), + (u'application/wordperfect5.1', u'application'), + (u'application/wsdl+xml', u'application'), + (u'application/wspolicy+xml', u'application'), + (u'application/x400-bp', u'application'), + (u'application/xacml+xml', u'application'), + (u'application/xcap-att+xml', u'application'), + (u'application/xcap-caps+xml', u'application'), + (u'application/xcap-diff+xml', u'application'), + (u'application/xcap-el+xml', u'application'), + (u'application/xcap-error+xml', u'application'), + (u'application/xcap-ns+xml', u'application'), + (u'application/xcon-conference-info-diff+xml', u'application'), + (u'application/xcon-conference-info+xml', u'application'), + (u'application/xenc+xml', u'application'), + (u'application/xhtml-voice+xml', u'application'), + (u'application/xhtml+xml', u'application'), + (u'application/xml', u'application'), + (u'application/xml-dtd', u'application'), + (u'application/xml-external-parsed-entity', u'application'), + (u'application/xmpp+xml', u'application'), + (u'application/xop+xml', u'application'), + (u'application/xslt+xml', u'application'), + (u'application/xv+xml', u'application'), + (u'application/yang', u'application'), + (u'application/yin+xml', u'application'), + (u'application/zip', u'application'), + (u'application/zlib', u'application'), + (u'audio/1d-interleaved-parityfec', u'audio'), + (u'audio/32kadpcm', u'audio'), + (u'audio/3gpp', u'audio'), + (u'audio/3gpp2', u'audio'), + (u'audio/ac3', u'audio'), + (u'audio/AMR', u'audio'), + (u'audio/AMR-WB', u'audio'), + (u'audio/amr-wb', u'audio'), + (u'audio/asc', u'audio'), + (u'audio/ATRAC-ADVANCED-LOSSLESS', u'audio'), + (u'audio/ATRAC-X', u'audio'), + (u'audio/ATRAC3', u'audio'), + (u'audio/basic', u'audio'), + (u'audio/BV16', u'audio'), + (u'audio/BV32', u'audio'), + (u'audio/clearmode', u'audio'), + (u'audio/CN', u'audio'), + (u'audio/DAT12', u'audio'), + (u'audio/dls', u'audio'), + (u'audio/dsr-es201108', u'audio'), + (u'audio/dsr-es202050', u'audio'), + (u'audio/dsr-es202211', u'audio'), + (u'audio/dsr-es202212', u'audio'), + (u'audio/DV', u'audio'), + (u'audio/DVI4', u'audio'), + (u'audio/eac3', u'audio'), + (u'audio/encaprtp', u'audio'), + (u'audio/EVRC', u'audio'), + (u'audio/EVRC-QCP', u'audio'), + (u'audio/EVRC0', u'audio'), + (u'audio/EVRC1', u'audio'), + (u'audio/EVRCB', u'audio'), + (u'audio/EVRCB0', u'audio'), + (u'audio/EVRCB1', u'audio'), + (u'audio/EVRCNW', u'audio'), + (u'audio/EVRCNW0', u'audio'), + (u'audio/EVRCNW1', u'audio'), + (u'audio/EVRCWB', u'audio'), + (u'audio/EVRCWB0', u'audio'), + (u'audio/EVRCWB1', u'audio'), + (u'audio/example', u'audio'), + (u'audio/fwdred', u'audio'), + (u'audio/G719', u'audio'), + (u'audio/G722', u'audio'), + (u'audio/G7221', u'audio'), + (u'audio/G723', u'audio'), + (u'audio/G726-16', u'audio'), + (u'audio/G726-24', u'audio'), + (u'audio/G726-32', u'audio'), + (u'audio/G726-40', u'audio'), + (u'audio/G728', u'audio'), + (u'audio/G729', u'audio'), + (u'audio/G7291', u'audio'), + (u'audio/G729D', u'audio'), + (u'audio/G729E', u'audio'), + (u'audio/GSM', u'audio'), + (u'audio/GSM-EFR', u'audio'), + (u'audio/GSM-HR-08', u'audio'), + (u'audio/iLBC', u'audio'), + (u'audio/ip-mr_v2.5', u'audio'), + (u'audio/L8', u'audio'), + (u'audio/L16', u'audio'), + (u'audio/L20', u'audio'), + (u'audio/L24', u'audio'), + (u'audio/LPC', u'audio'), + (u'audio/mobile-xmf', u'audio'), + (u'audio/MPA', u'audio'), + (u'audio/mp4', u'audio'), + (u'audio/MP4A-LATM', u'audio'), + (u'audio/mpa-robust', u'audio'), + (u'audio/mpeg', u'audio'), + (u'audio/mpeg4-generic', u'audio'), + (u'audio/ogg', u'audio'), + (u'audio/parityfec', u'audio'), + (u'audio/PCMA', u'audio'), + (u'audio/PCMA-WB', u'audio'), + (u'audio/PCMU', u'audio'), + (u'audio/PCMU-WB', u'audio'), + (u'audio/prs.sid', u'audio'), + (u'audio/QCELP', u'audio'), + (u'audio/raptorfec', u'audio'), + (u'audio/RED', u'audio'), + (u'audio/rtp-enc-aescm128', u'audio'), + (u'audio/rtploopback', u'audio'), + (u'audio/rtp-midi', u'audio'), + (u'audio/rtx', u'audio'), + (u'audio/SMV', u'audio'), + (u'audio/SMV0', u'audio'), + (u'audio/SMV-QCP', u'audio'), + (u'audio/sp-midi', u'audio'), + (u'audio/speex', u'audio'), + (u'audio/t140c', u'audio'), + (u'audio/t38', u'audio'), + (u'audio/telephone-event', u'audio'), + (u'audio/tone', u'audio'), + (u'audio/UEMCLIP', u'audio'), + (u'audio/ulpfec', u'audio'), + (u'audio/VDVI', u'audio'), + (u'audio/VMR-WB', u'audio'), + (u'audio/vnd.3gpp.iufp', u'audio'), + (u'audio/vnd.4SB', u'audio'), + (u'audio/vnd.audiokoz', u'audio'), + (u'audio/vnd.CELP', u'audio'), + (u'audio/vnd.cisco.nse', u'audio'), + (u'audio/vnd.cmles.radio-events', u'audio'), + (u'audio/vnd.cns.anp1', u'audio'), + (u'audio/vnd.cns.inf1', u'audio'), + (u'audio/vnd.dece.audio', u'audio'), + (u'audio/vnd.digital-winds', u'audio'), + (u'audio/vnd.dlna.adts', u'audio'), + (u'audio/vnd.dolby.heaac.1', u'audio'), + (u'audio/vnd.dolby.heaac.2', u'audio'), + (u'audio/vnd.dolby.mlp', u'audio'), + (u'audio/vnd.dolby.mps', u'audio'), + (u'audio/vnd.dolby.pl2', u'audio'), + (u'audio/vnd.dolby.pl2x', u'audio'), + (u'audio/vnd.dolby.pl2z', u'audio'), + (u'audio/vnd.dolby.pulse.1', u'audio'), + (u'audio/vnd.dra', u'audio'), + (u'audio/vnd.dts', u'audio'), + (u'audio/vnd.dts.hd', u'audio'), + (u'audio/vnd.dvb.file', u'audio'), + (u'audio/vnd.everad.plj', u'audio'), + (u'audio/vnd.hns.audio', u'audio'), + (u'audio/vnd.lucent.voice', u'audio'), + (u'audio/vnd.ms-playready.media.pya', u'audio'), + (u'audio/vnd.nokia.mobile-xmf', u'audio'), + (u'audio/vnd.nortel.vbk', u'audio'), + (u'audio/vnd.nuera.ecelp4800', u'audio'), + (u'audio/vnd.nuera.ecelp7470', u'audio'), + (u'audio/vnd.nuera.ecelp9600', u'audio'), + (u'audio/vnd.octel.sbc', u'audio'), + (u'audio/vnd.qcelp', u'audio'), + (u'audio/vnd.rhetorex.32kadpcm', u'audio'), + (u'audio/vnd.rip', u'audio'), + (u'audio/vnd.sealedmedia.softseal.mpeg', u'audio'), + (u'audio/vnd.vmx.cvsd', u'audio'), + (u'audio/vorbis', u'audio'), + (u'audio/vorbis-config', u'audio'), + (u'image/cgm', u'image'), + (u'image/example', u'image'), + (u'image/fits', u'image'), + (u'image/g3fax', u'image'), + (u'image/gif', u'image'), + (u'image/ief', u'image'), + (u'image/jp2', u'image'), + (u'image/jpeg', u'image'), + (u'image/jpm', u'image'), + (u'image/jpx', u'image'), + (u'image/ktx', u'image'), + (u'image/naplps', u'image'), + (u'image/png', u'image'), + (u'image/prs.btif', u'image'), + (u'image/prs.pti', u'image'), + (u'image/pwg-raster', u'image'), + (u'image/svg+xml', u'image'), + (u'image/t38', u'image'), + (u'image/tiff', u'image'), + (u'image/tiff-fx', u'image'), + (u'image/vnd.adobe.photoshop', u'image'), + (u'image/vnd.airzip.accelerator.azv', u'image'), + (u'image/vnd.cns.inf2', u'image'), + (u'image/vnd.dece.graphic', u'image'), + (u'image/vnd.djvu', u'image'), + (u'image/vnd.dwg', u'image'), + (u'image/vnd.dxf', u'image'), + (u'image/vnd.dvb.subtitle', u'image'), + (u'image/vnd.fastbidsheet', u'image'), + (u'image/vnd.fpx', u'image'), + (u'image/vnd.fst', u'image'), + (u'image/vnd.fujixerox.edmics-mmr', u'image'), + (u'image/vnd.fujixerox.edmics-rlc', u'image'), + (u'image/vnd.globalgraphics.pgb', u'image'), + (u'image/vnd.microsoft.icon', u'image'), + (u'image/vnd.mix', u'image'), + (u'image/vnd.ms-modi', u'image'), + (u'image/vnd.net-fpx', u'image'), + (u'image/vnd.radiance', u'image'), + (u'image/vnd.sealed.png', u'image'), + (u'image/vnd.sealedmedia.softseal.gif', u'image'), + (u'image/vnd.sealedmedia.softseal.jpg', u'image'), + (u'image/vnd.svf', u'image'), + (u'image/vnd.valve.source.texture', u'image'), + (u'image/vnd.wap.wbmp', u'image'), + (u'image/vnd.xiff', u'image'), + (u'message/CPIM', u'message'), + (u'message/delivery-status', u'message'), + (u'message/disposition-notification', u'message'), + (u'message/example', u'message'), + (u'message/external-body', u'message'), + (u'message/feedback-report', u'message'), + (u'message/global', u'message'), + (u'message/global-delivery-status', u'message'), + (u'message/global-disposition-notification', u'message'), + (u'message/global-headers', u'message'), + (u'message/http', u'message'), + (u'message/imdn+xml', u'message'), + (u'message/news', u'message'), + (u'message/partial', u'message'), + (u'message/rfc822', u'message'), + (u'message/s-http', u'message'), + (u'message/sip', u'message'), + (u'message/sipfrag', u'message'), + (u'message/tracking-status', u'message'), + (u'message/vnd.si.simp', u'message'), + (u'message/vnd.wfa.wsc', u'message'), + (u'model/example', u'model'), + (u'model/iges', u'model'), + (u'model/mesh', u'model'), + (u'model/vnd.collada+xml', u'model'), + (u'model/vnd.dwf', u'model'), + (u'model/vnd.flatland.3dml', u'model'), + (u'model/vnd.gdl', u'model'), + (u'model/vnd.gs-gdl', u'model'), + (u'model/vnd.gtw', u'model'), + (u'model/vnd.moml+xml', u'model'), + (u'model/vnd.mts', u'model'), + (u'model/vnd.parasolid.transmit.binary', u'model'), + (u'model/vnd.parasolid.transmit.text', u'model'), + (u'model/vnd.vtu', u'model'), + (u'model/vrml', u'model'), + (u'model/x3d-vrml', u'model'), + (u'model/x3d+fastinfoset', u'model'), + (u'model/x3d+xml', u'model'), + (u'multipart/alternative', u'multipart'), + (u'multipart/appledouble', u'multipart'), + (u'multipart/byteranges', u'multipart'), + (u'multipart/digest', u'multipart'), + (u'multipart/encrypted', u'multipart'), + (u'multipart/example', u'multipart'), + (u'multipart/form-data', u'multipart'), + (u'multipart/header-set', u'multipart'), + (u'multipart/mixed', u'multipart'), + (u'multipart/parallel', u'multipart'), + (u'multipart/related', u'multipart'), + (u'multipart/report', u'multipart'), + (u'multipart/signed', u'multipart'), + (u'multipart/voice-message', u'multipart'), + (u'text/1d-interleaved-parityfec', u'text'), + (u'text/calendar', u'text'), + (u'text/css', u'text'), + (u'text/csv', u'text'), + (u'text/directory', u'text'), + (u'text/dns', u'text'), + (u'text/ecmascript', u'text'), + (u'text/encaprtp', u'text'), + (u'text/enriched', u'text'), + (u'text/example', u'text'), + (u'text/fwdred', u'text'), + (u'text/grammar-ref-list', u'text'), + (u'text/html', u'text'), + (u'text/javascript', u'text'), + (u'text/jcr-cnd', u'text'), + (u'text/mizar', u'text'), + (u'text/n3', u'text'), + (u'text/parameters', u'text'), + (u'text/parityfec', u'text'), + (u'text/plain', u'text'), + (u'text/provenance-notation', u'text'), + (u'text/prs.fallenstein.rst', u'text'), + (u'text/prs.lines.tag', u'text'), + (u'text/raptorfec', u'text'), + (u'text/RED', u'text'), + (u'text/rfc822-headers', u'text'), + (u'text/richtext', u'text'), + (u'text/rtf', u'text'), + (u'text/rtp-enc-aescm128', u'text'), + (u'text/rtploopback', u'text'), + (u'text/rtx', u'text'), + (u'text/sgml', u'text'), + (u'text/t140', u'text'), + (u'text/tab-separated-values', u'text'), + (u'text/troff', u'text'), + (u'text/turtle', u'text'), + (u'text/ulpfec', u'text'), + (u'text/uri-list', u'text'), + (u'text/vcard', u'text'), + (u'text/vnd.a', u'text'), + (u'text/vnd.abc', u'text'), + (u'text/vnd.curl', u'text'), + (u'text/vnd.debian.copyright', u'text'), + (u'text/vnd.DMClientScript', u'text'), + (u'text/vnd.dvb.subtitle', u'text'), + (u'text/vnd.esmertec.theme-descriptor', u'text'), + (u'text/vnd.fly', u'text'), + (u'text/vnd.fmi.flexstor', u'text'), + (u'text/vnd.graphviz', u'text'), + (u'text/vnd.in3d.3dml', u'text'), + (u'text/vnd.in3d.spot', u'text'), + (u'text/vnd.IPTC.NewsML', u'text'), + (u'text/vnd.IPTC.NITF', u'text'), + (u'text/vnd.latex-z', u'text'), + (u'text/vnd.motorola.reflex', u'text'), + (u'text/vnd.ms-mediapackage', u'text'), + (u'text/vnd.net2phone.commcenter.command', u'text'), + (u'text/vnd.radisys.msml-basic-layout', u'text'), + (u'text/vnd.si.uricatalogue', u'text'), + (u'text/vnd.sun.j2me.app-descriptor', u'text'), + (u'text/vnd.trolltech.linguist', u'text'), + (u'text/vnd.wap.si', u'text'), + (u'text/vnd.wap.sl', u'text'), + (u'text/vnd.wap.wml', u'text'), + (u'text/vnd.wap.wmlscript', u'text'), + (u'text/xml', u'text'), + (u'text/xml-external-parsed-entity', u'text'), + (u'video/1d-interleaved-parityfec', u'video'), + (u'video/3gpp', u'video'), + (u'video/3gpp2', u'video'), + (u'video/3gpp-tt', u'video'), + (u'video/BMPEG', u'video'), + (u'video/BT656', u'video'), + (u'video/CelB', u'video'), + (u'video/DV', u'video'), + (u'video/encaprtp', u'video'), + (u'video/example', u'video'), + (u'video/H261', u'video'), + (u'video/H263', u'video'), + (u'video/H263-1998', u'video'), + (u'video/H263-2000', u'video'), + (u'video/H264', u'video'), + (u'video/H264-RCDO', u'video'), + (u'video/H264-SVC', u'video'), + (u'video/iso.segment', u'video'), + (u'video/JPEG', u'video'), + (u'video/jpeg2000', u'video'), + (u'video/MJ2', u'video'), + (u'video/MP1S', u'video'), + (u'video/MP2P', u'video'), + (u'video/MP2T', u'video'), + (u'video/mp4', u'video'), + (u'video/MP4V-ES', u'video'), + (u'video/MPV', u'video'), + (u'video/mpeg', u'video'), + (u'video/mpeg4-generic', u'video'), + (u'video/nv', u'video'), + (u'video/ogg', u'video'), + (u'video/parityfec', u'video'), + (u'video/pointer', u'video'), + (u'video/quicktime', u'video'), + (u'video/raptorfec', u'video'), + (u'video/raw', u'video'), + (u'video/rtp-enc-aescm128', u'video'), + (u'video/rtploopback', u'video'), + (u'video/rtx', u'video'), + (u'video/SMPTE292M', u'video'), + (u'video/ulpfec', u'video'), + (u'video/vc1', u'video'), + (u'video/vnd.CCTV', u'video'), + (u'video/vnd.dece.hd', u'video'), + (u'video/vnd.dece.mobile', u'video'), + (u'video/vnd.dece.mp4', u'video'), + (u'video/vnd.dece.pd', u'video'), + (u'video/vnd.dece.sd', u'video'), + (u'video/vnd.dece.video', u'video'), + (u'video/vnd.directv.mpeg', u'video'), + (u'video/vnd.directv.mpeg-tts', u'video'), + (u'video/vnd.dlna.mpeg-tts', u'video'), + (u'video/vnd.dvb.file', u'video'), + (u'video/vnd.fvt', u'video'), + (u'video/vnd.hns.video', u'video'), + (u'video/vnd.iptvforum.1dparityfec-1010', u'video'), + (u'video/vnd.iptvforum.1dparityfec-2005', u'video'), + (u'video/vnd.iptvforum.2dparityfec-1010', u'video'), + (u'video/vnd.iptvforum.2dparityfec-2005', u'video'), + (u'video/vnd.iptvforum.ttsavc', u'video'), + (u'video/vnd.iptvforum.ttsmpeg2', u'video'), + (u'video/vnd.motorola.video', u'video'), + (u'video/vnd.motorola.videop', u'video'), + (u'video/vnd.mpegurl', u'video'), + (u'video/vnd.ms-playready.media.pyv', u'video'), + (u'video/vnd.nokia.interleaved-multimedia', u'video'), + (u'video/vnd.nokia.videovoip', u'video'), + (u'video/vnd.objectvideo', u'video'), + (u'video/vnd.radgamettools.bink', u'video'), + (u'video/vnd.radgamettools.smacker', u'video'), + (u'video/vnd.sealed.mpeg1', u'video'), + (u'video/vnd.sealed.mpeg4', u'video'), + (u'video/vnd.sealed.swf', u'video'), + (u'video/vnd.sealedmedia.softseal.mov', u'video'), + (u'video/vnd.uvvu.mp4', u'video'), + (u'video/vnd.vivo', u'video') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/GeographicLocationClass.xml +# Fields: code, name, description + +GEOGRAPHIC_LOCATION_CLASS = ( + (u'1', u'Administrative Region', u'The designated geographic location is an administrative region (state, county, province, district, municipality etc.)'), + (u'2', u'Populated Place', u'The designated geographic location is a populated place (town, village, farm etc.)'), + (u'3', u'Structure', u'The designated geopgraphic location is a structure (such as a school or a clinic)'), + (u'4', u'Other Topographical Feature', u'The designated geographic location is a topographical feature, such as a mountain, a river, a forest') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/DocumentCategory-category.xml +# Fields: code, name, description + +DOCUMENT_CATEGORY_CATEGORY = ( + (u'A', u'Activity Level', u'The document is relevant to a specific activity'), + (u'B', u'Organisation Level', u'The document is relevant to the organisation as a whole') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/Version.xml +# Fields: code, url + +VERSION = ( + (u'1.01', u'http://iatistandard.org/101/'), + (u'1.02', u'http://iatistandard.org/102/'), + (u'1.03', u'http://iatistandard.org/103/'), + (u'1.04', u'http://iatistandard.org/104/'), + (u'1.05', u'http://iatistandard.org/105/'), + (u'2.01') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/ContactType.xml +# Fields: code, name, description + +CONTACT_TYPE = ( + (u'1', u'General Enquiries', u'General Enquiries'), + (u'2', u'Project Management', u'Project Management'), + (u'3', u'Financial Management', u'Financial Management'), + (u'4', u'Communications', u'Communications') +) + +# From http://iatistandard.org/201/codelists/downloads/clv2/xml/AidType-category.xml +# Fields: code, name, description + +AID_TYPE_CATEGORY = ( + (u'A', u'Budget support', u'For contributions under this category, the donor relinquishes the exclusive control of its funds by sharing the responsibility with the recipient.'), + (u'B', u'Core contributions and pooled programmes and funds', u'For contributions under this category, the donor relinquishes the exclusive control of its funds by sharing the responsibility with other stakeholders (other donors, NGOs, multilateral institutions, Public Private Partnerships). The category covers both core contributions (B01 and B02), and pooled contributions with a specific earmarking (B03 and B04).'), + (u'C', u'Project-type interventions', u'N.B. Within this category, members able to do so are requested to report the aggregate amount used for financing donor experts/consultants on Table DAC1. Where the activity consists solely of experts costs, report under category D.'), + (u'D', u'Experts and other technical assistance', u'This category covers the provision, outside projects as described in category C, of know- how in the form of personnel, training and research.'), + (u'E', u'Scholarships and student costs in donor countries', u''), + (u'F', u'Debt relief', u''), + (u'G', u'Administrative costs not included elsewhere', u''), + (u'H', u'Other in-donor expenditures', u'Groups a number of contributions that do not give rise to a cross-border flow.') +) + diff --git a/akvo/rsr/migrations/0084_sector_cleanup.py b/akvo/rsr/migrations/0084_sector_cleanup.py new file mode 100644 index 0000000000..8d3a533d73 --- /dev/null +++ b/akvo/rsr/migrations/0084_sector_cleanup.py @@ -0,0 +1,621 @@ +# -*- coding: utf-8 -*- +from south.utils import datetime_utils as datetime +from south.db import db +from south.v2 import DataMigration +from django.db import models + +class Migration(DataMigration): + + def forwards(self, orm): + # First set the vocabulary for sectors where it is missing + for sector in orm.Sector.objects.all(): + if sector.vocabulary not in ['DAC', 'DAC-3']: + if len(sector.sector_code) == 5: + sector.vocabulary = 'DAC' + sector.save() + elif len(sector.sector_code) == 3: + sector.vocabulary = 'DAC-3' + sector.save() + + for project in orm.Project.objects.all(): + # Make sure projects don't have duplicate sector categories (unless it has a percentage specified) + sector_categories = orm.Sector.objects.filter(project=project, vocabulary='2') + if sector_categories.count() > 1: + for sector_category in sector_categories: + similar_sector_categories = orm.Sector.objects.filter(project=project, sector_code=sector_category.sector_code, vocabulary='2').exclude(pk=sector_category.pk) + for similar_sector_category in similar_sector_categories: + if not similar_sector_category.percentage: + similar_sector_category.delete() + + # Same for 5-digit sectors + sectors = orm.Sector.objects.filter(project=project, vocabulary='1') + if sectors.count() > 1: + for sector in sectors: + similar_sectors = orm.Sector.objects.filter(project=project, sector_code=sector.sector_code, vocabulary='1').exclude(pk=sector.pk) + for similar_sector in similar_sectors: + if not similar_sector.percentage: + similar_sector.delete() + + def backwards(self, orm): + pass + + models = { + u'auth.group': { + 'Meta': {'object_name': 'Group'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + u'auth.permission': { + 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + u'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + }, + 'rsr.benchmark': { + 'Meta': {'ordering': "('category__name', 'name__order')", 'object_name': 'Benchmark'}, + 'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.Category']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.Benchmarkname']"}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'benchmarks'", 'to': "orm['rsr.Project']"}), + 'value': ('django.db.models.fields.IntegerField', [], {}) + }, + 'rsr.benchmarkname': { + 'Meta': {'ordering': "['order', 'name']", 'object_name': 'Benchmarkname'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '80'}), + 'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}) + }, + 'rsr.budgetitem': { + 'Meta': {'ordering': "('label',)", 'unique_together': "(('project', 'label'),)", 'object_name': 'BudgetItem'}, + 'amount': ('django.db.models.fields.DecimalField', [], {'max_digits': '10', 'decimal_places': '2'}), + 'currency': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '3', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.BudgetItemLabel']"}), + 'other_extra': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}), + 'period_end': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'period_end_text': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}), + 'period_start': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'period_start_text': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'budget_items'", 'to': "orm['rsr.Project']"}), + 'type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}), + 'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}) + }, + 'rsr.budgetitemlabel': { + 'Meta': {'ordering': "('label',)", 'object_name': 'BudgetItemLabel'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('akvo.rsr.fields.ValidXMLCharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}) + }, + 'rsr.category': { + 'Meta': {'ordering': "['name']", 'object_name': 'Category'}, + 'benchmarknames': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['rsr.Benchmarkname']", 'symmetrical': 'False', 'blank': 'True'}), + 'focus_area': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'categories'", 'symmetrical': 'False', 'to': "orm['rsr.FocusArea']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'db_index': 'True'}) + }, + 'rsr.country': { + 'Meta': {'ordering': "['name']", 'object_name': 'Country'}, + 'continent': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '20', 'db_index': 'True'}), + 'continent_code': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '2', 'db_index': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'iso_code': ('akvo.rsr.fields.ValidXMLCharField', [], {'unique': 'True', 'max_length': '2', 'db_index': 'True'}), + 'name': ('akvo.rsr.fields.ValidXMLCharField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'}) + }, + 'rsr.countrybudgetitem': { + 'Meta': {'object_name': 'CountryBudgetItem'}, + 'code': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '6', 'blank': 'True'}), + 'description': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'percentage': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '4', 'decimal_places': '1', 'blank': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'country_budget_items'", 'to': "orm['rsr.Project']"}), + 'vocabulary': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}) + }, + 'rsr.employment': { + 'Meta': {'object_name': 'Employment'}, + 'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.Country']", 'null': 'True', 'blank': 'True'}), + 'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'employments'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['auth.Group']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_approved': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'job_title': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}), + 'organisation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'employees'", 'to': "orm['rsr.Organisation']"}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'employers'", 'to': "orm['rsr.User']"}) + }, + 'rsr.focusarea': { + 'Meta': {'ordering': "['name']", 'object_name': 'FocusArea'}, + 'description': ('akvo.rsr.fields.ValidXMLTextField', [], {'max_length': '500'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'image': ('sorl.thumbnail.fields.ImageField', [], {'max_length': '100'}), + 'link_to': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}), + 'name': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50'}), + 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50'}) + }, + 'rsr.goal': { + 'Meta': {'object_name': 'Goal'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'goals'", 'to': "orm['rsr.Project']"}), + 'text': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}) + }, + 'rsr.indicator': { + 'Meta': {'object_name': 'Indicator'}, + 'ascending': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}), + 'baseline_comment': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'baseline_value': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}), + 'baseline_year': ('django.db.models.fields.PositiveIntegerField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}), + 'description': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'description_type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'measure': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}), + 'result': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'indicators'", 'to': "orm['rsr.Result']"}), + 'title': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}) + }, + 'rsr.indicatorperiod': { + 'Meta': {'object_name': 'IndicatorPeriod'}, + 'actual_comment': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'actual_value': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'indicator': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'periods'", 'to': "orm['rsr.Indicator']"}), + 'period_end': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'period_start': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'target_comment': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'target_value': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}) + }, + 'rsr.internalorganisationid': { + 'Meta': {'unique_together': "(('recording_org', 'referenced_org'),)", 'object_name': 'InternalOrganisationID'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'identifier': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '200'}), + 'recording_org': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'internal_ids'", 'to': "orm['rsr.Organisation']"}), + 'referenced_org': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'reference_ids'", 'to': "orm['rsr.Organisation']"}) + }, + 'rsr.invoice': { + 'Meta': {'ordering': "['-id']", 'object_name': 'Invoice'}, + 'amount': ('django.db.models.fields.PositiveIntegerField', [], {}), + 'amount_received': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '10', 'decimal_places': '2', 'blank': 'True'}), + 'bank': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '4', 'blank': 'True'}), + 'campaign_code': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '15', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}), + 'engine': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "'paypal'", 'max_length': '10'}), + 'http_referer': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ipn': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}), + 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}), + 'notes': ('akvo.rsr.fields.ValidXMLTextField', [], {'default': "''", 'blank': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'invoices'", 'to': "orm['rsr.Project']"}), + 'status': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1'}), + 'test': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'time': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'transaction_id': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.User']", 'null': 'True', 'blank': 'True'}) + }, + 'rsr.keyword': { + 'Meta': {'ordering': "('label',)", 'object_name': 'Keyword'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('akvo.rsr.fields.ValidXMLCharField', [], {'unique': 'True', 'max_length': '30', 'db_index': 'True'}) + }, + 'rsr.legacydata': { + 'Meta': {'object_name': 'LegacyData'}, + 'iati_equivalent': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'legacy_data'", 'to': "orm['rsr.Project']"}), + 'value': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}) + }, + 'rsr.link': { + 'Meta': {'object_name': 'Link'}, + 'caption': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'kind': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'links'", 'to': "orm['rsr.Project']"}), + 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'}) + }, + 'rsr.minicms': { + 'Meta': {'ordering': "['-active', '-id']", 'object_name': 'MiniCMS'}, + 'active': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'feature_box': ('akvo.rsr.fields.ValidXMLTextField', [], {'max_length': '350'}), + 'feature_image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50'}), + 'lower_height': ('django.db.models.fields.IntegerField', [], {'default': '500'}), + 'top_right_box': ('akvo.rsr.fields.ValidXMLTextField', [], {'max_length': '350'}) + }, + 'rsr.molliegateway': { + 'Meta': {'object_name': 'MollieGateway'}, + 'currency': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "'EUR'", 'max_length': '3'}), + 'description': ('akvo.rsr.fields.ValidXMLTextField', [], {'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255'}), + 'notification_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}), + 'partner_id': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '10'}) + }, + 'rsr.organisation': { + 'Meta': {'ordering': "['name']", 'object_name': 'Organisation'}, + 'allow_edit': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'contact_email': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}), + 'contact_person': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '30', 'blank': 'True'}), + 'content_owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.Organisation']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}), + 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + 'description': ('akvo.rsr.fields.ValidXMLTextField', [], {'blank': 'True'}), + 'facebook': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}), + 'fax': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '20', 'blank': 'True'}), + 'iati_org_id': ('akvo.rsr.fields.ValidXMLCharField', [], {'db_index': 'True', 'max_length': '75', 'unique': 'True', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'internal_org_ids': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'recording_organisation'", 'symmetrical': 'False', 'through': "orm['rsr.InternalOrganisationID']", 'to': "orm['rsr.Organisation']"}), + 'language': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "'en'", 'max_length': '2'}), + 'last_modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + 'linkedin': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}), + 'logo': ('sorl.thumbnail.fields.ImageField', [], {'max_length': '100', 'blank': 'True'}), + 'long_name': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '75', 'blank': 'True'}), + 'mobile': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '20', 'blank': 'True'}), + 'name': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '25', 'db_index': 'True'}), + 'new_organisation_type': ('django.db.models.fields.IntegerField', [], {'default': '22', 'db_index': 'True'}), + 'notes': ('akvo.rsr.fields.ValidXMLTextField', [], {'default': "''", 'blank': 'True'}), + 'organisation_type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'db_index': 'True'}), + 'partner_types': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['rsr.PartnerType']", 'symmetrical': 'False'}), + 'phone': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '20', 'blank': 'True'}), + 'primary_location': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.OrganisationLocation']", 'null': 'True', 'on_delete': 'models.SET_NULL'}), + 'twitter': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}), + 'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}) + }, + 'rsr.organisationaccount': { + 'Meta': {'object_name': 'OrganisationAccount'}, + 'account_level': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "'archived'", 'max_length': '12'}), + 'organisation': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['rsr.Organisation']", 'unique': 'True', 'primary_key': 'True'}) + }, + 'rsr.organisationlocation': { + 'Meta': {'ordering': "['id']", 'object_name': 'OrganisationLocation'}, + 'address_1': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'address_2': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'city': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.Country']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'latitude': ('akvo.rsr.fields.LatitudeField', [], {'default': '0', 'db_index': 'True'}), + 'location_target': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'locations'", 'null': 'True', 'to': "orm['rsr.Organisation']"}), + 'longitude': ('akvo.rsr.fields.LongitudeField', [], {'default': '0', 'db_index': 'True'}), + 'postcode': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '10', 'blank': 'True'}), + 'state': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}) + }, + 'rsr.partnership': { + 'Meta': {'ordering': "['partner_type']", 'object_name': 'Partnership'}, + 'funding_amount': ('django.db.models.fields.DecimalField', [], {'db_index': 'True', 'null': 'True', 'max_digits': '10', 'decimal_places': '2', 'blank': 'True'}), + 'iati_activity_id': ('akvo.rsr.fields.ValidXMLCharField', [], {'db_index': 'True', 'max_length': '75', 'null': 'True', 'blank': 'True'}), + 'iati_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'internal_id': ('akvo.rsr.fields.ValidXMLCharField', [], {'db_index': 'True', 'max_length': '75', 'null': 'True', 'blank': 'True'}), + 'organisation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'partnerships'", 'to': "orm['rsr.Organisation']"}), + 'partner_type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '8', 'db_index': 'True'}), + 'partner_type_extra': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'partnerships'", 'to': "orm['rsr.Project']"}), + 'related_activity_id': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}) + }, + 'rsr.partnersite': { + 'Meta': {'ordering': "('organisation__name',)", 'object_name': 'PartnerSite'}, + 'about_box': ('akvo.rsr.fields.ValidXMLTextField', [], {'max_length': '500', 'blank': 'True'}), + 'about_image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}), + 'cname': ('akvo.rsr.fields.NullCharField', [], {'max_length': '100', 'unique': 'True', 'null': 'True', 'blank': 'True'}), + 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + 'custom_css': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'blank': 'True'}), + 'custom_favicon': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'blank': 'True'}), + 'custom_logo': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'blank': 'True'}), + 'custom_return_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}), + 'custom_return_url_text': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}), + 'default_language': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "'en'", 'max_length': '5'}), + 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'exclude_keywords': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'facebook_app_id': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '40', 'null': 'True', 'blank': 'True'}), + 'facebook_button': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'google_translation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'hostname': ('akvo.rsr.fields.ValidXMLCharField', [], {'unique': 'True', 'max_length': '50'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'keywords': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'partnersites'", 'blank': 'True', 'to': "orm['rsr.Keyword']"}), + 'last_modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + 'notes': ('akvo.rsr.fields.ValidXMLTextField', [], {'default': "''", 'blank': 'True'}), + 'organisation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.Organisation']"}), + 'partner_projects': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'piwik_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}), + 'twitter_button': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'ui_translation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + 'rsr.partnertype': { + 'Meta': {'ordering': "('label',)", 'object_name': 'PartnerType'}, + 'id': ('akvo.rsr.fields.ValidXMLCharField', [], {'unique': 'True', 'max_length': '8', 'primary_key': 'True'}), + 'label': ('akvo.rsr.fields.ValidXMLCharField', [], {'unique': 'True', 'max_length': '30'}) + }, + 'rsr.paymentgatewayselector': { + 'Meta': {'object_name': 'PaymentGatewaySelector'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'mollie_gateway': ('django.db.models.fields.related.ForeignKey', [], {'default': '1', 'to': "orm['rsr.MollieGateway']"}), + 'paypal_gateway': ('django.db.models.fields.related.ForeignKey', [], {'default': '1', 'to': "orm['rsr.PayPalGateway']"}), + 'project': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['rsr.Project']", 'unique': 'True'}) + }, + 'rsr.paypalgateway': { + 'Meta': {'object_name': 'PayPalGateway'}, + 'account_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}), + 'currency': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "'EUR'", 'max_length': '3'}), + 'description': ('akvo.rsr.fields.ValidXMLTextField', [], {'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'locale': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "'US'", 'max_length': '2'}), + 'name': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255'}), + 'notification_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}) + }, + 'rsr.planneddisbursement': { + 'Meta': {'object_name': 'PlannedDisbursement'}, + 'currency': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '3', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'period_end': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'period_start': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'planned_disbursements'", 'to': "orm['rsr.Project']"}), + 'type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}), + 'updated': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'value': ('django.db.models.fields.DecimalField', [], {'max_digits': '10', 'decimal_places': '2', 'blank': 'True'}), + 'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}) + }, + 'rsr.policymarker': { + 'Meta': {'object_name': 'PolicyMarker'}, + 'description': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'policy_marker': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '2', 'blank': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'policy_markers'", 'to': "orm['rsr.Project']"}), + 'significance': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '2', 'blank': 'True'}), + 'vocabulary': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '5', 'blank': 'True'}) + }, + 'rsr.project': { + 'Meta': {'ordering': "['-id']", 'object_name': 'Project'}, + 'background': ('akvo.rsr.fields.ProjectLimitedTextField', [], {'blank': 'True'}), + 'budget': ('django.db.models.fields.DecimalField', [], {'decimal_places': '2', 'default': '0', 'max_digits': '10', 'blank': 'True', 'null': 'True', 'db_index': 'True'}), + 'capital_spend_percentage': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '4', 'decimal_places': '1', 'blank': 'True'}), + 'categories': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'projects'", 'symmetrical': 'False', 'to': "orm['rsr.Category']"}), + 'collaboration_type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}), + 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + 'currency': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "'EUR'", 'max_length': '3'}), + 'current_image': ('sorl.thumbnail.fields.ImageField', [], {'max_length': '100', 'blank': 'True'}), + 'current_image_caption': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}), + 'current_image_credit': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}), + 'current_status': ('akvo.rsr.fields.ProjectLimitedTextField', [], {'blank': 'True'}), + 'date_end_actual': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'date_end_planned': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'date_start_actual': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'date_start_planned': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today'}), + 'default_aid_type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '3', 'blank': 'True'}), + 'default_finance_type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '3', 'blank': 'True'}), + 'default_flow_type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '2', 'blank': 'True'}), + 'default_tied_status': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}), + 'donate_button': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'funds': ('django.db.models.fields.DecimalField', [], {'decimal_places': '2', 'default': '0', 'max_digits': '10', 'blank': 'True', 'null': 'True', 'db_index': 'True'}), + 'funds_needed': ('django.db.models.fields.DecimalField', [], {'decimal_places': '2', 'default': '0', 'max_digits': '10', 'blank': 'True', 'null': 'True', 'db_index': 'True'}), + 'goals_overview': ('akvo.rsr.fields.ProjectLimitedTextField', [], {}), + 'hierarchy': ('django.db.models.fields.PositiveIntegerField', [], {'max_length': '1', 'null': 'True', 'blank': 'True'}), + 'iati_activity_id': ('akvo.rsr.fields.ValidXMLCharField', [], {'db_index': 'True', 'max_length': '100', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'keywords': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'projects'", 'blank': 'True', 'to': "orm['rsr.Keyword']"}), + 'language': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "'en'", 'max_length': '2'}), + 'last_modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + 'notes': ('akvo.rsr.fields.ValidXMLTextField', [], {'default': "''", 'blank': 'True'}), + 'partners': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'projects'", 'symmetrical': 'False', 'through': "orm['rsr.Partnership']", 'to': "orm['rsr.Organisation']"}), + 'primary_location': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.ProjectLocation']", 'null': 'True', 'on_delete': 'models.SET_NULL'}), + 'project_plan': ('akvo.rsr.fields.ValidXMLTextField', [], {'blank': 'True'}), + 'project_plan_summary': ('akvo.rsr.fields.ProjectLimitedTextField', [], {}), + 'project_rating': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'project_scope': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '2', 'blank': 'True'}), + 'status': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "'N'", 'max_length': '1', 'db_index': 'True'}), + 'subtitle': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '75'}), + 'sustainability': ('akvo.rsr.fields.ValidXMLTextField', [], {}), + 'sync_owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.Organisation']", 'null': 'True', 'on_delete': 'models.SET_NULL'}), + 'sync_owner_secondary_reporter': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}), + 'target_group': ('akvo.rsr.fields.ProjectLimitedTextField', [], {'blank': 'True'}), + 'title': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '45', 'db_index': 'True'}) + }, + 'rsr.projectcomment': { + 'Meta': {'ordering': "('-id',)", 'object_name': 'ProjectComment'}, + 'comment': ('akvo.rsr.fields.ValidXMLTextField', [], {}), + 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'last_modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['rsr.Project']"}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.User']"}) + }, + 'rsr.projectcondition': { + 'Meta': {'object_name': 'ProjectCondition'}, + 'attached': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conditions'", 'to': "orm['rsr.Project']"}), + 'text': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}) + }, + 'rsr.projectcontact': { + 'Meta': {'object_name': 'ProjectContact'}, + 'country': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'contacts'", 'null': 'True', 'to': "orm['rsr.Country']"}), + 'department': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'job_title': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'mailing_address': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'organisation': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'person_name': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'contacts'", 'to': "orm['rsr.Project']"}), + 'state': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'telephone': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '15', 'blank': 'True'}), + 'type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}), + 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}) + }, + 'rsr.projectdocument': { + 'Meta': {'ordering': "['-id']", 'object_name': 'ProjectDocument'}, + 'category': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '3', 'blank': 'True'}), + 'format': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '75', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'language': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '2', 'blank': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'documents'", 'to': "orm['rsr.Project']"}), + 'title': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'title_language': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '2', 'blank': 'True'}), + 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'}) + }, + 'rsr.projectlocation': { + 'Meta': {'ordering': "['id']", 'object_name': 'ProjectLocation'}, + 'activity_description': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'address_1': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'address_2': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'administrative_code': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '25', 'blank': 'True'}), + 'administrative_level': ('django.db.models.fields.PositiveSmallIntegerField', [], {'max_length': '1', 'null': 'True', 'blank': 'True'}), + 'administrative_vocabulary': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '2', 'blank': 'True'}), + 'city': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.Country']"}), + 'description': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'exactness': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}), + 'feature_designation': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '5', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'latitude': ('akvo.rsr.fields.LatitudeField', [], {'default': '0', 'db_index': 'True'}), + 'location_class': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}), + 'location_code': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '25', 'blank': 'True'}), + 'location_reach': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}), + 'location_target': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'locations'", 'null': 'True', 'to': "orm['rsr.Project']"}), + 'longitude': ('akvo.rsr.fields.LongitudeField', [], {'default': '0', 'db_index': 'True'}), + 'name': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'postcode': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '10', 'blank': 'True'}), + 'reference': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}), + 'state': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'vocabulary': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '2', 'blank': 'True'}) + }, + 'rsr.projectupdate': { + 'Meta': {'ordering': "['-id']", 'object_name': 'ProjectUpdate'}, + 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'language': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "'en'", 'max_length': '2'}), + 'last_modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + 'notes': ('akvo.rsr.fields.ValidXMLTextField', [], {'default': "''", 'blank': 'True'}), + 'photo': ('sorl.thumbnail.fields.ImageField', [], {'max_length': '100', 'blank': 'True'}), + 'photo_caption': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '75', 'blank': 'True'}), + 'photo_credit': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '25', 'blank': 'True'}), + 'primary_location': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.ProjectUpdateLocation']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'project_updates'", 'to': "orm['rsr.Project']"}), + 'text': ('akvo.rsr.fields.ValidXMLTextField', [], {'blank': 'True'}), + 'title': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'db_index': 'True'}), + 'update_method': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "'W'", 'max_length': '1', 'db_index': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.User']"}), + 'user_agent': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "''", 'max_length': '200', 'blank': 'True'}), + 'uuid': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "''", 'max_length': '40', 'db_index': 'True', 'blank': 'True'}), + 'video': ('embed_video.fields.EmbedVideoField', [], {'max_length': '200', 'blank': 'True'}), + 'video_caption': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '75', 'blank': 'True'}), + 'video_credit': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '25', 'blank': 'True'}) + }, + 'rsr.projectupdatelocation': { + 'Meta': {'ordering': "['id']", 'object_name': 'ProjectUpdateLocation'}, + 'address_1': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'address_2': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'city': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.Country']", 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'latitude': ('akvo.rsr.fields.LatitudeField', [], {'default': '0', 'db_index': 'True'}), + 'location_target': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'locations'", 'null': 'True', 'to': "orm['rsr.ProjectUpdate']"}), + 'longitude': ('akvo.rsr.fields.LongitudeField', [], {'default': '0', 'db_index': 'True'}), + 'postcode': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '10', 'blank': 'True'}), + 'state': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}) + }, + 'rsr.publishingstatus': { + 'Meta': {'ordering': "('-status', 'project')", 'object_name': 'PublishingStatus'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'project': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['rsr.Project']", 'unique': 'True'}), + 'status': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "'unpublished'", 'max_length': '30'}) + }, + 'rsr.recipientcountry': { + 'Meta': {'object_name': 'RecipientCountry'}, + 'country': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '2', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'percentage': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '4', 'decimal_places': '1', 'blank': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'recipient_countries'", 'to': "orm['rsr.Project']"}), + 'text': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}) + }, + 'rsr.recipientregion': { + 'Meta': {'object_name': 'RecipientRegion'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'percentage': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '4', 'decimal_places': '1', 'blank': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'recipient_regions'", 'to': "orm['rsr.Project']"}), + 'region': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '3', 'blank': 'True'}), + 'region_vocabulary': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}), + 'text': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}) + }, + 'rsr.relatedproject': { + 'Meta': {'ordering': "['project']", 'object_name': 'RelatedProject'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'related_projects'", 'to': "orm['rsr.Project']"}), + 'related_project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'related_to_projects'", 'to': "orm['rsr.Project']"}), + 'relation': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1'}) + }, + 'rsr.result': { + 'Meta': {'object_name': 'Result'}, + 'aggregation_status': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}), + 'description': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'description_type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'results'", 'to': "orm['rsr.Project']"}), + 'title': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}) + }, + 'rsr.sector': { + 'Meta': {'object_name': 'Sector'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'percentage': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '4', 'decimal_places': '1', 'blank': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'sectors'", 'to': "orm['rsr.Project']"}), + 'sector_code': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '5', 'blank': 'True'}), + 'text': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'vocabulary': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '5', 'blank': 'True'}) + }, + 'rsr.transaction': { + 'Meta': {'object_name': 'Transaction'}, + 'aid_type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '3', 'blank': 'True'}), + 'aid_type_text': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'currency': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '3', 'blank': 'True'}), + 'description': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'disbursement_channel': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}), + 'disbursement_channel_text': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'finance_type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '3', 'blank': 'True'}), + 'finance_type_text': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'flow_type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '2', 'blank': 'True'}), + 'flow_type_text': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'transactions'", 'to': "orm['rsr.Project']"}), + 'provider_organisation': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'provider_organisation_activity': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}), + 'provider_organisation_ref': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}), + 'receiver_organisation': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'receiver_organisation_activity': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}), + 'receiver_organisation_ref': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}), + 'reference': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '25', 'blank': 'True'}), + 'tied_status': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}), + 'tied_status_text': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'transaction_date': ('django.db.models.fields.DateField', [], {'blank': 'True'}), + 'transaction_type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '2', 'blank': 'True'}), + 'transaction_type_text': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'value': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '11', 'decimal_places': '1', 'blank': 'True'}), + 'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}) + }, + 'rsr.user': { + 'Meta': {'ordering': "['username']", 'object_name': 'User'}, + 'avatar': ('sorl.thumbnail.fields.ImageField', [], {'max_length': '100', 'null': 'True'}), + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '254'}), + 'first_name': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '30', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_admin': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '30', 'blank': 'True'}), + 'notes': ('akvo.rsr.fields.ValidXMLTextField', [], {'default': "''", 'blank': 'True'}), + 'organisations': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'users'", 'blank': 'True', 'through': "orm['rsr.Employment']", 'to': "orm['rsr.Organisation']"}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}), + 'username': ('akvo.rsr.fields.ValidXMLCharField', [], {'unique': 'True', 'max_length': '254'}) + } + } + + complete_apps = ['rsr'] + symmetrical = True diff --git a/akvo/rsr/migrations/0085_auto__add_field_projectdocument_document.py b/akvo/rsr/migrations/0085_auto__add_field_projectdocument_document.py new file mode 100644 index 0000000000..474ed9d6eb --- /dev/null +++ b/akvo/rsr/migrations/0085_auto__add_field_projectdocument_document.py @@ -0,0 +1,601 @@ +# -*- coding: utf-8 -*- +from south.utils import datetime_utils as datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Adding field 'ProjectDocument.document' + db.add_column(u'rsr_projectdocument', 'document', + self.gf('django.db.models.fields.files.FileField')(default='', max_length=100, blank=True), + keep_default=False) + + + def backwards(self, orm): + # Deleting field 'ProjectDocument.document' + db.delete_column(u'rsr_projectdocument', 'document') + + + models = { + u'auth.group': { + 'Meta': {'object_name': 'Group'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + u'auth.permission': { + 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + u'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + }, + 'rsr.benchmark': { + 'Meta': {'ordering': "('category__name', 'name__order')", 'object_name': 'Benchmark'}, + 'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.Category']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.Benchmarkname']"}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'benchmarks'", 'to': "orm['rsr.Project']"}), + 'value': ('django.db.models.fields.IntegerField', [], {}) + }, + 'rsr.benchmarkname': { + 'Meta': {'ordering': "['order', 'name']", 'object_name': 'Benchmarkname'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '80'}), + 'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}) + }, + 'rsr.budgetitem': { + 'Meta': {'ordering': "('label',)", 'unique_together': "(('project', 'label'),)", 'object_name': 'BudgetItem'}, + 'amount': ('django.db.models.fields.DecimalField', [], {'max_digits': '10', 'decimal_places': '2'}), + 'currency': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '3', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.BudgetItemLabel']"}), + 'other_extra': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}), + 'period_end': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'period_end_text': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}), + 'period_start': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'period_start_text': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'budget_items'", 'to': "orm['rsr.Project']"}), + 'type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}), + 'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}) + }, + 'rsr.budgetitemlabel': { + 'Meta': {'ordering': "('label',)", 'object_name': 'BudgetItemLabel'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('akvo.rsr.fields.ValidXMLCharField', [], {'unique': 'True', 'max_length': '20', 'db_index': 'True'}) + }, + 'rsr.category': { + 'Meta': {'ordering': "['name']", 'object_name': 'Category'}, + 'benchmarknames': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['rsr.Benchmarkname']", 'symmetrical': 'False', 'blank': 'True'}), + 'focus_area': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'categories'", 'symmetrical': 'False', 'to': "orm['rsr.FocusArea']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'db_index': 'True'}) + }, + 'rsr.country': { + 'Meta': {'ordering': "['name']", 'object_name': 'Country'}, + 'continent': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '20', 'db_index': 'True'}), + 'continent_code': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '2', 'db_index': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'iso_code': ('akvo.rsr.fields.ValidXMLCharField', [], {'unique': 'True', 'max_length': '2', 'db_index': 'True'}), + 'name': ('akvo.rsr.fields.ValidXMLCharField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'}) + }, + 'rsr.countrybudgetitem': { + 'Meta': {'object_name': 'CountryBudgetItem'}, + 'code': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '6', 'blank': 'True'}), + 'description': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'percentage': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '4', 'decimal_places': '1', 'blank': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'country_budget_items'", 'to': "orm['rsr.Project']"}), + 'vocabulary': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}) + }, + 'rsr.employment': { + 'Meta': {'object_name': 'Employment'}, + 'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.Country']", 'null': 'True', 'blank': 'True'}), + 'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'employments'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['auth.Group']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_approved': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'job_title': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}), + 'organisation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'employees'", 'to': "orm['rsr.Organisation']"}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'employers'", 'to': "orm['rsr.User']"}) + }, + 'rsr.focusarea': { + 'Meta': {'ordering': "['name']", 'object_name': 'FocusArea'}, + 'description': ('akvo.rsr.fields.ValidXMLTextField', [], {'max_length': '500'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'image': ('sorl.thumbnail.fields.ImageField', [], {'max_length': '100'}), + 'link_to': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}), + 'name': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50'}), + 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50'}) + }, + 'rsr.goal': { + 'Meta': {'object_name': 'Goal'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'goals'", 'to': "orm['rsr.Project']"}), + 'text': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}) + }, + 'rsr.indicator': { + 'Meta': {'object_name': 'Indicator'}, + 'ascending': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}), + 'baseline_comment': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'baseline_value': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}), + 'baseline_year': ('django.db.models.fields.PositiveIntegerField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}), + 'description': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'description_type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'measure': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}), + 'result': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'indicators'", 'to': "orm['rsr.Result']"}), + 'title': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}) + }, + 'rsr.indicatorperiod': { + 'Meta': {'object_name': 'IndicatorPeriod'}, + 'actual_comment': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'actual_value': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'indicator': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'periods'", 'to': "orm['rsr.Indicator']"}), + 'period_end': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'period_start': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'target_comment': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'target_value': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}) + }, + 'rsr.internalorganisationid': { + 'Meta': {'unique_together': "(('recording_org', 'referenced_org'),)", 'object_name': 'InternalOrganisationID'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'identifier': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '200'}), + 'recording_org': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'internal_ids'", 'to': "orm['rsr.Organisation']"}), + 'referenced_org': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'reference_ids'", 'to': "orm['rsr.Organisation']"}) + }, + 'rsr.invoice': { + 'Meta': {'ordering': "['-id']", 'object_name': 'Invoice'}, + 'amount': ('django.db.models.fields.PositiveIntegerField', [], {}), + 'amount_received': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '10', 'decimal_places': '2', 'blank': 'True'}), + 'bank': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '4', 'blank': 'True'}), + 'campaign_code': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '15', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}), + 'engine': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "'paypal'", 'max_length': '10'}), + 'http_referer': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ipn': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}), + 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}), + 'notes': ('akvo.rsr.fields.ValidXMLTextField', [], {'default': "''", 'blank': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'invoices'", 'to': "orm['rsr.Project']"}), + 'status': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1'}), + 'test': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'time': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'transaction_id': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.User']", 'null': 'True', 'blank': 'True'}) + }, + 'rsr.keyword': { + 'Meta': {'ordering': "('label',)", 'object_name': 'Keyword'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('akvo.rsr.fields.ValidXMLCharField', [], {'unique': 'True', 'max_length': '30', 'db_index': 'True'}) + }, + 'rsr.legacydata': { + 'Meta': {'object_name': 'LegacyData'}, + 'iati_equivalent': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'legacy_data'", 'to': "orm['rsr.Project']"}), + 'value': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}) + }, + 'rsr.link': { + 'Meta': {'object_name': 'Link'}, + 'caption': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'kind': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'links'", 'to': "orm['rsr.Project']"}), + 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'}) + }, + 'rsr.minicms': { + 'Meta': {'ordering': "['-active', '-id']", 'object_name': 'MiniCMS'}, + 'active': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'feature_box': ('akvo.rsr.fields.ValidXMLTextField', [], {'max_length': '350'}), + 'feature_image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50'}), + 'lower_height': ('django.db.models.fields.IntegerField', [], {'default': '500'}), + 'top_right_box': ('akvo.rsr.fields.ValidXMLTextField', [], {'max_length': '350'}) + }, + 'rsr.molliegateway': { + 'Meta': {'object_name': 'MollieGateway'}, + 'currency': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "'EUR'", 'max_length': '3'}), + 'description': ('akvo.rsr.fields.ValidXMLTextField', [], {'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255'}), + 'notification_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}), + 'partner_id': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '10'}) + }, + 'rsr.organisation': { + 'Meta': {'ordering': "['name']", 'object_name': 'Organisation'}, + 'allow_edit': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'contact_email': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}), + 'contact_person': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '30', 'blank': 'True'}), + 'content_owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.Organisation']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}), + 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + 'description': ('akvo.rsr.fields.ValidXMLTextField', [], {'blank': 'True'}), + 'facebook': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}), + 'fax': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '20', 'blank': 'True'}), + 'iati_org_id': ('akvo.rsr.fields.ValidXMLCharField', [], {'db_index': 'True', 'max_length': '75', 'unique': 'True', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'internal_org_ids': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'recording_organisation'", 'symmetrical': 'False', 'through': "orm['rsr.InternalOrganisationID']", 'to': "orm['rsr.Organisation']"}), + 'language': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "'en'", 'max_length': '2'}), + 'last_modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + 'linkedin': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}), + 'logo': ('sorl.thumbnail.fields.ImageField', [], {'max_length': '100', 'blank': 'True'}), + 'long_name': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '75', 'blank': 'True'}), + 'mobile': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '20', 'blank': 'True'}), + 'name': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '25', 'db_index': 'True'}), + 'new_organisation_type': ('django.db.models.fields.IntegerField', [], {'default': '22', 'db_index': 'True'}), + 'notes': ('akvo.rsr.fields.ValidXMLTextField', [], {'default': "''", 'blank': 'True'}), + 'organisation_type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'db_index': 'True'}), + 'partner_types': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['rsr.PartnerType']", 'symmetrical': 'False'}), + 'phone': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '20', 'blank': 'True'}), + 'primary_location': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.OrganisationLocation']", 'null': 'True', 'on_delete': 'models.SET_NULL'}), + 'twitter': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}), + 'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}) + }, + 'rsr.organisationaccount': { + 'Meta': {'object_name': 'OrganisationAccount'}, + 'account_level': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "'archived'", 'max_length': '12'}), + 'organisation': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['rsr.Organisation']", 'unique': 'True', 'primary_key': 'True'}) + }, + 'rsr.organisationlocation': { + 'Meta': {'ordering': "['id']", 'object_name': 'OrganisationLocation'}, + 'address_1': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'address_2': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'city': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.Country']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'latitude': ('akvo.rsr.fields.LatitudeField', [], {'default': '0', 'db_index': 'True'}), + 'location_target': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'locations'", 'null': 'True', 'to': "orm['rsr.Organisation']"}), + 'longitude': ('akvo.rsr.fields.LongitudeField', [], {'default': '0', 'db_index': 'True'}), + 'postcode': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '10', 'blank': 'True'}), + 'state': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}) + }, + 'rsr.partnership': { + 'Meta': {'ordering': "['partner_type']", 'object_name': 'Partnership'}, + 'funding_amount': ('django.db.models.fields.DecimalField', [], {'db_index': 'True', 'null': 'True', 'max_digits': '10', 'decimal_places': '2', 'blank': 'True'}), + 'iati_activity_id': ('akvo.rsr.fields.ValidXMLCharField', [], {'db_index': 'True', 'max_length': '75', 'null': 'True', 'blank': 'True'}), + 'iati_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'internal_id': ('akvo.rsr.fields.ValidXMLCharField', [], {'db_index': 'True', 'max_length': '75', 'null': 'True', 'blank': 'True'}), + 'organisation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'partnerships'", 'to': "orm['rsr.Organisation']"}), + 'partner_type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '8', 'db_index': 'True'}), + 'partner_type_extra': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'partnerships'", 'to': "orm['rsr.Project']"}), + 'related_activity_id': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}) + }, + 'rsr.partnersite': { + 'Meta': {'ordering': "('organisation__name',)", 'object_name': 'PartnerSite'}, + 'about_box': ('akvo.rsr.fields.ValidXMLTextField', [], {'max_length': '500', 'blank': 'True'}), + 'about_image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}), + 'cname': ('akvo.rsr.fields.NullCharField', [], {'max_length': '100', 'unique': 'True', 'null': 'True', 'blank': 'True'}), + 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + 'custom_css': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'blank': 'True'}), + 'custom_favicon': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'blank': 'True'}), + 'custom_logo': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'blank': 'True'}), + 'custom_return_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}), + 'custom_return_url_text': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}), + 'default_language': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "'en'", 'max_length': '5'}), + 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'exclude_keywords': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'facebook_app_id': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '40', 'null': 'True', 'blank': 'True'}), + 'facebook_button': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'google_translation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'hostname': ('akvo.rsr.fields.ValidXMLCharField', [], {'unique': 'True', 'max_length': '50'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'keywords': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'partnersites'", 'blank': 'True', 'to': "orm['rsr.Keyword']"}), + 'last_modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + 'notes': ('akvo.rsr.fields.ValidXMLTextField', [], {'default': "''", 'blank': 'True'}), + 'organisation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.Organisation']"}), + 'partner_projects': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'piwik_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}), + 'twitter_button': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'ui_translation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + 'rsr.partnertype': { + 'Meta': {'ordering': "('label',)", 'object_name': 'PartnerType'}, + 'id': ('akvo.rsr.fields.ValidXMLCharField', [], {'unique': 'True', 'max_length': '8', 'primary_key': 'True'}), + 'label': ('akvo.rsr.fields.ValidXMLCharField', [], {'unique': 'True', 'max_length': '30'}) + }, + 'rsr.paymentgatewayselector': { + 'Meta': {'object_name': 'PaymentGatewaySelector'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'mollie_gateway': ('django.db.models.fields.related.ForeignKey', [], {'default': '1', 'to': "orm['rsr.MollieGateway']"}), + 'paypal_gateway': ('django.db.models.fields.related.ForeignKey', [], {'default': '1', 'to': "orm['rsr.PayPalGateway']"}), + 'project': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['rsr.Project']", 'unique': 'True'}) + }, + 'rsr.paypalgateway': { + 'Meta': {'object_name': 'PayPalGateway'}, + 'account_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}), + 'currency': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "'EUR'", 'max_length': '3'}), + 'description': ('akvo.rsr.fields.ValidXMLTextField', [], {'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'locale': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "'US'", 'max_length': '2'}), + 'name': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255'}), + 'notification_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}) + }, + 'rsr.planneddisbursement': { + 'Meta': {'object_name': 'PlannedDisbursement'}, + 'currency': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '3', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'period_end': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'period_start': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'planned_disbursements'", 'to': "orm['rsr.Project']"}), + 'type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}), + 'updated': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'value': ('django.db.models.fields.DecimalField', [], {'max_digits': '10', 'decimal_places': '2', 'blank': 'True'}), + 'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}) + }, + 'rsr.policymarker': { + 'Meta': {'object_name': 'PolicyMarker'}, + 'description': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'policy_marker': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '2', 'blank': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'policy_markers'", 'to': "orm['rsr.Project']"}), + 'significance': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '2', 'blank': 'True'}), + 'vocabulary': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '5', 'blank': 'True'}) + }, + 'rsr.project': { + 'Meta': {'ordering': "['-id']", 'object_name': 'Project'}, + 'background': ('akvo.rsr.fields.ProjectLimitedTextField', [], {'blank': 'True'}), + 'budget': ('django.db.models.fields.DecimalField', [], {'decimal_places': '2', 'default': '0', 'max_digits': '10', 'blank': 'True', 'null': 'True', 'db_index': 'True'}), + 'capital_spend_percentage': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '4', 'decimal_places': '1', 'blank': 'True'}), + 'categories': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'projects'", 'blank': 'True', 'to': "orm['rsr.Category']"}), + 'collaboration_type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}), + 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + 'currency': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "'EUR'", 'max_length': '3'}), + 'current_image': ('sorl.thumbnail.fields.ImageField', [], {'max_length': '100', 'blank': 'True'}), + 'current_image_caption': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}), + 'current_image_credit': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}), + 'current_status': ('akvo.rsr.fields.ProjectLimitedTextField', [], {'blank': 'True'}), + 'date_end_actual': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'date_end_planned': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'date_start_actual': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'date_start_planned': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today'}), + 'default_aid_type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '3', 'blank': 'True'}), + 'default_finance_type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '3', 'blank': 'True'}), + 'default_flow_type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '2', 'blank': 'True'}), + 'default_tied_status': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}), + 'donate_button': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'funds': ('django.db.models.fields.DecimalField', [], {'decimal_places': '2', 'default': '0', 'max_digits': '10', 'blank': 'True', 'null': 'True', 'db_index': 'True'}), + 'funds_needed': ('django.db.models.fields.DecimalField', [], {'decimal_places': '2', 'default': '0', 'max_digits': '10', 'blank': 'True', 'null': 'True', 'db_index': 'True'}), + 'goals_overview': ('akvo.rsr.fields.ProjectLimitedTextField', [], {}), + 'hierarchy': ('django.db.models.fields.PositiveIntegerField', [], {'max_length': '1', 'null': 'True', 'blank': 'True'}), + 'iati_activity_id': ('akvo.rsr.fields.ValidXMLCharField', [], {'db_index': 'True', 'max_length': '100', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'keywords': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'projects'", 'blank': 'True', 'to': "orm['rsr.Keyword']"}), + 'language': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "'en'", 'max_length': '2'}), + 'last_modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + 'notes': ('akvo.rsr.fields.ValidXMLTextField', [], {'default': "''", 'blank': 'True'}), + 'partners': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'projects'", 'symmetrical': 'False', 'through': "orm['rsr.Partnership']", 'to': "orm['rsr.Organisation']"}), + 'primary_location': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.ProjectLocation']", 'null': 'True', 'on_delete': 'models.SET_NULL'}), + 'project_plan': ('akvo.rsr.fields.ValidXMLTextField', [], {'blank': 'True'}), + 'project_plan_summary': ('akvo.rsr.fields.ProjectLimitedTextField', [], {}), + 'project_rating': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'project_scope': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '2', 'blank': 'True'}), + 'status': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "'N'", 'max_length': '1', 'db_index': 'True'}), + 'subtitle': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '75'}), + 'sustainability': ('akvo.rsr.fields.ValidXMLTextField', [], {}), + 'sync_owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.Organisation']", 'null': 'True', 'on_delete': 'models.SET_NULL'}), + 'sync_owner_secondary_reporter': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}), + 'target_group': ('akvo.rsr.fields.ProjectLimitedTextField', [], {'blank': 'True'}), + 'title': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '45', 'db_index': 'True'}) + }, + 'rsr.projectcomment': { + 'Meta': {'ordering': "('-id',)", 'object_name': 'ProjectComment'}, + 'comment': ('akvo.rsr.fields.ValidXMLTextField', [], {}), + 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'last_modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['rsr.Project']"}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.User']"}) + }, + 'rsr.projectcondition': { + 'Meta': {'object_name': 'ProjectCondition'}, + 'attached': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'conditions'", 'to': "orm['rsr.Project']"}), + 'text': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}) + }, + 'rsr.projectcontact': { + 'Meta': {'object_name': 'ProjectContact'}, + 'country': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'contacts'", 'null': 'True', 'to': "orm['rsr.Country']"}), + 'department': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'job_title': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'mailing_address': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'organisation': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'person_name': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'contacts'", 'to': "orm['rsr.Project']"}), + 'state': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'telephone': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '15', 'blank': 'True'}), + 'type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}), + 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}) + }, + 'rsr.projectdocument': { + 'Meta': {'ordering': "['-id']", 'object_name': 'ProjectDocument'}, + 'category': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '3', 'blank': 'True'}), + 'document': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'blank': 'True'}), + 'format': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '75', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'language': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '2', 'blank': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'documents'", 'to': "orm['rsr.Project']"}), + 'title': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'title_language': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '2', 'blank': 'True'}), + 'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}) + }, + 'rsr.projectlocation': { + 'Meta': {'ordering': "['id']", 'object_name': 'ProjectLocation'}, + 'activity_description': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'address_1': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'address_2': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'administrative_code': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '25', 'blank': 'True'}), + 'administrative_level': ('django.db.models.fields.PositiveSmallIntegerField', [], {'max_length': '1', 'null': 'True', 'blank': 'True'}), + 'administrative_vocabulary': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '2', 'blank': 'True'}), + 'city': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.Country']"}), + 'description': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'exactness': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}), + 'feature_designation': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '5', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'latitude': ('akvo.rsr.fields.LatitudeField', [], {'default': '0', 'db_index': 'True'}), + 'location_class': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}), + 'location_code': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '25', 'blank': 'True'}), + 'location_reach': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}), + 'location_target': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'locations'", 'null': 'True', 'to': "orm['rsr.Project']"}), + 'longitude': ('akvo.rsr.fields.LongitudeField', [], {'default': '0', 'db_index': 'True'}), + 'name': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'postcode': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '10', 'blank': 'True'}), + 'reference': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}), + 'state': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'vocabulary': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '2', 'blank': 'True'}) + }, + 'rsr.projectupdate': { + 'Meta': {'ordering': "['-id']", 'object_name': 'ProjectUpdate'}, + 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'language': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "'en'", 'max_length': '2'}), + 'last_modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + 'notes': ('akvo.rsr.fields.ValidXMLTextField', [], {'default': "''", 'blank': 'True'}), + 'photo': ('sorl.thumbnail.fields.ImageField', [], {'max_length': '100', 'blank': 'True'}), + 'photo_caption': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '75', 'blank': 'True'}), + 'photo_credit': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '25', 'blank': 'True'}), + 'primary_location': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.ProjectUpdateLocation']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'project_updates'", 'to': "orm['rsr.Project']"}), + 'text': ('akvo.rsr.fields.ValidXMLTextField', [], {'blank': 'True'}), + 'title': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'db_index': 'True'}), + 'update_method': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "'W'", 'max_length': '1', 'db_index': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.User']"}), + 'user_agent': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "''", 'max_length': '200', 'blank': 'True'}), + 'uuid': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "''", 'max_length': '40', 'db_index': 'True', 'blank': 'True'}), + 'video': ('embed_video.fields.EmbedVideoField', [], {'max_length': '200', 'blank': 'True'}), + 'video_caption': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '75', 'blank': 'True'}), + 'video_credit': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '25', 'blank': 'True'}) + }, + 'rsr.projectupdatelocation': { + 'Meta': {'ordering': "['id']", 'object_name': 'ProjectUpdateLocation'}, + 'address_1': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'address_2': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'city': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'country': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rsr.Country']", 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'latitude': ('akvo.rsr.fields.LatitudeField', [], {'default': '0', 'db_index': 'True'}), + 'location_target': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'locations'", 'null': 'True', 'to': "orm['rsr.ProjectUpdate']"}), + 'longitude': ('akvo.rsr.fields.LongitudeField', [], {'default': '0', 'db_index': 'True'}), + 'postcode': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '10', 'blank': 'True'}), + 'state': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}) + }, + 'rsr.publishingstatus': { + 'Meta': {'ordering': "('-status', 'project')", 'object_name': 'PublishingStatus'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'project': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['rsr.Project']", 'unique': 'True'}), + 'status': ('akvo.rsr.fields.ValidXMLCharField', [], {'default': "'unpublished'", 'max_length': '30'}) + }, + 'rsr.recipientcountry': { + 'Meta': {'object_name': 'RecipientCountry'}, + 'country': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '2', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'percentage': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '4', 'decimal_places': '1', 'blank': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'recipient_countries'", 'to': "orm['rsr.Project']"}), + 'text': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}) + }, + 'rsr.recipientregion': { + 'Meta': {'object_name': 'RecipientRegion'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'percentage': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '4', 'decimal_places': '1', 'blank': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'recipient_regions'", 'to': "orm['rsr.Project']"}), + 'region': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '3', 'blank': 'True'}), + 'region_vocabulary': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}), + 'text': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}) + }, + 'rsr.relatedproject': { + 'Meta': {'ordering': "['project']", 'object_name': 'RelatedProject'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'related_projects'", 'to': "orm['rsr.Project']"}), + 'related_project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'related_to_projects'", 'to': "orm['rsr.Project']"}), + 'relation': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1'}) + }, + 'rsr.result': { + 'Meta': {'object_name': 'Result'}, + 'aggregation_status': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}), + 'description': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'description_type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'results'", 'to': "orm['rsr.Project']"}), + 'title': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}) + }, + 'rsr.sector': { + 'Meta': {'object_name': 'Sector'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'percentage': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '4', 'decimal_places': '1', 'blank': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'sectors'", 'to': "orm['rsr.Project']"}), + 'sector_code': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '5', 'blank': 'True'}), + 'text': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'vocabulary': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '5', 'blank': 'True'}) + }, + 'rsr.transaction': { + 'Meta': {'object_name': 'Transaction'}, + 'aid_type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '3', 'blank': 'True'}), + 'aid_type_text': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'currency': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '3', 'blank': 'True'}), + 'description': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '255', 'blank': 'True'}), + 'disbursement_channel': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}), + 'disbursement_channel_text': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'finance_type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '3', 'blank': 'True'}), + 'finance_type_text': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'flow_type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '2', 'blank': 'True'}), + 'flow_type_text': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'project': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'transactions'", 'to': "orm['rsr.Project']"}), + 'provider_organisation': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'provider_organisation_activity': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}), + 'provider_organisation_ref': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}), + 'receiver_organisation': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'receiver_organisation_activity': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}), + 'receiver_organisation_ref': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '50', 'blank': 'True'}), + 'reference': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '25', 'blank': 'True'}), + 'tied_status': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '1', 'blank': 'True'}), + 'tied_status_text': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'transaction_date': ('django.db.models.fields.DateField', [], {'blank': 'True'}), + 'transaction_type': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '2', 'blank': 'True'}), + 'transaction_type_text': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '100', 'blank': 'True'}), + 'value': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '11', 'decimal_places': '1', 'blank': 'True'}), + 'value_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}) + }, + 'rsr.user': { + 'Meta': {'ordering': "['username']", 'object_name': 'User'}, + 'avatar': ('sorl.thumbnail.fields.ImageField', [], {'max_length': '100', 'null': 'True'}), + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '254'}), + 'first_name': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '30', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_admin': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('akvo.rsr.fields.ValidXMLCharField', [], {'max_length': '30', 'blank': 'True'}), + 'notes': ('akvo.rsr.fields.ValidXMLTextField', [], {'default': "''", 'blank': 'True'}), + 'organisations': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'users'", 'blank': 'True', 'through': "orm['rsr.Employment']", 'to': "orm['rsr.Organisation']"}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}), + 'username': ('akvo.rsr.fields.ValidXMLCharField', [], {'unique': 'True', 'max_length': '254'}) + } + } + + complete_apps = ['rsr'] \ No newline at end of file diff --git a/akvo/rsr/models/__init__.py b/akvo/rsr/models/__init__.py index d7f95062f1..ab98d0f604 100644 --- a/akvo/rsr/models/__init__.py +++ b/akvo/rsr/models/__init__.py @@ -222,6 +222,10 @@ rules.add_perm('rsr.change_legacydata', is_rsr_admin | is_org_admin | is_org_project_editor) rules.add_perm('rsr.delete_legacydata', is_rsr_admin | is_org_admin | is_org_project_editor) +rules.add_perm('rsr.add_projectdocument', is_rsr_admin | is_org_admin | is_org_project_editor) +rules.add_perm('rsr.change_projectdocument', is_rsr_admin | is_org_admin | is_org_project_editor) +rules.add_perm('rsr.delete_projectdocument', is_rsr_admin | is_org_admin | is_org_project_editor) + rules.add_perm('rsr.add_organisation', is_rsr_admin) rules.add_perm('rsr.change_organisation', is_rsr_admin | is_org_admin) diff --git a/akvo/rsr/models/budget_item.py b/akvo/rsr/models/budget_item.py index c24cadf163..8a719ad3cb 100644 --- a/akvo/rsr/models/budget_item.py +++ b/akvo/rsr/models/budget_item.py @@ -34,7 +34,10 @@ class BudgetItem(models.Model): OTHER_LABELS = [u'other 1', u'other 2', u'other 3'] project = models.ForeignKey('Project', verbose_name=_(u'project'), related_name='budget_items') - label = models.ForeignKey(BudgetItemLabel, verbose_name=_(u'label'),) + label = models.ForeignKey( + BudgetItemLabel, verbose_name=_(u'project budget'), + help_text=u'Select the budget item. Use the \'Other\' fields to custom budget items.' + ) other_extra = ValidXMLCharField( max_length=20, null=True, blank=True, verbose_name=_(u'"Other" labels extra info'), help_text=_(u'Extra information about the exact nature of an "other" budget item.'), @@ -43,8 +46,10 @@ class BudgetItem(models.Model): amount = models.DecimalField(_(u'amount'), max_digits=10, decimal_places=2,) # Extra IATI fields - type = ValidXMLCharField(_(u'budget type'), blank=True, max_length=1, - choices=codelist_choices(BudgetType)) + type = ValidXMLCharField( + _(u'budget type'), blank=True, max_length=1, choices=codelist_choices(BudgetType), + help_text=u'Select whether this is a planned or actual budget of the project.' + ) period_start = models.DateField(_(u'period start'), null=True, blank=True) period_start_text = ValidXMLCharField(_(u'period start label'), max_length=50, blank=True) period_end = models.DateField(_(u'period end'), null=True, blank=True) diff --git a/akvo/rsr/models/indicator.py b/akvo/rsr/models/indicator.py index efc9f7a46b..378f2f713c 100644 --- a/akvo/rsr/models/indicator.py +++ b/akvo/rsr/models/indicator.py @@ -15,18 +15,35 @@ class Indicator(models.Model): result = models.ForeignKey('Result', verbose_name=_(u'result'), related_name='indicators') - title = ValidXMLCharField(_(u'title'), blank=True, max_length=255, help_text=_(u'(max 255 characters)')) - measure = ValidXMLCharField(_(u'measure'), blank=True, max_length=1, choices=codelist_choices(IndicatorMeasure)) - ascending = models.NullBooleanField(_(u'ascending'), blank=True) - description = ValidXMLCharField(_(u'description'), blank=True, max_length=255, help_text=_(u'(max 255 characters)')) - description_type = ValidXMLCharField(_(u'description type'), blank=True, max_length=1, - choices=codelist_choices(DescriptionType)) - baseline_year = models.PositiveIntegerField(_(u'baseline year'), blank=True, null=True, max_length=4) + title = ValidXMLCharField( + _(u'title'), blank=True, max_length=255, + help_text=_(u'Enter the title for the indicator from the project result. (255 characters)') + ) + measure = ValidXMLCharField( + _(u'measure'), blank=True, max_length=1, choices=codelist_choices(IndicatorMeasure), + help_text=_(u'Select whether the indicator counts units or evaluates a percentage.') + ) + ascending = models.NullBooleanField( + _(u'ascending'), blank=True, + help_text=_(u'Is the aim of the project to increase or decrease the value of the indicator?')) + description = ValidXMLCharField( + _(u'description'), blank=True, max_length=255, + help_text=_(u'You can further define the indicator here. (255 characters)') + ) + description_type = ValidXMLCharField( + _(u'description type'), blank=True, max_length=1, choices=codelist_choices(DescriptionType) + ) + baseline_year = models.PositiveIntegerField( + _(u'baseline year'), blank=True, null=True, max_length=4, + help_text=_(u'Enter the year that the baseline information was obtained.') + ) baseline_value = ValidXMLCharField( - _(u'baseline value'), blank=True, max_length=50, help_text=_(u'(max 50 characters)') + _(u'baseline value'), blank=True, max_length=50, + help_text=_(u'Enter the value of the baseline indicator. (50 characters)') ) baseline_comment = ValidXMLCharField( - _(u'baseline comment'), blank=True, max_length=255, help_text=_(u'(max 255 characters)') + _(u'baseline comment'), blank=True, max_length=255, + help_text=_(u'You can further define the baseline here. (255 characters)') ) def __unicode__(self): @@ -43,15 +60,29 @@ class Meta: class IndicatorPeriod(models.Model): indicator = models.ForeignKey(Indicator, verbose_name=_(u'indicator'), related_name='periods') - period_start = models.DateField(_(u'period start'), null=True, blank=True) - period_end = models.DateField(_(u'period end'), null=True, blank=True) - target_value = ValidXMLCharField(_(u'target value'), blank=True, max_length=50, help_text=_(u'(max 50 characters)')) + period_start = models.DateField( + _(u'period start'), null=True, blank=True, + help_text=_(u'Enter the start date of the period the indicator is being tracked within.') + ) + period_end = models.DateField( + _(u'period end'), null=True, blank=True, + help_text=_(u'Enter the end date of the period the indicator is being tracked within.') + ) + target_value = ValidXMLCharField( + _(u'target value'), blank=True, max_length=50, + help_text=_(u'Enter the value of the indicator that the project is intending to reach. (50 characters)') + ) target_comment = ValidXMLCharField( - _(u'target comment'), blank=True, max_length=255, help_text=_(u'(max 255 characters)') + _(u'target comment'), blank=True, max_length=255, + help_text=_(u'You can comment on the target value here. (255 characters)') + ) + actual_value = ValidXMLCharField( + _(u'actual value'), blank=True, max_length=50, + help_text=_(u'Enter the value of the indicator that the project has reached. (50 characters)') ) - actual_value = ValidXMLCharField(_(u'actual value'), blank=True, max_length=50, help_text=_(u'(max 50 characters)')) actual_comment = ValidXMLCharField( - _(u'actual comment'), blank=True, max_length=255, help_text=_(u'(max 255 characters)') + _(u'actual comment'), blank=True, max_length=255, + help_text=_(u'You can comment on the actual value here. (255 characters)') ) def __unicode__(self): diff --git a/akvo/rsr/models/location.py b/akvo/rsr/models/location.py index ebfbd70507..117570b7fd 100644 --- a/akvo/rsr/models/location.py +++ b/akvo/rsr/models/location.py @@ -19,11 +19,23 @@ class BaseLocation(models.Model): u'to get the decimal coordinates of your project.') latitude = LatitudeField(_(u'latitude'), db_index=True, default=0, help_text=_help_text) longitude = LongitudeField(_(u'longitude'), db_index=True, default=0, help_text=_help_text) - city = ValidXMLCharField(_(u'city'), blank=True, max_length=255, help_text=_('(255 characters).')) - state = ValidXMLCharField(_(u'state'), blank=True, max_length=255, help_text=_('(255 characters).')) - address_1 = ValidXMLCharField(_(u'address 1'), max_length=255, blank=True, help_text=_('(255 characters).')) - address_2 = ValidXMLCharField(_(u'address 2'), max_length=255, blank=True, help_text=_('(255 characters).')) - postcode = ValidXMLCharField(_(u'postcode'), max_length=10, blank=True, help_text=_('(10 characters).')) + city = ValidXMLCharField( + _(u'city'), blank=True, max_length=255, help_text=_(u'Select the city. (255 characters)') + ) + state = ValidXMLCharField( + _(u'state'), blank=True, max_length=255, help_text=_(u'Select the state. (255 characters)') + ) + address_1 = ValidXMLCharField( + _(u'address 1'), max_length=255, blank=True, + help_text=_(u'Enter the street and house number. (255 characters)') + ) + address_2 = ValidXMLCharField( + _(u'address 2'), max_length=255, blank=True, + help_text=_(u'Add additional address information, if needed. (255 characters)') + ) + postcode = ValidXMLCharField( + _(u'postal code'), max_length=10, blank=True, help_text=_(u'Enter the postal/area code. (10 characters)') + ) def delete(self, *args, **kwargs): super(BaseLocation, self).delete(*args, **kwargs) @@ -63,7 +75,9 @@ class OrganisationLocation(BaseLocation): class ProjectLocation(BaseLocation): # the project that's related to this location location_target = models.ForeignKey('Project', null=True, related_name='locations') - country = models.ForeignKey('Country', verbose_name=_(u'country')) + country = models.ForeignKey( + 'Country', verbose_name=_(u'country'), help_text=_(u'Select the country.') + ) # Extra IATI fields reference = ValidXMLCharField(_(u'reference'), blank=True, max_length=50) diff --git a/akvo/rsr/models/partner_site.py b/akvo/rsr/models/partner_site.py index 9b33b961c8..f174784181 100644 --- a/akvo/rsr/models/partner_site.py +++ b/akvo/rsr/models/partner_site.py @@ -147,7 +147,7 @@ def logo(self): @property def return_url(self): - return self.custom_return_url or self.organisation.url + return self.custom_return_url or "/" @property def stylesheet(self): diff --git a/akvo/rsr/models/partnership.py b/akvo/rsr/models/partnership.py index cc75a1d817..238bb06eb5 100644 --- a/akvo/rsr/models/partnership.py +++ b/akvo/rsr/models/partnership.py @@ -31,21 +31,27 @@ class Partnership(models.Model): PARTNER_TYPE_EXTRAS = zip(PARTNER_TYPE_EXTRAS_LIST, PARTNER_TYPE_EXTRA_LABELS) - organisation = models.ForeignKey('Organisation', verbose_name=_(u'organisation'), related_name='partnerships') + organisation = models.ForeignKey( + 'Organisation', verbose_name=_(u'organisation'), related_name='partnerships', + help_text=_(u'Select an organisation that is taking an active role in the project.')) project = models.ForeignKey('Project', verbose_name=_(u'project'), related_name='partnerships') - partner_type = ValidXMLCharField(_(u'partner type'), max_length=8, db_index=True, choices=PARTNER_TYPES,) + partner_type = ValidXMLCharField( + _(u'partner type'), max_length=8, db_index=True, choices=PARTNER_TYPES, + help_text=_(u'Select the role that the organisation is taking within the project.')) funding_amount = models.DecimalField( - _(u'funding amount'), max_digits=10, decimal_places=2, - blank=True, null=True, db_index=True + _(u'funding amount'), max_digits=10, decimal_places=2, blank=True, null=True, db_index=True, + help_text=_(u'The funding amount of the partner.
' + u'Note that it\'s only possible to indicate a funding amount for funding partners.') ) partner_type_extra = ValidXMLCharField( - _(u'partner type extra'), max_length=30, - blank=True, null=True, choices=PARTNER_TYPE_EXTRAS, + _(u'partner type extra'), max_length=30, blank=True, null=True, choices=PARTNER_TYPE_EXTRAS, + help_text=_(u'RSR specific partner type.') ) iati_activity_id = ValidXMLCharField(_(u'IATI activity ID'), max_length=75, blank=True, null=True, db_index=True,) internal_id = ValidXMLCharField( _(u'Internal ID'), max_length=75, blank=True, null=True, db_index=True, - help_text=_(u"The organisation's internal ID for the project"), + help_text=_(u'This field can be used to indicate an internal identifier that is used by the organisation ' + u'for this project. (75 characters)') ) iati_url = models.URLField( blank=True, diff --git a/akvo/rsr/models/project.py b/akvo/rsr/models/project.py index 9892e30ce7..20a6f83477 100644 --- a/akvo/rsr/models/project.py +++ b/akvo/rsr/models/project.py @@ -81,109 +81,153 @@ def image_path(instance, file_name): title = ValidXMLCharField( _(u'title'), max_length=45, db_index=True, - help_text=_(u'A short descriptive title for your project (45 characters).') + help_text=_(u'The title and subtitle fields are the newspaper headline for your project. Use them to attract ' + u'attention to what you are doing. (45 characters)') ) subtitle = ValidXMLCharField( _(u'subtitle'), max_length=75, - help_text=_(u'A subtitle with more information on the project (75 characters).') + help_text=_(u'The title and subtitle fields are the newspaper headline for your project. Use them to attract ' + u'attention to what you are doing. (75 characters)') ) status = ValidXMLCharField( _(u'status'), max_length=1, choices=STATUSES, db_index=True, default=STATUS_NONE, - help_text=_(u'Current project state.') + help_text=_(u'There are four different project statuses:
' + u'1) Needs funding: projects that still need funding.
' + u'2) Active: projects that started with the implementation phase.
' + u'3) Completed: projects that have been finished.
' + u'4) Cancelled: projects that were never fully implemented or carried out.') ) - categories = models.ManyToManyField('Category', verbose_name=_(u'categories'), related_name='projects',) + categories = models.ManyToManyField('Category', verbose_name=_(u'categories'), related_name='projects', blank=True) partners = models.ManyToManyField( 'Organisation', verbose_name=_(u'partners'), through=Partnership, related_name='projects', ) project_plan_summary = ProjectLimitedTextField( _(u'summary of project plan'), max_length=400, - help_text=_(u'Briefly summarize the project (400 characters).') + help_text=_(u'Enter a brief summary. The summary should explain: (400 characters)
' + u'- Why the project is being carried out;
' + u'- Where it is taking place;
' + u'- Who will benefit and/or participate;
' + u'- What it specifically hopes to accomplish;
' + u'- How those specific goals will be reached') ) - current_image = ImageField(_('project photo'), - blank=True, - upload_to=image_path, - help_text=_( - u'The project image looks best in landscape format (4:3 width:height ratio), ' - u'and should be less than 3.5 mb in size.' - ), + current_image = ImageField( + _('project photo'), blank=True, upload_to=image_path, + help_text=_(u'Add your project photo here. You can only add one photo. If you have more, you can add them ' + u'via RSR updates when your project is published.
' + u'The photo should be about 1 MB in size, and should preferably be in JPG format.'), ) current_image_caption = ValidXMLCharField( _(u'photo caption'), blank=True, max_length=50, - help_text=_(u'Enter a caption for your project picture (50 characters).') + help_text=_(u'Briefly describe what is happening in the photo. (50 characters)') ) current_image_credit = ValidXMLCharField( _(u'photo credit'), blank=True, max_length=50, - help_text=_(u'Enter a credit for your project picture (50 characters).') + help_text=_(u'Who took the photo? (50 characters)') ) goals_overview = ProjectLimitedTextField( - _(u'overview of goals'), max_length=600, - help_text=_(u'Describe what the project hopes to accomplish (600 characters).') + _(u'goals overview'), max_length=600, + help_text=_(u'Provide a brief description of the overall project goals. (600 characters)') ) current_status = ProjectLimitedTextField( - _(u'current status'), blank=True, max_length=600, - help_text=_(u'Description of current phase of project. (600 characters).') + _(u'current situation'), blank=True, max_length=600, + help_text=_(u'Describe the current situation of the project: (600 characters)
' + u'- What is the starting point of the project?
' + u'- What is happening at the moment?') ) project_plan = ValidXMLTextField( _(u'project plan'), blank=True, help_text=_( - u'Detailed information about the project and plans for implementing: ' - u'the what, how, who and when. (unlimited).' + u'This should include detailed information about the project and plans for implementing: ' + u'the what, how, who and when. (unlimited)' ) ) sustainability = ValidXMLTextField( _(u'sustainability'), - help_text=_(u'Describe plans for sustaining/maintaining results after implementation is complete (unlimited).') + help_text=_(u'Describe plans for sustaining/maintaining results after implementation is complete. (unlimited)') ) background = ProjectLimitedTextField( _(u'background'), blank=True, max_length=1000, help_text=_( - u'Relevant background information, including geographic, political, environmental, social and/or cultural ' - u'issues (1000 characters).' + u'Include relevant background information, including geographic, political, environmental, social and/or ' + u'cultural issues. (1000 characters)' ) ) target_group = ProjectLimitedTextField( _(u'target group'), blank=True, max_length=600, help_text=_( - u'Information about the people, organisations or resources that are being impacted by this project ' - u'(600 characters).' + u'This should include information about the people, organisations or resources that are being impacted by ' + u'this project. (600 characters)' ) ) # project meta info language = ValidXMLCharField( - max_length=2, choices=settings.LANGUAGES, default='en', help_text=u'The main language of the project' + max_length=2, choices=settings.LANGUAGES, default='en', help_text=u'The main language of the project.' ) project_rating = models.IntegerField(_(u'project rating'), default=0) notes = ValidXMLTextField(_(u'notes'), blank=True, default='', help_text=_(u'(Unlimited number of characters).')) keywords = models.ManyToManyField('Keyword', verbose_name=_(u'keywords'), related_name='projects', blank=True) # budget - currency = ValidXMLCharField(_(u'currency'), choices=CURRENCY_CHOICES, max_length=3, default='EUR') - date_start_planned = models.DateField(_(u'start date (planned)'), default=date.today) - date_start_actual = models.DateField(_(u'start date (actual)'), null=True, blank=True) - date_end_planned = models.DateField(_(u'end date (planned)'), null=True, blank=True) - date_end_actual = models.DateField(_(u'end date (actual)'), null=True, blank=True) + currency = ValidXMLCharField( + _(u'currency'), choices=CURRENCY_CHOICES, max_length=3, default='EUR', + help_text=_(u'The default currency for this project. Used in all financial aspects of the project.') + ) + date_start_planned = models.DateField( + _(u'start date (planned)'), default=date.today, help_text=_(u'Enter the planned start date of the project.') + ) + date_start_actual = models.DateField( + _(u'start date (actual)'), null=True, blank=True, help_text=_(u'Enter the actual start date of the project.') + ) + date_end_planned = models.DateField( + _(u'end date (planned)'), null=True, blank=True, help_text=_(u'Enter the planned end date of the project.') + ) + date_end_actual = models.DateField( + _(u'end date (actual)'), null=True, blank=True, help_text=_(u'Enter the actual end date of the project.') + ) primary_location = models.ForeignKey('ProjectLocation', null=True, on_delete=models.SET_NULL) # donate button donate_button = models.BooleanField( - _(u'donate button'), default=True, help_text=(u'Show donate button for this project.') + _(u'donate button'), default=True, + help_text=_(u'Show donate button for this project. If not selected, it is not possible to donate to this ' + u'project and the donate button will not be shown.') ) # synced projects - sync_owner = models.ForeignKey('Organisation', null=True, on_delete=models.SET_NULL) - sync_owner_secondary_reporter = models.NullBooleanField(_(u'secondary reporter'),) + sync_owner = models.ForeignKey( + 'Organisation', verbose_name=_(u'reporting organisation'), null=True, on_delete=models.SET_NULL, + help_text=_(u'Select the reporting organisation of the project.') + ) + sync_owner_secondary_reporter = models.NullBooleanField( + _(u'secondary reporter'), + help_text=_(u'This indicates whether the reporting organisation is a secondary publisher: publishing data for ' + u'which it is not directly responsible.') + ) # extra IATI fields - iati_activity_id = ValidXMLCharField(_(u'IATI activity ID'), max_length=100, blank=True, db_index=True,) + iati_activity_id = ValidXMLCharField( + _(u'IATI Project Identifier'), max_length=100, blank=True, db_index=True, + help_text=_(u'This should be the official unique IATI Identifier for the project. The identifier consists of ' + u'the IATI organisation identifier and the (organisations internal) project identifier, e.g. ' + u'NL-KVK-31156201-TZ1234. (100 characters)
' + u'Note that \'projects\' in this form are the same as \'activities\' in IATI.
' + u'How to create') + ) hierarchy = models.PositiveIntegerField( - _(u'hierarchy'), null=True, blank=True, max_length=1, choices=HIERARCHY_OPTIONS + _(u'hierarchy'), null=True, blank=True, max_length=1, choices=HIERARCHY_OPTIONS, + help_text=_(u'If you are reporting multiple levels of projects in RSR, you can specify whether this is a core ' + u'or sub-project here.
' + u'So for example: is this project part of a larger project or programme.') + ) + project_scope = ValidXMLCharField( + _(u'project scope'), blank=True, max_length=2, choices=codelist_choices(ActivityScope), + help_text=_(u'Select the geographical scope of the project.') ) - project_scope = ValidXMLCharField(_(u'project scope'), blank=True, max_length=2, - choices=codelist_choices(ActivityScope)) capital_spend_percentage = models.DecimalField( _(u'capital spend percentage'), blank=True, null=True, max_digits=4, decimal_places=1, validators=[MaxValueValidator(100), MinValueValidator(0)] @@ -708,9 +752,16 @@ def iati_default_aid_type(self): def iati_default_tied_status(self): return codelist_value(TiedStatus, self, 'default_tied_status') + def sector_categories_codes(self): + from .sector import Sector + sector_categories = Sector.objects.filter(project=self, vocabulary='2') | \ + Sector.objects.filter(project=self, vocabulary='DAC-3') + return [sector.iati_sector_codes for sector in sector_categories] + def sector_categories(self): from .sector import Sector - sector_categories = Sector.objects.filter(project=self, vocabulary='2') + sector_categories = Sector.objects.filter(project=self, vocabulary='2') | \ + Sector.objects.filter(project=self, vocabulary='DAC-3') return [sector.iati_sector for sector in sector_categories] def has_relations(self): diff --git a/akvo/rsr/models/project_contact.py b/akvo/rsr/models/project_contact.py index 4c386660b3..11081aa4ad 100644 --- a/akvo/rsr/models/project_contact.py +++ b/akvo/rsr/models/project_contact.py @@ -17,17 +17,31 @@ class ProjectContact(models.Model): project = models.ForeignKey('Project', verbose_name=u'project', related_name='contacts') type = ValidXMLCharField(_(u'type'), blank=True, max_length=1, choices=codelist_choices(ContactType)) - person_name = ValidXMLCharField(_(u'name'), blank=True, max_length=100, help_text=_('(100 characters)')) - email = models.EmailField(_(u'email'), blank=True) - job_title = ValidXMLCharField(_(u'job title'), max_length=100, blank=True, help_text=_('(100 characters)')) + person_name = ValidXMLCharField( + _(u'name'), blank=True, max_length=100, + help_text=_(u'This should be a contact person for the project. (100 characters)') + ) + email = models.EmailField( + _(u'email'), blank=True, + help_text=_(u'This should be the email address for the contact person of the project.') + ) + job_title = ValidXMLCharField( + _(u'job title'), max_length=100, blank=True, help_text=_(u'Job title of the contact. (100 characters)') + ) + organisation = ValidXMLCharField( + _(u'organisation'), blank=True, max_length=100, + help_text=_(u'The organisation that the contact person works for - this may differ from the ' + u'reporting organisation of the project. (100 characters)') + ) + telephone = ValidXMLCharField( + _(u'telephone'), blank=True, max_length=15, + help_text=_(u'Contact number for the contact. (15 characters)')) mailing_address = ValidXMLCharField( - _(u'mailing address'), max_length=255, blank=True, help_text=_('(255 characters).') + _(u'address'), max_length=255, blank=True, help_text=_(u'Address of the contact. (255 characters)') ) - state = ValidXMLCharField(_(u'state'), blank=True, max_length=100, help_text=_('(100 characters)')) + state = ValidXMLCharField(_(u'state'), blank=True, max_length=100, help_text=_(u'(100 characters)')) country = models.ForeignKey('Country', blank=True, null=True, verbose_name=u'country', related_name='contacts') - organisation = ValidXMLCharField(_(u'organisation'), blank=True, max_length=100, help_text=_('(100 characters)')) - department = ValidXMLCharField(_(u'department'), blank=True, max_length=100, help_text=_('(100 characters)')) - telephone = ValidXMLCharField(_(u'telephone'), blank=True, max_length=15) + department = ValidXMLCharField(_(u'department'), blank=True, max_length=100, help_text=_(u'(100 characters)')) website = models.URLField(_(u'website'), blank=True) def iati_type(self): @@ -37,3 +51,6 @@ class Meta: app_label = 'rsr' verbose_name = _(u'contact') verbose_name_plural = _(u'contacts') + + def __unicode__(self): + return self.person_name diff --git a/akvo/rsr/models/project_document.py b/akvo/rsr/models/project_document.py index 1fdfec1fb6..d82891e68f 100644 --- a/akvo/rsr/models/project_document.py +++ b/akvo/rsr/models/project_document.py @@ -5,6 +5,7 @@ # For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. +from django.core.exceptions import ValidationError from django.db import models from django.utils.translation import ugettext_lazy as _ @@ -15,21 +16,64 @@ class ProjectDocument(models.Model): + def document_path(self, filename): + return 'db/project/%s/document/%s' % (str(self.project.pk), filename) + project = models.ForeignKey('Project', related_name='documents', verbose_name=_(u'project')) - url = models.URLField(_(u'url')) - format = ValidXMLCharField(_(u'format'), max_length=75, blank=True) - title = ValidXMLCharField(_(u'title'), max_length=100, blank=True) - title_language = ValidXMLCharField(_(u'title language'), max_length=2, blank=True, - choices=codelist_choices(Language)) - category = ValidXMLCharField(_(u'title language'), max_length=3, blank=True, - choices=codelist_choices(DocumentCategory)) - language = ValidXMLCharField(_(u'language'), max_length=2, blank=True, choices=codelist_choices(Language)) + url = models.URLField( + _(u'url'), blank=True, + help_text=_(u'You can indicate an URL of a document of the project. These documents will allow users to ' + u'download and view to gain further insight in the project activities.') + ) + document = models.FileField( + _(u'document'), blank=True, upload_to=document_path, + help_text=_(u'You can upload a document to your project. To upload multiple documents, press the \'Add ' + u'another Project Document\' link.
' + u'These documents will be stored on the RSR server and will be ' + u'publicly available for users to download and view to gain further insight in the project ' + u'activities.') + ) + format = ValidXMLCharField( + _(u'format'), max_length=75, blank=True, + help_text=_(u'Indicate the IATI format code of the document. Full list of IATI ' + u'format codes') + ) + title = ValidXMLCharField( + _(u'title'), max_length=100, blank=True, help_text=_(u'Indicate the document title. (100 characters)') + ) + title_language = ValidXMLCharField( + _(u'title language'), max_length=2, blank=True, choices=codelist_choices(Language), + help_text=_(u'Select the language of the document title.') + ) + category = ValidXMLCharField( + _(u'category'), max_length=3, blank=True, + choices=codelist_choices(DocumentCategory), + help_text=_(u'Select a document category.') + ) + language = ValidXMLCharField( + _(u'language'), max_length=2, blank=True, choices=codelist_choices(Language), + help_text=_(u'Select the language that the document is written in.') + ) def __unicode__(self): return self.title + def clean(self): + # Check if the user has at least uploaded a document or indicated an URL. + if not (self.url or self.document): + raise ValidationError(u'It is required to upload a document or indicate an URL.') + + # Check for non-unicode characters + if self.document: + self.document.name = self.document.name.encode('ascii','ignore') + def show_link(self): - return u'%s' % (self.url, self.title,) + title = self.title if self.title else u'Untitled document' + if self.url: + return u'%s' % (self.url, title,) + else: + return u'%s' % (self.document.url, title,) def iati_category(self): return codelist_value(DocumentCategory, self, 'category') diff --git a/akvo/rsr/models/result.py b/akvo/rsr/models/result.py index dadd284268..a6de3c1f02 100644 --- a/akvo/rsr/models/result.py +++ b/akvo/rsr/models/result.py @@ -16,12 +16,24 @@ class Result(models.Model): project = models.ForeignKey('Project', verbose_name=_(u'project'), related_name='results') - title = ValidXMLCharField(_(u'title'), blank=True, max_length=255, help_text=_(u'(max 255 characters)')) - type = ValidXMLCharField(_(u'type'), blank=True, max_length=1, choices=codelist_choices(ResultType)) + title = ValidXMLCharField( + _(u'title'), blank=True, max_length=255, + help_text=_(u'Enter the title of the result for this project. (255 characters)') + ) + type = ValidXMLCharField( + _(u'type'), blank=True, max_length=1, choices=codelist_choices(ResultType), + help_text=_(u'Select whether the result is an output, outcome or impact. ' + u'Further explanation on result types') + ) aggregation_status = models.NullBooleanField(_(u'aggregation status'), blank=True) - description = ValidXMLCharField(_(u'description'), blank=True, max_length=255, help_text=_(u'(max 255 characters)')) - description_type = ValidXMLCharField(_(u'description type'), blank=True, max_length=1, - choices=codelist_choices(DescriptionType)) + description = ValidXMLCharField( + _(u'description'), blank=True, max_length=255, + help_text=_(u'You can provide further information of the result here. (255 characters)') + ) + description_type = ValidXMLCharField( + _(u'description type'), blank=True, max_length=1, choices=codelist_choices(DescriptionType) + ) def __unicode__(self): return self.title diff --git a/akvo/rsr/models/sector.py b/akvo/rsr/models/sector.py index 3b78baf36f..7749d01262 100644 --- a/akvo/rsr/models/sector.py +++ b/akvo/rsr/models/sector.py @@ -6,6 +6,8 @@ from django.db import models +from django.db.models.signals import post_save +from django.dispatch import receiver from django.core.validators import MaxValueValidator, MinValueValidator from django.utils.translation import ugettext_lazy as _ @@ -18,25 +20,43 @@ class Sector(models.Model): project = models.ForeignKey('Project', verbose_name=_(u'project'), related_name='sectors') - sector_code = ValidXMLCharField(_(u'sector'), blank=True, max_length=5, - choices=codelist_choices(codelist_models.SectorCategory) + - codelist_choices(codelist_models.Sector)) + sector_code = ValidXMLCharField( + _(u'sector code'), blank=True, max_length=5, + help_text=_(u'Enter the sector code of the sectors that the project is working within.
' + u'See these lists for the DAC-5 and DAC-3 sector codes:
' + u'- DAC-5 sector codes' + u'
' + u'- DAC-3 sector ' + u'codes') + ) text = ValidXMLCharField(_(u'description'), blank=True, max_length=100, help_text=_(u'(max 100 characters)')) vocabulary = ValidXMLCharField( _(u'vocabulary'), blank=True, max_length=5, choices=codelist_choices(codelist_models.SectorVocabulary) ) percentage = models.DecimalField( - _(u'percentage'), blank=True, null=True, max_digits=4, decimal_places=1, - validators=[MaxValueValidator(100), MinValueValidator(0)] + _(u'sector percentage'), blank=True, null=True, max_digits=4, decimal_places=1, + validators=[MaxValueValidator(100), MinValueValidator(0)], + help_text=_(u'You can set the percentage of the project that is relevant for this sector here.') ) + def __unicode__(self): + return self.iati_sector() + + def iati_sector_codes(self): + if self.sector_code and (self.vocabulary == '1' or self.vocabulary == 'DAC'): + return self.sector_code, codelist_value(codelist_models.Sector, self, 'sector_code') + elif self.sector_code and (self.vocabulary == '2' or self.vocabulary == 'DAC-3'): + return self.sector_code, codelist_value(codelist_models.SectorCategory, self, 'sector_code') + else: + return self.sector_code, self.sector_code + def iati_sector(self): if self.sector_code and (self.vocabulary == '1' or self.vocabulary == 'DAC'): return codelist_value(codelist_models.Sector, self, 'sector_code') elif self.sector_code and (self.vocabulary == '2' or self.vocabulary == 'DAC-3'): return codelist_value(codelist_models.SectorCategory, self, 'sector_code') else: - return "" + return self.sector_code def iati_vocabulary(self): return codelist_value(codelist_models.SectorVocabulary, self, 'vocabulary') @@ -45,3 +65,14 @@ class Meta: app_label = 'rsr' verbose_name = _(u'sector') verbose_name_plural = _(u'sectors') + +@receiver(post_save, sender=Sector) +def update_vocabulary(sender, **kwargs): + "Updates the vocabulary if not specified." + sector = kwargs['instance'] + if not sector.vocabulary and sector.sector_code: + if len(sector.sector_code) == 3: + sector.vocabulary = 'DAC-3' + elif len(sector.sector_code) == 5: + sector.vocabulary = 'DAC' + sector.save() diff --git a/akvo/rsr/models/transaction.py b/akvo/rsr/models/transaction.py index ac9982fde0..c0c87cbf98 100644 --- a/akvo/rsr/models/transaction.py +++ b/akvo/rsr/models/transaction.py @@ -17,12 +17,20 @@ class Transaction(models.Model): project = models.ForeignKey('Project', verbose_name=_(u'project'), related_name='transactions') - reference = ValidXMLCharField(_(u'reference'), blank=True, max_length=25) - aid_type = ValidXMLCharField(_(u'aid type'), blank=True, max_length=3, choices=codelist_choices(AidType)) + reference = ValidXMLCharField( + _(u'reference'), blank=True, max_length=25, + help_text=_(u'Enter a reference for the transaction. (25 characters)') + ) + aid_type = ValidXMLCharField( + _(u'aid type'), blank=True, max_length=3, choices=codelist_choices(AidType) + ) aid_type_text = ValidXMLCharField( _(u'aid type text'), max_length=100, blank=True, help_text=_(u'(max 100 characters)') ) - description = ValidXMLCharField(_(u'description'), max_length=255, blank=True, help_text=_(u'(max 255 characters)')) + description = ValidXMLCharField( + _(u'description'), max_length=255, blank=True, + help_text=_(u'Enter a description for the transaction. (255 characters)') + ) disbursement_channel = ValidXMLCharField( _(u'disbursement channel'), blank=True, max_length=1, choices=codelist_choices(DisbursementChannel) ) @@ -43,14 +51,21 @@ class Transaction(models.Model): tied_status_text = ValidXMLCharField( _(u'tied status text'), max_length=100, blank=True, help_text=_(u'(max 100 characters)') ) - transaction_date = models.DateField(_(u'transaction date'), blank=True) + transaction_date = models.DateField( + _(u'transaction date'), blank=True, + help_text=u'Enter the financial reporting date that the transaction was/will be undertaken.' + ) transaction_type = ValidXMLCharField( - _(u'transaction type'), blank=True, max_length=2, choices=codelist_choices(TransactionType) + _(u'transaction type'), blank=True, max_length=2, choices=codelist_choices(TransactionType), + help_text=_(u'Select the type of transaction from the list.') ) transaction_type_text = ValidXMLCharField( _(u'transaction type text'), max_length=100, blank=True, help_text=_(u'(max 100 characters)') ) - value = models.DecimalField(_(u'value'), blank=True, null=True, max_digits=11, decimal_places=1) + value = models.DecimalField( + _(u'value'), blank=True, null=True, max_digits=11, decimal_places=1, + help_text=u'Enter the transaction amount.' + ) value_date = models.DateField(_(u'value date'), blank=True, null=True) currency = ValidXMLCharField(_(u'currency'), blank=True, max_length=3, choices=codelist_choices(Currency)) provider_organisation = ValidXMLCharField(_(u'provider organisation'), blank=True, max_length=100) diff --git a/akvo/rsr/static/rsr/v3/css/src/library.scss b/akvo/rsr/static/rsr/v3/css/src/library.scss index 127319e2b6..50c5b9072b 100755 --- a/akvo/rsr/static/rsr/v3/css/src/library.scss +++ b/akvo/rsr/static/rsr/v3/css/src/library.scss @@ -11,7 +11,9 @@ /* Akvo Primary Colours: */ $akvoPurple: rgb(44, 42, 116); /* Akvo Purplish Blue */ -$rsrBlue: rgb(114, 205, 255); +$rsrBlue: rgb(44, 42, 116); + +$rsrBlue2: rgb(114, 205, 255); /* Akvo very light blue */ $flowOrange: rgb(222, 137, 41); /* Akvo Orange / light Brown */ @@ -31,9 +33,12 @@ $akvoLink: rgb(55, 146, 179); /* Akvo black */ $akvoBlack: rgb(32, 32, 36); -$anchorLink: darken($rsrBlue,20%); $anchorLinkHeader: rgb(102, 204, 255); -$anchorLinkHover: complement($rsrBlue); +$anchorLink: darken($anchorLinkHeader, 20%); + +$veryLightOrange: complement($rsrBlue2); + +$anchorLinkHover: complement($anchorLink); $btnColor :rgb(78, 193, 234); $rsrGreen: rgb(0, 167, 157); @@ -59,7 +64,7 @@ $secondary9: rgb(74, 177, 207); $lightOrange: rgb(253,242,232); $bodyFont: 'Open Sans', 'Source Sans Pro', "Helvetica Neue", Helvetica, Arial, sans-serif; -$scriptFont: 'Dancing Script', Baskerville, "Goudy Old Style", "Palatino", "Book Antiqua", Georgia, serif; +$scriptFont: 'Baskerville', "Goudy Old Style", "Palatino", "Book Antiqua", Georgia, serif; $titleFont: 'Montserrat', "Helvetica Neue", Helvetica, Arial, sans-serif; @mixin border-radius($property) { diff --git a/akvo/rsr/static/rsr/v3/css/src/main.css b/akvo/rsr/static/rsr/v3/css/src/main.css index 20cd4d3c37..50621553c0 100755 --- a/akvo/rsr/static/rsr/v3/css/src/main.css +++ b/akvo/rsr/static/rsr/v3/css/src/main.css @@ -57,7 +57,7 @@ h1, h2, h3, h4, h5, h6 { a, a:link, a:visited { outline: none; - color: #0ca9ff; + color: #00aaff; text-decoration: none; cursor: pointer; -webkit-transition: color 0.2s linear; @@ -65,7 +65,7 @@ a, a:link, a:visited { a:link, a:link:link, a:visited:link { -webkit-tap-highlight-color: #fcd700; } a:hover, a:link:hover, a:visited:hover { - color: #ffa472; } + color: #ff5500; } /****************** Miscellanous Typography ********************/ .noItem { @@ -82,21 +82,22 @@ a, a:link, a:visited { padding: 0; } em { - font-family: 'Dancing Script', Baskerville, "Goudy Old Style", "Palatino", "Book Antiqua", Georgia, serif; + font-family: 'Baskerville', "Goudy Old Style", "Palatino", "Book Antiqua", Georgia, serif; font-size: 1.2em; - margin: 0 5px 0em 0em; } + margin: 0 5px 0em 0em; + font-style: italic; } a.moreLink { margin-left: 5px; padding: 3px 5px; - background: rgba(12, 169, 255, 0.2); + background: rgba(0, 170, 255, 0.2); -moz-border-radius: 4px; -o-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; font-weight: bold; } a.moreLink:hover { - background: rgba(255, 164, 114, 0.8); + background: rgba(255, 85, 0, 0.8); color: white; } ::-moz-selection { @@ -127,13 +128,13 @@ a.moreLink { width: 100%; } } a.btn-primary, button.btn-primary { - border: 1px solid #0ca9ff; + border: 1px solid #00aaff; color: white; - background: #0ca9ff; } + background: #00aaff; } a.btn-primary:hover, button.btn-primary:hover { color: white; - background: #ffa472; - border: 1px solid #ffa472; } + background: #ff5500; + border: 1px solid #ff5500; } .dropdown-label { display: block; @@ -230,19 +231,19 @@ label { nav.navbar-fixed-top { background-color: rgba(255, 255, 255, 0.95); border: none; - border-top: 3px solid rgba(114, 205, 255, 0.5); + border-top: 3px solid rgba(44, 42, 116, 0.5); padding: 5px 0; box-shadow: 0 2px 3px rgba(132, 132, 136, 0.2); border-radius: 0; border-bottom: 1px solid #e4e4e4; } nav.navbar-fixed-top button.navbar-toggle { - background: #72cdff; - border: 1px solid #72cdff; } + background: #2c2a74; + border: 1px solid #2c2a74; } nav.navbar-fixed-top button.navbar-toggle:hover { background: white; - border: 1px solid #72cdff; } + border: 1px solid #2c2a74; } nav.navbar-fixed-top button.navbar-toggle:hover .icon-bar { - background: #72cdff; } + background: #2c2a74; } nav.navbar-fixed-top .navbar-brand { float: left; font-size: 18px; @@ -270,35 +271,95 @@ nav.navbar-fixed-top { nav.navbar-fixed-top .navbar-nav li { padding-top: 3px; } nav.navbar-fixed-top .navbar-nav li a { - color: #0ca9ff; - font-family: 'Montserrat', "Helvetica Neue", Helvetica, Arial, sans-serif; } + color: #00aaff; + font-family: 'Montserrat', "Helvetica Neue", Helvetica, Arial, sans-serif; + border: thin solid transparent; } nav.navbar-fixed-top .navbar-nav li a:hover { - color: #ffa472; } + color: #ff5500; } nav.navbar-fixed-top .navbar-nav li a.active { - color: #ffa472; + color: #72742a; font-weight: bold; - background: rgba(255, 164, 114, 0.1); - background-size: 15px 15px; + background: rgba(255, 85, 0, 0.1); -moz-border-radius: 3px; -o-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } @media only screen and (max-width: 768px) { nav.navbar-fixed-top .navbar-nav li a.active { - background: rgba(255, 164, 114, 0.1); } } + background: rgba(255, 85, 0, 0.1); } } nav.navbar-fixed-top .navbar-nav li a.addUpdateBtn { margin-top: 10px; color: white; background-color: #00a79d; border-color: #00a79d; } nav.navbar-fixed-top .navbar-nav li a.addUpdateBtn:hover { - background-color: #ffa472; - border-color: #ffa472; } + background-color: #ff5500; + border-color: #ff5500; } @media only screen and (max-width: 768px) { nav.navbar-fixed-top .navbar-nav li a.addUpdateBtn { width: 95%; padding: 10px 5%; margin: 0 auto 10px auto; } } + nav.navbar-fixed-top .navbar-nav li.navProject .active { + background: rgba(30, 28, 79, 0.05); + border: thin solid rgba(44, 42, 116, 0.2); + -moz-border-radius: 3px; + -o-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + color: #2c2a74; + -moz-transition: all 0.2s linear; + -o-transition: all 0.2s linear; + -webkit-transition: all 0.2s linear; + transition: all 0.2s linear; } + nav.navbar-fixed-top .navbar-nav li.navProject .active:hover { + background: rgba(30, 28, 79, 0); + border: thin solid rgba(44, 42, 116, 0); + -moz-border-radius: 3px; + -o-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + color: #ff5500; } + nav.navbar-fixed-top .navbar-nav li.navUpdate .active { + background: rgba(0, 116, 109, 0.05); + border: thin solid rgba(0, 167, 157, 0.2); + -moz-border-radius: 3px; + -o-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + color: #00a79d; + -moz-transition: all 0.2s linear; + -o-transition: all 0.2s linear; + -webkit-transition: all 0.2s linear; + transition: all 0.2s linear; } + nav.navbar-fixed-top .navbar-nav li.navUpdate .active:hover { + background: rgba(0, 116, 109, 0); + border: thin solid rgba(0, 167, 157, 0); + -moz-border-radius: 3px; + -o-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + color: #ff5500; } + nav.navbar-fixed-top .navbar-nav li.navOrganisation .active { + background: rgba(207, 28, 16, 0.05); + border: thin solid rgba(238, 49, 36, 0.2); + -moz-border-radius: 3px; + -o-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + color: #ee3124; + -moz-transition: all 0.2s linear; + -o-transition: all 0.2s linear; + -webkit-transition: all 0.2s linear; + transition: all 0.2s linear; } + nav.navbar-fixed-top .navbar-nav li.navOrganisation .active:hover { + background: rgba(207, 28, 16, 0); + border: thin solid rgba(238, 49, 36, 0); + -moz-border-radius: 3px; + -o-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + color: #ff5500; } nav.navbar-fixed-top .navbar-nav.navbar-right li { margin-right: 2px; } nav.navbar-fixed-top .navbar-nav.navbar-right li a { @@ -330,7 +391,7 @@ nav.navbar-fixed-top { .myRsrMenu nav[role=navigation] { background: rgba(32, 32, 36, 0.05); } .myRsrMenu nav[role=navigation] ul li a { - color: #0ca9ff; + color: #00aaff; font-family: 'Montserrat', "Helvetica Neue", Helvetica, Arial, sans-serif; padding-top: 15px; padding-bottom: 15px; } @@ -339,13 +400,13 @@ nav.navbar-fixed-top { padding-top: 20px; padding-bottom: 20px; } } .myRsrMenu nav[role=navigation] ul li a:hover { - color: #ffa472; - background: rgba(255, 164, 114, 0.05) url(../../img/carret.png) 98% center no-repeat; + color: #ff5500; + background: rgba(255, 85, 0, 0.05) url(../../img/carret.png) 98% center no-repeat; background-size: 5px auto; } .myRsrMenu nav[role=navigation] ul li a.active { - color: #ffa472; + color: #72742a; font-weight: bold; - background: rgba(255, 164, 114, 0.05) url(../../img/carret.png) 98% center no-repeat; + background: rgba(255, 85, 0, 0.05) url(../../img/carret.png) 98% center no-repeat; background-size: 5px auto; } #profile .usrAvatar { @@ -353,7 +414,7 @@ nav.navbar-fixed-top { padding: 10px; } #organisations { - background: rgba(255, 164, 114, 0.1); + background: rgba(255, 85, 0, 0.1); padding-bottom: 15px; -moz-border-radius: 5px; -o-border-radius: 5px; @@ -439,7 +500,8 @@ footer .navbar { color: #202024; } h4.detailedInfo { - margin-bottom: 0.25em; } + margin-bottom: 0.25em; + color: #202024; } .progress-bar-info { background-color: #e1edc3; } @@ -462,9 +524,9 @@ h4.detailedInfo { border: 1px solid rgba(255, 255, 255, 0.2); transition: all 0.4s ease-in; } .searchContainer #search .showFilters:hover { - background: rgba(255, 164, 114, 0); - border: 1px solid rgba(255, 164, 114, 0.5); - color: #ffa472; } + background: rgba(255, 85, 0, 0); + border: 1px solid rgba(255, 85, 0, 0.5); + color: #ff5500; } @media only screen and (max-width: 768px) { .searchContainer #search .showFilters { display: table; @@ -476,9 +538,9 @@ h4.detailedInfo { border: 1px solid rgba(0, 167, 157, 0.5); color: #00a79d; } .searchContainer #search.toggled .showFilters:hover { - background: rgba(255, 164, 114, 0); - border: 1px solid rgba(255, 164, 114, 0.5); - color: #ffa472; } + background: rgba(255, 85, 0, 0); + border: 1px solid rgba(255, 85, 0, 0.5); + color: #ff5500; } @media only screen and (max-width: 768px) { .pagination li a, .pagination li span { @@ -503,7 +565,7 @@ h4.detailedInfo { transition: all 0.5s ease; box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.5); } #sidebar-wrapper .showFilters:hover { - color: #ffa472; } + color: #ff5500; } #sidebar-wrapper div#filter { padding: 5px 15px 15px 15px; } #sidebar-wrapper div#filter div .btn-group { @@ -544,7 +606,7 @@ h4.detailedInfo { #search-filter #search { padding-bottom: 0; } } #search-filter p { - color: #ffc5a5; } + color: #ff7733; } #search-filter div#filter { background: #383334; text-align: center; } @@ -560,7 +622,7 @@ h4.detailedInfo { background: white; } .main-list li img { border: 1px solid rgba(32, 32, 36, 0.05); - box-shadow: 0 0 2px rgba(255, 164, 114, 0); } + box-shadow: 0 0 2px rgba(255, 85, 0, 0); } .main-list li:nth-child(2n+1) { background: #eeeeee; } .main-list li:last-child { @@ -575,7 +637,8 @@ h4.detailedInfo { .main-list li .thumbImg img { width: 100%; } .main-list li .projectLocation { - color: rgba(32, 32, 36, 0.5); } + color: rgba(32, 32, 36, 0.5); + margin-top: 0; } .main-list li .projectTitle { display: block; margin: 0 0 3px 0; } @@ -589,36 +652,95 @@ h4.detailedInfo { color: rgba(32, 32, 36, 0.5); } .main-list li .additionalInfo div span { margin-left: 5px; } -.main-list.updates li:nth-child(2n+1) { - background: rgba(255, 131, 63, 0.1); } .main-list .excerpt { overflow: hidden; text-overflow: ellipsis; white-space: normal; } -.main-list.projects ul li:nth-child(2n+1) { - background: rgba(63, 187, 255, 0.05); - border: thin solid rgba(114, 205, 255, 0.2); } -.main-list.projects ul li .projectLocation { - color: rgba(32, 32, 36, 0.5); } -.main-list.updates ul li:nth-child(2n+1) { - background: rgba(0, 116, 109, 0.05); - border: thin solid rgba(0, 167, 157, 0.15); } -.main-list.updates ul li .projectLocation { - color: rgba(32, 32, 36, 0.5); } -.main-list.organisations ul li:nth-child(2n+1) { - background: rgba(238, 49, 36, 0.05); - border: thin solid rgba(238, 49, 36, 0.15); } -.main-list.organisations ul li img { - filter: gray; - -webkit-filter: grayscale(100%); - filter: url("data:image/svg+xml;utf8,#grayscale"); - filter: grayscale(100%); +.main-list.projects ul li { + border: thin solid rgba(44, 42, 116, 0); + -moz-transition: all 0.2s ease-in; + -o-transition: all 0.2s ease-in; + -webkit-transition: all 0.2s ease-in; transition: all 0.2s ease-in; } -.main-list.organisations ul li:hover img { - filter: 0; - -webkit-filter: grayscale(0%); - filter: url(); - filter: grayscale(0%); } + .main-list.projects ul li h1 a { + color: #2c2a74; } + .main-list.projects ul li h1 a:hover { + color: #ff5500; } + .main-list.projects ul li .projectSubT { + margin-bottom: 0; } + .main-list.projects ul li:nth-child(2n+1) { + background: rgba(30, 28, 79, 0.05); + border: thin solid rgba(44, 42, 116, 0.2); } + .main-list.projects ul li .projectLocation { + color: rgba(32, 32, 36, 0.5); } + .main-list.projects ul li:hover { + background: rgba(1, 1, 4, 0.05); + border: thin solid rgba(44, 42, 116, 0.35); } +.main-list.updates ul li { + border: thin solid rgba(0, 167, 157, 0); + -moz-transition: all 0.2s ease-in; + -o-transition: all 0.2s ease-in; + -webkit-transition: all 0.2s ease-in; + transition: all 0.2s ease-in; } + .main-list.updates ul li .projectTitle { + color: #00aaff; } + .main-list.updates ul li .projectTitle i { + font-size: 1.1em; + color: #00aaff; } + .main-list.updates ul li .projectTitle:hover { + color: #ff5500; } + .main-list.updates ul li h1 a { + color: #00a79d; } + .main-list.updates ul li h1 a:hover { + color: #ff5500; } + .main-list.updates ul li:nth-child(2n+1) { + background: rgba(0, 116, 109, 0.05); + border: thin solid rgba(0, 167, 157, 0.15); } + .main-list.updates ul li .projectLocation { + color: rgba(32, 32, 36, 0.5); } + .main-list.updates ul li:hover { + background: rgba(0, 14, 13, 0.05); + border: thin solid rgba(0, 167, 157, 0.35); } +.main-list.organisations ul li { + border: thin solid rgba(238, 49, 36, 0); + -moz-transition: all 0.2s ease-in; + -o-transition: all 0.2s ease-in; + -webkit-transition: all 0.2s ease-in; + transition: all 0.2s ease-in; } + .main-list.organisations ul li i { + font-size: 1.1em; } + .main-list.organisations ul li .projectTitle { + display: block; + margin: 0 0 3px 0; } + .main-list.organisations ul li span.userFullName { + margin: 0 0 0px 0; } + .main-list.organisations ul li .upDateTime { + margin-top: 10px; } + .main-list.organisations ul li .additionalInfo div { + color: rgba(32, 32, 36, 0.5); } + .main-list.organisations ul li .additionalInfo div span { + margin-left: 5px; } + .main-list.organisations ul li h1 a { + color: #ee3124; } + .main-list.organisations ul li h1 a:hover { + color: #ff5500; } + .main-list.organisations ul li:nth-child(2n+1) { + background: rgba(238, 49, 36, 0.05); + border: thin solid rgba(238, 49, 36, 0.15); } + .main-list.organisations ul li:hover { + background: rgba(112, 15, 9, 0.05); + border: thin solid rgba(238, 49, 36, 0.35); } + .main-list.organisations ul li img { + filter: gray; + -webkit-filter: grayscale(100%); + filter: url("data:image/svg+xml;utf8,#grayscale"); + filter: grayscale(100%); + transition: all 0.2s ease-in; } + .main-list.organisations ul li:hover img { + filter: 0; + -webkit-filter: grayscale(0%); + filter: url(); + filter: grayscale(0%); } /* PROJECT */ header.projectHeader { @@ -757,7 +879,7 @@ div.projectTopRow { div.projectTopRow .projectSideInfo ul li.financeBlock { border-top: none; padding: 15px 0 15px 0; - background: rgba(114, 205, 255, 0.1); } + background: rgba(44, 42, 116, 0.1); } div.projectTopRow .projectSideInfo ul li.financeBlock span { margin-left: 15px; } div.projectTopRow .projectSideInfo ul li.financeBlock a { @@ -792,7 +914,7 @@ div.textBlock .panel { display: block; padding: 15px 15px; } div.textBlock .panel .panel-collapse .panel-body { - background: rgba(114, 205, 255, 0); } + background: rgba(44, 42, 116, 0); } div.textBlock .udpateComponent { padding-top: 10px; padding-bottom: 15px; @@ -869,3 +991,20 @@ div.textBlock .udpateComponent { -o-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; } + +/* Cookie */ +#cookie-law { + position: fixed; + bottom: 0; + z-index: 9999; + box-shadow: 0px -2px 3px rgba(32, 32, 36, 0.55); + width: 100%; + background: #17163c; } + #cookie-law p { + padding: 15px 0; + text-align: center; + color: white; + margin: 0; + font-size: 1.1em; } + #cookie-law p a { + font-weight: bold; } diff --git a/akvo/rsr/static/rsr/v3/css/src/main.scss b/akvo/rsr/static/rsr/v3/css/src/main.scss index 739595705d..9c8bc4aab5 100755 --- a/akvo/rsr/static/rsr/v3/css/src/main.scss +++ b/akvo/rsr/static/rsr/v3/css/src/main.scss @@ -67,6 +67,7 @@ em { font-family: $scriptFont; font-size: 1.2em; margin: 0 5px 0em 0em; + font-style: italic; } a.moreLink { @@ -291,6 +292,7 @@ nav.navbar-fixed-top { a { color: $anchorLink; font-family: $titleFont; + border:thin solid transparent; &:hover { color: $anchorLinkHover; } @@ -298,7 +300,6 @@ nav.navbar-fixed-top { color: complement($rsrBlue); font-weight: bold; background: rgba($anchorLinkHover, 0.1); - background-size: 15px 15px; @include border-radius(3px); @include responsive(small-max-screens) { background:rgba($anchorLinkHover, 0.1); @@ -320,6 +321,51 @@ nav.navbar-fixed-top { } } } + &.navProject { + .active { + background: darken(rgba($rsrBlue, 0.05), 10%); + border:thin solid rgba($rsrBlue, 0.2); + @include border-radius(3px); + color:$rsrBlue; + @include transition(all 0.2s linear); + &:hover { + background: darken(rgba($rsrBlue, 0), 10%); + border:thin solid rgba($rsrBlue, 0); + @include border-radius(3px); + color:$anchorLinkHover; + } + } + } + &.navUpdate { + .active { + background: darken(rgba($rsrGreen, 0.05), 10%); + border:thin solid rgba($rsrGreen, 0.2); + @include border-radius(3px); + color:$rsrGreen; + @include transition(all 0.2s linear); + &:hover { + background: darken(rgba($rsrGreen, 0), 10%); + border:thin solid rgba($rsrGreen, 0); + @include border-radius(3px); + color:$anchorLinkHover; + } + } + } + &.navOrganisation { + .active { + background: darken(rgba($akvoTvRed, 0.05), 10%); + border:thin solid rgba($akvoTvRed, 0.2); + @include border-radius(3px); + color:$akvoTvRed; + @include transition(all 0.2s linear); + &:hover { + background: darken(rgba($akvoTvRed, 0), 10%); + border:thin solid rgba($akvoTvRed, 0); + @include border-radius(3px); + color:$anchorLinkHover; + } + } + } } &.navbar-right { li { @@ -507,6 +553,7 @@ footer { h4.detailedInfo { margin-bottom: 0.25em; + color:$akvoBlack; } .progress-bar-info { @@ -684,6 +731,7 @@ h4.detailedInfo { } .projectLocation { color: rgba($akvoBlack, 0.5); + margin-top: 0; } .projectTitle { display: block; @@ -708,19 +756,25 @@ h4.detailedInfo { } } } - &.updates { - li { - &:nth-child(2n+1) { - background: darken(rgba(complement($rsrBlue), 0.1), 10%); - } - } - } .excerpt { @include noWrapBlockTxt; } &.projects { ul { li { + h1 { + a { + color:$rsrBlue; + &:hover { + color:$anchorLinkHover; + } + } + } + border:thin solid rgba($rsrBlue, 0); + @include transition(all 0.2s ease-in); + .projectSubT { + margin-bottom: 0; + } &:nth-child(2n+1) { background: darken(rgba($rsrBlue, 0.05), 10%); border:thin solid rgba($rsrBlue, 0.2); @@ -728,12 +782,39 @@ h4.detailedInfo { .projectLocation { color: rgba($akvoBlack, 0.5); } + &:hover { + background: darken(rgba($rsrBlue, 0.05), 30%); + border:thin solid rgba($rsrBlue, 0.35); + } } } } &.updates { ul { li { + border:thin solid rgba($rsrGreen, 0); + @include transition(all 0.2s ease-in); + .orgName { + + } + .projectTitle { + color: rgba($anchorLink, 1); + i { + font-size: 1.1em; + color: rgba($anchorLink, 1); + } + &:hover { + color: $anchorLinkHover; + } + } + h1{ + a { + color:$rsrGreen; + &:hover { + color: $anchorLinkHover; + } + } + } &:nth-child(2n+1) { background: darken(rgba($rsrGreen, 0.05), 10%); border:thin solid rgba($rsrGreen, 0.15); @@ -741,16 +822,63 @@ h4.detailedInfo { .projectLocation { color: rgba($akvoBlack, 0.5); } + &:hover { + background: darken(rgba($rsrGreen, 0.05), 30%); + border:thin solid rgba($rsrGreen, 0.35); + } + .excerpt { + p { + } + } } } } &.organisations { ul { li { + border:thin solid rgba($akvoTvRed, 0); + @include transition(all 0.2s ease-in); + i { + font-size:1.1em; + } + .projectLocation { + } + .projectTitle { + display: block; + margin: 0 0 3px 0; + } + span.userFullName { + margin: 0 0 0px 0; + } + .upDateTime { + margin-top: 10px; + } + .orgType { + } + .additionalInfo { + div { + color: rgba($akvoBlack, 0.5); + span { + margin-left: 5px; + } + } + } + h1{ + a { + color:$akvoTvRed; + &:hover { + color: $anchorLinkHover; + } + } + } &:nth-child(2n+1) { background: darken(rgba($akvoTvRed, 0.05), 0); border:thin solid rgba($akvoTvRed, 0.15); } + &:hover { + background: darken(rgba($akvoTvRed, 0.05), 30%); + border:thin solid rgba($akvoTvRed, 0.35); + } img { @include bw; transition: all 0.2s ease-in; @@ -770,7 +898,7 @@ header { &.projectHeader { margin-bottom: 0; padding: 15px 0; - background: lighten($anchorLinkHover, 25%); + background: lighten($veryLightOrange, 25%); border-bottom:1px solid rgb(238,238,238); margin-bottom:15px; h1 { @@ -999,7 +1127,7 @@ div.textBlock { .udpateComponent { padding-top: 10px; padding-bottom: 15px; - background: lighten($anchorLinkHover, 25%); + background: lighten($veryLightOrange, 25%); } } @@ -1092,4 +1220,26 @@ div.textBlock { background:rgba(white,0.05); @include border-radius(5px); } -} \ No newline at end of file +} + + +/* Cookie */ + +#cookie-law { + position:fixed; + bottom:0; + z-index:9999; + box-shadow: 0px -2px 3px rgba($akvoBlack,0.55); + width:100%; + background: darken($akvoPurple, 15%); + p { + padding:15px 0; + text-align:center; + color:white; + margin:0; + font-size:1.1em; + a { + font-weight: bold; + } + } +} diff --git a/akvo/rsr/static/rsr/v3/js/src/cookie.js b/akvo/rsr/static/rsr/v3/js/src/cookie.js new file mode 100644 index 0000000000..b9445b3298 --- /dev/null +++ b/akvo/rsr/static/rsr/v3/js/src/cookie.js @@ -0,0 +1,64 @@ +/* Akvo RSR is covered by the GNU Affero General Public License. + See more details in the license.txt file located at the root folder of the + Akvo RSR module. For additional details on the GNU license please see + < http://www.gnu.org/licenses/agpl.html >. */ + +var dropCookie = true; // false disables the Cookie, allowing you to style the banner +var cookieDuration = 14; // Number of days before the cookie expires, and the banner reappears +var cookieName = 'complianceCookie'; // Name of our cookie +var cookieValue = 'on'; // Value of cookie + +function createDiv(){ + var bodytag = document.getElementsByTagName('body')[0]; + var div = document.createElement('div'); + div.setAttribute('id','cookie-law'); + div.innerHTML = '

This website uses cookies to improve your experience. By continuing to browse the site you are agreeing to our use of cookies, as detailed in our privacy and cookies policy. Accept

'; + // Be advised the Close Banner 'X' link requires jQuery + + // bodytag.appendChild(div); // Adds the Cookie Law Banner just before the closing tag + // or + bodytag.insertBefore(div,bodytag.firstChild); // Adds the Cookie Law Banner just after the opening tag + + document.getElementsByTagName('body')[0].className+=' cookiebanner'; //Adds a class tothe tag when the banner is visible + + createCookie(window.cookieName,window.cookieValue, window.cookieDuration); // Create the cookie +} + + +function createCookie(name,value,days) { + if (days) { + var date = new Date(); + date.setTime(date.getTime()+(days*24*60*60*1000)); + var expires = "; expires="+date.toGMTString(); + } + else var expires = ""; + if(window.dropCookie) { + document.cookie = name+"="+value+expires+"; path=/"; + } +} + +function checkCookie(name) { + var nameEQ = name + "="; + var ca = document.cookie.split(';'); + for(var i=0;i < ca.length;i++) { + var c = ca[i]; + while (c.charAt(0)==' ') c = c.substring(1,c.length); + if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); + } + return null; +} + +function eraseCookie(name) { + createCookie(name,"",-1); +} + +window.onload = function(){ + if(checkCookie(window.cookieName) != window.cookieValue){ + createDiv(); + } +} + +function removeMe(){ + var element = document.getElementById('cookie-law'); + element.parentNode.removeChild(element); +} \ No newline at end of file diff --git a/akvo/rsr/static/rsr/v3/js/src/react-project-main.js b/akvo/rsr/static/rsr/v3/js/src/react-project-main.js index 0ae7fedfd6..43da52e049 100755 --- a/akvo/rsr/static/rsr/v3/js/src/react-project-main.js +++ b/akvo/rsr/static/rsr/v3/js/src/react-project-main.js @@ -14,7 +14,7 @@ var AccordionInstance = React.createClass({displayName: 'AccordionInstance', background = null; } if (this.props.source.current_status != "") { - current_status = Panel( {className:"current_status", header:"Current status", key:'current_status'}, this.props.source.current_status); + current_status = Panel( {className:"current_status", header:"Current situation", key:'current_status'}, this.props.source.current_status); } else { current_status = null; } diff --git a/akvo/rsr/static/rsr/v3/js/src/react-project-main.jsx b/akvo/rsr/static/rsr/v3/js/src/react-project-main.jsx index 20f24dde26..bbbe63f110 100755 --- a/akvo/rsr/static/rsr/v3/js/src/react-project-main.jsx +++ b/akvo/rsr/static/rsr/v3/js/src/react-project-main.jsx @@ -14,7 +14,7 @@ var AccordionInstance = React.createClass({ background = null; } if (this.props.source.current_status != "") { - current_status = {this.props.source.current_status}; + current_status = {this.props.source.current_status}; } else { current_status = null; } diff --git a/akvo/rsr/views/project.py b/akvo/rsr/views/project.py index 730f9d005c..43ccdfc2c7 100644 --- a/akvo/rsr/views/project.py +++ b/akvo/rsr/views/project.py @@ -161,7 +161,7 @@ def directory(request): # Instead of true or false, adhere to bootstrap3 class names to simplify show_filters = "in" - available_filters = ['continent', 'status', 'organisation', 'focus_area', ] + available_filters = ['continent', 'status', 'organisation', 'sector', ] if frozenset(qs.keys()).isdisjoint(available_filters): show_filters = "" diff --git a/akvo/settings/10-base.conf b/akvo/settings/10-base.conf index f535bb332f..9437c3f2a3 100644 --- a/akvo/settings/10-base.conf +++ b/akvo/settings/10-base.conf @@ -14,6 +14,7 @@ DEBUG = False SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db' INSTALLED_APPS = ( + 'nested_inlines', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', diff --git a/akvo/settings/40-pipeline.conf b/akvo/settings/40-pipeline.conf index eece55e378..8c6317755e 100644 --- a/akvo/settings/40-pipeline.conf +++ b/akvo/settings/40-pipeline.conf @@ -372,4 +372,10 @@ PIPELINE_JS = { ), 'output_filename': 'rsr/main/js/build/akvo_machinery.min.js', }, + 'rsr_v3_cookie': { + 'source_filenames': ( + 'rsr/v3/js/src/cookie.js', + ), + 'output_filename': 'rsr/v3/js/build/rsr_v3_cookie.min.js', + }, } diff --git a/akvo/templates/admin/rsr/project/change_form.html b/akvo/templates/admin/rsr/project/change_form.html index f187a2b6c1..2e23805cce 100644 --- a/akvo/templates/admin/rsr/project/change_form.html +++ b/akvo/templates/admin/rsr/project/change_form.html @@ -5,6 +5,11 @@ {% block extrastyle %} {{block.super}} + {% endblock %} {% block pretitle %} @@ -38,7 +43,7 @@

{% trans 'Adding and Editing Projects.' %}