src/core/models/notice.py
author ymh <ymh.work@gmail.com>
Thu, 27 Jun 2013 22:31:40 +0200
changeset 48 f4fadc1b9d70
parent 36 f770159c3cee
child 55 bcbd95da9be2
permissions -rw-r--r--
cache the nb_notice query to improve perf.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
# -*- coding: utf-8 -*-
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
'''
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
Created on Jun 8, 2013
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
@author: ymh
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
'''
48
f4fadc1b9d70 cache the nb_notice query to improve perf.
ymh <ymh.work@gmail.com>
parents: 36
diff changeset
     7
from core import settings
f4fadc1b9d70 cache the nb_notice query to improve perf.
ymh <ymh.work@gmail.com>
parents: 36
diff changeset
     8
from core.models.term import Term
0
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
from django.db import models
48
f4fadc1b9d70 cache the nb_notice query to improve perf.
ymh <ymh.work@gmail.com>
parents: 36
diff changeset
    10
from django.db.models import signals
f4fadc1b9d70 cache the nb_notice query to improve perf.
ymh <ymh.work@gmail.com>
parents: 36
diff changeset
    11
from django.dispatch import receiver
0
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
import urlparse
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
# Create your models here.
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
class Notice(models.Model):
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
    
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
    ref         = models.CharField(max_length=20, null=True, blank=True, unique=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
    adpt        = models.TextField(null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
    appl        = models.CharField(max_length=1024, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
    aptn        = models.TextField(null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
    attr        = models.TextField(null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
    autr        = models.CharField(max_length=1024, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
    autr_terms  = models.ManyToManyField(Term, related_name="autr+", limit_choices_to = {'thesaurus__label': 'autr'}, through='AutrNoticeTerm')
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
    bibl        = models.TextField(null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
    comm        = models.TextField(null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
    contact     = models.CharField(max_length=1024, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
    coor        = models.CharField(max_length=1024, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
    copy        = models.CharField(max_length=1024, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
    dacq        = models.CharField(max_length=1024, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
    data        = models.CharField(max_length=512, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
    dation      = models.CharField(max_length=512, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
    ddpt        = models.CharField(max_length=512, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
    decv        = models.CharField(max_length=1024, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
    deno        = models.CharField(max_length=1024, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
    depo        = models.CharField(max_length=1024, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
    desc        = models.TextField(null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
    desy        = models.CharField(max_length=512, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
    dims        = models.CharField(max_length=2048, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
    dmaj        = models.DateField(null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
    dmis        = models.DateField(null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
    domn        = models.CharField(max_length=512, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
    domn_terms  = models.ManyToManyField(Term, related_name="domn+", limit_choices_to = {'thesaurus__label': 'domn'}, through='DomnNoticeTerm') 
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
    drep        = models.CharField(max_length=1024, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
    ecol        = models.CharField(max_length=512, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
    ecol_terms  = models.ManyToManyField(Term, related_name="ecol+", limit_choices_to = {'thesaurus__label': 'ecol'}, through='EcolNoticeTerm')
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
    epoq        = models.CharField(max_length=512, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
    epoq_terms  = models.ManyToManyField(Term, related_name="epoq+", limit_choices_to = {'thesaurus__label': 'epoq'}, through='EpoqNoticeTerm')
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
    etat        = models.TextField(null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
    expo        = models.TextField(null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
    gene        = models.CharField(max_length=1024, null=True, blank=True) 
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
    geohi       = models.CharField(max_length=1024, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
    hist        = models.TextField(null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
    image       = models.BooleanField()
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
    insc        = models.CharField(max_length=1024, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
    inv         = models.CharField(max_length=2048, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
    label       = models.CharField(max_length=512, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
    labo        = models.CharField(max_length=1024, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
    lieux       = models.CharField(max_length=1024, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
    lieux_terms = models.ManyToManyField(Term, related_name="lieux+", limit_choices_to = {'thesaurus__label': 'lieux'}, through='LieuxNoticeTerm')
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
    loca        = models.CharField(max_length=512, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
    loca2       = models.CharField(max_length=512, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
    mill        = models.CharField(max_length=512, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
    milu        = models.CharField(max_length=512, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
    mosa        = models.CharField(max_length=512, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
    msgcom      = models.TextField(null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
    museo       = models.CharField(max_length=512, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
    nsda        = models.CharField(max_length=512, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
    onom        = models.TextField(null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
    paut        = models.TextField(null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
    pdat        = models.TextField(null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
    pdec        = models.TextField(null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
    peoc        = models.CharField(max_length=512, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
    peri        = models.CharField(max_length=512, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
    peri_terms  = models.ManyToManyField(Term, related_name="peri+", limit_choices_to = {'thesaurus__label': 'peri'}, through='PeriNoticeTerm')
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
    peru        = models.CharField(max_length=1024, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
    phot        = models.CharField(max_length=1024, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
    pins        = models.TextField(null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
    plieux      = models.TextField(null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
    prep        = models.TextField(null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
    puti        = models.TextField(null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
    reda        = models.CharField(max_length=1024, null=True, blank=True)    
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
    refim       = models.CharField(max_length=2048, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
    repr        = models.TextField(null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
    repr_terms  = models.ManyToManyField(Term, related_name="repr+", limit_choices_to = {'thesaurus__label': 'repr'}, through='ReprNoticeTerm')
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
    srep        = models.CharField(max_length=1024, null=True, blank=True)
33
61c3ffd94f11 - correct imports.
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    86
    srep_terms  = models.ManyToManyField(Term, related_name="srep+", limit_choices_to = {'thesaurus__label': 'srep'}, through='SrepNoticeTerm')
0
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
    stat        = models.CharField(max_length=1024, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
    tech        = models.CharField(max_length=2048, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
    tico        = models.TextField(null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
    titr        = models.TextField(null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
    util        = models.CharField(max_length=1024, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
    video       = models.CharField(max_length=2048, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
    www         = models.CharField(max_length=512, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
    class Meta:
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
        app_label = 'core'
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
class NoticeImage(models.Model):
36
f770159c3cee Remove unique constraint on image/notice
ymh <ymh.work@gmail.com>
parents: 33
diff changeset
    99
    relative_url = models.URLField(max_length='1024', null=False, blank=False, unique=False)
0
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
    notice = models.ForeignKey(Notice, related_name="images")
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
    
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
    class Meta:
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
        app_label = 'core'
36
f770159c3cee Remove unique constraint on image/notice
ymh <ymh.work@gmail.com>
parents: 33
diff changeset
   104
        unique_together = (("relative_url", "notice"),)
0
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
    
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
    @property
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
    def url(self):
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
        return urlparse.urljoin(settings.JOCONDE_IMAGE_BASE_URL , self.relative_url)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
class NoticeTerm(models.Model):
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
    
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
    notice = models.ForeignKey(Notice)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
    term   = models.ForeignKey(Term)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
    
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
    #optionnal rdf graph uri describing the relationship
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
    graph  = models.URLField(max_length=2048, null=True, blank=True)
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
    
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
    class Meta:
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
        app_label = 'core'
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
class AutrNoticeTerm(NoticeTerm):
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
    class Meta:
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
        app_label = 'core'
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
        
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
class DomnNoticeTerm(NoticeTerm):
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
    class Meta:
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
        app_label = 'core'
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
        
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
class EcolNoticeTerm(NoticeTerm):
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
    class Meta:
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
        app_label = 'core'
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
        
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
class EpoqNoticeTerm(NoticeTerm):
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
    class Meta:
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
        app_label = 'core'
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
class LieuxNoticeTerm(NoticeTerm):
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
    class Meta:
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
        app_label = 'core'
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
class PeriNoticeTerm(NoticeTerm):
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
    class Meta:
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   146
        app_label = 'core'
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
class ReprNoticeTerm(NoticeTerm):
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   149
    class Meta:
4095911a7830 Jocondelab first commit before design
ymh <ymh.work@gmail.com>
parents:
diff changeset
   150
        app_label = 'core'
33
61c3ffd94f11 - correct imports.
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   151
61c3ffd94f11 - correct imports.
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   152
class SrepNoticeTerm(NoticeTerm):
61c3ffd94f11 - correct imports.
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   153
    class Meta:
61c3ffd94f11 - correct imports.
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   154
        app_label = 'core'
48
f4fadc1b9d70 cache the nb_notice query to improve perf.
ymh <ymh.work@gmail.com>
parents: 36
diff changeset
   155
f4fadc1b9d70 cache the nb_notice query to improve perf.
ymh <ymh.work@gmail.com>
parents: 36
diff changeset
   156
def increment_nb_notice(term, inc):
f4fadc1b9d70 cache the nb_notice query to improve perf.
ymh <ymh.work@gmail.com>
parents: 36
diff changeset
   157
    term.nb_notice = term.nb_notice + inc
f4fadc1b9d70 cache the nb_notice query to improve perf.
ymh <ymh.work@gmail.com>
parents: 36
diff changeset
   158
    term.save
f4fadc1b9d70 cache the nb_notice query to improve perf.
ymh <ymh.work@gmail.com>
parents: 36
diff changeset
   159
    
f4fadc1b9d70 cache the nb_notice query to improve perf.
ymh <ymh.work@gmail.com>
parents: 36
diff changeset
   160
@receiver(signals.post_save, sender=NoticeTerm)
f4fadc1b9d70 cache the nb_notice query to improve perf.
ymh <ymh.work@gmail.com>
parents: 36
diff changeset
   161
def notice_term_created(sender, **kwargs):
f4fadc1b9d70 cache the nb_notice query to improve perf.
ymh <ymh.work@gmail.com>
parents: 36
diff changeset
   162
    instance = kwargs.get('instance', None)
f4fadc1b9d70 cache the nb_notice query to improve perf.
ymh <ymh.work@gmail.com>
parents: 36
diff changeset
   163
    created = kwargs.get('created', None)
f4fadc1b9d70 cache the nb_notice query to improve perf.
ymh <ymh.work@gmail.com>
parents: 36
diff changeset
   164
    if instance is None or not created:
f4fadc1b9d70 cache the nb_notice query to improve perf.
ymh <ymh.work@gmail.com>
parents: 36
diff changeset
   165
        return
f4fadc1b9d70 cache the nb_notice query to improve perf.
ymh <ymh.work@gmail.com>
parents: 36
diff changeset
   166
    increment_nb_notice(instance.term, 1)
f4fadc1b9d70 cache the nb_notice query to improve perf.
ymh <ymh.work@gmail.com>
parents: 36
diff changeset
   167
f4fadc1b9d70 cache the nb_notice query to improve perf.
ymh <ymh.work@gmail.com>
parents: 36
diff changeset
   168
@receiver(signals.post_delete, sender=NoticeTerm)
f4fadc1b9d70 cache the nb_notice query to improve perf.
ymh <ymh.work@gmail.com>
parents: 36
diff changeset
   169
def notice_term_deleted(sender, **kwargs):
f4fadc1b9d70 cache the nb_notice query to improve perf.
ymh <ymh.work@gmail.com>
parents: 36
diff changeset
   170
    instance = kwargs.get('instance', None)
f4fadc1b9d70 cache the nb_notice query to improve perf.
ymh <ymh.work@gmail.com>
parents: 36
diff changeset
   171
    if instance is None:
f4fadc1b9d70 cache the nb_notice query to improve perf.
ymh <ymh.work@gmail.com>
parents: 36
diff changeset
   172
        return
f4fadc1b9d70 cache the nb_notice query to improve perf.
ymh <ymh.work@gmail.com>
parents: 36
diff changeset
   173
    increment_nb_notice(instance.term, -1)