Instituciones

apps.legislature.models – Legislative bodies

# -*- coding: utf-8 -*-
"""
===================================================
:mod:`apps.legislature.models` - Legislative bodies
===================================================

"""

from django.db import models
from django.db.models import permalink
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import generic
from django.utils.translation import ugettext_lazy as _

from kelsen.apps.core.models import Agent, Person
from kelsen.apps.territory.models import Territory

class Parliament(Agent):
    """
    Represents a legislative body.

    """
    name = models.CharField(_('name'), max_length=255)
    slug = models.SlugField(_('slug'))
    jurisdiction = models.ForeignKey(Territory, verbose_name=_('jurisdiction'))

    class Meta:
        verbose_name = _('Parliament')
        verbose_name_plural = _('Parliaments')
        ordering = ['name', ]

    def __unicode__(self):
        return self.name

    @permalink
    def get_absolute_url(self):
        return ('parliament', (), {'slug': self.slug})


class ParliamentaryTerm(models.Model):
    """
    Represents the terms of a :class:`Parliament` class.

    """
    initial_date = models.DateField(_('initial date'), )
    final_date = models.DateField(_('final date'), blank=True, null=True)
    name = models.CharField(_('parliamentary term name'), max_length=50)
    slug = models.SlugField(_('slug'))
    parliament = models.ForeignKey(Parliament, verbose_name=_('parliament'))
    note = models.TextField(_('note'), blank=True, null=True) # check blank and null

    class Meta:
        verbose_name = _('Parliamentary term')
        verbose_name_plural = _('Parliamentary terms')
        ordering = ['parliament', '-initial_date' ]

    def __unicode__(self):
        return self.slug

    @permalink
    def get_absolute_url(self):
        return ('parliamentary-term', (), {'slug': self.slug})

class PoliticalGroup(Agent):
    """
    Represents a plurality of members of parliament during a
    :class:`ParliamentaryTerm`. :class:`PoliticalGroup` has rights and
    obligations by its own in accordance with the :class:`Parliament`
    proceedings.

    """
    initial_date = models.DateField(_('initial date'), )
    final_date = models.DateField(_('final date'), blank=True, null=True)
    name = models.CharField(_('name'), max_length=255)
    term = models.ForeignKey(ParliamentaryTerm, verbose_name=_('parliamentary term'))
    slug = models.SlugField()
    note = models.TextField(_('note'), blank=True, null=True) # check blank and null

    class Meta:
        verbose_name = _('Political group')
        verbose_name_plural = _('Political groups')
        ordering = ['name', ]

    def __unicode__(self):
        return self.slug

    @permalink
    def get_absolute_url(self):
        return ('politicalgroup', (), {'slug': self.slug})


class MemberParliamentTerm(models.Model):
    """
    Represents the term of office of a :class:`MemberParliament`.

    A :class:`MemberParliament` can be elected during one or more
    :class:`ElectionTerm`
    
    This class is also necessary to represent
    :class:`MemberParliament` changes of :class:`PoliticalGroup`.

    """
    name = models.CharField(_('job name'), max_length=255)
    initial_date = models.DateField(_('initial date'), )
    final_date = models.DateField(_('final date'), blank=True, null=True)
    person = models.ForeignKey(Person, verbose_name=_('member of parliament'))
    group = models.ForeignKey(PoliticalGroup, verbose_name=_('political group'))
    constituency = models.ForeignKey(Territory, verbose_name=_('constituency'))
    note = models.TextField(_('note'), blank=True, null=True) # check blank and null

    class Meta:
        verbose_name = _('Member of Parliament term')
        verbose_name_plural = _('Member of Parliament terms')
        ordering = ['-initial_date', 'group' ]
        get_latest_by = 'initial_date'

    def __unicode__(self):
        return "%s: %s %s" % (self.initial_date,
                              self.person.name,
                              self.person.surname1)

    @permalink
    def get_absolute_url(self):
        return ('mp', (), {'slug': self.person.id})

# TODO: Other integrants of parliament (Comitees, chairmen...)

apps.executive.models – Executive bodies

# -*- coding: utf-8 -*-
"""
============================
:mod:`apps.executive.models`
============================

Module containing classes related with executive and administrative
organization.

"""

from django.db import models
from django.db.models import permalink
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import generic
from django.utils.translation import ugettext_lazy as _

import mptt

from kelsen.apps.core.models import Agent, Person
from kelsen.apps.laws.models import Law
from kelsen.apps.territory.models import Territory


class ExecutiveOrganCategory(models.Model):
    name = models.CharField(_('name'), max_length=255)
    slug = models.SlugField(_('slug'))
    parent = models.ForeignKey(
        'self',
        verbose_name=_('parent category'),
        blank=True,
        null=True,
        related_name='children')

    class Meta:
        verbose_name = _('Executive organ category')
        verbose_name_plural = _('Executive organ categories')
        ordering = ['name', ]

    def __unicode__(self):
        return self.name

    @permalink
    def get_absolute_url(self):
        return ('executive-organ-category', (), {'slug': self.slug})


class ExecutiveOrgan(Agent):
    """
    Represents an executive or administrative body.

    """
    name = models.CharField(_('name'), max_length=255)
    slug = models.SlugField(_('slug'))
    category = models.ForeignKey(
        ExecutiveOrganCategory,
        verbose_name=_('category'),
        blank=True,
        null=True)
    parent = models.ForeignKey(
        'self',
        verbose_name=_('parent'),
        null=True,
        blank=True,
        related_name='children')
    statute = models.ForeignKey(
        Law,
        verbose_name=_('statute'),
        blank=True,
        null=True)
    jurisdiction = models.ForeignKey(Territory, verbose_name=_('jurisdiction'))

    class Meta:
        verbose_name = _('Executive organ')
        verbose_name_plural = _('Executive organs')
        ordering = ['tree_id', 'lft']

    def __unicode__(self):
        return '%s [%s]' % (self.name, self.jurisdiction.name)

    @permalink
    def get_absolute_url(self):
        return ('executive-organ', (), {'slug': self.slug})

