예제 #1
0
파일: users.py 프로젝트: zobe123/Plex-CS
    def get_user_friendly_name(self, user=None, user_id=None):
        if user_id:
            monitor_db = database.MonitorDatabase()
            query = 'select username, ' \
                    '(CASE WHEN friendly_name IS NULL THEN username ELSE friendly_name END) as friendly_name,' \
                    'do_notify, keep_history, custom_avatar_url as thumb ' \
                    'FROM users WHERE user_id = ?'
            result = monitor_db.select(query, args=[user_id])
            if result:
                user_detail = {
                    'user_id': user_id,
                    'user': result[0]['username'],
                    'friendly_name': result[0]['friendly_name'],
                    'thumb': result[0]['thumb'],
                    'do_notify': helpers.checked(result[0]['do_notify']),
                    'keep_history': helpers.checked(result[0]['keep_history'])
                }
                return user_detail
            else:
                user_detail = {
                    'user_id': user_id,
                    'user': '',
                    'friendly_name': '',
                    'do_notify': '',
                    'thumb': '',
                    'keep_history': ''
                }
                return user_detail
        elif user:
            monitor_db = database.MonitorDatabase()
            query = 'select user_id, ' \
                    '(CASE WHEN friendly_name IS NULL THEN username ELSE friendly_name END) as friendly_name,' \
                    'do_notify, keep_history, custom_avatar_url as thumb  ' \
                    'FROM users WHERE username = ?'
            result = monitor_db.select(query, args=[user])
            if result:
                user_detail = {
                    'user_id': result[0]['user_id'],
                    'user': user,
                    'friendly_name': result[0]['friendly_name'],
                    'thumb': result[0]['thumb'],
                    'do_notify': helpers.checked(result[0]['do_notify']),
                    'keep_history': helpers.checked(result[0]['keep_history'])
                }
                return user_detail
            else:
                user_detail = {
                    'user_id': None,
                    'user': user,
                    'friendly_name': '',
                    'do_notify': '',
                    'thumb': '',
                    'keep_history': ''
                }
                return user_detail

        return None
예제 #2
0
파일: users.py 프로젝트: zobe123/Plex-CS
    def get_user_friendly_name(self, user=None, user_id=None):
        if user_id:
            monitor_db = database.MonitorDatabase()
            query = 'select username, ' \
                    '(CASE WHEN friendly_name IS NULL THEN username ELSE friendly_name END) as friendly_name,' \
                    'do_notify, keep_history, custom_avatar_url as thumb ' \
                    'FROM users WHERE user_id = ?'
            result = monitor_db.select(query, args=[user_id])
            if result:
                user_detail = {'user_id': user_id,
                               'user': result[0]['username'],
                               'friendly_name': result[0]['friendly_name'],
                               'thumb': result[0]['thumb'],
                               'do_notify': helpers.checked(result[0]['do_notify']),
                               'keep_history': helpers.checked(result[0]['keep_history'])
                               }
                return user_detail
            else:
                user_detail = {'user_id': user_id,
                               'user': '',
                               'friendly_name': '',
                               'do_notify': '',
                               'thumb': '',
                               'keep_history': ''}
                return user_detail
        elif user:
            monitor_db = database.MonitorDatabase()
            query = 'select user_id, ' \
                    '(CASE WHEN friendly_name IS NULL THEN username ELSE friendly_name END) as friendly_name,' \
                    'do_notify, keep_history, custom_avatar_url as thumb  ' \
                    'FROM users WHERE username = ?'
            result = monitor_db.select(query, args=[user])
            if result:
                user_detail = {'user_id': result[0]['user_id'],
                               'user': user,
                               'friendly_name': result[0]['friendly_name'],
                               'thumb': result[0]['thumb'],
                               'do_notify': helpers.checked(result[0]['do_notify']),
                               'keep_history': helpers.checked(result[0]['keep_history'])}
                return user_detail
            else:
                user_detail = {'user_id': None,
                               'user': user,
                               'friendly_name': '',
                               'do_notify': '',
                               'thumb': '',
                               'keep_history': ''}
                return user_detail

        return None
