Add basic database structure
This commit is contained in:
parent
6e1bd3191a
commit
bbcfc30126
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"
|
59
section7/database.py
Normal file
59
section7/database.py
Normal file
@ -0,0 +1,59 @@
|
||||
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)
|
||||
years_experience = peewee.IntegerField(null=True)
|
||||
years_at_company = peewee.IntegerField(null=True)
|
Reference in New Issue
Block a user