def sponsor_logos_url_task(self, event_id): sponsors = Sponsor.query.filter_by(event_id=event_id, deleted_at=None).all() for sponsor in sponsors: try: logging.info('Sponsor logo url generation task started {}'.format(sponsor.logo_url)) new_logo_url = create_save_resized_image(image_file=sponsor.logo_url, resize=False) sponsor.logo_url = new_logo_url save_to_db(sponsor) logging.info('Sponsor logo url successfully generated') except(urllib.error.HTTPError, urllib.error.URLError): logging.exception('Error encountered while logo generation')
def test_create_save_resized_image(self): """Method to test create resized images""" with app.test_request_context(): image_url_test = image_link width = 500 height = 200 aspect_ratio = False upload_path = 'test' resized_image_url = create_save_resized_image(image_url_test, width, aspect_ratio, height, upload_path, ext='png') resized_image_path = urlparse(resized_image_url).path resized_image_file = app.config.get('BASE_DIR') + resized_image_path resized_width, resized_height = self.getsizes(resized_image_file) self.assertTrue(os.path.exists(resized_image_file)) self.assertEqual(resized_width, width) self.assertEqual(resized_height, height)
def test_create_save_resized_image(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' width = 500 height = 200 aspect_ratio = False upload_path = 'test' resized_image_url = create_save_resized_image(image_url_test, width, aspect_ratio, height, upload_path, ext='png') resized_image_file = app.config.get( 'BASE_DIR') + resized_image_url.split('/localhost')[1] resized_width, resized_height = self.getsizes(resized_image_file) self.assertTrue(os.path.exists(resized_image_file)) self.assertEqual(resized_width, width) self.assertEqual(resized_height, height)
def test_create_save_resized_image(self): """Method to test create resized images""" with app.test_request_context(): image_url_test = 'https://cdn.pixabay.com/photo/2017/06/17/10/55/hot-air-balloon-2411851_1280.jpg' width = 500 height = 200 aspect_ratio = False upload_path = 'test' resized_image_url = create_save_resized_image(image_url_test, width, aspect_ratio, height, upload_path, ext='png') resized_image_path = urlparse(resized_image_url).path resized_image_file = app.config.get( 'BASE_DIR') + resized_image_path resized_width, resized_height = self.getsizes(resized_image_file) self.assertTrue(os.path.exists(resized_image_file)) self.assertEqual(resized_width, width) self.assertEqual(resized_height, height)
def create_object(self, data, view_kwargs): identifier = 'identifier' if view_kwargs.get('identifier').isdigit(): identifier = 'id' event = safe_query( Event, identifier, view_kwargs['identifier'], 'event_' + identifier ) tickets = Ticket.query.filter_by(event_id=event.id).all() social_links = SocialLink.query.filter_by(event_id=event.id).all() sponsors = Sponsor.query.filter_by(event_id=event.id).all() microlocations = Microlocation.query.filter_by(event_id=event.id).all() tracks = Track.query.filter_by(event_id=event.id).all() custom_forms = CustomForms.query.filter_by(event_id=event.id).all() discount_codes = DiscountCode.query.filter_by(event_id=event.id).all() speaker_calls = SpeakersCall.query.filter_by(event_id=event.id).all() db.session.expunge(event) # expunge the object from session make_transient(event) delattr(event, 'id') event.identifier = get_new_event_identifier() save_to_db(event) # Removes access_codes, order_tickets, ticket_tags for the new tickets created. for ticket in tickets: db.session.expunge(ticket) # expunge the object from session make_transient(ticket) ticket.event_id = event.id delattr(ticket, 'id') save_to_db(ticket) for link in social_links: db.session.expunge(link) # expunge the object from session make_transient(link) link.event_id = event.id delattr(link, 'id') save_to_db(link) for sponsor in sponsors: db.session.expunge(sponsor) # expunge the object from session make_transient(sponsor) sponsor.event_id = event.id logo_url = create_save_resized_image( image_file=sponsor.logo_url, resize=False ) delattr(sponsor, 'id') sponsor.logo_url = logo_url save_to_db(sponsor) for location in microlocations: db.session.expunge(location) # expunge the object from session make_transient(location) location.event_id = event.id delattr(location, 'id') save_to_db(location) # No sessions are copied for new tracks for track in tracks: db.session.expunge(track) # expunge the object from session make_transient(track) track.event_id = event.id delattr(track, 'id') save_to_db(track) for call in speaker_calls: db.session.expunge(call) # expunge the object from session make_transient(call) call.event_id = event.id delattr(call, 'id') save_to_db(call) for code in discount_codes: db.session.expunge(code) # expunge the object from session make_transient(code) code.event_id = event.id delattr(code, 'id') save_to_db(code) for form in custom_forms: db.session.expunge(form) # expunge the object from session make_transient(form) form.event_id = event.id delattr(form, 'id') save_to_db(form) return event
def create_event_copy(identifier): id = 'identifier' if identifier.isdigit(): id = 'id' event = safe_query(db, Event, id, identifier, 'event_' + id) if not has_access('is_coorganizer', event_id=event.id): return abort(make_response(jsonify(error="Access Forbidden"), 403)) tickets = Ticket.query.filter_by(event_id=event.id).all() social_links = SocialLink.query.filter_by(event_id=event.id).all() sponsors = Sponsor.query.filter_by(event_id=event.id).all() microlocations = Microlocation.query.filter_by(event_id=event.id).all() tracks = Track.query.filter_by(event_id=event.id).all() custom_forms = CustomForms.query.filter_by(event_id=event.id).all() discount_codes = DiscountCode.query.filter_by(event_id=event.id).all() speaker_calls = SpeakersCall.query.filter_by(event_id=event.id).all() db.session.expunge(event) # expunge the object from session make_transient(event) delattr(event, 'id') event.identifier = get_new_event_identifier() db.session.add(event) db.session.commit() # Removes access_codes, order_tickets, ticket_tags for the new tickets created. for ticket in tickets: ticket_id = ticket.id db.session.expunge(ticket) # expunge the object from session make_transient(ticket) ticket.event_id = event.id delattr(ticket, 'id') db.session.add(ticket) db.session.commit() for link in social_links: link_id = link.id db.session.expunge(link) # expunge the object from session make_transient(link) link.event_id = event.id delattr(link, 'id') db.session.add(link) db.session.commit() for sponsor in sponsors: sponsor_id = sponsor.id db.session.expunge(sponsor) # expunge the object from session make_transient(sponsor) sponsor.event_id = event.id logo_url = create_save_resized_image(image_file=sponsor.logo_url, resize=False) delattr(sponsor, 'id') sponsor.logo_url = logo_url db.session.add(sponsor) db.session.commit() for location in microlocations: location_id = location.id db.session.expunge(location) # expunge the object from session make_transient(location) location.event_id = event.id delattr(location, 'id') db.session.add(location) db.session.commit() # No sessions are copied for new tracks for track in tracks: track_id = track.id db.session.expunge(track) # expunge the object from session make_transient(track) track.event_id = event.id delattr(track, 'id') db.session.add(track) db.session.commit() for call in speaker_calls: call_id = call.id db.session.expunge(call) # expunge the object from session make_transient(call) call.event_id = event.id delattr(call, 'id') db.session.add(call) db.session.commit() for code in discount_codes: code_id = code.id db.session.expunge(code) # expunge the object from session make_transient(code) code.event_id = event.id delattr(code, 'id') db.session.add(code) db.session.commit() for form in custom_forms: form_id = form.id db.session.expunge(form) # expunge the object from session make_transient(form) form.event_id = event.id delattr(form, 'id') db.session.add(form) db.session.commit() return jsonify({ 'id': event.id, 'identifier': event.identifier, "copied": True })
def create_object(self, data, view_kwargs): identifier = 'identifier' if view_kwargs.get('identifier').isdigit(): identifier = 'id' event = safe_query(db, Event, identifier, view_kwargs['identifier'], 'event_'+identifier) tickets = Ticket.query.filter_by(event_id=event.id).all() social_links = SocialLink.query.filter_by(event_id=event.id).all() sponsors = Sponsor.query.filter_by(event_id=event.id).all() microlocations = Microlocation.query.filter_by(event_id=event.id).all() tracks = Track.query.filter_by(event_id=event.id).all() custom_forms = CustomForms.query.filter_by(event_id=event.id).all() discount_codes = DiscountCode.query.filter_by(event_id=event.id).all() speaker_calls = SpeakersCall.query.filter_by(event_id=event.id).all() db.session.expunge(event) # expunge the object from session make_transient(event) delattr(event, 'id') event.identifier = get_new_event_identifier() db.session.add(event) db.session.commit() # Removes access_codes, order_tickets, ticket_tags for the new tickets created. for ticket in tickets: ticket_id = ticket.id db.session.expunge(ticket) # expunge the object from session make_transient(ticket) ticket.event_id = event.id delattr(ticket, 'id') db.session.add(ticket) db.session.commit() for link in social_links: link_id = link.id db.session.expunge(link) # expunge the object from session make_transient(link) link.event_id = event.id delattr(link, 'id') db.session.add(link) db.session.commit() for sponsor in sponsors: sponsor_id = sponsor.id db.session.expunge(sponsor) # expunge the object from session make_transient(sponsor) sponsor.event_id = event.id logo_url = create_save_resized_image(image_file=sponsor.logo_url, resize=False) delattr(sponsor, 'id') sponsor.logo_url = logo_url db.session.add(sponsor) db.session.commit() for location in microlocations: location_id = location.id db.session.expunge(location) # expunge the object from session make_transient(location) location.event_id = event.id delattr(location, 'id') db.session.add(location) db.session.commit() # No sessions are copied for new tracks for track in tracks: track_id = track.id db.session.expunge(track) # expunge the object from session make_transient(track) track.event_id = event.id delattr(track, 'id') db.session.add(track) db.session.commit() for call in speaker_calls: call_id = call.id db.session.expunge(call) # expunge the object from session make_transient(call) call.event_id = event.id delattr(call, 'id') db.session.add(call) db.session.commit() for code in discount_codes: code_id = code.id db.session.expunge(code) # expunge the object from session make_transient(code) code.event_id = event.id delattr(code, 'id') db.session.add(code) db.session.commit() for form in custom_forms: form_id = form.id db.session.expunge(form) # expunge the object from session make_transient(form) form.event_id = event.id delattr(form, 'id') db.session.add(form) db.session.commit() return event