mptt.register(ExecutiveOrgan, order_insertion_by=['name'])


class PublicServantTerm(models.Model):
    """
    Represents a :class:`Person` officer of a :class:`Organ`.

    """
    name = models.CharField(_('job name'), max_length=255)
    initial_date = models.DateField(_('initial date'), )
    final_date = models.DateField(_('final date'), blank=True, null=True)
    person = models.ForeignKey(Person, verbose_name=_('person'))
    executive_organ = models.ForeignKey(ExecutiveOrgan, verbose_name=_('organ'))
    note = models.TextField(_('note'), blank=True, null=True) # check blank and null

    class Meta:
        verbose_name = _('Office term')
        verbose_name_plural = _('Office terms')
        ordering = ['executive_organ', '-initial_date' ]

    def __unicode__(self):
        return "%s %s" % (self.person.name, self.executive_organ.name)

    @permalink
    def get_absolute_url(self):
        return ('public-servant', (), {'slug': self.person.slug })


class Rule(models.Model):
    law = models.ForeignKey(Law, verbose_name=_('rules'))
    organ = models.ForeignKey(ExecutiveOrgan, verbose_name=_('organ'))
    
    class Meta:
        verbose_name = _('Rule')
        verbose_name_plural = _('Rules')
        ordering = ['organ' ]

    def __unicode__(self):
        return self.organ.slug

    @permalink
    def get_absolute_url(self):
        return ('rule', (), {'slug': self.slug})

apps.judiciary.models – The Judiciary

# -*- coding: utf-8 -*-
"""
============================
:mod:`apps.judiciary.models`
============================

Module containing classes related with judiciary organization.

"""

from django.db import models
from django.db.models import permalink
from django.template.defaultfilters import slugify
from django.utils.translation import ugettext_lazy as _

import mptt

from kelsen.apps.core.models import Agent, Person
from kelsen.apps.laws.models import Law
from kelsen.apps.territory.models import Territory


class SubjectMatterJurisdiction(models.Model):
    """
    Represents the type of legal action to be heared by a
    :class:`Court`.
    """
    name = models.CharField(_('name'), max_length=200)
    slug = models.SlugField(_('slug'), unique=True,)

    class Meta:
        verbose_name = _('Subject matter jurisdiction')
        verbose_name_plural = _('Subject matter jurisdictions')
        ordering = ['name',]

    def __unicode__(self):
        return self.name

    @permalink
    def get_absolute_url(self):
        return ('subject-matter', (), {'slug': self.slug})

class CourtCategory(models.Model):
    """
    Represents the category of a :class:`Court`.
    """
    name = models.CharField(_('name'), max_length=255)
    slug = models.SlugField(_('slug'))
    composition = models.CharField(_('composition'), max_length=40)
    parent = models.ForeignKey(
        'self',
        verbose_name=_('parent category'),
        blank=True,
        null=True,
        related_name='children')

    class Meta:
        verbose_name = _('Court category')
        verbose_name_plural = _('Court categories')
        ordering = ['name', ]

    def __unicode__(self):
        return self.name

    @permalink
    def get_absolute_url(self):
        return ('court-category', (), {'slug': self.slug})


class Court(Agent):
    """
    Represents the place where justice is judicially administered.

    """
    name = models.CharField(_('name'), max_length=255)
    slug = models.SlugField(_('slug'))
    number = models.PositiveIntegerField() # change int character field
    jurisdictions = models.ManyToManyField(Territory, verbose_name=_('jurisdiction'))
    category = models.ForeignKey(
        CourtCategory,
        verbose_name=_('category'),
        blank=True,
        null=True)
    matter_jurisdictions = models.ManyToManyField(
        SubjectMatterJurisdiction,
        related_name='court_set',
        verbose_name=_('subject matter jurisdiction'))
    parent = models.ForeignKey(
        'self',
        verbose_name=_('parent'),
        null=True,
        blank=True,
        related_name='children')
    statute = models.ForeignKey(
        Law,
        verbose_name=_('statute'),
        blank=True,
        null=True)

    class Meta:
        verbose_name = _('Court')
        verbose_name_plural = _('Courts')
        ordering = ['tree_id', 'lft']

    def __unicode__(self):
        return self.name

    @permalink
    def get_absolute_url(self):
        return ('court', (), {'slug': self.slug})

mptt.register(Court, order_insertion_by=['name'])

class JudgeTerm(models.Model):
    """
    Represents the office term of a :class:`Judge`.

    """
    name = models.CharField(_('job name'), max_length=255)
    initial_date = models.DateField(_('initial date'), )
    final_date = models.DateField(_('final date'), blank=True, null=True)
    person = models.ForeignKey(Person, verbose_name=_('person'))
    court = models.ForeignKey(Court, verbose_name=_('court'))
    note = models.TextField(_('note'), blank=True, null=True) # check blank and null

    class Meta:
        verbose_name = _('Judge term')
        verbose_name_plural = _('Judge terms')
        ordering = ['court', '-initial_date' ]

    def __unicode__(self):
        return "%s %s" % (self.person.name, self.court.name)

    @permalink
    def get_absolute_url(self):
        return ('judge', (), {'slug': self.person.slug })

Contenidos

Tema anterior

Agentes del sistema

Próximo tema

Normas jurídicas

Esta página