Exemple #1
0
    def _create_user_lines(self, user):
        lines = user.get('lines', [])

        for line in lines:
            if not line.get('id'):
                line = self._create_line_and_associations(line)
            confd.users(user).add_line(line)
Exemple #2
0
    def _update_callpermissions(self, existing_user, user):
        if existing_user:
            existing_call_permissions = confd.users(existing_user).list_call_permissions()
            for existing_call_permission in existing_call_permissions['items']:
                confd.users(existing_user).remove_call_permission(existing_call_permission['call_permission_id'])

        for call_permission in user['call_permissions']:
            confd.users(user).add_call_permission(call_permission['id'])
Exemple #3
0
    def _delete_user_associations(self, user):
        if user.get('voicemail'):
            confd.users(user['uuid']).remove_voicemail()

        lines = user.get('lines', [])
        for line in lines:
            device_id = confd.lines.get(line['id'])['device_id']
            if device_id:
                confd.lines(line['id']).remove_device(device_id)
            confd.lines.delete(line)
Exemple #4
0
    def _update_voicemail(self, existing_user, user):
        existing_voicemail_id = existing_user['voicemail'].get('id') if existing_user['voicemail'] else None
        voicemail_id = int(user['voicemail']['id']) if user['voicemail'].get('id') else None

        if existing_voicemail_id == voicemail_id:
            return

        if existing_voicemail_id:
            confd.users(user).remove_voicemail()

        if voicemail_id:
            confd.users(user).add_voicemail(user['voicemail'])
Exemple #5
0
 def get(self, resource_id):
     resource = super().get(resource_id)
     call_permissions = confd.users(resource_id).list_call_permissions()
     wazo_user = auth.users.get(resource_id)
     resource['username'] = wazo_user['username']
     resource['call_permissions'] = self._build_call_permissions_list(call_permissions['items'])
     return resource
Exemple #6
0
    def create(self, user):
        username = user.pop('username')
        password = user.pop('password')
        user['uuid'] = super().create(user)['uuid']
        auth.users.new(
            uuid=user['uuid'],
            username=username or user['email'] or user['uuid'],
            password=password,
            firstname=user['firstname'],
            lastname=user['lastname'],
            email_address=user['email'],
            enabled=True,
        )

        if username and password:
            # ID 3 is the default ID for Client profile in populate.sql
            confd.users(user['uuid']).update_cti_profile({'id': 3}, enabled=False)
        self._create_user_lines(user)
Exemple #7
0
    def _update_user_lines(self, existing_user, user):
        lines = user.get('lines', [])
        line_ids = set([l.get('id') for l in lines])
        existing_lines = existing_user['lines']
        existing_line_ids = set([l['id'] for l in existing_lines])

        line_ids_to_remove = existing_line_ids - line_ids
        for line_id in line_ids_to_remove:
            device_id = confd.lines.get(line_id)['device_id']
            if device_id:
                confd.lines(line_id).remove_device(device_id)
            confd.lines.delete(line_id)

        for line in lines:
            if line.get('id'):
                self._update_line_and_associations(line)
                self._update_device_association(line['id'], line.get('device_id'))
            else:
                line = self._create_line_and_associations(line)
                if line.get('device_id'):
                    confd.lines(line).add_device(line['device_id'])

        if line_ids != existing_line_ids or self._get_first_line_id(lines) != self._get_first_line_id(existing_lines):
            confd.users(user).update_lines(lines)
 def update_users(self, callpermission_id, user_ids, existing_user_ids):
     for existing_user_id in existing_user_ids:
         confd.users(existing_user_id).remove_call_permission(callpermission_id)
     for user_id in user_ids:
         confd.users(user_id).add_call_permission(callpermission_id)
Exemple #9
0
    def update(self, user):
        username = user.pop('username')
        password = user.pop('password')
        super().update(user)
        self._update_wazo_user(user, username, password)

        existing_user = confd.users.get(user)

        if user.get('fallbacks'):
            confd.users(user['uuid']).update_fallbacks(user['fallbacks'])

        if user.get('services'):
            confd.users(user['uuid']).update_services(user['services'])

        if user.get('forwards'):
            confd.users(user['uuid']).update_forwards(user['forwards'])

        if user.get('schedules'):
            self._update_schedules(existing_user, user)

        if user.get('call_permissions'):
            self._update_callpermissions(existing_user, user)

        confd.users(user['uuid']).update_cti_profile(user['cti_profile'], enabled=False)
        self._update_voicemail(existing_user, user)
        self._update_user_lines(existing_user, user)

        if 'groups' in user and user.get('lines'):
            confd.users(user).update_groups(user['groups'])

        if user.get('funckeys'):
            confd.users(user['uuid']).update_funckeys(user['funckeys'])
Exemple #10
0
 def list_funckeys(self, user_uuid):
     return confd.users(user_uuid).list_funckeys()
Exemple #11
0
 def _update_schedules(self, existing_user, user):
     if existing_user['schedules']:
         schedule_id = existing_user['schedules'][0]['id']
         confd.users(user).remove_schedule(schedule_id)
     if user['schedules'][0].get('id'):
         confd.users(user).add_schedule(user['schedules'][0])