def before_update_object(self, user, data, view_kwargs): if data.get('original_image_url') and data['original_image_url'] != user.original_image_url: try: uploaded_images = create_save_image_sizes(data['original_image_url'], 'speaker-image', user.id) except (urllib.error.HTTPError, urllib.error.URLError): raise UnprocessableEntity( {'source': 'attributes/original-image-url'}, 'Invalid Image URL' ) data['original_image_url'] = uploaded_images['original_image_url'] data['small_image_url'] = uploaded_images['thumbnail_image_url'] data['thumbnail_image_url'] = uploaded_images['thumbnail_image_url'] data['icon_image_url'] = uploaded_images['icon_image_url'] if data.get('email') and data['email'] != user.email: try: db.session.query(User).filter_by(email=data['email']).one() except NoResultFound: view_kwargs['email_changed'] = user.email else: raise ConflictException({'pointer': '/data/attributes/email'}, "Email already exists") if has_access('is_super_admin') and data.get('is_admin') != user.is_admin: user.is_admin = not user.is_admin if has_access('is_admin') and data.get('is_sales_admin') != user.is_sales_admin: user.is_sales_admin = not user.is_sales_admin if has_access('is_admin') and data.get('is_marketer') != user.is_marketer: user.is_marketer = not user.is_marketer
def test_create_save_image_sizes(self): with app.test_request_context(): image_url_test = 'https://cdn.pixabay.com/photo/2014/09/08/17/08/hot-air-balloons-439331_960_720.jpg' image_sizes_type = "event" width_large = 1300 width_thumbnail = 500 width_icon = 75 image_sizes = create_save_image_sizes(image_url_test, image_sizes_type) resized_image_url = image_sizes['original_image_url'] resized_image_url_large = image_sizes['large_image_url'] resized_image_url_thumbnail = image_sizes['thumbnail_image_url'] resized_image_url_icon = image_sizes['icon_image_url'] resized_image_file = app.config.get( 'BASE_DIR') + resized_image_url.split('/localhost')[1] resized_image_file_large = app.config.get( 'BASE_DIR') + resized_image_url_large.split('/localhost')[1] resized_image_file_thumbnail = app.config.get( 'BASE_DIR') + resized_image_url_thumbnail.split( '/localhost')[1] resized_image_file_icon = app.config.get( 'BASE_DIR') + resized_image_url_icon.split('/localhost')[1] resized_width_large, _ = self.getsizes(resized_image_file_large) resized_width_thumbnail, _ = self.getsizes( resized_image_file_thumbnail) resized_width_icon, _ = self.getsizes(resized_image_file_icon) self.assertTrue(os.path.exists(resized_image_file)) self.assertEqual(resized_width_large, width_large) self.assertEqual(resized_width_thumbnail, width_thumbnail) self.assertEqual(resized_width_icon, width_icon)
def after_create_object(self, user, data, view_kwargs): """ method to send- email notification mail link for register verification add image urls :param user: :param data: :param view_kwargs: :return: """ s = get_serializer() hash = str(base64.b64encode(str(s.dumps([user.email, str_generator()])).encode()), 'utf-8') link = make_frontend_url('/verify'.format(id=user.id), {'token': hash}) send_email_with_action(user, USER_REGISTER_WITH_PASSWORD, app_name=get_settings()['app_name'], email=user.email) send_email_confirmation(user.email, link) if data.get('original_image_url'): try: uploaded_images = create_save_image_sizes(data['original_image_url'], 'speaker-image', user.id) except (urllib.error.HTTPError, urllib.error.URLError): raise UnprocessableEntity( {'source': 'attributes/original-image-url'}, 'Invalid Image URL' ) uploaded_images['small_image_url'] = uploaded_images['thumbnail_image_url'] del uploaded_images['large_image_url'] self.session.query(User).filter_by(id=user.id).update(uploaded_images)
def test_create_save_image_sizes(self): """Method to test create image sizes""" with app.test_request_context(): image_url_test = image_link image_sizes_type = "event-image" width_large = 1300 width_thumbnail = 500 width_icon = 75 image_sizes = create_save_image_sizes(image_url_test, image_sizes_type) image_sizes = { url_name: urlparse(image_sizes[url_name]).path for url_name in image_sizes } # Now file names don't contain port (this gives relative urls). resized_image_url = image_sizes['original_image_url'] resized_image_url_large = image_sizes['large_image_url'] resized_image_url_thumbnail = image_sizes['thumbnail_image_url'] resized_image_url_icon = image_sizes['icon_image_url'] resized_image_file = app.config.get('BASE_DIR') + resized_image_url resized_image_file_large = app.config.get('BASE_DIR') + resized_image_url_large resized_image_file_thumbnail = app.config.get('BASE_DIR') + resized_image_url_thumbnail resized_image_file_icon = app.config.get('BASE_DIR') + resized_image_url_icon resized_width_large, _ = self.getsizes(resized_image_file_large) resized_width_thumbnail, _ = self.getsizes(resized_image_file_thumbnail) resized_width_icon, _ = self.getsizes(resized_image_file_icon) self.assertTrue(os.path.exists(resized_image_file)) self.assertEqual(resized_width_large, width_large) self.assertEqual(resized_width_thumbnail, width_thumbnail) self.assertEqual(resized_width_icon, width_icon)
def after_create_object(self, user, data, view_kwargs): """ method to send- email notification mail link for register verification add image urls :param user: :param data: :param view_kwargs: :return: """ s = get_serializer() hash = str( base64.b64encode( str(s.dumps([user.email, str_generator()])).encode()), 'utf-8') link = make_frontend_url('/verify'.format(id=user.id), {'token': hash}) send_email_with_action(user, USER_REGISTER_WITH_PASSWORD, app_name=get_settings()['app_name'], email=user.email) send_email_confirmation(user.email, link) if data.get('original_image_url'): try: uploaded_images = create_save_image_sizes( data['original_image_url'], 'speaker-image', user.id) except (urllib.error.HTTPError, urllib.error.URLError): raise UnprocessableEntity( {'source': 'attributes/original-image-url'}, 'Invalid Image URL') uploaded_images['small_image_url'] = uploaded_images[ 'thumbnail_image_url'] del uploaded_images['large_image_url'] self.session.query(User).filter_by( id=user.id).update(uploaded_images)
def before_update_object(self, user, data, view_kwargs): if data.get('original_image_url') and data['original_image_url'] != user.original_image_url: uploaded_images = create_save_image_sizes(data['original_image_url'], 'user', user.id) data['original_image_url'] = uploaded_images['original_image_url'] data['small_image_url'] = uploaded_images['thumbnail_image_url'] data['thumbnail_image_url'] = uploaded_images['thumbnail_image_url'] data['icon_image_url'] = uploaded_images['icon_image_url'] if data.get('email') and data['email'] != user.email: view_kwargs['email_changed'] = user.email
def after_create_object(self, custom_placeholder, data, view_kwargs): """ after create method for custom placeholder to save image sizes :param custom_placeholder: :param data: :param view_kwargs: :return: """ if data.get('original_image_url'): uploaded_images = create_save_image_sizes(data['original_image_url'], 'custom-placeholders', custom_placeholder.id) self.session.query(CustomPlaceholder).filter_by(id=custom_placeholder.id).update(uploaded_images)
def resize_speaker_images_task(self, speaker_id, photo_url): speaker = safe_query(db, Speaker, 'id', speaker_id, 'speaker_id') try: logging.info('Speaker image resizing tasks started for speaker with id {}'.format(speaker_id)) uploaded_images = create_save_image_sizes(photo_url, 'speaker-image', speaker_id) speaker.small_image_url = uploaded_images['small_image_url'] speaker.thumbnail_image_url = uploaded_images['thumbnail_image_url'] speaker.icon_image_url = uploaded_images['icon_image_url'] save_to_db(speaker) logging.info('Resized images saved successfully for speaker with id: {}'.format(speaker_id)) except (urllib.error.HTTPError, urllib.error.URLError): logging.exception('Error encountered while generating resized images for event with id: {}'.format(speaker_id))
def resize_event_images_task(self, event_id, original_image_url): event = safe_query(db, Event, 'id', event_id, 'event_id') try: logging.info('Event image resizing tasks started {}'.format(original_image_url)) uploaded_images = create_save_image_sizes(original_image_url, 'event-image', event.id) event.large_image_url = uploaded_images['large_image_url'] event.thumbnail_image_url = uploaded_images['thumbnail_image_url'] event.icon_image_url = uploaded_images['icon_image_url'] save_to_db(event) logging.info('Resized images saved successfully for event with id: {}'.format(event_id)) except (urllib.error.HTTPError, urllib.error.URLError): logging.exception('Error encountered while generating resized images for event with id: {}'.format(event_id))
def resize_user_images_task(self, user_id, original_image_url): user = safe_query(db, User, 'id', user_id, 'user_id') try: logging.info('User image resizing tasks started {}'.format(original_image_url)) uploaded_images = create_save_image_sizes(original_image_url, 'speaker-image', user.id) user.original_image_url = uploaded_images['original_image_url'] user.avatar_url = uploaded_images['original_image_url'] user.small_image_url = uploaded_images['thumbnail_image_url'] user.thumbnail_image_url = uploaded_images['thumbnail_image_url'] user.icon_image_url = uploaded_images['icon_image_url'] save_to_db(user) logging.info('Resized images saved successfully for user with id: {}'.format(user_id)) except (urllib.error.HTTPError, urllib.error.URLError): logging.exception('Error encountered while generating resized images for user with id: {}'.format(user_id))
def before_update_object(self, event, data, view_kwargs): """ method to save image urls before updating event object :param event: :param data: :param view_kwargs: :return: """ if data.get('original_image_url') and data['original_image_url'] != event.original_image_url: uploaded_images = create_save_image_sizes(data['original_image_url'], 'event', event.id) data['original_image_url'] = uploaded_images['original_image_url'] data['large_image_url'] = uploaded_images['large_image_url'] data['thumbnail_image_url'] = uploaded_images['thumbnail_image_url'] data['icon_image_url'] = uploaded_images['icon_image_url']
def after_create_object(self, custom_placeholder, data, view_kwargs): """ after create method for custom placeholder to save image sizes :param custom_placeholder: :param data: :param view_kwargs: :return: """ if data.get('original_image_url'): uploaded_images = create_save_image_sizes( data['original_image_url'], 'custom-placeholders', custom_placeholder.id) self.session.query(CustomPlaceholder).filter_by( id=custom_placeholder.id).update(uploaded_images)
def before_update_object(self, custom_placeholder, data, view_kwargs): """ method to update image sizes before updating the custom placeholder :param custom_placeholder: :param data: :param view_kwargs: :return: """ if data.get('original_image_url') and data['original_image_url'] != custom_placeholder.original_image_url: uploaded_images = create_save_image_sizes(data['original_image_url'], 'custom-placeholders', custom_placeholder.id) data['original_image_url'] = uploaded_images['original_image_url'] data['large_image_url'] = uploaded_images['large_image_url'] data['thumbnail_image_url'] = uploaded_images['thumbnail_image_url'] data['icon_image_url'] = uploaded_images['icon_image_url']
def after_create_object(self, event, data, view_kwargs): """ after create method to save roles for users :param event: :param data: :param view_kwargs: :return: """ role = Role.query.filter_by(name=ORGANIZER).first() user = User.query.filter_by(id=view_kwargs['user_id']).first() uer = UsersEventsRoles(user, event, role) save_to_db(uer, 'Event Saved') if data.get('original_image_url'): uploaded_images = create_save_image_sizes(data['original_image_url'], 'event', event.id) self.session.query(Event).filter_by(id=event.id).update(uploaded_images) self.session.commit()
def before_update_object(self, event, data, view_kwargs): """ method to save image urls before updating event object :param event: :param data: :param view_kwargs: :return: """ if data.get('original_image_url') and data[ 'original_image_url'] != event.original_image_url: uploaded_images = create_save_image_sizes( data['original_image_url'], 'event', event.id) data['original_image_url'] = uploaded_images['original_image_url'] data['large_image_url'] = uploaded_images['large_image_url'] data['thumbnail_image_url'] = uploaded_images[ 'thumbnail_image_url'] data['icon_image_url'] = uploaded_images['icon_image_url']
def resize_event_images_task(self, event_id, original_image_url): event = Event.query.get(event_id) try: logging.info( f'Event image resizing tasks started {original_image_url}') uploaded_images = create_save_image_sizes(original_image_url, 'event-image', event.id) event.large_image_url = uploaded_images['large_image_url'] event.thumbnail_image_url = uploaded_images['thumbnail_image_url'] event.icon_image_url = uploaded_images['icon_image_url'] save_to_db(event) logging.info( f'Resized images saved successfully for event with id: {event_id}') except (requests.exceptions.HTTPError, requests.exceptions.InvalidURL): logging.exception( 'Error encountered while generating resized images for event with id: {}' .format(event_id))
def after_create_object(self, event, data, view_kwargs): """ after create method to save roles for users :param event: :param data: :param view_kwargs: :return: """ role = Role.query.filter_by(name=ORGANIZER).first() user = User.query.filter_by(id=view_kwargs['user_id']).first() uer = UsersEventsRoles(user, event, role) save_to_db(uer, 'Event Saved') if data.get('original_image_url'): uploaded_images = create_save_image_sizes( data['original_image_url'], 'event', event.id) self.session.query(Event).filter_by( id=event.id).update(uploaded_images) self.session.commit()
def before_update_object(self, custom_placeholder, data, view_kwargs): """ method to update image sizes before updating the custom placeholder :param custom_placeholder: :param data: :param view_kwargs: :return: """ if data.get('original_image_url') and data[ 'original_image_url'] != custom_placeholder.original_image_url: uploaded_images = create_save_image_sizes( data['original_image_url'], 'custom-placeholders', custom_placeholder.id) data['original_image_url'] = uploaded_images['original_image_url'] data['large_image_url'] = uploaded_images['large_image_url'] data['thumbnail_image_url'] = uploaded_images[ 'thumbnail_image_url'] data['icon_image_url'] = uploaded_images['icon_image_url']
def resize_speaker_images_task(self, speaker_id, photo_url): speaker = Speaker.query.get(speaker_id) try: logging.info( 'Speaker image resizing tasks started for speaker with id {}'. format(speaker_id)) uploaded_images = create_save_image_sizes(photo_url, 'speaker-image', speaker_id) speaker.small_image_url = uploaded_images['small_image_url'] speaker.thumbnail_image_url = uploaded_images['thumbnail_image_url'] speaker.icon_image_url = uploaded_images['icon_image_url'] save_to_db(speaker) logging.info( 'Resized images saved successfully for speaker with id: {}'.format( speaker_id)) except (requests.exceptions.HTTPError, requests.exceptions.InvalidURL): logging.exception( 'Error encountered while generating resized images for event with id: {}' .format(speaker_id))
def resize_group_images_task(self, group_id, banner_url): group = Group.query.get(group_id) try: logging.info( 'Group image resizing tasks started for group with id {}: {}'.format( group_id, banner_url ) ) uploaded_images = create_save_image_sizes( banner_url, 'event-image', group.id ) group.thumbnail_image_url = uploaded_images['thumbnail_image_url'] save_to_db(group) logging.info(f'Resized images saved successfully for group with id: {group_id}') except (requests.exceptions.HTTPError, requests.exceptions.InvalidURL, OSError): logging.exception( 'Error encountered while generating resized images for group with id: {}'.format( group_id ) )
def resize_exhibitor_images_task(self, exhibitor_id, photo_url): exhibitor = Exhibitor.query.get(exhibitor_id) try: logging.info( 'Exhibitor image resizing tasks started for exhibitor with id {}: {}'.format( exhibitor_id, photo_url ) ) uploaded_images = create_save_image_sizes( photo_url, 'event-image', exhibitor_id, folder='exhibitors' ) exhibitor.thumbnail_image_url = uploaded_images['thumbnail_image_url'] save_to_db(exhibitor) logging.info( f'Resized images saved successfully for exhibitor with id: {exhibitor_id}' ) except (requests.exceptions.HTTPError, requests.exceptions.InvalidURL, OSError): logging.exception( 'Error encountered while generating resized images for exhibitor with id: {}'.format( exhibitor_id ) )
def after_create_object(self, user, data, view_kwargs): """ method to send- email notification mail link for register verification add image urls :param user: :param data: :param view_kwargs: :return: """ s = get_serializer() hash = base64.b64encode(s.dumps([user.email, str_generator()])) link = make_frontend_url('/email/verify'.format(id=user.id), {'token': hash}) send_email_with_action(user, USER_REGISTER_WITH_PASSWORD, app_name=get_settings()['app_name'], email=user.email) send_email_confirmation(user.email, link) if data.get('original_image_url'): uploaded_images = create_save_image_sizes(data['original_image_url'], 'user', user.id) uploaded_images['small_image_url'] = uploaded_images['thumbnail_image_url'] del uploaded_images['large_image_url'] self.session.query(User).filter_by(id=user.id).update(uploaded_images)
def before_update_object(self, user, data, view_kwargs): if data.get('original_image_url') and data[ 'original_image_url'] != user.original_image_url: try: uploaded_images = create_save_image_sizes( data['original_image_url'], 'speaker-image', user.id) except (urllib.error.HTTPError, urllib.error.URLError): raise UnprocessableEntity( {'source': 'attributes/original-image-url'}, 'Invalid Image URL') data['original_image_url'] = uploaded_images['original_image_url'] data['small_image_url'] = uploaded_images['thumbnail_image_url'] data['thumbnail_image_url'] = uploaded_images[ 'thumbnail_image_url'] data['icon_image_url'] = uploaded_images['icon_image_url'] if data.get('email') and data['email'] != user.email: try: db.session.query(User).filter_by(email=data['email']).one() except NoResultFound: view_kwargs['email_changed'] = user.email else: raise ConflictException({'pointer': '/data/attributes/email'}, "Email already exists") if has_access( 'is_super_admin') and data.get('is_admin') != user.is_admin: user.is_admin = not user.is_admin if has_access('is_admin' ) and data.get('is_sales_admin') != user.is_sales_admin: user.is_sales_admin = not user.is_sales_admin if has_access( 'is_admin') and data.get('is_marketer') != user.is_marketer: user.is_marketer = not user.is_marketer