def test_get_or_create_node_user_not_exists(self): title = 'Night at the Opera' creator = UserFactory() node = ProjectFactory(title=title) fetched, created = utils.get_or_create_node(title, creator) assert_true(created) assert_not_equal(node._id, fetched._id)
def test_get_or_create_node_title_not_exists(self): title = 'Night at the Opera' creator = UserFactory() node = ProjectFactory(creator=creator) fetched, created = utils.get_or_create_node(title, creator) assert_true(created) assert_not_equal(node._id, fetched._id)
def test_get_or_create_node_title_exists_not_deleted(self): title = 'Night at the Opera' creator = UserFactory() node = ProjectFactory(title=title, creator=creator) node.is_deleted = False node.save() fetched, created = utils.get_or_create_node(title, creator) assert_false(created) assert_equal(node._id, fetched._id)
def add_poster_by_email(conference, message): """ :param Conference conference: :param ConferenceMessage message: """ # Fail if no attachments if not message.attachments: return send_mail(message.sender_email, CONFERENCE_FAILED, fullname=message.sender_display) created = [] with TokuTransaction(): user, user_created = utils.get_or_create_user(message.sender_display, message.sender_email, message.is_spam) if user_created: created.append(user) set_password_url = web_url_for("reset_password", verification_key=user.verification_key, _absolute=True) else: set_password_url = None node, node_created = utils.get_or_create_node(message.subject, user) if node_created: created.append(node) utils.provision_node(conference, message, node, user) utils.record_message(message, created) utils.upload_attachments(user, node, message.attachments) download_url = node.web_url_for( "addon_view_or_download_file", path=message.attachments[0].filename, provider="osfstorage", action="download", _absolute=True, ) # Send confirmation email send_mail( message.sender_email, CONFERENCE_SUBMITTED, conf_full_name=conference.name, conf_view_url=web_url_for("conference_results", meeting=message.conference_name, _absolute=True), fullname=message.sender_display, user_created=user_created, set_password_url=set_password_url, profile_url=user.absolute_url, node_url=node.absolute_url, file_url=download_url, presentation_type=message.conference_category.lower(), is_spam=message.is_spam, )
def add_poster_by_email(conference, message): """ :param Conference conference: :param ConferenceMessage message: """ # Fail if no attachments if not message.attachments: return send_mail( message.sender_email, CONFERENCE_FAILED, fullname=message.sender_display, ) created = [] with TokuTransaction(): user, user_created = get_or_create_user( message.sender_display, message.sender_email, message.is_spam, ) if user_created: created.append(user) user.system_tags.append('osf4m') set_password_url = web_url_for( 'reset_password_get', verification_key=user.verification_key, _absolute=True, ) user.date_last_login = datetime.utcnow() user.save() else: set_password_url = None node, node_created = utils.get_or_create_node(message.subject, user) if node_created: created.append(node) node.system_tags.append('osf4m') node.save() utils.provision_node(conference, message, node, user) utils.record_message(message, created) # Prevent circular import error from framework.auth import signals as auth_signals if user_created: auth_signals.user_confirmed.send(user) utils.upload_attachments(user, node, message.attachments) download_url = node.web_url_for( 'addon_view_or_download_file', path=message.attachments[0].filename, provider='osfstorage', action='download', _absolute=True, ) # Send confirmation email send_mail( message.sender_email, CONFERENCE_SUBMITTED, conf_full_name=conference.name, conf_view_url=web_url_for( 'conference_results', meeting=message.conference_name, _absolute=True, ), fullname=message.sender_display, user_created=user_created, set_password_url=set_password_url, profile_url=user.absolute_url, node_url=node.absolute_url, file_url=download_url, presentation_type=message.conference_category.lower(), is_spam=message.is_spam, ) if node_created and user_created: signals.osf4m_user_created.send(user, conference=conference, node=node)
def test_get_or_create_node_exists(self): node = ProjectFactory() fetched, created = utils.get_or_create_node(node.title, node.creator) assert_false(created) assert_equal(node._id, fetched._id)
def add_poster_by_email(conference, message): """ :param Conference conference: :param ConferenceMessage message: """ # Fail if no attachments if not message.attachments: return send_mail( message.sender_email, CONFERENCE_FAILED, fullname=message.sender_display, ) created = [] with TokuTransaction(): user, user_created = get_or_create_user( message.sender_display, message.sender_email, message.is_spam, ) if user_created: created.append(user) user.system_tags.append('osf4m') set_password_url = web_url_for( 'reset_password', verification_key=user.verification_key, _absolute=True, ) user.date_last_login = datetime.utcnow() user.save() else: set_password_url = None node, node_created = utils.get_or_create_node(message.subject, user) if node_created: created.append(node) node.system_tags.append('osf4m') node.save() utils.provision_node(conference, message, node, user) utils.record_message(message, created) # Prevent circular import error from framework.auth import signals as auth_signals if user_created: auth_signals.user_confirmed.send(user) utils.upload_attachments(user, node, message.attachments) download_url = node.web_url_for( 'addon_view_or_download_file', path=message.attachments[0].filename, provider='osfstorage', action='download', _absolute=True, ) # Send confirmation email send_mail( message.sender_email, CONFERENCE_SUBMITTED, conf_full_name=conference.name, conf_view_url=web_url_for( 'conference_results', meeting=message.conference_name, _absolute=True, ), fullname=message.sender_display, user_created=user_created, set_password_url=set_password_url, profile_url=user.absolute_url, node_url=node.absolute_url, file_url=download_url, presentation_type=message.conference_category.lower(), is_spam=message.is_spam, ) if node_created and user_created: signals.osf4m_user_created.send(user, conference=conference, node=node)
def add_poster_by_email(conference, message): """ :param Conference conference: :param ConferenceMessage message: """ # Fail if no attachments if not message.attachments: return send_mail( message.sender_email, CONFERENCE_FAILED, fullname=message.sender_display, ) nodes_created = [] users_created = [] with transaction.atomic(): user, user_created = get_or_create_user( message.sender_display, message.sender_email, is_spam=message.is_spam, ) if user_created: user.save( ) # need to save in order to access m2m fields (e.g. tags) users_created.append(user) user.add_system_tag('osf4m') user.update_date_last_login() user.save() # must save the user first before accessing user._id set_password_url = web_url_for( 'reset_password_get', uid=user._id, token=user.verification_key_v2['token'], _absolute=True, ) else: set_password_url = None node, node_created = utils.get_or_create_node(message.subject, user) if node_created: nodes_created.append(node) node.add_system_tag('osf4m') node.save() utils.provision_node(conference, message, node, user) utils.record_message(message, nodes_created, users_created) # Prevent circular import error from framework.auth import signals as auth_signals if user_created: auth_signals.user_confirmed.send(user) utils.upload_attachments(user, node, message.attachments) download_url = node.web_url_for( 'addon_view_or_download_file', path=message.attachments[0].filename, provider='osfstorage', action='download', _absolute=True, ) # Send confirmation email send_mail( message.sender_email, CONFERENCE_SUBMITTED, conf_full_name=conference.name, conf_view_url=web_url_for( 'conference_results', meeting=message.conference_name, _absolute=True, ), fullname=message.sender_display, user_created=user_created, set_password_url=set_password_url, profile_url=user.absolute_url, node_url=node.absolute_url, file_url=download_url, presentation_type=message.conference_category.lower(), is_spam=message.is_spam, ) if node_created and user_created: signals.osf4m_user_created.send(user, conference=conference, node=node)
def add_poster_by_email(conference, message): """ :param Conference conference: :param ConferenceMessage message: """ # Fail if no attachments if not message.attachments: return send_mail( message.sender_email, CONFERENCE_FAILED, fullname=message.sender_display, ) created = [] with TokuTransaction(): user, user_created = utils.get_or_create_user( message.sender_display, message.sender_email, message.is_spam, ) if user_created: created.append(user) set_password_url = web_url_for( 'reset_password', verification_key=user.verification_key, _absolute=True, ) else: set_password_url = None node, node_created = utils.get_or_create_node(message.subject, user) if node_created: created.append(node) utils.provision_node(conference, message, node, user) utils.record_message(message, created) utils.upload_attachments(user, node, message.attachments) download_url = node.web_url_for( 'addon_view_or_download_file', path=message.attachments[0].filename, provider='osfstorage', action='download', _absolute=True, ) # Send confirmation email send_mail( message.sender_email, CONFERENCE_SUBMITTED, conf_full_name=conference.name, conf_view_url=web_url_for( 'conference_results', meeting=message.conference_name, _absolute=True, ), fullname=message.sender_display, user_created=user_created, set_password_url=set_password_url, profile_url=user.absolute_url, node_url=node.absolute_url, file_url=download_url, presentation_type=message.conference_category.lower(), is_spam=message.is_spam, )
def add_poster_by_email(conference, message): """ :param Conference conference: :param ConferenceMessage message: """ # Fail if no attachments if not message.attachments: return send_mail( message.sender_email, CONFERENCE_FAILED, fullname=message.sender_display, ) nodes_created = [] users_created = [] with transaction.atomic(): user, user_created = get_or_create_user( message.sender_display, message.sender_email, is_spam=message.is_spam, ) if user_created: user.save() # need to save in order to access m2m fields (e.g. tags) users_created.append(user) user.add_system_tag('osf4m') user.update_date_last_login() user.save() # must save the user first before accessing user._id set_password_url = web_url_for( 'reset_password_get', uid=user._id, token=user.verification_key_v2['token'], _absolute=True, ) else: set_password_url = None node, node_created = utils.get_or_create_node(message.subject, user) if node_created: nodes_created.append(node) node.add_system_tag('osf4m') node.save() utils.provision_node(conference, message, node, user) utils.record_message(message, nodes_created, users_created) # Prevent circular import error from framework.auth import signals as auth_signals if user_created: auth_signals.user_confirmed.send(user) utils.upload_attachments(user, node, message.attachments) download_url = node.web_url_for( 'addon_view_or_download_file', path=message.attachments[0].filename, provider='osfstorage', action='download', _absolute=True, ) # Send confirmation email send_mail( message.sender_email, CONFERENCE_SUBMITTED, conf_full_name=conference.name, conf_view_url=web_url_for( 'conference_results', meeting=message.conference_name, _absolute=True, ), fullname=message.sender_display, user_created=user_created, set_password_url=set_password_url, profile_url=user.absolute_url, node_url=node.absolute_url, file_url=download_url, presentation_type=message.conference_category.lower(), is_spam=message.is_spam, ) if node_created and user_created: signals.osf4m_user_created.send(user, conference=conference, node=node)