def _get_user_from_entry(self, entry): ''' Finds the user corresponding to this entry, by matching email first, and username if that fails. May create a new user if still no joy. ''' try: if entry.author_detail.email != None: return User.objects.get(email=entry.author_detail.email) except (User.DoesNotExist, AttributeError): pass # Handle spaces in name username_ = entry.author_detail.name.strip().replace(" ", "_") try: return User.objects.get(username=username_) except User.DoesNotExist: if len(username_) < 1: logger.warn("Skipping dataset. Dataset found with blank username.") return None if not IngestOptions.ALLOW_USER_CREATION: logging.getLogger(__name__).info("Skipping dataset. ALLOW_USER_CREATION disabled. Datasets found for user '{0}' ({1}) but user doesn't exist".format( entry.author_detail.name, getattr(entry.author_detail, "email", "no email"))) return None user = User(username=username_) user.save() UserProfile(user=user).save() return user
def _create_test_data(): user = User(username='******', first_name="Voltaire", email='*****@*****.**') user.save() return (_create_experiment(user, False), _create_experiment(user, True), user)
def testPersisterUsesAuthorNameAsUsername(self): # Create user to associate with dataset user = User(username="******") user.save() feed, entry = self._getTestEntry() p = AtomPersister() dataset = p.process(feed, entry) eq_(dataset.get_first_experiment().created_by, user)
def testPersisterHandlesSpacesInUsername(self): # Get entry and use a name with a space in it feed, entry = self._getTestEntry() entry.author_detail.name = 'Tommy Atkins' # Create user to associate with dataset user = User(username="******") user.save() p = AtomPersister() dataset = p.process(feed, entry) eq_(dataset.get_first_experiment().created_by, user)
def _create_test_data(): user = User(username='******', first_name="Voltaire", email='*****@*****.**') user.save() UserProfile(user=user).save() experiment = Experiment(title='Norwegian Blue', description='Parrot + 40kV', created_by=user) experiment.public_access = Experiment.PUBLIC_ACCESS_METADATA experiment.save() return (experiment, user)
def _get_user_from_entry(self, entry): try: if entry.author_detail.email != None: return User.objects.get(email=entry.author_detail.email) except (User.DoesNotExist, AttributeError): pass try: return User.objects.get(username=entry.author_detail.name) except User.DoesNotExist: pass user = User(username=entry.author_detail.name) user.save() return user
def testPersisterStoresEntryMetadata(self): # Create user to associate with dataset user = User(username="******") user.save() feed, entry = self._getTestEntry() p = AtomPersister() dataset = p.process(feed, entry) parameterset = dataset.getParameterSets().get(schema=AtomImportSchemas.get_schema(Schema.DATASET)) expect(parameterset) != None psm = ParameterSetManager(parameterset) expect(psm.get_param("EntryID").get()).to_equal(entry.id) expect(psm.get_param("Updated").name.isDateTime()).to_be_truthy() # Compare against non-timezoned update time expect(psm.get_param("Updated", True)).to_equal(iso8601.parse_date(entry.updated))
def _get_user_from_entry(self, entry): try: if entry.author_detail.email != None: return User.objects.get(email=entry.author_detail.email) except (User.DoesNotExist, AttributeError): pass # Handle spaces in name username_ = entry.author_detail.name.strip().replace(" ", "_") try: return User.objects.get(username=username_) except User.DoesNotExist: pass user = User(username=username_) user.save() UserProfile(user=user).save() return user
def testPersisterStoresEntryMetadata(self): # Create user to associate with dataset user = User(username="******") user.save() feed, entry = self._getTestEntry() p = AtomPersister() dataset = p.process(feed, entry) parameterset = dataset.getParameterSets() \ .get(schema=AtomImportSchemas. \ get_schema(Schema.DATASET)) expect(parameterset) != None psm = ParameterSetManager(parameterset) expect(psm.get_param('EntryID').get()).to_equal(entry.id) expect(psm.get_param('Updated').name.isDateTime()).to_be_truthy() # Compare against non-timezoned update time expect(psm.get_param('Updated', True)) \ .to_equal(iso8601.parse_date(entry.updated))
def testPersisterPrefersAuthorEmailToMatchUser(self): # Create user to associate with dataset user = User(username="******") user.save() # Create user to associate with dataset user2 = User(username="******", email='*****@*****.**') user2.save() feed, entry = self._getTestEntry() p = AtomPersister() dataset = p.process(feed, entry) eq_(dataset.get_first_experiment().created_by, user2)