2022-04-06 20:35:34 -07:00
import datetime
2023-05-04 00:58:06 -07:00
from typing import Any , Dict , List , Type , TypeVar , Union
2022-04-06 20:35:34 -07:00
import attr
from dateutil . parser import isoparse
from . . types import UNSET , Unset
2023-09-29 15:51:03 -07:00
DI = TypeVar ( " DI " , bound = " ExtendedUser " )
2022-04-06 20:35:34 -07:00
2022-04-06 21:14:32 -07:00
2022-04-06 20:35:34 -07:00
@attr.s ( auto_attribs = True )
class ExtendedUser :
2023-05-04 00:58:06 -07:00
""" Extended user information.
2023-07-31 12:50:30 -07:00
This is mostly used for internal purposes . It returns a mapping of the user ' s information, including that of our third party services we use for users: MailChimp, Stripe, and Front
""" # noqa: E501
2023-05-04 00:58:06 -07:00
2022-04-06 21:14:32 -07:00
company : Union [ Unset , str ] = UNSET
created_at : Union [ Unset , datetime . datetime ] = UNSET
discord : Union [ Unset , str ] = UNSET
email : Union [ Unset , str ] = UNSET
email_verified : Union [ Unset , datetime . datetime ] = UNSET
first_name : Union [ Unset , str ] = UNSET
2022-09-29 21:52:21 +00:00
front_id : Union [ Unset , str ] = UNSET
2022-04-06 21:14:32 -07:00
github : Union [ Unset , str ] = UNSET
id : Union [ Unset , str ] = UNSET
image : Union [ Unset , str ] = UNSET
last_name : Union [ Unset , str ] = UNSET
mailchimp_id : Union [ Unset , str ] = UNSET
name : Union [ Unset , str ] = UNSET
2022-07-08 00:56:43 +00:00
phone : Union [ Unset , str ] = UNSET
2022-04-06 21:14:32 -07:00
stripe_id : Union [ Unset , str ] = UNSET
updated_at : Union [ Unset , datetime . datetime ] = UNSET
additional_properties : Dict [ str , Any ] = attr . ib ( init = False , factory = dict )
def to_dict ( self ) - > Dict [ str , Any ] :
company = self . company
created_at : Union [ Unset , str ] = UNSET
if not isinstance ( self . created_at , Unset ) :
created_at = self . created_at . isoformat ( )
discord = self . discord
email = self . email
email_verified : Union [ Unset , str ] = UNSET
if not isinstance ( self . email_verified , Unset ) :
email_verified = self . email_verified . isoformat ( )
first_name = self . first_name
2022-09-29 21:52:21 +00:00
front_id = self . front_id
2022-04-06 21:14:32 -07:00
github = self . github
id = self . id
image = self . image
last_name = self . last_name
mailchimp_id = self . mailchimp_id
name = self . name
2022-07-08 00:56:43 +00:00
phone = self . phone
2022-04-06 21:14:32 -07:00
stripe_id = self . stripe_id
updated_at : Union [ Unset , str ] = UNSET
if not isinstance ( self . updated_at , Unset ) :
updated_at = self . updated_at . isoformat ( )
field_dict : Dict [ str , Any ] = { }
field_dict . update ( self . additional_properties )
field_dict . update ( { } )
if company is not UNSET :
2023-05-04 00:58:06 -07:00
field_dict [ " company " ] = company
2022-04-06 21:14:32 -07:00
if created_at is not UNSET :
2023-05-04 00:58:06 -07:00
field_dict [ " created_at " ] = created_at
2022-04-06 21:14:32 -07:00
if discord is not UNSET :
2023-05-04 00:58:06 -07:00
field_dict [ " discord " ] = discord
2022-04-06 21:14:32 -07:00
if email is not UNSET :
2023-05-04 00:58:06 -07:00
field_dict [ " email " ] = email
2022-04-06 21:14:32 -07:00
if email_verified is not UNSET :
2023-05-04 00:58:06 -07:00
field_dict [ " email_verified " ] = email_verified
2022-04-06 21:14:32 -07:00
if first_name is not UNSET :
2023-05-04 00:58:06 -07:00
field_dict [ " first_name " ] = first_name
2022-09-29 21:52:21 +00:00
if front_id is not UNSET :
2023-05-04 00:58:06 -07:00
field_dict [ " front_id " ] = front_id
2022-04-06 21:14:32 -07:00
if github is not UNSET :
2023-05-04 00:58:06 -07:00
field_dict [ " github " ] = github
2022-04-06 21:14:32 -07:00
if id is not UNSET :
2023-05-04 00:58:06 -07:00
field_dict [ " id " ] = id
2022-04-06 21:14:32 -07:00
if image is not UNSET :
2023-05-04 00:58:06 -07:00
field_dict [ " image " ] = image
2022-04-06 21:14:32 -07:00
if last_name is not UNSET :
2023-05-04 00:58:06 -07:00
field_dict [ " last_name " ] = last_name
2022-04-06 21:14:32 -07:00
if mailchimp_id is not UNSET :
2023-05-04 00:58:06 -07:00
field_dict [ " mailchimp_id " ] = mailchimp_id
2022-04-06 21:14:32 -07:00
if name is not UNSET :
2023-05-04 00:58:06 -07:00
field_dict [ " name " ] = name
2022-04-06 21:14:32 -07:00
if phone is not UNSET :
2023-05-04 00:58:06 -07:00
field_dict [ " phone " ] = phone
2022-04-06 21:14:32 -07:00
if stripe_id is not UNSET :
2023-05-04 00:58:06 -07:00
field_dict [ " stripe_id " ] = stripe_id
2022-04-06 21:14:32 -07:00
if updated_at is not UNSET :
2023-05-04 00:58:06 -07:00
field_dict [ " updated_at " ] = updated_at
2022-04-06 21:14:32 -07:00
return field_dict
@classmethod
2023-09-29 15:51:03 -07:00
def from_dict ( cls : Type [ DI ] , src_dict : Dict [ str , Any ] ) - > DI :
2022-04-06 21:14:32 -07:00
d = src_dict . copy ( )
company = d . pop ( " company " , UNSET )
_created_at = d . pop ( " created_at " , UNSET )
created_at : Union [ Unset , datetime . datetime ]
if isinstance ( _created_at , Unset ) :
created_at = UNSET
else :
created_at = isoparse ( _created_at )
discord = d . pop ( " discord " , UNSET )
email = d . pop ( " email " , UNSET )
_email_verified = d . pop ( " email_verified " , UNSET )
email_verified : Union [ Unset , datetime . datetime ]
if isinstance ( _email_verified , Unset ) :
email_verified = UNSET
else :
email_verified = isoparse ( _email_verified )
first_name = d . pop ( " first_name " , UNSET )
2022-09-29 21:52:21 +00:00
front_id = d . pop ( " front_id " , UNSET )
2022-04-06 21:14:32 -07:00
github = d . pop ( " github " , UNSET )
id = d . pop ( " id " , UNSET )
image = d . pop ( " image " , UNSET )
last_name = d . pop ( " last_name " , UNSET )
mailchimp_id = d . pop ( " mailchimp_id " , UNSET )
name = d . pop ( " name " , UNSET )
2022-07-08 00:56:43 +00:00
phone = d . pop ( " phone " , UNSET )
2022-04-06 21:14:32 -07:00
stripe_id = d . pop ( " stripe_id " , UNSET )
_updated_at = d . pop ( " updated_at " , UNSET )
updated_at : Union [ Unset , datetime . datetime ]
if isinstance ( _updated_at , Unset ) :
updated_at = UNSET
else :
updated_at = isoparse ( _updated_at )
extended_user = cls (
company = company ,
created_at = created_at ,
discord = discord ,
email = email ,
email_verified = email_verified ,
first_name = first_name ,
2022-09-29 21:52:21 +00:00
front_id = front_id ,
2022-04-06 21:14:32 -07:00
github = github ,
id = id ,
image = image ,
last_name = last_name ,
mailchimp_id = mailchimp_id ,
name = name ,
phone = phone ,
stripe_id = stripe_id ,
updated_at = updated_at ,
)
extended_user . additional_properties = d
return extended_user
@property
def additional_keys ( self ) - > List [ str ] :
return list ( self . additional_properties . keys ( ) )
def __getitem__ ( self , key : str ) - > Any :
return self . additional_properties [ key ]
def __setitem__ ( self , key : str , value : Any ) - > None :
self . additional_properties [ key ] = value
def __delitem__ ( self , key : str ) - > None :
del self . additional_properties [ key ]
def __contains__ ( self , key : str ) - > bool :
return key in self . additional_properties