from bulkperformancerights import config from bulkperformancerights.connectors import mysql from bulkperformancerights.models import track from bulkperformancerights.models import user allowed_user_types = ['vendor', 'subaccount'] def prefix_for_user(user): """Concatenate user.type and user.id Args: user (dict): keys are 'type' and 'id' Return: string: user_specific prefix """ if not user.get('type') or user.get('type') not in allowed_user_types: raise NameError('user type not valid, given: ' + str(user.get('type'))) if not valid_user_id(user.get('id')): raise NameError('user id not valid, given: ' + str(user.get('id'))) return '{}/{}/'.format(user.get('type'), user.get('id')) def xlsx_to_json_prefix_for_user(user): """Concatenate user.type, '_' and user.id Args: user (dict): keys are 'type' and 'id' Return: string: user_specific prefix for xlsxtojson service """ if not user.get('type') or user.get('type') not in allowed_user_types: raise NameError('user type not valid, given: ' + str(user.get('type'))) if not valid_user_id(user.get('id')): raise NameError('user id not valid, given: ' + str(user.get('id'))) return '{}_{}/'.format(user.get('type'), user.get('id')) def valid_user_id(user_id): """Validate user_id Args: user_id (mixed): Return: int: either a valid user_id or 0(false) """ if isinstance(user_id, int): return user_id elif isinstance(user_id, str): return int(user_id) else: return 0 def tracks_owned(user_type, user_id): """Return track ids a user owns Args: user_type (str): type of user user_id (int): identifier of user Return: list: track ids owned by the user """ session = mysql.art_relations_session() tracks_user_owns = track.tracks_owned_by_user(session, user_type, user_id) session.close() return tracks_user_owns def user_info(user_id, user_type='vendor'): """Information for a user Args: user_id (int): identifier of user user_type (str): vendor or subaccount Return: dict: {vendor_contact_email, vendor_logo_path} """ user_information = user.user_information(user_id, user_type) vendor_contact_email = user_information['vendor_contact_email'] vendor_path = '{}{}{}'.format( 'vendor', user_information['path'], user_information['filename']) vendor_logo_path = '{}/{}'.format( config.IMAGES_BASE_URL, vendor_path) user_info_dict = {'vendor_contact_email': vendor_contact_email, 'vendor_logo_path': vendor_logo_path} return user_info_dict