def filter_add_user(cls, info, difference, trim): """ A method that retrieves users' info using the difference. """ def normalize(info): """ A function that normalizes retrieved information from Slack. """ user_dict = {} not_user_list = [] for item in info: if 'deleted' in item and item['deleted'] is True: not_user_list.append(item['id']) continue if 'is_bot' in item and item['is_bot'] is True: not_user_list.append(item['id']) continue if 'email' not in item['profile'] or item['profile'].get('email') is None: not_user_list.append(item['id']) continue if not item['profile']['email'].endswith(settings.DOMAIN_LIST): not_user_list.append(item['id']) continue firstname, lastname = re.match( '^([\w-]+)[.]{0,1}([\w-]+){0,1}@', item['profile']['email']).groups() lastname = '' if lastname is None else lastname user_dict[item['id']] = { 'slack_id': item['id'], 'email': item['profile']['email'], # use slack default image 'photo': item['profile'].get('image_original', item['profile'].get('image_192')), 'firstname': firstname.title(), 'lastname': lastname.title() } return user_dict, not_user_list info, not_user = normalize(info) difference = cls.get_real_users(difference[:], not_user) if len(difference) == 0: return "Users list not changed" if trim: return cls.trim_away(not_user) try: for user in difference: if user in info: with transaction.atomic(): SlackUser.create(info[user]) return "Users updated successfully" except Exception as e: return "Users couldn't be updated successfully - %s" % e.message
def update_users(): call = slack_client.api_call("users.list") if call.get('ok'): users_ids = [] for item in call['members']: try: user = SlackUser( id=item['id'], team_id=item['team_id'], name=item['name'], deleted=item['deleted'], color=item['color'], real_name=item['real_name'], tz=item['tz'], profile=json.dumps(item['profile']), is_admin=item['is_admin'], is_owner=item['is_owner'], is_primary_owner=item['is_primary_owner'], is_bot=item['is_bot'], updated=datetime.fromtimestamp(item['updated']), is_app_user=item['is_app_user'], ) db.session.merge(user) db.session.commit() users_ids.append(user.id) except: continue return {'ok': True, 'users_ids': users_ids} else: return {'ok': False}
def add(cls, **kwargs): utype = kwargs.get('utype') users = SlackUser.objects.filter(user_type=utype).order_by('id') if kwargs.get("utype") != "guest": user = SlackUser( firstname=kwargs.get("firstname"), lastname=kwargs.get("lastname"),) else: last_guest = filter(lambda x: x.firstname.startswith("Guest"), list(users))[-1] if len(users) else None if not last_guest: username = kwargs.get("name", "Guest 1") else: last_num = int( re.match("^Guest ([\d]*)".format(), last_guest.firstname).groups()[0]) username = '******'.format(last_num + 1) user = SlackUser(firstname=username) user.slack_id = cls.generate_unique( utype, [individual.slack_id for individual in users] if len(users) else []) user.user_type = utype try: user.save() return "{} ({}) was created successfully.".format(user.firstname, utype,), user.id except Exception, e: return "{0} user couldn't be created. Error: {1}".format( utype.upper(), type(e)), None
def create_user(): """ Creates a user. :Returns: SlackUser object """ user_dummy_data = { 'slack_id': 'UX03131', 'firstname': 'Test', 'lastname': 'User', 'email': '*****@*****.**', 'photo': 'inexistent_photo.jpg' } return SlackUser.create(user_dummy_data)
def create_user(): """ Creates a user. :Returns: SlackUser object """ user_dummy_data = { "slack_id": "UX03131", "firstname": "Test", "lastname": "User", "email": "*****@*****.**", "photo": "inexistent_photo.jpg", } return SlackUser.create(user_dummy_data)
def add(cls, **kwargs): utype = kwargs.get("utype") users = SlackUser.objects.filter(user_type=utype).order_by("id") if kwargs.get("utype").lower() != "guest": user = SlackUser( firstname=kwargs.get("firstname"), lastname=kwargs.get("lastname") ) else: # for some reason filter object is not subscriptable # last_guest = ( # filter(lambda x: x.firstname.startswith("Guest"), list(users))[-1] # if len(users) # else None # ) guests = [x for x in list(users) if x.firstname.startswith("Guest")] last_guest = guests[-1] if len(guests) else None if not guests: username = kwargs.get("name", "Guest 1") else: last_num = int( re.match("^Guest ([\d]*)".format(), last_guest.firstname).groups()[ 0 ] ) username = "******".format(last_num + 1) user = SlackUser(firstname=username) user.slack_id = cls.generate_unique( utype, [individual.slack_id for individual in users] if len(users) else [] ) user.user_type = utype try: user.save() return ( "{} ({}) was created successfully.".format(user.firstname, utype), user.id, ) except Exception as e: user_type = utype.upper() error_type = type(e) return f"{user_type} user couldn't be created. Error: {error_type}"
def add(cls, **kwargs): utype = kwargs.get('utype') users = SlackUser.objects.filter(user_type=utype).order_by('id') if kwargs.get("utype") != "guest": user = SlackUser( firstname=kwargs.get("firstname"), lastname=kwargs.get("lastname"), ) else: last_guest = filter(lambda x: x.firstname.startswith("Guest"), list(users))[-1] if len(users) else None if not last_guest: username = kwargs.get("name", "Guest 1") else: last_num = int( re.match("^Guest ([\d]*)".format(), last_guest.firstname).groups()[0]) username = '******'.format(last_num + 1) user = SlackUser(firstname=username) user.slack_id = cls.generate_unique( utype, [individual.slack_id for individual in users] if len(users) else []) user.user_type = utype try: user.save() return "{} ({}) was created successfully.".format( user.firstname, utype, ), user.id except Exception, e: return "{0} user couldn't be created. Error: {1}".format( utype.upper(), type(e)), None
def _add_new_users(cls, users_to_be_added, valid_users): for user_slack_id in users_to_be_added: current_user = valid_users[user_slack_id] SlackUser.create(current_user)
def filter_add_user(cls, info, difference, trim): """ A method that retrieves users' info using the difference. """ def normalize(info): """ A function that normalizes retrieved information from Slack. """ user_dict = {} not_user_list = [] for item in info: if 'deleted' in item and item['deleted'] is True: not_user_list.append(item['id']) continue if 'is_bot' in item and item['is_bot'] is True: not_user_list.append(item['id']) continue if 'email' not in item['profile'] or item['profile'].get( 'email') is None: not_user_list.append(item['id']) continue if not item['profile']['email'].endswith(settings.DOMAIN_LIST): not_user_list.append(item['id']) continue firstname = item.get('profile').get('first_name', '') lastname = item.get('profile').get('last_name', '') user_dict[item['id']] = { 'slack_id': item['id'], 'email': item['profile']['email'], # use slack default image 'photo': item['profile'].get('image_original', item['profile'].get('image_192')), 'firstname': firstname.title(), 'lastname': lastname.title() } return user_dict, not_user_list info, not_user = normalize(info) difference = cls.get_real_users(difference[:], not_user) if len(difference) == 0: return "Users list not changed" if trim: return cls.trim_away(not_user) try: for user in difference: if user in info: with transaction.atomic(): SlackUser.create(info[user]) return "Users updated successfully" except Exception as e: return "Users couldn't be updated successfully - %s" % e.message