Importación de datos

La aplicación viene ya dotada de información para ser incluida en su base de datos. En su estado actual se limita a información territorial y a las resoluciones judiciales que se han ido obteniendo y tratando a través de los Procedimientos Libres.

data_importers.territory - Importación de datos de territorios

# -*- coding: utf-8 -*-
"""
====================================================================
:mod:`data_importers.territory` - Importación de datos territoriales
====================================================================

Módulo que contiene funciones para importar datos de ámbitos
territoriales.

Dependencias
------------

- Módulo csv.

- Datos en archivos csv sobre comunidades autónomas, provincias y
  municipios (incluidos en el Proyecto Kelsen).

Uso
---

Previamente a la importación se habrá instalado el Proyecto Kelsen y
se habrá creado su base de datos.

Para importar los datos desde los archivos en formato csv a la base de
datos de la aplicación se deberán seguir las siguientes instrucciones:

1. Modificar el valor correcto de la variable *DATA_PATH* en el archivo
   :file:`data_importers/territory.py` para que coincida con el
   directorio donde se alojan los datos (dependerá del directorio
   donde lo haya instalado el usuario).

2. Desde el directorio raíz de la aplicación ejecutar un intérprete de
   python:

::

$ cd trunk/kelsen
$ python manage.py shell

3. Ejecutar las siquientes instrucciones:

>>> from kelsen.data_importers.territory import import_territory
>>> import_territory()


"""

__author__ = 'Javier de la Cueva'
__copyright__ = 'Javier de la Cueva'
__license__ = "GNU AGPLv3"
__url__ = 'http://derecho-internet/proyectos/kelsen'
__version__ = '$Revision: 522 $'

import csv

from utils.slughifi import slughifi
from apps.territory.models import Territory, TerritoryCategory


# Modificar con el path correcto del usuario

DATA_PATH = '/home/jdelacueva/proyectos/kelsen/trunk/kelsen/data/'

# Archivos con datos

FILE_ESTADOS = DATA_PATH + 'states-iso-3166.csv'
FILE_CATEGORIAS = DATA_PATH + 'es_territorial_categories.csv'
FILE_ENTES = DATA_PATH + 'es_territorial_entities.csv'

# Funciones auxiliares

def import_territory():
    import_states()
    import_categories()
    import_territories()

def put_categories(file=FILE_CATEGORIAS):
    reader = csv.reader(open(file), delimiter=',', quotechar='"')
    for row in reader:
        name = row[1]
        slug = slughifi(row[1])
        parent_id = row[2]
        TerritoryCategory.objects.get_or_create(
            name = name,
            slug = slug,
            parent_id = parent_id)

def put_states(file=FILE_ESTADOS):
    """
    Importa en la base de datos el archivo de Estados.
    """
    reader = csv.reader(open(file), delimiter=',', quotechar='"')
    for row in reader:
        name = row[1]
#        slug = slughifi('estado' + row[1])
#        url = row[4]
        abbreviation = row[2]
        iso_code2 = row[3] 
#        iso_code3 = row[5]
#        parent =
        category = TerritoryCategory.objects.get(name='Estado')
        t = Territory(
            name = name.decode('utf8'),
#            slug = slug,
#            url = url,
            abbreviation = abbreviation,
            iso_code2 = iso_code2,
#            iso_code3 = iso_code3,
#            parent = parent,
            category = category
            )
        t.save()

def put_territories(file=FILE_ENTES):
    """
    Importa en la base de datos el archivo de territorios.
    """
    def get_category(row):
        if row == 1:
            category = TerritoryCategory.objects.get(name='Estado')
        if row == 2:
            category = TerritoryCategory.objects.get(name='Comunidad Autónoma')
        if row == 3:
            category = TerritoryCategory.objects.get(name='Provincia')
        if row == 4:
            category = TerritoryCategory.objects.get(name='Municipio')
        return category
    reader = csv.reader(open(file), delimiter=',', quotechar='"')
    for row in reader:
        name = row[1]
#        slug = slughifi('estado' + row[1])
#        url = row[4]
#        abbreviation = row[2]
#        iso_code2 = row[3]
#        iso_code3 = row[5]
#        parent =
        category = get_category(row[2])
        t = Territory(
            name = name,
#            slug = slug,
#            url = url,
#            abbreviation = abbreviation,
#            iso_code2 = iso_code2,
#            iso_code3 = iso_code3,
#            parent = parent,
            category = category
            )
        t.save()


#from PROJECT_NAME.APP_NAME.models import MODEL_NAME

#import csv
#reader = csv.reader(open(COMPLETE PATH TO YOUR DATA, EX: "C:/django/mysite/restaurants.csv"), dialect='excel')
   
