class Project(models.Model): project_id = models.CharField(primary_key=True, max_length=200, default=random_id) project_name = models.CharField(max_length=200, null=True, blank=True) type = models.CharField(max_length=100, choices=( ('well', 'Well'), ('field', 'Field'), ('project', 'Project'), ('company-country', 'Company (all operations in one country)'), )) country = CountryField(blank=True, null=True) source = models.ForeignKey('SourceInfo', null=True, blank=True) parent = models.ForeignKey('Project', null=True, blank=True, related_name="subprojects") class Meta: db_table = 'project_table' def __str__(self): return self.project_name or '<untitled>'
class Reserve(models.Model): project = models.ForeignKey(Project, blank=True, null=True) company = models.ForeignKey(Company, blank=True, null=True) interest = models.FloatField(default=100, verbose_name = "Interest of the company in this project (%)") date = ApproximateDateField(blank=True,null=True, help_text = "year statement applies to, if specified, otherwise publication year of the source document") commodity = models.CharField(max_length=100, choices = COMMODITIES) confidence = models.CharField( max_length=20, choices = CONFIDENCE_MEASURES, default='Unknown', ) status = models.CharField( max_length=20, choices = FIELD_STATUSES, default = 'unspecified') level = models.FloatField() unit = models.CharField( max_length=20, choices = UNITS, default = 'mbbls') source_document = models.ForeignKey(Document, blank=True, null=True) def __str__(self): if self.project and self.project.project_name: return '%s: %s estimate' % (self.project.project_name, self.date) else: return 'unnamed'
class AuthorField(models.CompositeField): name = models.CharField(max_length=75) sex = models.CharField(max_length=6, choices=( ('male', 'Male'), ('female', 'Female'), )) birthdate = models.DateField()
class Trainer(models.Model): first_name = models.CharField(max_length=25) surname = models.CharField(max_length=30) address = models.CharField(max_length=200) gender = models.CharField(max_length=1, choices=GENDER_CHOICES) citizenship = models.CharField(max_length=30) email = models.EmailField(max_length=30)
class Production(models.Model): def __str__(self): if all((self.project, self.company, self.date)): return '%s in %s (%s)' % (self.project, self.date, self.company) else: return 'Production' project = models.ForeignKey(Project, blank=True, null=True) company = models.ForeignKey(Company, blank=True, null=True) date = ApproximateDateField(blank=True,null=True) commodity = models.CharField(max_length=100, choices=COMMODITIES) actual_predicted = models.CharField(max_length=10, choices=( ('actual', 'Actual'), ('predicted', 'Predicted'),)) confidence = models.CharField(max_length=20, choices=CONFIDENCE_MEASURES, null=True, blank=True) level = models.FloatField() unit = models.CharField( max_length=20, choices = UNITS, default = 'mbbls') per = models.CharField( max_length=20, choices=TIME_PERIODS, default='year') source = models.ForeignKey(Document, blank=True, null=True)
class Statement(models.Model): statement_id = models.CharField(primary_key=True, max_length=200, default=random_id) doc = models.ForeignKey(Document, blank=True, null=True, default=None) statement_content = models.CharField(max_length=200) definitive = models.BooleanField(default=False) projects = models.ManyToManyField('Project', db_table='project_link_table', blank=True) companies = models.ManyToManyField('Company', db_table='company_link_table', blank=True) concessions = models.ManyToManyField('Concession', db_table='concession_link_table', blank=True) contracts = models.ManyToManyField('Contract', db_table='contract_link_table', blank=True) source = models.ForeignKey('SourceInfo', null=True, blank=True) class Meta: db_table = 'statement_table' def __str__(self): return self.statement_content or '<untitled>'
class Alias(models.Model): hero = models.ForeignKey('Hero') first_name = models.CharField(max_length=25) surname = models.CharField(max_length=30) former_codenames = models.TextField occupation = models.CharField(max_length=30) address = models.CharField(max_length=100) citizenship = models.CharField(max_length=30)
class Mission(models.Model): customer = models.ForeignKey('Customer') description = models.TextField location = models.CharField(max_length=50) difficulty = models.CharField(max_length=20) def __str__(self): return self.description, self.location, self.difficulty
class HeroStats(models.Model): hero = models.ForeignKey('Hero') height = models.CharField(max_length=10) weight = models.CharField(max_length=10) powers = models.TextField intelligence = models.CharField(max_length=5, choices=STATS_CHOICES) stamina = models.CharField(max_length=5, choices=STATS_CHOICES) strength = models.CharField(max_length=5, choices=STATS_CHOICES)
class Class_Training(models.Model): trainer = models.ForeignKey('Trainer') class_name = models.CharField(max_length=30) type_of_class = models.CharField(max_length=2, choices=TRAINING_TYPE_CHOICES) description = models.TextField(max_length=200) def __str__(self): return self.class_name, self.trainer
class Interview(models.Model): subject = models.CharField(max_length=50) role = models.CharField(max_length=50) movie = models.ForeignKey(Movie) on_dvd = models.BooleanField(default=True) on_blu_ray = models.BooleanField(default=True) class Meta: repr_fields_exclude = ('on_dvd', 'on_blu_ray')
class Author(models.Model): name = models.CharField(max_length=100) sex = models.CharField(max_length=6, choices=( ('male', 'Male'), ('female', 'Female'), )) birthday = models.DateField() books = models.ArrayField(of=fields.BookField)
class ConcessionAlias(models.Model): concession_alias = models.CharField(primary_key=True, max_length=200) concession_id = models.CharField(max_length=200) class Meta: db_table = 'concession_alias_table' def __str__(self): return self.concession_alias or '<untitled>'
class Concession(models.Model): concession_id = models.CharField(primary_key=True, max_length=200) concession_name = models.CharField(max_length=200) unep_geo_id = models.CharField(max_length=200, blank=True) country = models.CharField(max_length=200) source = models.ForeignKey('SourceInfo', null=True, blank=True) class Meta: db_table = 'concession_table' def __str__(self): return self.concession_name or '<untitled>'
class SourceInfo(models.Model): ''' Contains source information ''' id = models.AutoField(primary_key=True) contributor = models.CharField(max_length=200) license = models.CharField(max_length=200) date = models.DateTimeField(default=datetime.now) info = models.JSONField(type=dict, default={}) def __str__(self): return '%s under %s license' % (self.contributor, self.license)
class InformationType(models.Model): DataSource = models.ForeignKey('DataSource', related_name='information_types') name = models.CharField(max_length=200, blank=True,null=True) description = models.TextField(blank=True,null=True) filing_type = models.CharField(max_length=200, blank=True,null=True) content = models.TextField(blank=True,null=True) patterns = models.TextField(blank=True,null=True) examples = models.TextField(blank=True,null=True) negative_examples = models.TextField(blank=True,null=True) regulations = models.TextField(blank=True,null=True) def __str__(self): return self.name
class DataSource(models.Model): name = models.CharField(max_length=200) description = models.TextField(blank=True,null=True) url_homepage = models.URLField(blank=True,null=True) url_example = models.URLField(blank=True,null=True) location = models.CharField(max_length=200,blank=True,null=True) start_date = models.DateField(blank=True,null=True) end_date = models.DateField(blank=True,null=True) #daterange = DateRangeField(blank=True, null=True) contents = models.TextField(blank=True, null=True) def __str__(self): return self.name
class Document(models.Model): doc_id = models.CharField(primary_key=True, max_length=200, default=random_id) host_url = models.CharField(max_length=200, default='') source_url = models.CharField(max_length=200, default='') source = models.ForeignKey('SourceInfo', null=True, blank=True) class Meta: db_table = 'document_table' def __str__(self): return self.host_url or '<untitled>'
class Author(models.Model): name = models.CharField(max_length=75) uuid = models.UUIDField(null=True) books = models.ArrayField(of=BookField) data = models.JSONField(default=None) created = models.DateTimeField(auto_now_add=True) modified = models.DateTimeField(auto_now=True)
class Report(models.Model): mission = models.ForeignKey('Mission') outcome = models.CharField(max_length=15, choices=OUTCOME_CHOICES) comments = models.TextField def __str__(self): return self.outcome
class Cost(models.Model): project = models.ForeignKey(Project) # XXX does a key to Company make sense here?? actual_predicted = models.CharField(max_length=10, choices=( ('actual', 'Actual'), ('predicted', 'Predicted'),)) description = models.CharField(max_length=100, null=True,blank=True) amount = models.FloatField() currency = models.CharField(max_length=3, blank=True, null=True, default='USD', choices=CURRENCIES) per = models.CharField( max_length=30, choices=TIME_PERIODS + (('barrel', 'barrel'),))
class ReportLog(models.CompositeField): class_ID = models.IntegerField hero_ID = models.IntegerField outcome = models.CharField(max_length=1, choices=OUTCOME_CHOICES) comments = models.TextField trainer = models.IntegerField class Meta: db_type = 'report'
class Search(models.Model): ''' Represents one run of any of the data-searching code ''' label = models.CharField(max_length=10, primary_key=True) metadata = models.JSONField(type=dict) source = models.ForeignKey('SourceInfo', null=True, blank=True) def __str__(self): return self.label or '<untitled>'
class Attendance(models.CompositeField): class_ID = models.IntegerField hero_ID = models.IntegerField room_name = models.CharField(max_length=30) date = models.DateField start_time = models.TimeField end_time = models.TimeField class Meta: db_type = 'attendance'
class Company(models.Model): company_id = models.CharField(primary_key=True, max_length=200, default=random_id) company_name = models.CharField(max_length=200) cik = models.IntegerField(blank=True, null=True, db_index=True) sic = models.IntegerField(blank=True, null=True) jurisdiction = models.CharField(max_length=50, blank=True) source = models.ForeignKey('SourceInfo', blank=True, null=True, related_name='companies') class Meta: db_table = 'company_table' ordering = [ 'company_name', ] def __str__(self): return self.company_name or '<untitled>'
class Task(models.Model): source = models.ForeignKey(Document) status = models.CharField(max_length=12, choices=[ (x,x) for x in ( 'completed', 'in progress', 'available', 'on hold') ]) task_group = models.ForeignKey('TaskGroup') date_completed = models.DateTimeField(null=True,blank=True) user = models.ForeignKey(User) data = models.JSONField(null=True,blank=True)
class Contract(models.Model): contract_id = models.CharField(primary_key=True, max_length=200) doc = models.ForeignKey('Document', null=True, blank=True) country = models.CharField(max_length=200) sign_date = models.CharField(max_length=200) title_type = models.CharField(max_length=200, blank=True) source_url = models.CharField(max_length=200) doc_cloud_id = models.CharField(max_length=200) doc_cloud_url = models.CharField(max_length=200) sign_year = models.CharField(max_length=200) source = models.ForeignKey('SourceInfo', null=True, blank=True) class Meta: db_table = 'contract_table' def __str__(self): return self.contract_id or '<untitled>'
class Check(models.Model): id = models.UUIDField(auto_add=True, primary_key=True) unblocked = models.SmallIntegerField(default=0) created_at = models.DateTimeField(default=now) started_at = models.DateTimeField(null=True, blank=True) finished_at = models.DateTimeField(null=True, blank=True) requirements = models.ArrayField(models.TextField()) projects = models.ArrayField(models.CharField(max_length=255)) blockers = models.JSONField() public = models.BooleanField(default=True) runs = models.SmallIntegerField(default=0) project = models.ForeignKey(Project, related_name='checks', null=True, blank=True) class Meta: ordering = ('-finished_at',) def __str__(self): return str(self.id) def get_absolute_url(self): return reverse('check-detail', kwargs={'pk': str(self.pk)}) def clean(self): projects = OrderedDict() # using this since sets aren't ordered for requirement in self.requirements: url = urlparse(requirement) if url.scheme in ('http', 'https', 'file'): requirement = [sanitize_github_url(requirement, url)] try: for project in projects_from_requirements(requirement): projects[project] = None except: raise ValidationError("Couldn't check %s." % requirement) else: projects[requirement] = None self.projects = list(projects.keys()) for index, project_name in enumerate(self.projects): validators.RegexValidator(project_name_re, 'Project %s invalid' % project_name)(project_name)
class CitizenField(models.CompositeField): first_name = models.CharField(max_length=20) last_name = models.CharField(max_length=30) authors = models.ManyToManyField(Author)
class CitizenField(models.CompositeField): first_name = models.CharField(max_length=20) last_name = models.CharField(max_length=30) resident_of = models.ForeignKey(Monarchy)