Updated user role model with new fields and cleaned up

This commit is contained in:
Scott Idem
2022-10-27 17:21:21 -04:00
parent 367a95b5c5
commit 4853b1e464

View File

@@ -1,24 +1,22 @@
from __future__ import annotations import datetime, pytz
import datetime, hashlib, logging, os, pytz, redis, secrets
from typing import Dict, List, Optional, Set, Union from typing import Dict, List, Optional, Set, Union
from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationError, validator from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationError, validator
from app.db_sql import redis_lookup_id_random from app.db_sql import redis_lookup_id_random
from app.lib_general import * from app.lib_general import log, logging
from .common_field_schema import base_fields, default_num_bytes # from .common_field_schema import base_fields, default_num_bytes
#from .user_models import User_Base #from .user_models import User_Base
# ### BEGIN ### API User Role Models ### User_Role_Base() ###
class User_Role_Base(BaseModel): class User_Role_Base(BaseModel):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
# id_random: Optional[str] = Field( # id_random: Optional[str] = Field(
# **base_fields['user_role_id_random'],
# alias = 'user_role_id_random', # alias = 'user_role_id_random',
# default_factory = lambda:secrets.token_urlsafe(default_num_bytes),
# ) # )
id: Optional[int] = Field( id: Optional[int] = Field(
alias = 'user_role_id' alias = 'user_role_id'
@@ -31,14 +29,15 @@ class User_Role_Base(BaseModel):
# user_role_id: Optional[int] = Field( # user_role_id: Optional[int] = Field(
# alias = 'role_id' # alias = 'role_id'
# ) # )
# role_id: Optional[int]
lu_user_role_id: Optional[int] # Need to update the view?
for_type: Optional[str] for_type: Optional[str]
for_id_random: Optional[str] for_id_random: Optional[str]
for_id: Optional[int] for_id: Optional[int]
code: Optional[str] # passcode: Optional[str] # For future use?
name: Optional[str] # other_json: Optional[str] # For future use?
description: Optional[str]
enable: Optional[bool] enable: Optional[bool]
enable_from: Optional[datetime.datetime] enable_from: Optional[datetime.datetime]
@@ -48,36 +47,29 @@ class User_Role_Base(BaseModel):
created_on: Optional[datetime.datetime] = None created_on: Optional[datetime.datetime] = None
updated_on: Optional[datetime.datetime] = None updated_on: Optional[datetime.datetime] = None
# Including convenience data
# This is only for convenience. Probably going to keep unless it causes a problem.
code: Optional[str] # User role code from lookup
name: Optional[str] # User role name from lookup
description: Optional[str] # User role description from lookup
_processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now) _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now)
#@validator('user_role_id_random', always=True) @validator('id', always=True)
def user_role_id_random_copy(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['id_random']:
return values['id_random']
return None
# @validator('id', always=True)
# def user_role_id_lookup(cls, v, values, **kwargs): # def user_role_id_lookup(cls, v, values, **kwargs):
# log.setLevel(logging.WARNING) # if isinstance(v, int) and v > 0: return v
# log.debug(locals()) # elif id_random := values.get('id_random'):
# return redis_lookup_id_random(record_id_random=id_random, table_name='user_role')
# if values['id_random']:
# log.debug(values['id_random'])
# return redis_lookup_id_random(record_id_random=values['id_random'], table_name='user_role')
# return None # return None
@validator('user_id', always=True) @validator('user_id', always=True)
def user_id_lookup(cls, v, values, **kwargs): def user_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING) if isinstance(v, int) and v > 0: return v
log.debug(locals()) elif id_random := values.get('user_id_random'):
return redis_lookup_id_random(record_id_random=id_random, table_name='user')
if values['user_id_random']:
return redis_lookup_id_random(record_id_random=values['user_id_random'], table_name='user')
return None return None
# NOTE: This should be reviewed and updated 2022-10-27
@validator('for_id', always=True) @validator('for_id', always=True)
def for_id_lookup(cls, v, values, **kwargs): def for_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING) log.setLevel(logging.WARNING)
@@ -89,6 +81,6 @@ class User_Role_Base(BaseModel):
class Config: class Config:
underscore_attrs_are_private = True underscore_attrs_are_private = True
allow_population_by_field_name = True
fields = base_fields fields = base_fields
# ### END ### API User Role Models ### User_Role_Base() ###
#User_Role_Base.update_forward_refs()