Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Postagem(models.Model):
- """
- classe abstrata que serve de base para todo o tipo de publicação
- """
- nome=models.CharField("título",max_length=300)
- chamada=models.TextField("chamada",max_length=600,blank=True)
- publicado_em=models.DateTimeField("data publicação",auto_now_add=True)
- atualizado_em=models.DateTimeField("data atualização",auto_now=True)
- visivel=models.BooleanField("visível",default=True)
- iniciativa=models.BooleanField('depoimento?',default=False,help_text="Marque se a publicação é um depoimento humanizado")
- exclusivo=models.BooleanField('exclusivo?',default=False,help_text="Marque se a publicação é exclusiva de um hotsite")
- usuario_criacao=models.ForeignKey(User,blank=True,null=True)
- usuario_edicao=models.ForeignKey(User,null=True,related_name='editor%(app_label)s_%(class)s_related',blank=True)
- slug=models.SlugField('atalho',max_length=300,blank=True,null=True,help_text="esse campo não precisa ser preenchido pelo usuário")
- atividade=models.ForeignKey(Atividades,
- blank=True,
- null=True,
- help_text="vincule esta postagem a alguma atividade")
- tematica=models.ManyToManyField(
- Tematica,blank=True,
- #related_name='tematica%(app_label)s_%(class)s_related',
- help_text="Classifique a publicação quanto à temática"
- )
- projeto=models.ManyToManyField(
- Projeto,
- blank=True,
- limit_choices_to={'visivel': True},
- related_name='projeto_%(class)s',
- help_text="Selecione os projetos a qual a publicação se relaciona"
- )
- eixo=models.ManyToManyField(
- Eixo,
- blank=True,
- limit_choices_to={'visivel': True},
- related_name='eixo_%(class)s',
- help_text="Selecione um ou mais institucional relacionados à publicação")
- site = models.ManyToManyField(Site,blank = True)
- objects = models.Manager()
- on_site = CurrentSiteManager()
- def __str__(self):
- """
- retorna o nome do objeto
- """
- return self.nome
- class Meta:
- abstract=True
- class Publicacao(Postagem):
- """
- Nessa Classe será colocadas as publicações institucionais, tais quais boletins, documentos em pdf, relatórios, etc.
- As opções são:
- - publicação: São os documentos tais como relatórios externos e outros que dizem respeito
- - documento: São documentos como teses, monografias e outros produtos feitos pelos colaboradores dentro da instituição
- - impresso: São os documentos impressos tais como boletins e jornais.
- - Documentos e arquivos Institucionais ou institucional: São os arquivos para downloads e uso dos colaboradores\
- a particularidade aqui é que esses documentos serão exibidos na tela principal, em arquivos abaixo do link institucional do rodapé.
- colocaremos aqui coisas como formulários, memorandos, minutas para colaboradores e versões de programas.
- """
- arquivo=models.FileField(upload_to='publicacoes')
- exclusivo_equipe = models.BooleanField("Exclusivo para equipe",default = False,
- help_text = "arquivo exibido apenas a usuários 'logados' no sistema")
- imagem = models.ImageField('logo',upload_to="publicacoes",
- blank=True,
- null=True)
- tipo_publicacao = models.CharField('tipo publicação', max_length=200,choices=PUBLICACAO_CHOICES,
- help_text = "- publicação: São os documentos tais como relatórios externos e outros que dizem respeito\
- - documento: São documentos como teses, monografias e outros produtos feitos pelos colaboradores dentro da instituição\
- - impresso: São os documentos impressos tais como boletins e jornais.\
- - Documentos e arquivos Institucionais ou institucional: São os arquivos para downloads e uso dos colaboradores \
- a particularidade aqui é que esses documentos serão exibidos na tela principal, em arquivos abaixo do link institucional do rodapé.\
- colocaremos aqui coisas como formulários, memorandos, minutas para colaboradores e versões de programas")
- def tipo_documento(self):
- """
- define a extensão do documento
- """
- tipo = self.arquivo.name[-4:].lower()
- if 'zip' in tipo:
- return 'zip'
- elif 'doc' in tipo or 'docx' in tipo:
- return 'doc'
- elif 'pdf' in tipo:
- return 'pdf'
- def get_absolute_url(self):
- """
- retorna a url da publicacao
- """
- return self.arquivo.url
- class Meta:
- verbose_name_plural = "publicações"
- ordering = ['-publicado_em','-atualizado_em']
- def save_site(signal,instance,sender,**kwargs):
- """
- Verificando se existe o site e caso não exista adiciono e salvo o model...
- """
- site = Site.objects.get_current()
- m = sender.objects.get(id=instance.id)
- if not site in m.site.all():
- m.site.add(site)
- signals.post_save.connect(save_site, sender = Publicacao)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement