diff --git a/app/api/enums/country_list.py b/app/api/enums/country_list.py new file mode 100644 index 0000000..6d40a20 --- /dev/null +++ b/app/api/enums/country_list.py @@ -0,0 +1,977 @@ +class CountryList: + @staticmethod + def get_signup_country_list(): + return [ + { + "description": "Afghanistan", + "code": "AF" + }, + { + "description": "Ă…land Islands", + "code": "AX" + }, + { + "description": "Albania", + "code": "AL" + }, + { + "description": "Algeria", + "code": "DZ" + }, + { + "description": "American Samoa", + "code": "AS" + }, + { + "description": "AndorrA", + "code": "AD" + }, + { + "description": "Angola", + "code": "AO" + }, + { + "description": "Anguilla", + "code": "AI" + }, + { + "description": "Antarctica", + "code": "AQ" + }, + { + "description": "Antigua and Barbuda", + "code": "AG" + }, + { + "description": "Argentina", + "code": "AR" + }, + { + "description": "Armenia", + "code": "AM" + }, + { + "description": "Aruba", + "code": "AW" + }, + { + "description": "Australia", + "code": "AU" + }, + { + "description": "Austria", + "code": "AT" + }, + { + "description": "Azerbaijan", + "code": "AZ" + }, + { + "description": "Bahamas", + "code": "BS" + }, + { + "description": "Bahrain", + "code": "BH" + }, + { + "description": "Bangladesh", + "code": "BD" + }, + { + "description": "Barbados", + "code": "BB" + }, + { + "description": "Belarus", + "code": "BY" + }, + { + "description": "Belgium", + "code": "BE" + }, + { + "description": "Belize", + "code": "BZ" + }, + { + "description": "Benin", + "code": "BJ" + }, + { + "description": "Bermuda", + "code": "BM" + }, + { + "description": "Bhutan", + "code": "BT" + }, + { + "description": "Bolivia", + "code": "BO" + }, + { + "description": "Bosnia and Herzegovina", + "code": "BA" + }, + { + "description": "Botswana", + "code": "BW" + }, + { + "description": "Bouvet Island", + "code": "BV" + }, + { + "description": "Brazil", + "code": "BR" + }, + { + "description": "British Indian Ocean Territory", + "code": "IO" + }, + { + "description": "Brunei Darussalam", + "code": "BN" + }, + { + "description": "Bulgaria", + "code": "BG" + }, + { + "description": "Burkina Faso", + "code": "BF" + }, + { + "description": "Burundi", + "code": "BI" + }, + { + "description": "Cambodia", + "code": "KH" + }, + { + "description": "Cameroon", + "code": "CM" + }, + { + "description": "Canada", + "code": "CA" + }, + { + "description": "Cape Verde", + "code": "CV" + }, + { + "description": "Cayman Islands", + "code": "KY" + }, + { + "description": "Central African Republic", + "code": "CF" + }, + { + "description": "Chad", + "code": "TD" + }, + { + "description": "Chile", + "code": "CL" + }, + { + "description": "China", + "code": "CN" + }, + { + "description": "Christmas Island", + "code": "CX" + }, + { + "description": "Cocos (Keeling) Islands", + "code": "CC" + }, + { + "description": "Colombia", + "code": "CO" + }, + { + "description": "Comoros", + "code": "KM" + }, + { + "description": "Congo", + "code": "CG" + }, + { + "description": "Congo, The Democratic Republic of the", + "code": "CD" + }, + { + "description": "Cook Islands", + "code": "CK" + }, + { + "description": "Costa Rica", + "code": "CR" + }, + { + "description": "Cote D'Ivoire", + "code": "CI" + }, + { + "description": "Croatia", + "code": "HR" + }, + { + "description": "Cuba", + "code": "CU" + }, + { + "description": "Cyprus", + "code": "CY" + }, + { + "description": "Czech Republic", + "code": "CZ" + }, + { + "description": "Denmark", + "code": "DK" + }, + { + "description": "Djibouti", + "code": "DJ" + }, + { + "description": "Dominica", + "code": "DM" + }, + { + "description": "Dominican Republic", + "code": "DO" + }, + { + "description": "Ecuador", + "code": "EC" + }, + { + "description": "Egypt", + "code": "EG" + }, + { + "description": "El Salvador", + "code": "SV" + }, + { + "description": "Equatorial Guinea", + "code": "GQ" + }, + { + "description": "Eritrea", + "code": "ER" + }, + { + "description": "Estonia", + "code": "EE" + }, + { + "description": "Ethiopia", + "code": "ET" + }, + { + "description": "Falkland Islands (Malvinas)", + "code": "FK" + }, + { + "description": "Faroe Islands", + "code": "FO" + }, + { + "description": "Fiji", + "code": "FJ" + }, + { + "description": "Finland", + "code": "FI" + }, + { + "description": "France", + "code": "FR" + }, + { + "description": "French Guiana", + "code": "GF" + }, + { + "description": "French Polynesia", + "code": "PF" + }, + { + "description": "French Southern Territories", + "code": "TF" + }, + { + "description": "Gabon", + "code": "GA" + }, + { + "description": "Gambia", + "code": "GM" + }, + { + "description": "Georgia", + "code": "GE" + }, + { + "description": "Germany", + "code": "DE" + }, + { + "description": "Ghana", + "code": "GH" + }, + { + "description": "Gibraltar", + "code": "GI" + }, + { + "description": "Greece", + "code": "GR" + }, + { + "description": "Greenland", + "code": "GL" + }, + { + "description": "Grenada", + "code": "GD" + }, + { + "description": "Guadeloupe", + "code": "GP" + }, + { + "description": "Guam", + "code": "GU" + }, + { + "description": "Guatemala", + "code": "GT" + }, + { + "description": "Guernsey", + "code": "GG" + }, + { + "description": "Guinea", + "code": "GN" + }, + { + "description": "Guinea-Bissau", + "code": "GW" + }, + { + "description": "Guyana", + "code": "GY" + }, + { + "description": "Haiti", + "code": "HT" + }, + { + "description": "Heard Island and Mcdonald Islands", + "code": "HM" + }, + { + "description": "Holy See (Vatican City State)", + "code": "VA" + }, + { + "description": "Honduras", + "code": "HN" + }, + { + "description": "Hong Kong", + "code": "HK" + }, + { + "description": "Hungary", + "code": "HU" + }, + { + "description": "Iceland", + "code": "IS" + }, + { + "description": "India", + "code": "IN" + }, + { + "description": "Indonesia", + "code": "ID" + }, + { + "description": "Iran, Islamic Republic Of", + "code": "IR" + }, + { + "description": "Iraq", + "code": "IQ" + }, + { + "description": "Ireland", + "code": "IE" + }, + { + "description": "Isle of Man", + "code": "IM" + }, + { + "description": "Israel", + "code": "IL" + }, + { + "description": "Italy", + "code": "IT" + }, + { + "description": "Jamaica", + "code": "JM" + }, + { + "description": "Japan", + "code": "JP" + }, + { + "description": "Jersey", + "code": "JE" + }, + { + "description": "Jordan", + "code": "JO" + }, + { + "description": "Kazakhstan", + "code": "KZ" + }, + { + "description": "Kenya", + "code": "KE" + }, + { + "description": "Kiribati", + "code": "KI" + }, + { + "description": "Korea, Democratic People'S Republic of", + "code": "KP" + }, + { + "description": "Korea, Republic of", + "code": "KR" + }, + { + "description": "Kuwait", + "code": "KW" + }, + { + "description": "Kyrgyzstan", + "code": "KG" + }, + { + "description": "Lao People'S Democratic Republic", + "code": "LA" + }, + { + "description": "Latvia", + "code": "LV" + }, + { + "description": "Lebanon", + "code": "LB" + }, + { + "description": "Lesotho", + "code": "LS" + }, + { + "description": "Liberia", + "code": "LR" + }, + { + "description": "Libyan Arab Jamahiriya", + "code": "LY" + }, + { + "description": "Liechtenstein", + "code": "LI" + }, + { + "description": "Lithuania", + "code": "LT" + }, + { + "description": "Luxembourg", + "code": "LU" + }, + { + "description": "Macao", + "code": "MO" + }, + { + "description": "Macedonia, The Former Yugoslav Republic of", + "code": "MK" + }, + { + "description": "Madagascar", + "code": "MG" + }, + { + "description": "Malawi", + "code": "MW" + }, + { + "description": "Malaysia", + "code": "MY" + }, + { + "description": "Maldives", + "code": "MV" + }, + { + "description": "Mali", + "code": "ML" + }, + { + "description": "Malta", + "code": "MT" + }, + { + "description": "Marshall Islands", + "code": "MH" + }, + { + "description": "Martinique", + "code": "MQ" + }, + { + "description": "Mauritania", + "code": "MR" + }, + { + "description": "Mauritius", + "code": "MU" + }, + { + "description": "Mayotte", + "code": "YT" + }, + { + "description": "Mexico", + "code": "MX" + }, + { + "description": "Micronesia, Federated States of", + "code": "FM" + }, + { + "description": "Moldova, Republic of", + "code": "MD" + }, + { + "description": "Monaco", + "code": "MC" + }, + { + "description": "Mongolia", + "code": "MN" + }, + { + "description": "Montserrat", + "code": "MS" + }, + { + "description": "Morocco", + "code": "MA" + }, + { + "description": "Mozambique", + "code": "MZ" + }, + { + "description": "Myanmar", + "code": "MM" + }, + { + "description": "Namibia", + "code": "NA" + }, + { + "description": "Nauru", + "code": "NR" + }, + { + "description": "Nepal", + "code": "NP" + }, + { + "description": "Netherlands", + "code": "NL" + }, + { + "description": "Netherlands Antilles", + "code": "AN" + }, + { + "description": "New Caledonia", + "code": "NC" + }, + { + "description": "New Zealand", + "code": "NZ" + }, + { + "description": "Nicaragua", + "code": "NI" + }, + { + "description": "Niger", + "code": "NE" + }, + { + "description": "Nigeria", + "code": "NG" + }, + { + "description": "Niue", + "code": "NU" + }, + { + "description": "Norfolk Island", + "code": "NF" + }, + { + "description": "Northern Mariana Islands", + "code": "MP" + }, + { + "description": "Norway", + "code": "NO" + }, + { + "description": "Oman", + "code": "OM" + }, + { + "description": "Pakistan", + "code": "PK" + }, + { + "description": "Palau", + "code": "PW" + }, + { + "description": "Palestinian Territory, Occupied", + "code": "PS" + }, + { + "description": "Panama", + "code": "PA" + }, + { + "description": "Papua New Guinea", + "code": "PG" + }, + { + "description": "Paraguay", + "code": "PY" + }, + { + "description": "Peru", + "code": "PE" + }, + { + "description": "Philippines", + "code": "PH" + }, + { + "description": "Pitcairn", + "code": "PN" + }, + { + "description": "Poland", + "code": "PL" + }, + { + "description": "Portugal", + "code": "PT" + }, + { + "description": "Puerto Rico", + "code": "PR" + }, + { + "description": "Qatar", + "code": "QA" + }, + { + "description": "Reunion", + "code": "RE" + }, + { + "description": "Romania", + "code": "RO" + }, + { + "description": "Russian Federation", + "code": "RU" + }, + { + "description": "RWANDA", + "code": "RW" + }, + { + "description": "Saint Helena", + "code": "SH" + }, + { + "description": "Saint Kitts and Nevis", + "code": "KN" + }, + { + "description": "Saint Lucia", + "code": "LC" + }, + { + "description": "Saint Pierre and Miquelon", + "code": "PM" + }, + { + "description": "Saint Vincent and the Grenadines", + "code": "VC" + }, + { + "description": "Samoa", + "code": "WS" + }, + { + "description": "San Marino", + "code": "SM" + }, + { + "description": "Sao Tome and Principe", + "code": "ST" + }, + { + "description": "Saudi Arabia", + "code": "SA" + }, + { + "description": "Senegal", + "code": "SN" + }, + { + "description": "Serbia and Montenegro", + "code": "CS" + }, + { + "description": "Seychelles", + "code": "SC" + }, + { + "description": "Sierra Leone", + "code": "SL" + }, + { + "description": "Singapore", + "code": "SG" + }, + { + "description": "Slovakia", + "code": "SK" + }, + { + "description": "Slovenia", + "code": "SI" + }, + { + "description": "Solomon Islands", + "code": "SB" + }, + { + "description": "Somalia", + "code": "SO" + }, + { + "description": "South Africa", + "code": "ZA" + }, + { + "description": "South Georgia and the South Sandwich Islands", + "code": "GS" + }, + { + "description": "Spain", + "code": "ES" + }, + { + "description": "Sri Lanka", + "code": "LK" + }, + { + "description": "Sudan", + "code": "SD" + }, + { + "description": "Suriname", + "code": "SR" + }, + { + "description": "Svalbard and Jan Mayen", + "code": "SJ" + }, + { + "description": "Swaziland", + "code": "SZ" + }, + { + "description": "Sweden", + "code": "SE" + }, + { + "description": "Switzerland", + "code": "CH" + }, + { + "description": "Syrian Arab Republic", + "code": "SY" + }, + { + "description": "Taiwan, Province of China", + "code": "TW" + }, + { + "description": "Tajikistan", + "code": "TJ" + }, + { + "description": "Tanzania, United Republic of", + "code": "TZ" + }, + { + "description": "Thailand", + "code": "TH" + }, + { + "description": "Timor-Leste", + "code": "TL" + }, + { + "description": "Togo", + "code": "TG" + }, + { + "description": "Tokelau", + "code": "TK" + }, + { + "description": "Tonga", + "code": "TO" + }, + { + "description": "Trinidad and Tobago", + "code": "TT" + }, + { + "description": "Tunisia", + "code": "TN" + }, + { + "description": "Turkey", + "code": "TR" + }, + { + "description": "Turkmenistan", + "code": "TM" + }, + { + "description": "Turks and Caicos Islands", + "code": "TC" + }, + { + "description": "Tuvalu", + "code": "TV" + }, + { + "description": "Uganda", + "code": "UG" + }, + { + "description": "Ukraine", + "code": "UA" + }, + { + "description": "United Arab Emirates", + "code": "AE" + }, + { + "description": "United Kingdom", + "code": "GB" + }, + { + "description": "United States", + "code": "US" + }, + { + "description": "United States Minor Outlying Islands", + "code": "UM" + }, + { + "description": "Uruguay", + "code": "UY" + }, + { + "description": "Uzbekistan", + "code": "UZ" + }, + { + "description": "Vanuatu", + "code": "VU" + }, + { + "description": "Venezuela", + "code": "VE" + }, + { + "description": "Viet Nam", + "code": "VN" + }, + { + "description": "Virgin Islands, British", + "code": "VG" + }, + { + "description": "Virgin Islands, U.S.", + "code": "VI" + }, + { + "description": "Wallis and Futuna", + "code": "WF" + }, + { + "description": "Western Sahara", + "code": "EH" + }, + { + "description": "Yemen", + "code": "YE" + }, + { + "description": "Zambia", + "code": "ZM" + }, + { + "description": "Zimbabwe", + "code": "ZW" + } + ] diff --git a/app/api/services/register.py b/app/api/services/register.py index 115413b..ff84bd2 100644 --- a/app/api/services/register.py +++ b/app/api/services/register.py @@ -3,7 +3,7 @@ from app.utils.logger import logger from app.api.services.base_service import BaseService from marshmallow import ValidationError from app.extensions import db -from app.models import MembersPending, Members +from app.models import MembersPending, Members, Country from app.api.helpers.response_helper import ResponseHelper from werkzeug.security import generate_password_hash, check_password_hash @@ -123,10 +123,21 @@ class RegisterService(BaseService): data = jwt.decode(verify_link, RegisterService.JWT_SECRET_KEY, algorithms=["HS256"]) except: return jsonify({'status': 'INVALID', 'message': 'Link is invalid'}), 403 + country_list = [] + country_data = Country.get_signup_countries(1) + for subs in country_data: + country_list.append({ + 'id': subs.id, + 'code': subs.code, + 'uid': str(subs.uid), + 'description': subs.description + }) + country = { "last_update": datetime.datetime.utcnow(), - "list": [ + "list": country_list, + "lists": [ {"code": "US", "description": "United States"}, {"code": "CA", "description": "Canada"}, ] diff --git a/app/models/__init__.py b/app/models/__init__.py index d0db1f5..051c771 100644 --- a/app/models/__init__.py +++ b/app/models/__init__.py @@ -19,11 +19,12 @@ from .subscription_generative import SubscriptionGenerative from .generative_results import GenerativeResults from .office_users import OfficeUsers from .custom_templates import CustomTemplates +from .country import Country __all__ = ['Members', 'Account', 'Products', 'MembersProducts', 'MembersActions', 'MembersPending', 'ProductsDetails', 'ProvisionActions', 'MembersProductsRefresh', 'MembersProductsSettings', 'PasswordReset', 'MembersProfile', 'SubscriptionOptions', 'SubscriptionOptionsItems', 'ProductsTemplates', 'Payments', 'PaymentsSession', 'SubscriptionGenerative', 'GenerativeResults', - 'CustomTemplates', + 'CustomTemplates','Country', 'OfficeUsers'] diff --git a/app/models/country.py b/app/models/country.py new file mode 100644 index 0000000..f3fa42c --- /dev/null +++ b/app/models/country.py @@ -0,0 +1,50 @@ +from datetime import datetime, timezone, timedelta +from app.extensions import db +from sqlalchemy.orm import relationship +from sqlalchemy.sql import func + + +class Country(db.Model): + __tablename__ = 'country' + + id = db.Column(db.Integer, primary_key=True, autoincrement=True) + uid = db.Column(db.String(150), nullable=False) + code = db.Column(db.String(2), nullable=False) + description = db.Column(db.String(100), nullable=False) + status = db.Column(db.Integer, nullable=False, default=0) + signup = db.Column(db.Integer, nullable=False, default=0) + added = db.Column(db.DateTime(timezone=True), server_default=func.now()) + + @classmethod + def get_signup_countries(cls, signup): + country_list = cls.query.filter_by(signup=signup).order_by(cls.description.asc()).all() + if not country_list: + return None + return country_list + + def to_dict(self): + return { + "id": self.id, + "uid": str(self.uid), + "code": self.code, + "description": self.description, + "status": self.status, + "signup": self.signup, + "added": self.added.isoformat() if self.added else None + } + + + ''' + CREATE TABLE country ( + id SERIAL, + uid uuid DEFAULT uuid_generate_v4(), + code VARCHAR(2) UNIQUE NOT NULL, + description VARCHAR(100) UNIQUE NOT NULL, + status INT DEFAULT 0, + signup INT DEFAULT 0, + added timestamp without time zone DEFAULT now() + ); + ALTER TABLE ONLY country + ADD CONSTRAINT country_id_key UNIQUE (id); + + '''