Ejemplo n.º 1
0
 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
Ejemplo n.º 2
0
 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
Ejemplo n.º 3
0
 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
Ejemplo n.º 4
0
 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
Ejemplo n.º 5
0
 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
Ejemplo n.º 6
0
 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
Ejemplo n.º 7
0
 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