Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.95 KB | None | 0 0
  1. from django.contrib.auth.models import User
  2. from django.db import models
  3. from datetime import datetime
  4.  
  5. class Projeto(models.Model):
  6. """
  7. Classe que gere os Projetos
  8. Permite que se cadastre N usuários por Projeto
  9. Retorna:
  10. NOME_DO_PROJETO | SITE_DO_PROJETO
  11. """
  12. nome = models.CharField(max_length=100)
  13. site = models.CharField(max_length=200)
  14. informacoes = models.TextField(blank=True)
  15. usuarios = models.ManyToManyField(User, related_name='projetos')
  16.  
  17. def __str__(self):
  18. return self.nome + " | " + self.site
  19.  
  20. class Ticket(models.Model):
  21. """
  22. Classe que gere os Tickets no sistema.
  23. Retorna:
  24. DATA HORA | TITULO DO CHAMADO
  25. """
  26. TIPOS_TICKET = (
  27. ('BUG', 'Bug'),
  28. ('URGENTE', 'Urgente'),
  29. ('FINANCEIRO', 'Financeiro'),
  30. ('MELHORIA', 'Melhoria')
  31. )
  32. STATUS_TICKET = (
  33. ('ABERTO', 'Aberto'),
  34. ('AGUARDANDO_CLIENTE', 'Aguardando Cliente'),
  35. ('EM_ANALISE', 'Em Análise'),
  36. ('FINALIZADO', 'Finalizado'),
  37. ('CANCELADO', 'Cancelado'),
  38. )
  39. titulo = models.CharField(max_length=200)
  40. conteudo = models.TextField()
  41. tipo = models.CharField(max_length=30, choices=TIPOS_TICKET, default='BUG')
  42. status = models.CharField(max_length=30, choices=STATUS_TICKET, default='ABERTO')
  43. projeto = models.ForeignKey(
  44. Projeto,
  45. on_delete=models.CASCADE,
  46. limit_choices_to={'usuarios':1}
  47. )
  48. usuario = models.ForeignKey(
  49. User,
  50. on_delete=models.CASCADE,
  51. null=True
  52. )
  53. data_abertura = models.DateTimeField('Data Abertura', auto_now_add=True)
  54. data_fechamento = models.DateTimeField('Data Fechamento', blank=True, null=True)
  55.  
  56. def __str__(self):
  57. return str(datetime.strftime(self.data_abertura, "%d/%m/%y %H:%M") + " | " + self.titulo)
  58.  
  59. def save(self, *args, **kwargs):
  60. self.usuario = User
  61. super(Ticket, self).save(*args, **kwargs)
  62.  
  63. class TicketMsg(models.Model):
  64. """
  65. Mensagens dos tickets
  66. Retorna:
  67. texto da mensagem
  68. """
  69. texto = models.TextField()
  70. ticket = models.ForeignKey(Ticket, on_delete=models.CASCADE)
  71. data_resposta = models.DateTimeField('Data Resposta')
  72.  
  73. def __str__(self):
  74. return str(self.texto)
  75.  
  76. from django.contrib import admin
  77. from django.contrib.auth.models import User
  78. from .models import Ticket, TicketMsg, Projeto
  79.  
  80. # Register your models here.
  81. class ProjetoAdmin(admin.ModelAdmin):
  82. model = Projeto
  83. filter_horizontal = ('usuarios',)
  84.  
  85. class TicketAdmin(admin.ModelAdmin):
  86. model = Ticket
  87. exclude = ('status', 'data_fechamento', 'data_abertura', 'usuario')
  88. list_display = ('titulo', 'tipo', 'status', 'projeto', 'data_abertura')
  89. list_filter = ('projeto', 'tipo', 'status')
  90.  
  91. def get_ordering(self, request):
  92. return ['data_abertura']
  93.  
  94. admin.site.register(Projeto, ProjetoAdmin)
  95. admin.site.register(Ticket, TicketAdmin)
  96. admin.site.register(TicketMsg)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement