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.
# -*- 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'))
"""
# -*- 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)