Add basic database structure
This commit is contained in:
parent
6e1bd3191a
commit
190f448b8e
270
section7/constants.py
Normal file
270
section7/constants.py
Normal file
@ -0,0 +1,270 @@
|
|||||||
|
import enum
|
||||||
|
|
||||||
|
|
||||||
|
class PayRate(enum.Enum):
|
||||||
|
ANNUALY = enum.auto()
|
||||||
|
QUARTERLY = enum.auto()
|
||||||
|
MONTHLY = enum.auto()
|
||||||
|
WEEKLY = enum.auto()
|
||||||
|
DAILY = enum.auto()
|
||||||
|
HOURLY = enum.auto()
|
||||||
|
OTHER = enum.auto()
|
||||||
|
|
||||||
|
|
||||||
|
class Industry(enum.Enum):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class Currency(enum.Enum):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class Country(enum.Enum):
|
||||||
|
AF = "Afghanistan"
|
||||||
|
AX = "Ã…land Islands"
|
||||||
|
AL = "Albania"
|
||||||
|
DZ = "Algeria"
|
||||||
|
AS = "American Samoa"
|
||||||
|
AD = "Andorra"
|
||||||
|
AO = "Angola"
|
||||||
|
AI = "Anguilla"
|
||||||
|
AQ = "Antarctica"
|
||||||
|
AG = "Antigua and Barbuda"
|
||||||
|
AR = "Argentina"
|
||||||
|
AM = "Armenia"
|
||||||
|
AW = "Aruba"
|
||||||
|
AU = "Australia"
|
||||||
|
AT = "Austria"
|
||||||
|
AZ = "Azerbaijan"
|
||||||
|
BS = "Bahamas"
|
||||||
|
BH = "Bahrain"
|
||||||
|
BD = "Bangladesh"
|
||||||
|
BB = "Barbados"
|
||||||
|
BY = "Belarus"
|
||||||
|
BE = "Belgium"
|
||||||
|
BZ = "Belize"
|
||||||
|
BJ = "Benin"
|
||||||
|
BM = "Bermuda"
|
||||||
|
BT = "Bhutan"
|
||||||
|
BO = "Plurinational State of Bolivia"
|
||||||
|
BQ = "Sint Eustatius and Saba Bonaire"
|
||||||
|
BA = "Bosnia and Herzegovina"
|
||||||
|
BW = "Botswana"
|
||||||
|
BV = "Bouvet Island"
|
||||||
|
BR = "Brazil"
|
||||||
|
IO = "British Indian Ocean Territory"
|
||||||
|
BN = "Brunei Darussalam"
|
||||||
|
BG = "Bulgaria"
|
||||||
|
BF = "Burkina Faso"
|
||||||
|
BI = "Burundi"
|
||||||
|
KH = "Cambodia"
|
||||||
|
CM = "Cameroon"
|
||||||
|
CA = "Canada"
|
||||||
|
CV = "Cape Verde"
|
||||||
|
KY = "Cayman Islands"
|
||||||
|
CF = "Central African Republic"
|
||||||
|
TD = "Chad"
|
||||||
|
CL = "Chile"
|
||||||
|
CN = "China"
|
||||||
|
CX = "Christmas Island"
|
||||||
|
CC = "Cocos (Keeling) Islands"
|
||||||
|
CO = "Colombia"
|
||||||
|
KM = "Comoros"
|
||||||
|
CG = "Congo"
|
||||||
|
CD = "the Democratic Republic of the Congo"
|
||||||
|
CK = "Cook Islands"
|
||||||
|
CR = "Costa Rica"
|
||||||
|
CI = "Côte d'Ivoire"
|
||||||
|
HR = "Croatia"
|
||||||
|
CU = "Cuba"
|
||||||
|
CW = "Curaçao"
|
||||||
|
CY = "Cyprus"
|
||||||
|
CZ = "Czech Republic"
|
||||||
|
DK = "Denmark"
|
||||||
|
DJ = "Djibouti"
|
||||||
|
DM = "Dominica"
|
||||||
|
DO = "Dominican Republic"
|
||||||
|
EC = "Ecuador"
|
||||||
|
EG = "Egypt"
|
||||||
|
SV = "El Salvador"
|
||||||
|
GQ = "Equatorial Guinea"
|
||||||
|
ER = "Eritrea"
|
||||||
|
EE = "Estonia"
|
||||||
|
ET = "Ethiopia"
|
||||||
|
FK = "Falkland Islands (Malvinas)"
|
||||||
|
FO = "Faroe Islands"
|
||||||
|
FJ = "Fiji"
|
||||||
|
FI = "Finland"
|
||||||
|
FR = "France"
|
||||||
|
GF = "French Guiana"
|
||||||
|
PF = "French Polynesia"
|
||||||
|
TF = "French Southern Territories"
|
||||||
|
GA = "Gabon"
|
||||||
|
GM = "Gambia"
|
||||||
|
GE = "Georgia"
|
||||||
|
DE = "Germany"
|
||||||
|
GH = "Ghana"
|
||||||
|
GI = "Gibraltar"
|
||||||
|
GR = "Greece"
|
||||||
|
GL = "Greenland"
|
||||||
|
GD = "Grenada"
|
||||||
|
GP = "Guadeloupe"
|
||||||
|
GU = "Guam"
|
||||||
|
GT = "Guatemala"
|
||||||
|
GG = "Guernsey"
|
||||||
|
GN = "Guinea"
|
||||||
|
GW = "Guinea-Bissau"
|
||||||
|
GY = "Guyana"
|
||||||
|
HT = "Haiti"
|
||||||
|
HM = "Heard Island and McDonald Islands"
|
||||||
|
VA = "Holy See (Vatican City State)"
|
||||||
|
HN = "Honduras"
|
||||||
|
HK = "Hong Kong"
|
||||||
|
HU = "Hungary"
|
||||||
|
IS = "Iceland"
|
||||||
|
IN = "India"
|
||||||
|
ID = "Indonesia"
|
||||||
|
IR = "Islamic Republic of Iran"
|
||||||
|
IQ = "Iraq"
|
||||||
|
IE = "Ireland"
|
||||||
|
IM = "Isle of Man"
|
||||||
|
IL = "Israel"
|
||||||
|
IT = "Italy"
|
||||||
|
JM = "Jamaica"
|
||||||
|
JP = "Japan"
|
||||||
|
JE = "Jersey"
|
||||||
|
JO = "Jordan"
|
||||||
|
KZ = "Kazakhstan"
|
||||||
|
KE = "Kenya"
|
||||||
|
KI = "Kiribati"
|
||||||
|
KP = "Democratic People's Republic of Korea"
|
||||||
|
KR = "Republic of Korea"
|
||||||
|
KW = "Kuwait"
|
||||||
|
KG = "Kyrgyzstan"
|
||||||
|
LA = "Lao People's Democratic Republic"
|
||||||
|
LV = "Latvia"
|
||||||
|
LB = "Lebanon"
|
||||||
|
LS = "Lesotho"
|
||||||
|
LR = "Liberia"
|
||||||
|
LY = "Libya"
|
||||||
|
LI = "Liechtenstein"
|
||||||
|
LT = "Lithuania"
|
||||||
|
LU = "Luxembourg"
|
||||||
|
MO = "Macao"
|
||||||
|
MK = "the Former Yugoslav Republic of Macedonia"
|
||||||
|
MG = "Madagascar"
|
||||||
|
MW = "Malawi"
|
||||||
|
MY = "Malaysia"
|
||||||
|
MV = "Maldives"
|
||||||
|
ML = "Mali"
|
||||||
|
MT = "Malta"
|
||||||
|
MH = "Marshall Islands"
|
||||||
|
MQ = "Martinique"
|
||||||
|
MR = "Mauritania"
|
||||||
|
MU = "Mauritius"
|
||||||
|
YT = "Mayotte"
|
||||||
|
MX = "Mexico"
|
||||||
|
FM = "Federated States of Micronesia"
|
||||||
|
MD = "Republic of Moldova"
|
||||||
|
MC = "Monaco"
|
||||||
|
MN = "Mongolia"
|
||||||
|
ME = "Montenegro"
|
||||||
|
MS = "Montserrat"
|
||||||
|
MA = "Morocco"
|
||||||
|
MZ = "Mozambique"
|
||||||
|
MM = "Myanmar"
|
||||||
|
NA = "Namibia"
|
||||||
|
NR = "Nauru"
|
||||||
|
NP = "Nepal"
|
||||||
|
NL = "Netherlands"
|
||||||
|
NC = "New Caledonia"
|
||||||
|
NZ = "New Zealand"
|
||||||
|
NI = "Nicaragua"
|
||||||
|
NE = "Niger"
|
||||||
|
NG = "Nigeria"
|
||||||
|
NU = "Niue"
|
||||||
|
NF = "Norfolk Island"
|
||||||
|
MP = "Northern Mariana Islands"
|
||||||
|
NO = "Norway"
|
||||||
|
OM = "Oman"
|
||||||
|
PK = "Pakistan"
|
||||||
|
PW = "Palau"
|
||||||
|
PS = "State of Palestine"
|
||||||
|
PA = "Panama"
|
||||||
|
PG = "Papua New Guinea"
|
||||||
|
PY = "Paraguay"
|
||||||
|
PE = "Peru"
|
||||||
|
PH = "Philippines"
|
||||||
|
PN = "Pitcairn"
|
||||||
|
PL = "Poland"
|
||||||
|
PT = "Portugal"
|
||||||
|
PR = "Puerto Rico"
|
||||||
|
QA = "Qatar"
|
||||||
|
RE = "Réunion"
|
||||||
|
RO = "Romania"
|
||||||
|
RU = "Russian Federation"
|
||||||
|
RW = "Rwanda"
|
||||||
|
BL = "Saint Barthélemy"
|
||||||
|
SH = "Ascension and Tristan da Cunha Saint Helena"
|
||||||
|
KN = "Saint Kitts and Nevis"
|
||||||
|
LC = "Saint Lucia"
|
||||||
|
MF = "Saint Martin (French part)"
|
||||||
|
PM = "Saint Pierre and Miquelon"
|
||||||
|
VC = "Saint Vincent and the Grenadines"
|
||||||
|
WS = "Samoa"
|
||||||
|
SM = "San Marino"
|
||||||
|
ST = "Sao Tome and Principe"
|
||||||
|
SA = "Saudi Arabia"
|
||||||
|
SN = "Senegal"
|
||||||
|
RS = "Serbia"
|
||||||
|
SC = "Seychelles"
|
||||||
|
SL = "Sierra Leone"
|
||||||
|
SG = "Singapore"
|
||||||
|
SX = "Sint Maarten (Dutch part)"
|
||||||
|
SK = "Slovakia"
|
||||||
|
SI = "Slovenia"
|
||||||
|
SB = "Solomon Islands"
|
||||||
|
SO = "Somalia"
|
||||||
|
ZA = "South Africa"
|
||||||
|
GS = "South Georgia and the South Sandwich Islands"
|
||||||
|
SS = "South Sudan"
|
||||||
|
ES = "Spain"
|
||||||
|
LK = "Sri Lanka"
|
||||||
|
SD = "Sudan"
|
||||||
|
SR = "Suriname"
|
||||||
|
SJ = "Svalbard and Jan Mayen"
|
||||||
|
SZ = "Swaziland"
|
||||||
|
SE = "Sweden"
|
||||||
|
CH = "Switzerland"
|
||||||
|
SY = "Syrian Arab Republic"
|
||||||
|
TW = "Province of China Taiwan"
|
||||||
|
TJ = "Tajikistan"
|
||||||
|
TZ = "United Republic of Tanzania"
|
||||||
|
TH = "Thailand"
|
||||||
|
TL = "Timor-Leste"
|
||||||
|
TG = "Togo"
|
||||||
|
TK = "Tokelau"
|
||||||
|
TO = "Tonga"
|
||||||
|
TT = "Trinidad and Tobago"
|
||||||
|
TN = "Tunisia"
|
||||||
|
TR = "Turkey"
|
||||||
|
TM = "Turkmenistan"
|
||||||
|
TC = "Turks and Caicos Islands"
|
||||||
|
TV = "Tuvalu"
|
||||||
|
UG = "Uganda"
|
||||||
|
UA = "Ukraine"
|
||||||
|
AE = "United Arab Emirates"
|
||||||
|
GB = "United Kingdom"
|
||||||
|
US = "United States"
|
||||||
|
UM = "United States Minor Outlying Islands"
|
||||||
|
UY = "Uruguay"
|
||||||
|
UZ = "Uzbekistan"
|
||||||
|
VU = "Vanuatu"
|
||||||
|
VE = "Bolivarian Republic of Venezuela"
|
||||||
|
VN = "Viet Nam"
|
||||||
|
VG = "British Virgin Islands"
|
||||||
|
VI = "U.S. Virgin Islands"
|
||||||
|
WF = "Wallis and Futuna"
|
||||||
|
EH = "Western Sahara"
|
||||||
|
YE = "Yemen"
|
||||||
|
ZM = "Zambia"
|
60
section7/database.py
Normal file
60
section7/database.py
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
import datetime
|
||||||
|
import uuid
|
||||||
|
|
||||||
|
import peewee
|
||||||
|
import peewee_plus
|
||||||
|
|
||||||
|
from section7 import constants
|
||||||
|
|
||||||
|
|
||||||
|
INTERFACE = peewee.DatabaseProxy()
|
||||||
|
|
||||||
|
|
||||||
|
class Section7Model(peewee.Model):
|
||||||
|
"""Base model for defining common fields and attaching database"""
|
||||||
|
|
||||||
|
class Meta: # pylint: disable=too-few-public-methods,missing-class-docstring
|
||||||
|
database = INTERFACE
|
||||||
|
|
||||||
|
uuid = peewee.UUIDField(null=False, unique=True, default=uuid.uuid4)
|
||||||
|
created = peewee.DateTimeField(null=False, default=datetime.datetime.utcnow)
|
||||||
|
|
||||||
|
|
||||||
|
class DisclosureRecord(Section7Model):
|
||||||
|
"""Record of a user submitted payment disclosure
|
||||||
|
|
||||||
|
:param value: The monetary value of the compensation
|
||||||
|
:param currency: The currency the value is represented in
|
||||||
|
:param rate: The rate that the compensation is assigned
|
||||||
|
:param additionals: Mapping of additional, user defined, compensation details
|
||||||
|
:param recipients: List of email addresses that should receive the compensation disclosure
|
||||||
|
:param publish: Whether the record should be published in the publicly available dataset
|
||||||
|
:param age: Optional age of the user
|
||||||
|
:param gender: Optional gender of the user
|
||||||
|
:param race: Optional race of the user
|
||||||
|
:param country: Optional country where the user's job is located
|
||||||
|
:param city: Optional city where the user's job is located
|
||||||
|
:param industry: Optional industry that the user works in
|
||||||
|
:param title: Optional job title of the user's job
|
||||||
|
:param company: Optional company the user works at
|
||||||
|
:param years_experience: Optional number of years the user has worked in the inudstry
|
||||||
|
:param years_at_company: Optional number of years the user has worked at the company
|
||||||
|
"""
|
||||||
|
|
||||||
|
value = peewee.DecimalField(max_digits=20, decimal_places=3)
|
||||||
|
currency = peewee_plus.EnumField(constants.Currency)
|
||||||
|
rate = peewee_plus.EnumField(constants.PayRate)
|
||||||
|
additionals = peewee_plus.JSONField(default={})
|
||||||
|
recipients = peewee_plus.JSONField(default=[])
|
||||||
|
publish = peewee.BooleanField()
|
||||||
|
|
||||||
|
age = peewee.IntegerField(null=True)
|
||||||
|
gender = peewee.CharField(null=True)
|
||||||
|
race = peewee.CharField(null=True)
|
||||||
|
country = peewee_plus.EnumField(constants.Country, null=True)
|
||||||
|
city = peewee.CharField(null=True)
|
||||||
|
industry = peewee_plus.EnumField(constants.Industry, null=True)
|
||||||
|
title = peewee.CharField(null=True)
|
||||||
|
company = peewee.CharField(null=True)
|
||||||
|
years_experience = peewee.IntegerField(null=True)
|
||||||
|
years_at_company = peewee.IntegerField(null=True)
|
Reference in New Issue
Block a user