Skip to content

Instantly share code, notes, and snippets.

@dynamicguy
Created June 6, 2020 13:47
Show Gist options
  • Save dynamicguy/63d052a63b7b1385a347066c4a7db829 to your computer and use it in GitHub Desktop.
Save dynamicguy/63d052a63b7b1385a347066c4a7db829 to your computer and use it in GitHub Desktop.
from django.db import models
from django_countries.fields import CountryField
from model_utils import FieldTracker
import datetime
from django.utils import timezone
from rtt.users.admin import User
class Industry(models.Model):
name = models.CharField(max_length=200)
description = models.TextField()
tracker = FieldTracker()
class Category(models.Model):
name = models.CharField(max_length=200)
description = models.TextField()
icon = models.FilePathField(allow_files=True, path='category_icon')
active = models.BooleanField(default=False)
chemycalid = models.CharField(max_length=40)
parent = models.ForeignKey('self', on_delete=models.CASCADE)
industries = models.ManyToManyField(Industry)
tracker = FieldTracker()
class DocumentType(models.Model):
name = models.CharField(max_length=200)
description = models.TextField()
tracker = FieldTracker()
class Document(models.Model):
title = models.CharField(max_length=200)
description = models.TextField()
attachment = models.FileField()
type = models.ForeignKey(DocumentType, on_delete=models.CASCADE)
tracker = FieldTracker()
class Region(models.Model):
name = models.CharField(max_length=200)
description = models.TextField()
chemycalid = models.CharField(max_length=40)
tracker = FieldTracker()
class Source(models.Model):
name = models.CharField(max_length=200)
description = models.TextField()
chemycalid = models.CharField(max_length=40)
tracker = FieldTracker()
class Organisation(models.Model):
name = models.CharField(max_length=200)
description = models.TextField()
address = models.CharField(max_length=200)
tax_code = models.CharField(max_length=200)
country = CountryField()
active = models.BooleanField(default=False)
tracker = FieldTracker()
class Language(models.Model):
name = models.CharField(max_length=200)
code = models.CharField(max_length=3)
description = models.TextField()
tracker = FieldTracker()
class Status(models.Model):
name = models.CharField(max_length=200)
description = models.TextField()
tracker = FieldTracker()
class Url(models.Model):
text = models.CharField(max_length=512)
description = models.TextField()
tracker = FieldTracker()
MY_PUBLISH_CHOICES = [
('d', 'Draft'),
('o', 'Online'),
]
class IssuingBody(models.Model):
name = models.CharField(max_length=200)
description = models.TextField()
region = models.ForeignKey(Region, on_delete=models.CASCADE)
tracker = FieldTracker()
class RegulatoryFramework(models.Model):
name = models.CharField(max_length=200)
description = models.TextField()
review_status = models.CharField(
max_length=1,
choices=MY_PUBLISH_CHOICES,
default='d',
)
language = models.ForeignKey(Language, on_delete=models.CASCADE)
status = models.ForeignKey(Status, on_delete=models.CASCADE)
issuing_body = models.ForeignKey(IssuingBody, on_delete=models.CASCADE)
regions = models.ManyToManyField(Region)
documents = models.ManyToManyField(Document)
categories = models.ManyToManyField(Category)
urls = models.ManyToManyField(Url)
tracker = FieldTracker()
class RegulationType(models.Model):
name = models.CharField(max_length=200)
description = models.TextField()
tracker = FieldTracker()
class Regulation(models.Model):
name = models.CharField(max_length=200)
description = models.TextField()
review_status = models.CharField(
max_length=1,
choices=MY_PUBLISH_CHOICES,
default='d',
)
type = models.ForeignKey(RegulationType, on_delete=models.CASCADE)
language = models.ForeignKey(Language, on_delete=models.CASCADE)
status = models.ForeignKey(Status, on_delete=models.CASCADE)
documents = models.ManyToManyField(Document)
categories = models.ManyToManyField(Category)
urls = models.ManyToManyField(Url)
regulatory_framework = models.ForeignKey(RegulatoryFramework, on_delete=models.CASCADE)
tracker = FieldTracker()
class MilestoneType(models.Model):
name = models.CharField(max_length=200)
description = models.TextField()
tracker = FieldTracker()
class RegulationMilestone(models.Model):
name = models.CharField(max_length=200)
description = models.TextField()
date = models.DateTimeField()
created_at = models.DateTimeField(auto_created=True)
type = models.ForeignKey(MilestoneType, on_delete=models.CASCADE)
regulation = models.ForeignKey(Regulation, on_delete=models.CASCADE)
documents = models.ManyToManyField(Document)
urls = models.ManyToManyField(Url)
tracker = FieldTracker()
class News(models.Model):
NEWS_CHOICES = [
('n', 'New'),
('s', 'Selected'),
('d', 'Discharged'),
]
title = models.CharField(max_length=200)
body = models.TextField()
pub_date = models.DateTimeField('Date Published', auto_now_add=True)
cover_image = models.FilePathField(allow_files=True, path='news_cover')
chemycalid = models.CharField(max_length=40)
status = models.CharField(
max_length=1,
choices=NEWS_CHOICES,
default='n',
)
active = models.BooleanField(default=False)
selected_by = models.ForeignKey(User, on_delete=models.CASCADE)
selected_on = models.DateTimeField(auto_now_add=False)
discharged_by = models.ForeignKey(User, on_delete=models.CASCADE)
discharged_on = models.DateTimeField(auto_now_add=False)
source = models.ForeignKey(Organisation, on_delete=models.CASCADE)
regions = models.ManyToManyField(Region)
categories = models.ManyToManyField(Category)
documents = models.ManyToManyField(Document)
regulations = models.ManyToManyField(Regulation)
tracker = FieldTracker()
def was_published_recently(self):
now = timezone.now()
return now - datetime.timedelta(days=7) <= self.pub_date <= now
class Relevence(models.Model):
relevency = models.IntegerField(max_length=1)
comment = models.TextField()
organisation = models.ForeignKey(Organisation, on_delete=models.CASCADE)
news = models.ForeignKey(News, on_delete=models.CASCADE)
tracker = FieldTracker()
class Material(models.Model):
title = models.CharField(max_length=200)
description = models.TextField()
organisation = models.ForeignKey(Organisation, on_delete=models.CASCADE)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
tracker = FieldTracker()
class Product(models.Model):
title = models.CharField(max_length=200)
description = models.TextField()
image = models.FilePathField(allow_files=True, path='product_image')
organisation = models.ForeignKey(Organisation, on_delete=models.CASCADE)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
materials = models.ManyToManyField(Material)
tracker = FieldTracker()
class QuestionType(models.Model):
name = models.CharField(max_length=200)
description = models.TextField()
class Question(models.Model):
name = models.CharField(max_length=200)
description = models.TextField()
type = models.ForeignKey(QuestionType, on_delete=models.CASCADE)
in_charge = models.ForeignKey(User, on_delete=models.CASCADE)
organisation = models.ForeignKey(Organisation, on_delete=models.CASCADE)
tracker = FieldTracker()
class Answer(models.Model):
answer_text = models.CharField(max_length=200)
date = models.DateTimeField(auto_now_add=True)
question = models.ForeignKey(Question, on_delete=models.CASCADE)
regulation = models.ForeignKey(Regulation, on_delete=models.CASCADE)
answered_by = models.ForeignKey(User, on_delete=models.CASCADE)
tracker = FieldTracker()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment