class BaseHistory(models.Model): ''' base history Scopes: accounts, numbers ''' uuid = types.UUIDType(default=_id.uuid4) record_uuid = types.UUIDType(default=_id.uuid4) ban = types.UUIDType(default=_id.uuid4) # 'billing account number' country_number = types.IntType() number = types.StringType() campaign_uuid = types.UUIDType(default=_id.uuid4) start_time = types.DateTimeType() caller_id = types.StringType() caller_id_name = types.StringType() origin_number = types.StringType() origin_city = types.StringType() origin_state = types.StringType() origin_province = types.StringType() destination_type = types.IntType() destination_contry_code = types.StringType() destination_number = types.StringType() destination_city = types.StringType() destination_state = types.StringType() duration = types.IntType() duration_unrounded = types.IntType() cost = types.IntType() special_rate = types.IntType() lead_type = types.IntType() web_call = types.BooleanType(default=False)
class Game(models.Model): ''' Game Data Structure ''' uuid = types.UUIDType(default=uuid.uuid4) game = types.IntType(required=True) status = types.StringType( choices=['new', 'starting', 'in-progress', 'completed', 'deleted'], default='new') labels = types.DictType(types.StringType) history = compound.ListType(types.StringType()) address = types.IPAddressType() session = types.UUIDType() bots = types.StringType(required=True) map = types.StringType(required=True) replay = types.StringType() home = types.StringType() home_is_winner = types.BooleanType(default=False) home_crashed = types.BooleanType(default=False) home_timed_out = types.BooleanType(default=False) home_building_score = types.IntType() home_razing_score = types.IntType() home_unit_score = types.IntType() away = types.StringType() away_is_winner = types.BooleanType(default=False) away_crashed = types.BooleanType(default=False) away_timed_out = types.BooleanType(default=False) away_building_score = types.IntType() away_razing_score = types.IntType() away_unit_score = types.IntType() created_by = types.UUIDType() created_at = types.DateTimeType(default=datetime.datetime.utcnow) last_update_by = types.UUIDType() last_update_at = types.TimestampType()
class HowlerResource(_models.Model): ''' Fiorella resource ''' uuid = _types.UUIDType(default=_uuid.uuid4) campaign = _types.UUIDType(required=False) directory = _types.UUIDType(required=False) resource = _types.StringType(required=True)
class VoiceCall(models.Model): ''' voice call ''' uuid = types.UUIDType(default=_id.uuid4) account_uuid = types.UUIDType(default=_id.uuid4) phone_1 = types.StringType() first_name = types.StringType() last_name = types.StringType() rep_phone = types.StringType() keyword = types.StringType()
class ConectedDuration(models.Model): ''' connected duration ''' uuid = types.UUIDType(default=_id.uuid4) customer_uuid = types.UUIDType(default=_id.uuid4) phone_1 = types.StringType() first_name = types.StringType() rep_phone = types.StringType() keyword = types.StringType() duration_unrounded = types.IntType() record_uuid = types.UUIDType(default=_id.uuid4)
class MangoResource(_models.Model): ''' Mango resource ''' uuid = _types.UUIDType(default=_uuid.uuid4) account = _types.StringType(required=False) resource = _types.StringType(required=True)
class File(models.Model): ''' File Data Structure ''' uuid = types.UUIDType(default=uuid.uuid4) url = types.StringType() account = types.StringType(required=True) checksum = types.StringType() head = types.StringType() payload = types.StringType() public = types.BooleanType(default=False) labels = compound.ListType(types.StringType()) hashes = compound.ListType(types.StringType()) chunks = compound.ListType(types.StringType()) status = types.StringType() created_by = types.StringType() created_at = types.TimestampType(default=arrow.utcnow().timestamp) updated = types.BooleanType(default=False) last_update_by = types.StringType() last_update_at = types.TimestampType() checked = types.BooleanType(default=False) checked_by = types.StringType() checked_at = types.TimestampType() active = types.BooleanType(default=True) watchers = compound.ListType(types.StringType())
class Payment(models.Model): ''' Payment structure ''' uuid = types.UUIDType(default=uuid.uuid4) account = types.StringType(required=True) credit_card_type = types.StringType(required=False) merchant = types.StringType() address = types.StringType() phone = types.StringType() email = types.EmailType() card_name = types.StringType() amount_funds = types.StringType() credit_card_number = types.StringType() credit_card_cvc = types.StringType() exp_month = types.StringType() exp_year = types.StringType() CustomerToken = types.StringType(default='None') Status = compound.ModelType(Status) Transaction = compound.ModelType(Transaction) AuthorizationNum = types.IntType(default=__None_Id__) created = types.DateTimeType(default=arrow.utcnow().naive)
class Task(models.Model): ''' Task Data Structure ''' uuid = types.UUIDType(default=uuid.uuid4) account = types.StringType(required=True) subject = types.StringType() description = types.StringType() data = types.StringType() assign = compound.ListType(types.StringType()) public = types.BooleanType(default=False) source = types.StringType() destination = types.StringType() labels = types.DictType(types.StringType) start_time = types.TimestampType() ack_time = types.TimestampType() stop_time = types.TimestampType() deadline = types.TimestampType() duration = types.StringType() comments = compound.ListType(types.StringType()) status = types.StringType(choices=['new', 'now', 'later', 'done'], default='new', required=True) history = compound.ListType(types.StringType()) checked = types.BooleanType(default=False) checked_by = types.StringType() checked_at = types.TimestampType(default=arrow.utcnow().timestamp) created_by = types.StringType() created_at = types.TimestampType(default=arrow.utcnow().timestamp) last_update_by = types.StringType() last_update_at = types.TimestampType()
class ModifyFile(models.Model): ''' Modify File This model is similar to File. It lacks of require and default values on it's fields. The reason of it existence is that we need to validate every input data that came from outside the system, with this we prevent users from using PATCH to create fields outside the scope of the resource. ''' uuid = types.UUIDType() url = types.StringType() account = types.StringType() checksum = types.StringType() head = types.StringType() payload = types.StringType() public = types.BooleanType() labels = compound.ListType(types.StringType()) hashes = compound.ListType(types.StringType()) chunks = compound.ListType(types.StringType()) status = types.StringType() created_by = types.StringType() created_at = types.TimestampType() updated = types.BooleanType() last_update_by = types.StringType() last_update_at = types.TimestampType() checked = types.BooleanType() checked_by = types.StringType() checked_at = types.TimestampType() active = types.BooleanType() watchers = compound.ListType(types.StringType())
class ResourceContainer(models.Model): ''' Cebus resource container ''' contains = compound.ListType(types.UUIDType()) total = types.IntType()
class SimpleResource(models.Model): ''' Simple resource ''' contains = compound.ListType(types.UUIDType()) total = types.IntType()
class BaseAccount(models.Model): ''' Base account ''' uuid = types.UUIDType(default=uuid.uuid4) passwords = compound.ListType(compound.ModelType(Password)) # api samples, remove after finish work on passwords or otherwise secret keys. api_key = types.StringType(required=False) # api_keys = compound.ListType(compound.ModelType(Mon)) # system admin account is_admin = types.BooleanType(default=False) active = types.BooleanType(default=True) account = types.StringType(required=True) name = types.StringType(required=False) email = types.EmailType(required=True) phone_number = types.StringType() country_code = types.StringType() timezone = types.StringType() location = types.StringType() resources = compound.ModelType(Resource) routes = compound.ListType(compound.ModelType(Route)) uri = types.StringType(required=False) url = types.URLType() # move this to howler and spider? max_channels = types.IntType()
class SuggestionAddressDTO(DTO): """DTO подсказки адреса.""" value = types.StringType() fias_id = types.UUIDType() lat = types.StringType() lon = types.StringType() fias_level = types.StringType(choices=AddressTypeEnum.choices(), )
class SuggestionAddressParamsDTO(DTO): """DTO поиска адреса в геосервисе.""" from_bound = types.StringType(choices=AddressTypeEnum.choices(), required=True) to_bound = types.StringType(choices=AddressTypeEnum.choices(), required=True) query = types.StringType(required=True) region_fias_id = types.UUIDType() area_fias_id = types.UUIDType() city_fias_id = types.UUIDType() settlement_fias_id = types.UUIDType() street_fias_id = types.UUIDType() count = types.IntType(default=5) class Options: serialize_when_none = False
class User(Model): id = types.UUIDType(required=False) name = types.StringType(required=False) email = EmailType(required=True) created_at = types.DateTimeType(required=False) updated_at = types.DateTimeType(required=False) deleted_at = types.DateTimeType(required=False) profile = types.DictType(types.StringType, default={}, required=False)
class GeoserviceSuggestionDataDTO(DTO): """DTO данных подсказки из геосервиса.""" fias_id = types.UUIDType() geo_lat = types.FloatType() geo_lon = types.FloatType() qc_geo = types.IntType(choices=GeoPointsAccuracy.choices()) fias_level = types.IntType()
class Monkey(models.Model): ''' Monkey business ''' uuid = types.UUIDType(default=uuid.uuid4) sshkey = types.StringType(required=True) sw = types.StringType(required=True) hw = types.StringType(required=True) '''
class CampaignQueue(models.Model): ''' Campaign queue ''' uuid = types.UUIDType(default=uuid.uuid4) name = types.StringType(required=True) musiconhold = types.StringType(default='default') announce = types.StringType() context = types.StringType() timeout = types.IntType(default=15) monitor_join = types.IntType(default=1) monitor_format = types.StringType(default='wav') queue_youarenext = types.StringType(default='queue-youarenext') queue_thereare = types.StringType() queue_callswaiting = types.StringType() queue_holdtime = types.StringType() queue_minutes = types.StringType() queue_seconds = types.StringType() queue_lessthan = types.StringType(default='queue-less-than') queue_thankyou = types.StringType(default='queue-thankyou') queue_reporthold = types.StringType(default='queue-reporthold') announce_frequency = types.IntType() announce_round_seconds = types.IntType(default=10) announce_holdtime = types.StringType(default='yes') retry = types.IntType(default=5) wrapuptime = types.IntType() maxlen = types.IntType() servicelevel = types.IntType() strategy = types.StringType(choices=[ 'ringall', 'leastrecent', 'fewestcalls', 'random', 'rrmemory', 'linear', 'wrandom' ], required=True) joinempty = types.StringType(default='yes') leavewhenempty = types.StringType() eventmemberstatus = types.IntType(default=1) eventwhencalled = types.IntType(default=1) reportholdtime = types.IntType(default=1) memberdelay = types.IntType() weight = types.IntType() timeoutrestart = types.IntType() periodic_announce = types.StringType() periodic_announce_frequency = types.IntType() ringinuse = types.IntType(default=0) setinterfacevar = types.IntType(default=1)
class ModifyTask(models.Model): ''' Modify task This model is similar to Task. It lacks of require and default values on it's fields. The reason of it existence is that we need to validate every input data that came from outside the system, with this we prevent users from using PATCH to create fields outside the scope of the resource. ''' uuid = types.UUIDType() title = types.StringType() first_name = types.StringType() last_name = types.StringType() description = types.StringType() label = types.StringType() category = types.StringType() email = types.StringType() account = types.StringType() accountcode = types.StringType() userfield = types.StringType() assigned = types.BooleanType() checked = types.BooleanType() public = types.BooleanType() source = types.StringType() destination = types.StringType() channel = types.StringType() source_channel = types.StringType() context = types.StringType() destination_context = types.StringType() destination_number = types.StringType() destination_channel = types.StringType() start = types.DateTimeType() answer = types.DateTimeType() end = types.DateTimeType() duration = types.IntType() billsec = types.IntType() billing = types.IntType() rate = types.IntType() disposition = types.StringType() status = types.StringType() priority = types.StringType() severity = types.StringType() checked = types.BooleanType() checked_by = types.StringType() created = types.DateTimeType() comments = compound.ModelType(Comment) last_modified = types.DateTimeType() updated_by = types.StringType() updated_at = types.DateTimeType() uri = types.StringType()
class Contact(models.Model): ''' Outbound contact ''' uuid = types.UUIDType(default=uuid.uuid4) account = types.StringType(required=True) first_name = types.StringType() last_name = types.StringType() phone_1 = types.StringType(required=True) phone_2 = types.StringType() phone_3 = types.StringType()
class InboundCampaign(models.Model): ''' Inbound campaign ''' uuid = types.UUIDType(default=uuid.uuid4) name = types.StringType(required=True) channel = types.StringType(required=True) context = types.StringType(required=True) extension = types.StringType(required=True) description = types.StringType()
class BaseApp(models.Model): ''' Cebus base application Apps basic data structure ''' id = mongo.ObjectIdType(required=False) uuid = types.UUIDType(default=uuid.uuid4) active = types.BooleanType(default=True) name = types.StringType(required=False) url = types.URLType()
class Password(models.Model): ''' Password ''' uuid = types.UUIDType(default=uuid.uuid4) assigned = types.BooleanType(default=False) password = types.StringType() raw = types.StringType() md5 = types.StringType() sha1 = types.StringType() sha256 = types.StringType() sha384 = types.StringType() sha512 = types.StringType() created_at = types.DateTimeType() last_modified = types.DateTimeType()
class AddressDTO(DTO): """DTO адреса.""" id = types.IntType() # noqa: A003 city = types.StringType(required=True) street = types.StringType(required=True) house = types.StringType(required=True) building = types.StringType() apartment = types.StringType() floor = types.StringType() entrance = types.StringType() comment = types.StringType() lat = types.FloatType() lon = types.FloatType() fias_id = types.UUIDType()
class Unit(models.Model): ''' Cebus base unit model ''' name = types.StringType(required=False) uuid = types.UUIDType(default=uuid.uuid4) contacts = compound.ModelType(ContactsContainer) url = types.URLType() urls = compound.ListType(types.StringType()) resources = compound.ModelType(Resource) cores = types.IntType(default=1) total = types.IntType()
class Company(models.Model): ''' Company Object Data Structure ''' uuid = types.UUIDType(default=uuid.uuid4) state_province = types.StringType() incorporated_state_province = types.StringType() fax = types.StringType() vat_tax_id_file_number = types.StringType() incorporated_number = types.StringType() zip_postal = types.StringType() dba = types.StringType() federal_tax_id = types.StringType() incoportated_country = types.StringType() telephone = types.StringType() city_town = types.StringType() country_company = types.StringType() subsidiary_reg_num = types.StringType() company_name = types.StringType() company_email = types.StringType() account_type = types.StringType() password = types.StringType() subsidiary_name = types.StringType() email = types.StringType() street_address = types.StringType() incorporated_address = types.StringType() status = types.StringType() account = types.StringType() checked = types.BooleanType(default=False) checked_by = types.StringType() #details = compound.ModelType(Log) #comments = compound.ModelType(Comment) created = types.DateTimeType(default=arrow.utcnow().naive) #created_at = types.DateTimeType() last_modified = types.DateTimeType() updated_by = types.DateTimeType() updated_at = types.DateTimeType() uri = types.StringType()
class Call(models.Model): ''' Outbound call ''' uuid = types.UUIDType(default=uuid.uuid4) # Specify where and how to call account = types.StringType(required=True) channel = types.StringType() callerid = types.StringType() max_retries = types.IntType(default=2) retry_time = types.IntType(default=300) wait_time = types.IntType(default=45) # If the call answers, connect it here context = types.StringType() extension = types.StringType() priority = types.IntType(default=1) # Set a variable for use in the extension logic set_var = types.StringType() # other stuff archive = types.StringType(default='no', choices=['yes', 'no'])
class ModifyTask(models.Model): ''' Modify task This model is similar to Task. It lacks of require and default values on it's fields. The reason of it existence is that we need to validate every input data that came from outside the system, with this we prevent users from using PATCH to create fields outside the scope of the resource. ''' uuid = types.UUIDType(default=uuid.uuid4) account = types.StringType() subject = types.StringType() description = types.StringType() data = types.StringType() assign = compound.ListType(types.StringType()) public = types.BooleanType(default=False) source = types.StringType() destination = types.StringType() labels = types.DictType(types.StringType) start_time = types.TimestampType() ack_time = types.TimestampType() stop_time = types.TimestampType() deadline = types.TimestampType() duration = types.StringType() comments = compound.ListType(types.StringType()) status = types.StringType(choices=['new', 'now', 'later', 'done'], default='new', required=True) history = compound.ListType(types.StringType()) checked = types.BooleanType(default=False) checked_by = types.StringType() checked_at = types.TimestampType(default=arrow.utcnow().timestamp) created_by = types.StringType() created_at = types.TimestampType(default=arrow.utcnow().timestamp) last_update_by = types.StringType() last_update_at = types.TimestampType()
class SchematicsFieldsModel(BaseModel): # base fields type_string = types.StringType() type_int = types.IntType() type_uuid = types.UUIDType() type_IPv4 = types.IPv4Type() type_url = types.URLType() type_email = types.EmailType() type_number = types.NumberType(int, "integer") type_int = types.IntType() type_long = types.LongType() type_float = types.FloatType() type_decimal = types.DecimalType() type_md5 = types.MD5Type() type_sha1 = types.SHA1Type() type_boolean = types.BooleanType() type_date = types.DateType() type_datetime = types.DateTimeType() type_geopoint = types.GeoPointType() # type_multilingualstring = types.MultilingualStringType(default_locale='localized_value') # compound fields type_list = compound.ListType(types.StringType) type_dict = compound.DictType( types.IntType) # dict values can be only integers type_list_of_dict = compound.ListType(compound.DictType, compound_field=types.StringType) type_dict_of_list = compound.DictType(compound.ListType, compound_field=types.IntType) type_model = compound.ModelType(NestedModel) type_list_model = compound.ListType(compound.ModelType(NestedModel)) # reference fields type_ref_simplemodel = ModelReferenceType(SimpleModel) type_ref_usermodel = ModelReferenceType(User) class Options: # namespace = 'st' collection = 'st' serialize_when_none = False