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, hashlib, logging, os, pytz, redis, secrets
import datetime, pytz
from typing import Dict, List, Optional, Set, Union
from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationError, validator
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
# ### BEGIN ### API User Role Models ### User_Role_Base() ###
class User_Role_Base(BaseModel):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
# id_random: Optional[str] = Field(
# **base_fields['user_role_id_random'],
# alias = 'user_role_id_random',
# default_factory = lambda:secrets.token_urlsafe(default_num_bytes),
# )
id: Optional[int] = Field(
alias = 'user_role_id'
@@ -31,14 +29,15 @@ class User_Role_Base(BaseModel):
# user_role_id: Optional[int] = Field(
# alias = 'role_id'
# )
# role_id: Optional[int]
lu_user_role_id: Optional[int] # Need to update the view?
for_type: Optional[str]
for_id_random: Optional[str]
for_id: Optional[int]
code: Optional[str]
name: Optional[str]
description: Optional[str]
# passcode: Optional[str] # For future use?
# other_json: Optional[str] # For future use?
enable: Optional[bool]
enable_from: Optional[datetime.datetime]
@@ -48,36 +47,29 @@ class User_Role_Base(BaseModel):
created_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)
#@validator('user_role_id_random', 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)
@validator('id', always=True)
# def user_role_id_lookup(cls, v, values, **kwargs):
# log.setLevel(logging.WARNING)
# log.debug(locals())
# if values['id_random']:
# log.debug(values['id_random'])
# return redis_lookup_id_random(record_id_random=values['id_random'], table_name='user_role')
# if isinstance(v, int) and v > 0: return v
# elif id_random := values.get('id_random'):
# return redis_lookup_id_random(record_id_random=id_random, table_name='user_role')
# return None
@validator('user_id', always=True)
def user_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['user_id_random']:
return redis_lookup_id_random(record_id_random=values['user_id_random'], table_name='user')
if isinstance(v, int) and v > 0: return v
elif id_random := values.get('user_id_random'):
return redis_lookup_id_random(record_id_random=id_random, table_name='user')
return None
# NOTE: This should be reviewed and updated 2022-10-27
@validator('for_id', always=True)
def for_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
@@ -89,6 +81,6 @@ class User_Role_Base(BaseModel):
class Config:
underscore_attrs_are_private = True
allow_population_by_field_name = True
fields = base_fields
#User_Role_Base.update_forward_refs()
# ### END ### API User Role Models ### User_Role_Base() ###