# -*- coding: utf-8 -*-
“””
=================================
:mod:`apps.cases.models` – Cases
=================================
Module containing classes related with procedure and cases.
“””
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.template.defaultfilters import slugify
from django.utils.translation import ugettext_lazy as _
from kelsen.apps.core.models import Agent
from kelsen.apps.judiciary.models import SubjectMatterJurisdiction, Court
class Procedure(models.Model):
“””
Represents the set of rules to be applied to a :class:`Case`.
“””
name = models.CharField(_(‘name’),max_length=200)
slug = models.SlugField(_(‘slug’),unique=True)
matter_jurisdiction = models.ForeignKey(
SubjectMatterJurisdiction,
verbose_name=_(‘subject matter jurisdiction’),
)
class Meta:
verbose_name = _(‘Procedure’)
verbose_name_plural = _(‘Procedures’)
ordering = [‘name’, ]
def save(self):
slug_str = “%s %s” % (self.matter_jurisdiction.name, self.name)
self.slug = slugify(slug_str)
super(Procedure, self).save()
def __unicode__(self):
return self.name
@permalink
def get_absolute_url(self):
return (‘procedure’, (), {‘slug’: self.slug })
class PartyCategory(models.Model):
“””
Categories of the :class:`Party`.
“””
name = models.CharField(_(‘name’),max_length=200)
slug = models.SlugField(_(‘slug’),unique=True)
class Meta:
verbose_name = _(‘Party category’)
verbose_name_plural = _(‘Party categories’)
ordering = [‘name’, ]
def __unicode__(self):
return self.name
@permalink
def get_absolute_url(self):
return (‘party-category’, (), {‘slug’: self.slug })
class Party(Agent):
“””
A person involved in a controversy to be resolved by a
:class:`Court` under a specific :class:`Procedure`.
“””
name = models.CharField(_(‘name’),max_length=200)
slug = models.SlugField(_(‘slug’),unique=True)
categories = models.ManyToManyField(
PartyCategory,
verbose_name=_(‘party category’),
blank=True,
null=True,) # To be changed when corporates are modeled.
class Meta:
verbose_name = _(‘Party’)
verbose_name_plural = _(‘Parties’)
ordering = [‘name’, ]
def __unicode__(self):
return self.name
@permalink
def get_absolute_url(self):
return (‘party’, (), {‘slug’: self.slug })
class CaseCategory(models.Model):
“””
Categories of the :class:`Proceeding`.
“””
name = models.CharField(_(‘name’), max_length=200)
slug = models.SlugField(_(‘slug’), unique=True)
class Meta:
verbose_name = _(‘Case category’)
verbose_name_plural = _(‘Case categories’)
ordering = [‘name’, ]
def __unicode__(self):
return self.name
@permalink
def get_absolute_url(self):
return (‘case-category’, (), {‘slug’: self.slug })
class Case(models.Model):
“””
A set of proceedings of the :class:`Proceedings`.
“””
name = models.CharField(
_(‘name’),
max_length=200,
help_text=_(‘For example sharemula’))
slug = models.SlugField(_(‘slug’), unique=True)
category = models.ForeignKey(CaseCategory)
note = models.TextField(_(‘note’), blank=True, null=True) # check blank and null
class Meta:
verbose_name = _(‘Case’)
verbose_name_plural = _(‘Cases’)
ordering = [‘name’, ]
def __unicode__(self):
return self.name
@permalink
def get_absolute_url(self):
return (‘case’, (), {‘slug’: self.slug })
class Proceeding(models.Model):
“””
A controversy to be resolved by a :class:`Court` under a specific
:class:`Procedure`.
“””
slug = models.SlugField(_(‘slug’), unique=True)
court = models.ForeignKey(Court)
number = models.PositiveIntegerField(_(‘number’))
aux_number = models.CharField(
_(‘auxiliary number’),
max_length=200,
blank=True,
null=True)
year = models.IntegerField(_(‘year’), blank=True, null=True)
parent = models.ForeignKey(
‘self’,
blank=True,
null=True,
related_name=’children’)
procedure = models.ForeignKey(Procedure)
case = models.ForeignKey(Case)
parties = models.ManyToManyField(
Party,
blank=True,
null=True,) # To be changed when corporates are modeled.
archived = models.BooleanField(default=False)
note = models.TextField(_(‘note’), blank=True, null=True) # check blank and null
class Meta:
verbose_name = _(‘Proceeding’)
verbose_name_plural = _(‘Proceedings’)
ordering = [‘slug’, ]
def save(self):
slug_str = “%s %s %s” % (self.procedure.name, self.number, self.year)
self.slug = slugify(slug_str)
super(Proceeding, self).save()
def __unicode__(self):
return self.slug
@permalink
def get_absolute_url(self):
return (‘proceeding’, (), {‘slug’: self.slug })