gmba_django/app/models.py

895 lines
33 KiB
Python

# This is an auto-generated Django model module.
# You'll have to do the following manually to clean this up:
# * Rearrange models' order
# * Make sure each model has one field with primary_key=True
# * Make sure each ForeignKey and OneToOneField has `on_delete` set to the desired behavior
# * Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the table
# Feel free to rename the models, but don't rename db_table values or field names.
from django.db import models
class AlembicVersion(models.Model):
version_num = models.TextField()
class Meta:
managed = False
db_table = 'alembic_version'
class Field(models.Model):
id = models.AutoField(primary_key=True)
name = models.TextField(blank=True, null=True)
class Meta:
db_table = 'field'
def __str__(self): return self.name
def dict(self):
return {'id': self.id, 'name': self.name}
class FieldsPeople(models.Model):
id = models.AutoField(primary_key=True)
person = models.ForeignKey(
'Person', models.DO_NOTHING, blank=True, null=True)
field = models.ForeignKey(Field, models.DO_NOTHING, blank=True, null=True)
class Meta:
db_table = 'fields_people'
class Method(models.Model):
id = models.AutoField(primary_key=True)
name = models.TextField(blank=True, null=True)
class Meta:
db_table = 'method'
def __str__(self): return self.name
def dict(self):
return {'id': self.id, 'name': self.name}
class MethodsPeople(models.Model):
id = models.AutoField(primary_key=True)
person = models.ForeignKey(
'Person', models.DO_NOTHING, blank=True, null=True)
method = models.ForeignKey(
Method, models.DO_NOTHING, blank=True, null=True)
class Meta:
db_table = 'methods_people'
class Language(models.Model):
id = models.AutoField(primary_key=True)
language = models.TextField(blank=True, null=True)
def __str__(self):
return self.language
class RangeType(models.Model):
id = models.AutoField(primary_key=True)
range_type = models.TextField(blank=True, null=True)
def __str__(self):
return self.range_type
class MountainRange(models.Model):
MAP_UNIT_CHOICES = (
('Aggregated', 'Aggregated'),
('Basic', 'Basic'),
('No', 'No'),
)
id = models.AutoField(primary_key=True)
source_id = models.IntegerField(blank=True, null=True)
gmba_id = models.TextField(blank=True, null=True)
name = models.TextField(blank=True, null=True)
countries = models.TextField(blank=True, null=True)
range_name_map = models.CharField(blank=True, null=True, max_length=128)
#range_name_map = models.CharField(blank=True, null=True, unique=True, max_length=128)
range_name = models.CharField(blank=True, null=True, max_length=128)
range_name_ascii = models.CharField(blank=True, null=True, max_length=128)
range_name_language = models.ForeignKey(
Language, models.DO_NOTHING, blank=True, null=True, to_field='id')
mother_range = models.ForeignKey(
"self", models.DO_NOTHING, blank=True, null=True, to_field='id')
feature = models.ForeignKey(
RangeType, models.DO_NOTHING, blank=True, null=True, to_field='id')
map_unit = models.TextField(
blank=True, null=True, choices=MAP_UNIT_CHOICES)
level = models.TextField(blank=True, null=True)
level_text = models.TextField(blank=True, null=True)
level_1 = models.TextField(blank=True, null=True)
level_2 = models.TextField(blank=True, null=True)
level_3 = models.TextField(blank=True, null=True)
latitude = models.CharField(blank=True, null=True, max_length=128)
longitude = models.CharField(blank=True, null=True, max_length=128)
orogeny = models.TextField(blank=True, null=True)
area = models.FloatField(default=-1)
GMBA_v1_id = models.CharField(blank=True, null=True, max_length=25)
peak_elevation = models.TextField(blank=True, null=True)
peak_name = models.TextField(blank=True, null=True)
peak_latitude = models.TextField(blank=True, null=True)
peak_longitude = models.TextField(blank=True, null=True)
comments = models.TextField(blank=True, null=True)
checked = models.BooleanField(default=False)
source = models.TextField(blank=True, null=True)
range_alternate_id = models.CharField(
blank=True, null=True, max_length=128)
geologic_region = models.TextField(blank=True, null=True)
gmba_v2_id = models.PositiveIntegerField(blank=True, null=True)
gmba_v2_id_str = models.TextField(blank=True, null=True)
wiki_data_id = models.CharField(blank=True, null=True, max_length=25)
wiki_data_url = models.URLField(blank=True, null=True)
select_300 = models.BooleanField(default=False)
gmba_narrow = models.BooleanField(
default=False, verbose_name="GMBA Standard")
name_fr = models.CharField(blank=True, null=True, max_length=128)
name_de = models.CharField(blank=True, null=True, max_length=128)
name_es = models.CharField(blank=True, null=True, max_length=128)
name_pt = models.CharField(blank=True, null=True, max_length=128)
name_cn = models.CharField(blank=True, null=True, max_length=128)
name_ru = models.CharField(blank=True, null=True, max_length=128)
name_tr = models.CharField(blank=True, null=True, max_length=128)
perimeter = models.TextField(blank=True, null=True)
color_all = models.TextField(blank=True, null=True)
color_basic = models.TextField(blank=True, null=True)
color_300 = models.TextField(blank=True, null=True)
elev_low = models.TextField(blank=True, null=True)
elev_high = models.TextField(blank=True, null=True)
elev_range = models.TextField(blank=True, null=True)
elev_avg = models.TextField(blank=True, null=True)
class Meta:
db_table = 'range'
def __str__(self):
return self.range_name if self and self.range_name else '--'
def dict(self):
return {
'id': self.id,
'name': self.range_name,
'gmba_id': self.gmba_id,
'countries': self.countries,
}
class Resource(models.Model):
STAR_CHOICES = (
("", ""),
("-", "-"),
("*", "*"),
("**", "**"),
("***", "***"),
("****", "****"),
("*****", "*****"),
)
TYPE_CHOICES = (
("", ""),
("Atlas", "Atlas"),
("Book", "Book"),
("Book chapter", "Book chapter"),
("Case study", "Case study"),
("Conservation project", "Conservation project"),
("Dataset", "Dataset"),
("Development project", "Development project"),
("Journal article", "Journal article"),
("LTER", "LTER"),
("Map", "Map"),
("Network", "Network"),
("PEGASuS", "PEGASuS"),
("Presentation", "Presentation"),
("Report", "Report"),
("Research project", "Research project"),
("Research Site", "Research Site"),
("Thesis", "Thesis"),
("Video", "Video"),
("Website", "Website"),
("Working Group", "Working Group"),
)
id = models.AutoField(primary_key=True)
source_id = models.IntegerField(blank=True, null=True)
title = models.TextField(blank=True, null=True)
url = models.URLField(blank=True, null=True)
citation = models.TextField(blank=True, null=True)
abstract = models.TextField(blank=True, null=True)
type = models.TextField(blank=True, null=True, choices=TYPE_CHOICES)
author_keywords = models.TextField(blank=True, null=True)
lat = models.CharField(blank=True, null=True, max_length=128)
lon = models.CharField(blank=True, null=True, max_length=128)
stars = models.TextField(blank=True, null=True, choices=STAR_CHOICES)
PEGASuS_Check_map_with_author = models.BooleanField(default=False)
PEGASuS_polygon_ID = models.CharField(max_length=32, blank=True, null=True)
PEGASuS_Polygon_comments = models.TextField(blank=True, null=True)
PEGASuS_Assessment_ID = models.CharField(
max_length=32, blank=True, null=True)
gloria = models.BooleanField(default=False)
gnomo = models.BooleanField(default=False)
lter = models.BooleanField(default=False)
ltser = models.BooleanField(default=False)
miren = models.BooleanField(default=False)
team = models.BooleanField(default=False)
inventory = models.BooleanField(default=False)
doi = models.CharField(max_length=128, blank=True, null=True)
wiki_data_id = models.CharField(max_length=128, blank=True, null=True)
class Meta:
db_table = 'resource'
def __str__(self):
return self.title
def dict(self):
return {
'id': self.id,
'title': self.title or '',
'citation': self.citation or '',
'url': self.url or '',
'abstract': self.abstract or '',
}
class Scale(models.Model):
id = models.AutoField(primary_key=True)
name = models.TextField(blank=True, null=True)
class Meta:
db_table = 'scale'
def __str__(self):
return self.name
class Taxon(models.Model):
id = models.AutoField(primary_key=True)
name = models.TextField(blank=True, null=True)
class Meta:
db_table = 'taxon'
def __str__(self): return self.name
def dict(self):
return {'id': self.id, 'name': self.name}
# LU models
class Country(models.Model):
id = models.AutoField(primary_key=True)
short_name = models.TextField(blank=True, null=True)
formal_name = models.TextField(blank=True, null=True)
membership_within_un_system = models.TextField(blank=True, null=True)
continent = models.TextField(blank=True, null=True)
eu_ms = models.TextField(blank=True, null=True)
eea_ms = models.TextField(blank=True, null=True)
iso3 = models.TextField(blank=True, null=True)
iso2 = models.TextField(blank=True, null=True)
def __str__(self):
return self.short_name if self else '--'
class GMBA_SpeciesGroup(models.Model):
id = models.AutoField(primary_key=True)
species_group = models.TextField(blank=True, null=True)
def __str__(self):
return self.species_group
class PeopleStatus(models.Model):
id = models.AutoField(primary_key=True)
status = models.TextField(blank=True, null=True)
def __str__(self):
return self.status
class RedListCategory(models.Model):
id = models.AutoField(primary_key=True)
red_list_category = models.TextField(blank=True, null=True)
def __str__(self):
return self.red_list_category
class TaxonStatus(models.Model):
id = models.AutoField(primary_key=True)
taxon_status = models.TextField(blank=True, null=True)
def __str__(self):
return self.taxon_status
class TaxonUnit(models.Model):
id = models.AutoField(primary_key=True)
taxon_unit = models.TextField(blank=True, null=True)
def __str__(self):
return self.taxon_unit
class TrendsQuality(models.Model):
id = models.AutoField(primary_key=True)
trend = models.TextField(blank=True, null=True)
def __str__(self):
return self.trend
class TrendsQuantity(models.Model):
id = models.AutoField(primary_key=True)
trend = models.TextField(blank=True, null=True)
def __str__(self):
return self.trend
class Source(models.Model):
id = models.AutoField(primary_key=True)
source = models.TextField(blank=True, null=True)
def __str__(self):
return self.source
class Repository(models.Model):
id = models.AutoField(primary_key=True)
repository_name = models.TextField(blank=True, null=True)
repository_url = models.TextField(blank=True, null=True)
def __str__(self):
return '%s --- %s' % (self.repository_name, self.repository_url)
class GMBA_function(models.Model):
id = models.AutoField(primary_key=True)
gmba_function = models.TextField(blank=True, null=True)
def __str__(self):
return self.gmba_function
class Organisation(models.Model):
CATEGORY_CHOICES = (
('Independent', 'Independent'),
('Public administration > Research Institution',
'Public administration > Research Institution'),
('Academia > University > Institute', 'Academia > University > Institute'),
('Academia > University', 'Academia > University'),
('Public administration > Other Agency',
'Public administration > Other Agency'),
('Private > NGO (not for profit)', 'Private > NGO (not for profit)'),
('Academia > Academy of Sciences', 'Academia > Academy of Sciences'),
('Academia > Academy of Sciences > Institute',
'Academia > Academy of Sciences > Institute'),
('Public administration > Government',
'Public administration > Government'),
('Intergovernmental Agency > Research Institution',
'Intergovernmental Agency > Research Institution'),
('Intergovernmental Agency', 'Intergovernmental Agency '),
('Private > Research Institution', 'Private > Research Institution'),
('Collection > Museum', 'Collection > Museum'),
('Private > Business', 'Private > Business'),
('Education > Graduate', 'Education > Graduate'),
('Collection > Botanical Garden', 'Collection > Botanical Garden'),
('Other', 'Other'),)
SUBJECT_CHOICES = (
('Other', 'Other'),
('Environment', 'Environment'),
('Ecology', 'Ecology'),
('Agriculture', 'Agriculture'),
('Botany', 'Botany'),
('Science and technology', 'Science and technology'),
('Biodiversity', 'Biodiversity'),
('Climate / Global Change', 'Climate / Global Change'),
('Mountains', 'Mountains'),
('Biology', 'Biology'),
('Forestry', 'Forestry'),
('Conservation', 'Conservation'),
('Culture / arts', 'Culture / arts'),
('Geography', 'Geography'),
('Zoology', 'Zoology'),
('Development / poverty / human rights',
'Development / poverty / human rights'),
('Social Sciences', 'Social Sciences'),
('Earth Sciences', 'Earth Sciences'),
('Health', 'Health'),
('Hydrology / Water', 'Hydrology / Water'),
('Sustainability', 'Sustainability'),
('Economy / finance', 'Economy / finance'),
('Natural Resources', 'Natural Resources'),
('Education', 'Education'),
('Architecture, planning & design', 'Architecture, planning & design'),
('', ''),
)
org_num1 = models.AutoField(primary_key=True, verbose_name='ID')
organisation_search = models.TextField(blank=True, null=True)
org_alpha_search = models.TextField(blank=True, null=True)
organisation_english = models.CharField(
max_length=256, blank=True, null=True, verbose_name='Organisation')
organisation_2 = models.CharField(
max_length=256, blank=True, null=True, verbose_name='Department 1')
organisation_3 = models.CharField(
max_length=256, blank=True, null=True, verbose_name='Department 2')
organisation_original = models.TextField(blank=True, null=True)
acronym = models.CharField(max_length=128, blank=True, null=True)
street = models.CharField(max_length=256, blank=True, null=True)
po_box = models.CharField(max_length=128, blank=True, null=True)
postcode = models.CharField(max_length=64, blank=True, null=True)
city = models.CharField(max_length=64, blank=True, null=True)
region = models.TextField(blank=True, null=True)
search_url = models.TextField(blank=True, null=True)
lat_long = models.CharField(max_length=128, blank=True, null=True)
url = models.URLField(blank=True, null=True)
tel = models.CharField(max_length=128, blank=True, null=True)
email = models.EmailField(blank=True, null=True)
country = models.ForeignKey(
Country, models.DO_NOTHING, blank=True, null=True, to_field='id')
tags = models.TextField(blank=True, null=True)
description = models.TextField(blank=True, null=True)
northing = models.TextField(blank=True, null=True)
easting = models.TextField(blank=True, null=True)
category = models.TextField(
blank=True, null=True, choices=CATEGORY_CHOICES)
subject = models.CharField(
max_length=128, blank=True, null=True, choices=SUBJECT_CHOICES)
def __str__(self):
if self.organisation_english:
if self.organisation_2:
name = f"{self.organisation_english} ({self.organisation_2})"
name = f"{self.country} < {self.organisation_english} < {self.organisation_2} < {self.organisation_3} < {self.acronym}"
else:
name = f"{self.organisation_english}"
name = f"{self.country} < {self.organisation_english} < {self.organisation_2} < {self.organisation_3} < {self.acronym}"
else:
name = ' ---'
return name
class RangeOnlineInfo(models.Model):
id = models.AutoField(primary_key=True)
# This is supposed to be linked to MountainRange via range_name_map, but the range_name_map
# is not itself unique. Are we missing something? TODO: Investigate
#range_name = models.ForeignKey(MountainRange, models.DO_NOTHING, blank=True, null=True, to_field='range_name_map')
#range_name = models.ForeignKey(MountainRange, blank=True, null=True, to_field='range_name_map', on_delete=models.CASCADE)
range_name = models.TextField(blank=True, null=True)
info_source = models.TextField(blank=True, null=True)
url = models.TextField(blank=True, null=True)
def __str__(self):
return self.range_name
class RangeNameTranslation(models.Model):
id = models.AutoField(primary_key=True)
range_name = models.ForeignKey(
MountainRange, models.DO_NOTHING, blank=True, null=True)
language_translation = models.ForeignKey(
Language, models.DO_NOTHING, blank=True, null=True)
range_name_translation = models.TextField(blank=True, null=True)
def __str__(self):
return '%s - %s' % (self.range_name, self.language_translation.language)
class AddElevation(models.Model):
id = models.AutoField(primary_key=True)
gmba_v2_id = models.TextField(blank=True, null=True)
elev_min = models.TextField(blank=True, null=True)
elev_max = models.TextField(blank=True, null=True)
elev_range = models.TextField(blank=True, null=True)
def __str__(self):
return '%s - %s' % (self.gmba_v2_id, self.elev_range)
class GMBA_V2_Centroid(models.Model):
id = models.AutoField(primary_key=True)
gridcode = models.TextField(blank=True, null=True)
area = models.TextField(blank=True, null=True)
latitude = models.TextField(blank=True, null=True)
longitude = models.TextField(blank=True, null=True)
def __str__(self):
return '%s - %s, %s' % (self.gridcode, self.latitude, self.longitude)
class ImportGeom210915(models.Model):
id = models.AutoField(primary_key=True)
gmba_v2_id = models.TextField(blank=True, null=True)
area = models.TextField(blank=True, null=True)
perimeter = models.TextField(blank=True, null=True)
color_all = models.TextField(blank=True, null=True)
color_basic = models.TextField(blank=True, null=True)
def __str__(self):
return self.gmba_v2_id
class Keyword(models.Model):
keyword_id = models.AutoField(primary_key=True)
mother = models.ForeignKey("self", models.DO_NOTHING, blank=True, null=True, to_field='keyword_id',
related_name='mother_keyword')
keyword = models.TextField(blank=True, null=True)
def __str__(self):
return '%s > %s' % (self.mother, self.keyword) if self.mother.keyword != '->' else self.keyword
class ResourceKeyword(models.Model):
id = models.AutoField(primary_key=True)
resource = models.ForeignKey(
Resource, models.DO_NOTHING, blank=True, null=True)
keyword = models.ForeignKey(
Keyword, models.DO_NOTHING, blank=True, null=True, to_field='keyword_id')
def __str__(self):
return '%s - %s' % (self.resource.title, self.keyword.keyword)
class NamesImport(models.Model):
id = models.AutoField(primary_key=True)
gmba_v2_id = models.TextField(blank=True, null=True)
cn = models.TextField(blank=True, null=True)
de = models.TextField(blank=True, null=True)
es = models.TextField(blank=True, null=True)
fr = models.TextField(blank=True, null=True)
pt = models.TextField(blank=True, null=True)
ru = models.TextField(blank=True, null=True)
tr = models.TextField(blank=True, null=True)
def __str__(self):
return '%s - %s - %s - %s' % (self.gmba_v2_id, self.cn, self.de, self.fr)
class ResourceRange(models.Model):
id = models.AutoField(primary_key=True)
resource_title = models.ForeignKey(
Resource, models.DO_NOTHING, blank=True, null=True)
range_name = models.ForeignKey(
MountainRange, models.DO_NOTHING, blank=True, null=True)
def __str__(self):
return '%s, %s' % (self.resource_title.title, self.range_name.name)
class LanguageLink(models.Model):
id = models.AutoField(primary_key=True)
language_number_code = models.ForeignKey(
Language, models.DO_NOTHING, blank=True, null=True)
language_letter_code = models.TextField(blank=True, null=True)
def __str__(self):
return '%s - %s' % (self.language_number_code.language, self.language_letter_code)
class Peak(models.Model):
id = models.AutoField(primary_key=True)
point_name = models.TextField(blank=True, null=True)
latitude = models.TextField(blank=True, null=True)
longitude = models.TextField(blank=True, null=True)
type = models.TextField(blank=True, null=True)
elevation = models.TextField(blank=True, null=True)
link = models.TextField(blank=True, null=True)
def __str__(self):
return self.point_name
class Search(models.Model):
id = models.AutoField(primary_key=True)
range_name = models.ForeignKey(
MountainRange, models.DO_NOTHING, blank=True, null=True)
repository = models.ForeignKey(
Repository, models.DO_NOTHING, blank=True, null=True)
search_string = models.TextField(blank=True, null=True)
search_date = models.TextField(blank=True, null=True)
result = models.TextField(blank=True, null=True)
number_of_records = models.TextField(blank=True, null=True)
stored = models.TextField(blank=True, null=True)
def __str__(self):
return self.search_string if self else ' -- '
class Person(models.Model):
MR_MRS_CHOICES = (
('', ''),
('Ms', 'Ms'),
('Mr', 'Mr'),
)
GMBA_FUNCTION_CHOICES = (
('', ''),
('Involved scientist', 'Involved scientist'),
('''Involved scientist
Steering committee''', '''Involved scientist
Steering committee'''),
('Network', 'Network'),
('Newsletter only', 'Newsletter only'),
('''Steering committee
Involved scientist''', '''Steering committee
Involved scientist''')
)
id = models.AutoField(primary_key=True)
source_id = models.IntegerField(blank=True, null=True)
title = models.CharField(blank=True, null=True, max_length=255)
first_name = models.CharField(blank=True, null=True, max_length=50)
last_name = models.CharField(blank=True, null=True, max_length=50)
organisation = models.TextField(blank=True, null=True)
position = models.CharField(blank=True, null=True, max_length=255)
contact_email = models.EmailField(blank=True, null=True) # email_1
personal_url = models.URLField(blank=True, null=True) # url ?
biography = models.TextField(blank=True, null=True)
# Field renamed because it started with '_'.
field_indexer = models.TextField(
db_column='_indexer', blank=True, null=True)
mr_mrs = models.TextField(blank=True, null=True, choices=MR_MRS_CHOICES)
full_name = models.CharField(blank=True, null=True, max_length=100)
search_name = models.CharField(blank=True, null=True, max_length=100)
email_2 = models.EmailField(blank=True, null=True)
skype = models.CharField(blank=True, null=True, max_length=50)
professional_phone = models.CharField(blank=True, null=True, max_length=50)
mobile_number = models.CharField(blank=True, null=True, max_length=50)
url = models.URLField(blank=True, null=True)
field_of_expertise = models.TextField(blank=True, null=True)
status = models.ForeignKey(
PeopleStatus, models.DO_NOTHING, blank=True, null=True, to_field='id')
entry_date = models.TextField(blank=True, null=True)
gmba_function = models.TextField(
blank=True, null=True, choices=GMBA_FUNCTION_CHOICES)
news_letter = models.BooleanField(default=False)
country = models.ForeignKey(
Country, models.DO_NOTHING, blank=True, null=True, to_field='id')
organization = models.ForeignKey(
Organisation, models.DO_NOTHING, blank=True, null=True)
birds = models.BooleanField(default=False)
mammals = models.BooleanField(default=False)
reptiles = models.BooleanField(default=False)
amphibians = models.BooleanField(default=False)
fish = models.BooleanField(default=False)
insects = models.BooleanField(default=False)
molluscs = models.BooleanField(default=False)
crustaceans = models.BooleanField(default=False)
arachnids = models.BooleanField(default=False)
angiosperms = models.BooleanField(default=False)
gymnosperms = models.BooleanField(default=False)
fungi = models.BooleanField(default=False)
algae = models.BooleanField(default=False)
microbes = models.BooleanField(default=False)
biological_field_sampling = models.BooleanField(default=False)
data_mining = models.BooleanField(default=False)
remote_sensing = models.BooleanField(default=False)
gis = models.BooleanField(default=False)
spatial_analysis = models.BooleanField(default=False)
statistical_analysis = models.BooleanField(default=False)
modelling = models.BooleanField(default=False)
assessment = models.BooleanField(default=False)
meta_analysis = models.BooleanField(default=False)
synthesis = models.BooleanField(default=False)
# "Qualitative social science methods (interviews, surveys)"
qualitative_ssm = models.BooleanField(default=False)
genetic_analyses = models.BooleanField(default=False)
field_site = models.BooleanField(default=False)
transect = models.BooleanField(default=False)
mountain_top = models.BooleanField(default=False)
mountain_range = models.BooleanField(default=False)
landscape = models.BooleanField(default=False)
regional = models.BooleanField(default=False)
national = models.BooleanField(default=False)
_global = models.BooleanField(default=False)
geographic_area_of_expertise = models.TextField(blank=True, null=True)
profile_on_web = models.BooleanField(default=False)
updated = models.BooleanField(default=False)
orcid = models.TextField(blank=True, null=True)
web_of_science = models.TextField(blank=True, null=True)
twitter = models.TextField(blank=True, null=True)
instagram = models.TextField(blank=True, null=True)
class Meta:
db_table = 'person'
def get_regional(self):
return False
def index(self):
if self:
self.field_indexer = " ".join([
self.first_name if self and self.first_name else "",
self.last_name if self and self.last_name else "",
self.organisation if self and self.organisation else "",
self.position if self and self.position else "",
self.biography if self and self.biography else ""
] if self else "")
# self.save()
return True
else:
return False
def fullname(self):
return " ".join([self.title if self.title else '',
self.first_name if self.first_name else '',
self.last_name if self.last_name else ''])
def __str__(self):
return self.fullname() if self.fullname() else ""
def dict(self):
return {
'id': self.id,
'fullname': self.fullname(),
'organisation': self.organisation or '',
'position': self.position or '',
'country': self.country.short_name or '',
'personal_url': self.personal_url or '',
'personal_urls': [] if self.personal_url is None else self.personal_url.split(';'),
'biography': self.biography or '',
}
def save(self, *args, **kwargs):
self.index()
super(Person, self).save(*args, **kwargs)
class TaxaPeople(models.Model):
id = models.AutoField(primary_key=True)
person = models.ForeignKey(Person, models.CASCADE, blank=True, null=True)
taxon = models.ForeignKey(
'Taxon', models.DO_NOTHING, blank=True, null=True)
class Meta:
db_table = 'taxa_people'
def __str__(self):
return self.person.full_name
class RangesPeople(models.Model):
id = models.AutoField(primary_key=True)
person = models.ForeignKey(Person, models.CASCADE, blank=True, null=True)
range = models.ForeignKey(
MountainRange, models.DO_NOTHING, blank=True, null=True)
class Meta:
db_table = 'ranges_people'
def __str__(self):
return self.person.full_name
class ResourcesPeople(models.Model):
id = models.AutoField(primary_key=True)
person = models.ForeignKey(Person, models.CASCADE, blank=True, null=True)
resource = models.ForeignKey(
Resource, models.CASCADE, blank=True, null=True)
class Meta:
db_table = 'resources_people'
def __str__(self):
return self.person.full_name
class ScalesPeople(models.Model):
id = models.AutoField(primary_key=True)
person = models.ForeignKey(
Person, models.DO_NOTHING, blank=True, null=True)
scale = models.ForeignKey(Scale, models.DO_NOTHING, blank=True, null=True)
class Meta:
db_table = 'scales_people'
def __str__(self):
return self.person.full_name
class Species(models.Model):
id = models.AutoField(primary_key=True)
scientific_name = models.TextField(blank=True, null=True)
_class = models.TextField(blank=True, null=True)
english_name = models.TextField(blank=True, null=True)
url = models.TextField(blank=True, null=True)
def __str__(self):
return '%s, %s, %s' % (self.scientific_name, self._class, self.english_name)
class PeopleFunction(models.Model):
id = models.AutoField(primary_key=True)
person = models.ForeignKey(Person, models.CASCADE, blank=True, null=True)
function = models.ForeignKey(
GMBA_function, models.DO_NOTHING, blank=True, null=True)
def __str__(self):
return self.person.full_name
class SpeciesRange(models.Model):
id = models.AutoField(primary_key=True)
scientific_name = models.ForeignKey(
Species, models.DO_NOTHING, blank=True, null=True)
range = models.ForeignKey(
MountainRange, models.DO_NOTHING, blank=True, null=True)
endemic = models.TextField(blank=True, null=True)
source_url = models.TextField(blank=True, null=True)
def __str__(self):
return self.scientific_name.scientific_name if self and self.scientific_name else ' -- '
class PeopleRange(models.Model):
id = models.AutoField(primary_key=True)
person = models.ForeignKey(Person, models.CASCADE, blank=True, null=True)
range = models.ForeignKey(
MountainRange, models.DO_NOTHING, blank=True, null=True)
def __str__(self):
return str(self.id)
class TaxonRange(models.Model):
id = models.AutoField(primary_key=True)
range = models.ForeignKey(
MountainRange, models.DO_NOTHING, blank=True, null=True)
taxon = models.TextField(blank=True, null=True)
subrange_or_region = models.TextField(blank=True, null=True)
taxon_status = models.TextField(blank=True, null=True)
distribution = models.TextField(blank=True, null=True)
redlist = models.TextField(blank=True, null=True)
count_unit = models.TextField(blank=True, null=True)
number_of_units = models.TextField(blank=True, null=True)
source = models.TextField(blank=True, null=True)
remarks = models.TextField(blank=True, null=True)
def __str__(self):
return self.taxon if self.taxon else '--'
class PeopleResource(models.Model):
ROLES_CHOICES = (
('', ''),
('Author', 'Author'),
('Chair', 'Chair'),
('Contributor', 'Contributor'),
('Coordinator', 'Coordinator'),
('Co - Chair', 'Co - Chair'),
('Editor', 'Editor'),
('Head', 'Head'),
('Member', 'Member'),
('Project partner', 'Project partner'),
('SSC', 'SSC'),
)
id = models.AutoField(primary_key=True)
person = models.ForeignKey(Person, models.CASCADE, blank=True, null=True)
resource = models.ForeignKey(
Resource, models.DO_NOTHING, blank=True, null=True)
role = models.TextField(blank=True, null=True, choices=ROLES_CHOICES)
def __str__(self):
return self.person.full_name if self.person else ' -- '
class RangeCountry(models.Model):
id = models.AutoField(primary_key=True)
range = models.ForeignKey(
MountainRange, models.DO_NOTHING, blank=True, null=True)
country = models.ForeignKey(
Country, models.DO_NOTHING, blank=True, null=True)
def __str__(self):
return '%s --- %s' % (self.range.range_name if self.range else 'None', self.country.short_name if self.country else 'None')