def get_or_create(name, description, save=True): """ Populate or update the database entry, as needed :param name: :param description: :return: """ if name != name.lower(): raise ValueError( 'Scope names are case-sensitive, and should always be lower-case.') try: scope_obj = ApiOAuth2Scope.find_one(Q('name', 'eq', name)) except NoResultsFound: scope_obj = ApiOAuth2Scope(name=name, description=description) print "Created new database entry for: ", name else: scope_obj.description = description print "Updating existing database entry for: ", name if save is True: scope_obj.save() return scope_obj