#for row in reader:
#   COLUMN_ONE_TITLE = row[0]
#   COLUMN_TWO_TITLE = row[1]
#   MODEL_NAME.objects.get_or_create(MY_FIRST_COLUMN=COLUMN_ONE_TITLE, MY_SECOND_COLUMN=COLUMN_TWO_TITLE)

"""
   name = models.CharField(_('name'), max_length=255)
   slug = models.SlugField(_('slug'))
   url = models.URLField(blank=True, null=True, verify_exists=False)
   abbreviation = models.CharField(
       iso_code2 = models.PositiveIntegerField(_('iso code'), blank=True, null=True)
       iso_code3 = models.PositiveIntegerField(_('iso code'), blank=True, null=True)
       parent = models.ForeignKey(
           'self',
        verbose_name=_('parent'),
        null=True,
        blank=True,
        related_name='children')
    category = models.ForeignKey(TerritoryCategory, verbose_name=_('category'))
"""

data_importers.parliaments - Importación de datos de parlamentos

# -*- coding: utf-8 -*-
"""
=======================================================================
:mod:`data_importers.parliaments` - Importación de datos de parlamentos
=======================================================================

Módulo que contiene funciones para importar datos de parlamentos.

Dependencias
------------

- Módulo csv.

- Datos en archivos csv sobre parlamentos (incluidos en el Proyecto
  Kelsen).

Uso
---

Requisitos previos:

1. Instalar el Proyecto Kelsen y crear su base de datos.

2. Importar los datos territoriales. Ver :mod:`data_importers.territory`

3. Modificar el valor correcto de la variable *DATA_PATH* en el archivo
   :file:`data_importers/parliaments.py` para que coincida con el
   directorio donde se alojan los datos (dependerá del directorio
   donde lo haya instalado el usuario).

4. Desde el directorio raíz de la aplicación ejecutar un intérprete de
   python:

::

$ cd trunk/kelsen
$ python manage.py shell

5. Ejecutar las siquientes instrucciones:

>>> from kelsen.data_importers.parliaments import import_legislature
>>> import_legislature()

"""

__author__ = 'Javier de la Cueva'
__copyright__ = 'Javier de la Cueva'
__license__ = "GNU AGPLv3"
__url__ = 'http://derecho-internet/proyectos/kelsen'
__version__ = '$Revision: 492 $'

import csv
from datetime import datetime

from utils.slughifi import slughifi
from apps.legislature.models import Parliament, ParliamentaryTerm
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import generic
# Modificar con el path correcto del usuario

DATA_PATH = '/home/jdelacueva/proyectos/kelsen/trunk/kelsen/data/'

# Data files

FILE_PARLIAMENTS = DATA_PATH + 'eu_es_parliaments.csv'
FILE_PARLIAMENT_TERMS = DATA_PATH + 'eu_es_parliament_terms.csv'

# Auxiliary functions

def import_legislature():
    import_parliaments()
    import_parliament_terms()

def import_parliaments(file=FILE_PARLIAMENTS):
    """
    Imports to the database the csv file contaning Parliaments,
    :class:`apps.legislature.models.Parliament`.
    """
    file_reader = csv.reader(open(file), delimiter=',', quotechar='"')
    for row in file_reader:
        title = row[1]
        ct = ContentType.objects.get(model='%s' % row[2])
        name = row[1]
        # territory must exist previously
        object_id = ct.get_object_for_this_type(name='%s' % row[3]).id
        slug = slughifi(row[1])
        Parliament.objects.get_or_create(
            content_type=ct,
            name=name,
            object_id=object_id,
            slug=slug,
            title=title)

def import_parliament_terms(file=FILE_PARLIAMENT_TERMS):
    """
    Imports to database the csv file containing data for
    `class:`ParliamentaryTerm.
    """
    def format_date(fecha):
        """
        Formats date:
        >>> fecha = '23/07/1985'
        >>> format_date(fecha)
        '1985-07-23'
        
        """
        d = datetime.strptime(fecha, "%d/%m/%Y")
        return d.strftime("%Y-%m-%d")
    reader = csv.reader(open(file), delimiter=',', quotechar='"')
    for row in reader:
        initial_date = format_date(row[3])
        try:
            final_date = format_date(row[4])
        except:
            final_date = None
        name = row[2]
        slug = slughifi(row[1]+'-'+row[2])
        parliament = Parliament.objects.get(name='%s' % row[1])
        ParliamentaryTerm.objects.get_or_create(
            initial_date=initial_date,
            final_date=final_date,
            name=name,
            slug=slug,
            parliament=parliament)

Contenidos

Tema anterior

Territorios

Próximo tema

Minería de datos

Esta página