예제 #3
0
파일: users.py 프로젝트: zobe123/Plex-CS
    def get_user_list(self, kwargs=None):
        data_tables = datatables.DataTables()

        custom_where = ['users.deleted_user', 0]

        columns = [
            'session_history.id', 'users.user_id as user_id',
            'users.custom_avatar_url as user_thumb',
            '(case when users.friendly_name is null then users.username else \
                    users.friendly_name end) as friendly_name',
            'MAX(session_history.started) as last_seen',
            'session_history.ip_address as ip_address',
            'COUNT(session_history.id) as plays',
            'session_history.platform as platform',
            'session_history.player as player',
            'session_history_metadata.full_title as last_watched',
            'session_history_metadata.thumb',
            'session_history_metadata.parent_thumb',
            'session_history_metadata.grandparent_thumb',
            'session_history_metadata.media_type',
            'session_history.rating_key as rating_key',
            'session_history_media_info.video_decision',
            'users.username as user', 'users.do_notify as do_notify',
            'users.keep_history as keep_history'
        ]
        try:
            query = data_tables.ssp_query(
                table_name='users',
                columns=columns,
                custom_where=[custom_where],
                group_by=['users.user_id'],
                join_types=[
                    'LEFT OUTER JOIN', 'LEFT OUTER JOIN', 'LEFT OUTER JOIN'
                ],
                join_tables=[
                    'session_history', 'session_history_metadata',
                    'session_history_media_info'
                ],
                join_evals=[
                    ['session_history.user_id', 'users.user_id'],
                    ['session_history.id', 'session_history_metadata.id'],
                    ['session_history.id', 'session_history_media_info.id']
                ],
                kwargs=kwargs)
        except:
            logger.warn("Unable to execute database query.")
            return {
                'recordsFiltered': 0,
                'recordsTotal': 0,
                'draw': 0,
                'data': 'null',
                'error': 'Unable to execute database query.'
            }

        users = query['result']

        rows = []
        for item in users:
            if item["media_type"] == 'episode' and item["parent_thumb"]:
                thumb = item["parent_thumb"]
            elif item["media_type"] == 'episode':
                thumb = item["grandparent_thumb"]
            else:
                thumb = item["thumb"]

            if not item['user_thumb'] or item['user_thumb'] == '':
                user_thumb = common.DEFAULT_USER_THUMB
            else:
                user_thumb = item['user_thumb']

            # Rename Mystery platform names
            platform = common.PLATFORM_NAME_OVERRIDES.get(
                item["platform"], item["platform"])

            row = {
                "id": item['id'],
                "plays": item['plays'],
                "last_seen": item['last_seen'],
                "friendly_name": item['friendly_name'],
                "ip_address": item['ip_address'],
                "platform": platform,
                "player": item["player"],
                "last_watched": item['last_watched'],
                "thumb": thumb,
                "media_type": item['media_type'],
                "rating_key": item['rating_key'],
                "video_decision": item['video_decision'],
                "user_thumb": user_thumb,
                "user": item["user"],
                "user_id": item['user_id'],
                "do_notify": helpers.checked(item['do_notify']),
                "keep_history": helpers.checked(item['keep_history'])
            }

            rows.append(row)

        dict = {
            'recordsFiltered': query['filteredCount'],
            'recordsTotal': query['totalCount'],
            'data': rows,
            'draw': query['draw']
        }

        return dict
예제 #4
0
파일: users.py 프로젝트: zobe123/Plex-CS
    def get_user_list(self, kwargs=None):
        data_tables = datatables.DataTables()

        custom_where = ['users.deleted_user', 0]

        columns = ['session_history.id',
                   'users.user_id as user_id',
                   'users.custom_avatar_url as user_thumb',
                   '(case when users.friendly_name is null then users.username else \
                    users.friendly_name end) as friendly_name',
                   'MAX(session_history.started) as last_seen',
                   'session_history.ip_address as ip_address',
                   'COUNT(session_history.id) as plays',
                   'session_history.platform as platform',
                   'session_history.player as player',
                   'session_history_metadata.full_title as last_watched',
                   'session_history_metadata.thumb',
                   'session_history_metadata.parent_thumb',
                   'session_history_metadata.grandparent_thumb',
                   'session_history_metadata.media_type',
                   'session_history.rating_key as rating_key',
                   'session_history_media_info.video_decision',
                   'users.username as user',
                   'users.do_notify as do_notify',
                   'users.keep_history as keep_history'
                   ]
        try:
            query = data_tables.ssp_query(table_name='users',
                                          columns=columns,
                                          custom_where=[custom_where],
                                          group_by=['users.user_id'],
                                          join_types=['LEFT OUTER JOIN',
                                                      'LEFT OUTER JOIN',
                                                      'LEFT OUTER JOIN'],
                                          join_tables=['session_history',
                                                       'session_history_metadata',
                                                       'session_history_media_info'],
                                          join_evals=[['session_history.user_id', 'users.user_id'],
                                                      ['session_history.id', 'session_history_metadata.id'],
                                                      ['session_history.id', 'session_history_media_info.id']],
                                          kwargs=kwargs)
        except:
            logger.warn("Unable to execute database query.")
            return {'recordsFiltered': 0,
                    'recordsTotal': 0,
                    'draw': 0,
                    'data': 'null',
                    'error': 'Unable to execute database query.'}

        users = query['result']

        rows = []
        for item in users:
            if item["media_type"] == 'episode' and item["parent_thumb"]:
                thumb = item["parent_thumb"]
            elif item["media_type"] == 'episode':
                thumb = item["grandparent_thumb"]
            else:
                thumb = item["thumb"]

            if not item['user_thumb'] or item['user_thumb'] == '':
                user_thumb = common.DEFAULT_USER_THUMB
            else:
                user_thumb = item['user_thumb']

            # Rename Mystery platform names
            platform = common.PLATFORM_NAME_OVERRIDES.get(item["platform"], item["platform"])

            row = {"id": item['id'],
                   "plays": item['plays'],
                   "last_seen": item['last_seen'],
                   "friendly_name": item['friendly_name'],
                   "ip_address": item['ip_address'],
                   "platform": platform,
                   "player": item["player"],
                   "last_watched": item['last_watched'],
                   "thumb": thumb,
                   "media_type": item['media_type'],
                   "rating_key": item['rating_key'],
                   "video_decision": item['video_decision'],
                   "user_thumb": user_thumb,
                   "user": item["user"],
                   "user_id": item['user_id'],
                   "do_notify": helpers.checked(item['do_notify']),
                   "keep_history": helpers.checked(item['keep_history'])
                   }

            rows.append(row)

        dict = {'recordsFiltered': query['filteredCount'],
                'recordsTotal': query['totalCount'],
                'data': rows,
                'draw': query['draw']
        }

        return dict