def classified_entries(self, key=None): self._initialize() results = DAList() results.gathered = True results.set_random_instance_name() if key is None: query = MachineLearning.query.filter_by( group_id=self.group_id, active=True).order_by(MachineLearning.id).all() else: query = MachineLearning.query.filter_by( group_id=self.group_id, active=True, key=key).order_by(MachineLearning.id).all() for entry in query: results.appendObject( MachineLearningEntry, ml=self, id=entry.id, independent=fix_pickle_obj( codecs.decode( bytearray(entry.independent, encoding='utf-8'), 'base64')), dependent=fix_pickle_obj( codecs.decode(bytearray(entry.dependent, encoding='utf-8'), 'base64')), info=fix_pickle_obj( codecs.decode(bytearray(entry.info, encoding='utf-8'), 'base64')) if entry.info is not None else None, create_time=entry.create_time, key=entry.key) return results
def unclassified_entries(self, key=None): self._initialize() results = DAList()._set_instance_name_for_method() results.gathered = True if key is None: query = db.session.execute( select(MachineLearning).filter_by( group_id=self.group_id, active=False).order_by(MachineLearning.id)).scalars() else: query = db.session.execute( select(MachineLearning).filter_by( group_id=self.group_id, key=key, active=False).order_by(MachineLearning.id)).scalars() for entry in query: results.appendObject( MachineLearningEntry, ml=self, id=entry.id, independent=fix_pickle_obj( codecs.decode( bytearray(entry.independent, encoding='utf-8'), 'base64')), create_time=entry.create_time, key=entry.key, info=fix_pickle_obj( codecs.decode(bytearray(entry.info, encoding='utf-8'), 'base64')) if entry.info is not None else None) return results
def unclassified_entries(self, key=None): self._initialize() results = DAList()._set_instance_name_for_method() results.gathered = True if key is None: query = MachineLearning.query.filter_by(group_id=self.group_id, active=False).order_by(MachineLearning.id).all() else: query = MachineLearning.query.filter_by(group_id=self.group_id, key=key, active=False).order_by(MachineLearning.id).all() for entry in query: results.appendObject(MachineLearningEntry, ml=self, id=entry.id, independent=pickle.loads(codecs.decode(entry.independent, 'base64')), create_time=entry.create_time, key=entry.key) return results
def unclassified_entries(self, key=None): self._initialize() results = DAList()._set_instance_name_for_method() results.gathered = True if key is None: query = MachineLearning.query.filter_by(group_id=self.group_id, active=False).order_by(MachineLearning.id).all() else: query = MachineLearning.query.filter_by(group_id=self.group_id, key=key, active=False).order_by(MachineLearning.id).all() for entry in query: results.appendObject(MachineLearningEntry, ml=self, id=entry.id, independent=fix_pickle_obj(codecs.decode(bytearray(entry.independent, encoding='utf-8'), 'base64')), create_time=entry.create_time, key=entry.key, info=fix_pickle_obj(codecs.decode(bytearray(entry.info, encoding='utf-8'), 'base64')) if entry.info is not None else None) return results
def classified_entries(self, key=None): self._initialize() results = DAList() results.gathered = True results.set_random_instance_name() if key is None: query = MachineLearning.query.filter_by(group_id=self.group_id, active=True).order_by(MachineLearning.id).all() else: query = MachineLearning.query.filter_by(group_id=self.group_id, active=True, key=key).order_by(MachineLearning.id).all() for entry in query: results.appendObject(MachineLearningEntry, ml=self, id=entry.id, independent=pickle.loads(codecs.decode(entry.independent, 'base64')), dependent=pickle.loads(codecs.decode(entry.dependent, 'base64')), info=pickle.loads(codecs.decode(entry.info, 'base64')) if entry.info is not None else None, create_time=entry.create_time, key=entry.key) return results
def filter(cls, instance_name, **kwargs): if 'dbcache' not in this_thread.misc: this_thread.misc['dbcache'] = {} listobj = DAList(instance_name, object_type=cls, auto_gather=False) filters = [] for key, val in kwargs.items(): if not hasattr(cls._model, key): raise Exception("filter: class " + cls.__name__ + " does not have column " + key) filters.append(getattr(cls._model, key) == val) for db_entry in list( cls._session.query(cls._model).filter(*filters).order_by( cls._model.id).all()): if cls._model.__name__ in this_thread.misc[ 'dbcache'] and db_entry.id in this_thread.misc['dbcache'][ cls._model.__name__]: listobj.append(this_thread.misc['dbcache'][cls._model.__name__] [db_entry.id]) else: obj = listobj.appendObject() obj.id = db_entry.id db_values = {} for column in cls._model.__dict__.keys(): if column == 'id' or column.startswith('_'): continue db_values[column] = getattr(db_entry, column) if db_values[column] is not None: obj.db_set(column, db_values[column]) obj._orig = db_values obj.db_cache() listobj.gathered = True return listobj
def all(cls, instance_name=None): if 'dbcache' not in this_thread.misc: this_thread.misc['dbcache'] = {} if instance_name: listobj = DAList(instance_name, object_type=cls) else: listobj = DAList(object_type=cls) listobj.set_random_instance_name() for db_entry in list( cls._session.query(cls._model).order_by(cls._model.id).all()): if cls._model.__name__ in this_thread.misc[ 'dbcache'] and db_entry.id in this_thread.misc['dbcache'][ cls._model.__name__]: listobj.append(this_thread.misc['dbcache'][cls._model.__name__] [db_entry.id]) else: obj = listobj.appendObject() obj.id = db_entry.id db_values = {} for column in cls._model.__dict__.keys(): if column == 'id' or column.startswith('_'): continue db_values[column] = getattr(db_entry, column) if db_values[column] is not None: obj.db_set(column, db_values[column]) obj._orig = db_values obj.db_cache() listobj.gathered = True return listobj
def get_contacts(self, upn, default_address='home'): """ Return a list of contacts from the given user's Universal Principal Name (i.e., [email protected] for most organizations, or [email protected]). Does not paginate--will return the first 100 contacts only for now. You can choose whether to default to 'home' or 'business' address and phone.""" contacts_url = "https://graph.microsoft.com/v1.0/users/" + upn + "/contacts" res = self.get_request(contacts_url) people = DAList(object_type=Individual, auto_gather=False, gathered=True) for p_res in res.get('value', []): person = people.appendObject() person.name.first = p_res.get('givenName', '') person.name.last = p_res.get('surname', '') if p_res.get('middleName'): person.name.middle = p_res.get('middleName') person.jobTitle = p_res.get('jobTitle') person.title = p_res.get('title') person.business_phones = p_res.get('businessPhones', []) person.home_phones = p_res.get('homePhones', []) person.mobile_number = p_res.get('mobilePhone') person.initializeAttribute('home_address', Address) person.home_address.address = p_res.get( 'homeAddress', {}).get('street') person.home_address.city = p_res.get('homeAddress', {}).get('city') person.home_address.state = p_res.get( 'homeAddress', {}).get('state') person.home_address.zip = p_res.get( 'homeAddress', {}).get('postalCode') # if not p_res.get('homeAddress',{}).get('countryOrRegion') is None: # person.home_address.country = p_res.get('homeAddress',{}).get('countryOrRegion') person.initializeAttribute('business_address', Address) person.business_address.address = p_res.get( 'businessAddress', {}).get('street') person.business_address.city = p_res.get( 'businessAddress', {}).get('city') person.business_address.state = p_res.get( 'businessAddress', {}).get('state') person.business_address.zip = p_res.get( 'businessAddress', {}).get('postalCode') # if not p_res.get('businessAddress',{}).get('countryOrRegion') is None: # person.business_address.country = p_res.get('businessAddress',{}).get('countryOrRegion') person.emails = p_res.get('emailAddresses', []) if p_res.get('emailAddresses'): person.email = next(iter(person.emails), []).get( 'address', None) # take the first email # Try to respect the address kind the user wants, but if not present, use the address we have (which might be null) # Information is often put in the business phone/address fields if the contact only has one address/phone if default_address == 'home': if p_res.get('homeAddress'): person.address = person.home_address else: person.address = person.business_address else: if p_res.get('businessAddress'): person.address = person.business_address else: person.address = person.home_address if default_address == 'home': if p_res.get('homePhones'): # just take the first home phone in the list person.phone_number = next(iter(person.home_phones), '') else: person.phone_number = next( iter(person.business_phones), '') else: if p_res.get('businessPhones'): # just take the first business phone person.phone_number = next( iter(person.business_phones), '') else: person.phone_number = next(iter(person.home_phones), '') return people