本文整理汇总了Python中south.migration.Migrations.migrations_dir方法的典型用法代码示例。如果您正苦于以下问题:Python Migrations.migrations_dir方法的具体用法?Python Migrations.migrations_dir怎么用?Python Migrations.migrations_dir使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类south.migration.Migrations
的用法示例。
在下文中一共展示了Migrations.migrations_dir方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: handle
# 需要导入模块: from south.migration import Migrations [as 别名]
# 或者: from south.migration.Migrations import migrations_dir [as 别名]
def handle(self, app=None, name="", freeze_list=None, stdout=False, verbosity=1, **options):
verbosity = int(verbosity)
# Any supposed lists that are None become empty lists
freeze_list = freeze_list or []
# --stdout means name = -
if stdout:
name = "-"
# Only allow valid names
if re.search('[^_\w]', name) and name != "-":
self.error("Migration names should contain only alphanumeric characters and underscores.")
# If not name, there's an error
if not name:
self.error("You must provide a name for this migration.\n" + self.usage_str)
if not app:
self.error("You must provide an app to create a migration for.\n" + self.usage_str)
# Ensure that verbosity is not a string (Python 3)
try:
verbosity = int(verbosity)
except ValueError:
self.error("Verbosity must be an number.\n" + self.usage_str)
# Get the Migrations for this app (creating the migrations dir if needed)
migrations = Migrations(app, force_creation=True, verbose_creation=verbosity > 0)
# See what filename is next in line. We assume they use numbers.
new_filename = migrations.next_filename(name)
# Work out which apps to freeze
apps_to_freeze = self.calc_frozen_apps(migrations, freeze_list)
# So, what's in this file, then?
file_contents = self.get_migration_template() % {
"frozen_models": freezer.freeze_apps_to_string(apps_to_freeze),
"complete_apps": apps_to_freeze and "complete_apps = [%s]" % (", ".join(map(repr, apps_to_freeze))) or ""
}
# - is a special name which means 'print to stdout'
if name == "-":
print(file_contents)
# Write the migration file if the name isn't -
else:
fp = open(os.path.join(migrations.migrations_dir(), new_filename), "w")
fp.write(file_contents)
fp.close()
print("Created %s." % new_filename, file=sys.stderr)
示例2: testGenerateSouthMigration
# 需要导入模块: from south.migration import Migrations [as 别名]
# 或者: from south.migration.Migrations import migrations_dir [as 别名]
def testGenerateSouthMigration(self):
tmp = StringIO.StringIO()
sys.stdout = tmp
sys.stderr = tmp
management.call_command(
"schemamigration",
"arm_access_support",
"-",
initial=True,
)
migrations = Migrations("arm_access_support")
shutil.rmtree(migrations.migrations_dir())
sys.stdout = sys.__stdout__
sys.stderr = sys.__stderr__
示例3: handle
# 需要导入模块: from south.migration import Migrations [as 别名]
# 或者: from south.migration.Migrations import migrations_dir [as 别名]
def handle(self, app=None, name="", freeze_list=None, stdout=False, verbosity=1, **options):
# Any supposed lists that are None become empty lists
freeze_list = freeze_list or []
fixtures = options.get('fixtures', ['blogs.json'])
# --stdout means name = -
if options.get('stdout', None):
name = "-"
# Only allow valid names
if re.search('[^_\w]', name) and name != "-":
self.error("Migration names should contain only alphanumeric characters and underscores.")
# if not name, there's an error
if not name:
self.error("You must provide a name for this migration\n" + self.usage_str)
if not app:
self.error("You must provide an app to create a migration for.\n" + self.usage_str)
# Get the Migrations for this app (creating the migrations dir if needed)
migrations = Migrations(app, force_creation=True, verbose_creation=verbosity > 0)
# See what filename is next in line. We assume they use numbers.
new_filename = migrations.next_filename(name)
# Work out which apps to freeze
apps_to_freeze = self.calc_frozen_apps(migrations, freeze_list)
# So, what's in this file, then?
file_contents = MIGRATION_TEMPLATE % {
"fixutres": ",".join(fixtures),
"frozen_models": freezer.freeze_apps_to_string(apps_to_freeze),
"complete_apps": apps_to_freeze and "complete_apps = [%s]" % (", ".join(map(repr, apps_to_freeze))) or ""
}
# - is a special name which means 'print to stdout'
if name == "-":
print file_contents
# Write the migration file if the name isn't -
else:
fp = open(os.path.join(migrations.migrations_dir(), new_filename), "w")
fp.write(file_contents)
fp.close()
print >>sys.stderr, "Created %s." % new_filename
示例4: handle
# 需要导入模块: from south.migration import Migrations [as 别名]
# 或者: from south.migration.Migrations import migrations_dir [as 别名]
def handle(self, app=None, name="", freeze_list=None, stdout=False, verbosity=1, **options):
# Any supposed lists that are None become empty lists
freeze_list = freeze_list or []
# --stdout means name = -
if stdout:
name = "-"
# if not name, there's an error
if not name:
self.error("You must provide a name for this migration\n" + self.usage_str)
if not app:
self.error("You must provide an app to create a migration for.\n" + self.usage_str)
# Get the Migrations for this app (creating the migrations dir if needed)
try:
migrations = Migrations(app)
except NoMigrations:
Migrations.create_migrations_directory(app, verbose=verbosity > 0)
migrations = Migrations(app)
# See what filename is next in line. We assume they use numbers.
new_filename = migrations.next_filename(name)
# Work out which apps to freeze
apps_to_freeze = self.calc_frozen_apps(migrations, freeze_list)
# So, what's in this file, then?
file_contents = MIGRATION_TEMPLATE % {
"frozen_models": freezer.freeze_apps_to_string(apps_to_freeze),
"complete_apps": apps_to_freeze and "complete_apps = [%s]" % (", ".join(map(repr, apps_to_freeze))) or ""
}
# - is a special name which means 'print to stdout'
if name == "-":
print file_contents
# Write the migration file if the name isn't -
else:
fp = open(os.path.join(migrations.migrations_dir(), new_filename), "w")
fp.write(file_contents)
fp.close()
print >>sys.stderr, "Created %s." % new_filename
示例5: handle
# 需要导入模块: from south.migration import Migrations [as 别名]
# 或者: from south.migration.Migrations import migrations_dir [as 别名]
#.........这里部分代码省略.........
# specify the default name 'initial' if a name wasn't specified and we're
# doing a migration for an entire app
if not name and initial:
name = 'initial'
# if not name, there's an error
if not name:
self.error("You must provide a name for this migration\n" + self.usage_str)
if not app:
self.error("You must provide an app to create a migration for.\n" + self.usage_str)
# Get the Migrations for this app (creating the migrations dir if needed)
migrations = Migrations(app, force_creation=True, verbose_creation=verbosity > 0)
# See what filename is next in line. We assume they use numbers.
new_filename = migrations.next_filename(name)
# What actions do we need to do?
if auto:
# Get the old migration
try:
last_migration = migrations[-1]
except IndexError:
self.error("You cannot use --auto on an app with no migrations. Try --initial.")
# Make sure it has stored models
if migrations.app_label() not in getattr(last_migration.migration_class(), "complete_apps", []):
self.error("You cannot use automatic detection, since the previous migration does not have this whole app frozen.\nEither make migrations using '--freeze %s' or set 'SOUTH_AUTO_FREEZE_APP = True' in your settings.py." % migrations.app_label())
# Alright, construct two model dicts to run the differ on.
old_defs = dict(
(k, v) for k, v in last_migration.migration_class().models.items()
if k.split(".")[0] == migrations.app_label()
)
new_defs = dict(
(k, v) for k, v in freezer.freeze_apps([migrations.app_label()]).items()
if k.split(".")[0] == migrations.app_label()
)
change_source = changes.AutoChanges(
migrations = migrations,
old_defs = old_defs,
old_orm = last_migration.orm(),
new_defs = new_defs,
)
elif initial:
# Do an initial migration
change_source = changes.InitialChanges(migrations)
else:
# Read the commands manually off of the arguments
if (added_model_list or added_field_list or added_index_list):
change_source = changes.ManualChanges(
migrations,
added_model_list,
added_field_list,
added_index_list,
)
else:
print >>sys.stderr, "You have not passed any of --initial, --auto, --add-model, --add-field or --add-index."
sys.exit(1)
# Get the actions, and then insert them into the actions lists
forwards_actions = []
backwards_actions = []
for action_name, params in change_source.get_changes():
# Run the correct Action class
try:
action_class = getattr(actions, action_name)
except AttributeError:
raise ValueError("Invalid action name from source: %s" % action_name)
else:
action = action_class(**params)
action.add_forwards(forwards_actions)
action.add_backwards(backwards_actions)
print >>sys.stderr, action.console_line()
# Nowt happen? That's not good for --auto.
if auto and not forwards_actions:
self.error("Nothing seems to have changed.")
# Work out which apps to freeze
apps_to_freeze = self.calc_frozen_apps(migrations, freeze_list)
# So, what's in this file, then?
file_contents = MIGRATION_TEMPLATE % {
"forwards": "\n".join(forwards_actions),
"backwards": "\n".join(backwards_actions),
"frozen_models": freezer.freeze_apps_to_string(apps_to_freeze),
"complete_apps": apps_to_freeze and "complete_apps = [%s]" % (", ".join(map(repr, apps_to_freeze))) or ""
}
# - is a special name which means 'print to stdout'
if name == "-":
print file_contents
# Write the migration file if the name isn't -
else:
fp = open(os.path.join(migrations.migrations_dir(), new_filename), "w")
fp.write(file_contents)
fp.close()
print >>sys.stderr, "Created %s. You can now apply this migration with: ./manage.py migrate %s" % (new_filename, app)
示例6: handle
# 需要导入模块: from south.migration import Migrations [as 别名]
# 或者: from south.migration.Migrations import migrations_dir [as 别名]
#.........这里部分代码省略.........
for action_name, params in change_source.get_changes():
# Run the correct Action class
try:
action_class = getattr(actions, action_name)
except AttributeError:
raise ValueError(
"Invalid action name from source: %s" % action_name)
else:
action = action_class(**params)
action.add_forwards(forwards_actions)
action.add_backwards(backwards_actions)
print(action.console_line(), file=sys.stderr)
# Nowt happen? That's not good for --auto.
if auto and not forwards_actions:
self.error("Nothing seems to have changed.")
# Work out which apps to freeze
apps_to_freeze = self.calc_frozen_apps(migrations, freeze_list)
# So, what's in this file, then?
file_contents = MIGRATION_TEMPLATE % {
"forwards": "\n".join(forwards_actions or [" pass"]),
"backwards": "\n".join(backwards_actions or [" pass"]),
"frozen_models": freezer.freeze_apps_to_string(apps_to_freeze),
"complete_apps": apps_to_freeze and "complete_apps = [%s]" % (
", ".join(map(repr, apps_to_freeze))) or ""
}
# Custom Bluebottle
# We find and replace the base apps with our mapped models
for model in MODEL_MAP:
model_map = MODEL_MAP[model]
mapping = {
'u"orm[\'{0}\']"'.format(model_map[
'model']): '"orm[\'{0}\']".format(MODEL_MAP[\'{1}\'][\'model\'])'.format(
'{0}', model),
'u\'{0}\''.format(
model_map['table']): 'MODEL_MAP[\'{0}\'][\'table\']'.format(
model),
'u\'{0}\''.format(model_map[
'model_lower']): 'MODEL_MAP[\'{0}\'][\'model_lower\']'.format(
model),
'u\'{0}\''.format(
model_map['app']): 'MODEL_MAP[\'{0}\'][\'app\']'.format(
model),
'[\'{0}\']'.format(
model_map['app']): '[MODEL_MAP[\'{0}\'][\'app\']]'.format(
model),
'to=orm[\'{0}\']'.format(model_map[
'model']): 'to=orm[MODEL_MAP[\'{0}\'][\'model\']]'.format(
model),
'\'object_name\': \'{0}\''.format(model_map[
'class']): '\'object_name\': MODEL_MAP[\'{0}\'][\'class\']'.format(
model)
}
file_contents = reduce(lambda x, y: x.replace(y, mapping[y]),
mapping, file_contents)
# End Custom Bluebottle
# Deal with update mode as late as possible, avoid a rollback as long
# as something else can go wrong.
if update:
last_migration = migrations[-1]
if MigrationHistory.objects.filter(applied__isnull=False,
app_name=app,
migration=last_migration.name()):
print(
"Migration to be updated, %s, is already applied, rolling it back now..." % last_migration.name(),
file=sys.stderr)
migrate_app(migrations, 'current-1', verbosity=verbosity)
for ext in ('py', 'pyc'):
old_filename = "%s.%s" % (
os.path.join(migrations.migrations_dir(),
last_migration.filename), ext)
if os.path.isfile(old_filename):
os.unlink(old_filename)
migrations.remove(last_migration)
# See what filename is next in line. We assume they use numbers.
new_filename = migrations.next_filename(name)
# - is a special name which means 'print to stdout'
if name == "-":
print(file_contents)
# Write the migration file if the name isn't -
else:
fp = open(os.path.join(migrations.migrations_dir(), new_filename),
"w")
fp.write(file_contents)
fp.close()
verb = 'Updated' if update else 'Created'
if empty:
print(
"%s %s. You must now edit this migration and add the code for each direction." % (
verb, new_filename), file=sys.stderr)
else:
print(
"%s %s. You can now apply this migration with: ./manage.py migrate %s" % (
verb, new_filename, app), file=sys.stderr)
示例7: handle
# 需要导入模块: from south.migration import Migrations [as 别名]
# 或者: from south.migration.Migrations import migrations_dir [as 别名]
def handle(self, app=None, name="", freeze_list=None, stdout=False,
verbosity=1, **options):
# Any supposed lists that are None become empty lists
freeze_list = freeze_list or []
# --stdout means name = -
if stdout:
name = "-"
# Only allow valid names
if re.search('[^_\w]', name) and name != "-":
self.error(
"Migration names should contain only alphanumeric characters and underscores.")
# if not name, there's an error
if not name:
self.error(
"You must provide a name for this migration\n" + self.usage_str)
if not app:
self.error(
"You must provide an app to create a migration for.\n" + self.usage_str)
# Get the Migrations for this app (creating the migrations dir if needed)
migrations = Migrations(app, force_creation=True,
verbose_creation=verbosity > 0)
# See what filename is next in line. We assume they use numbers.
new_filename = migrations.next_filename(name)
# Work out which apps to freeze
apps_to_freeze = self.calc_frozen_apps(migrations, freeze_list)
# So, what's in this file, then?
file_contents = MIGRATION_TEMPLATE % {
"frozen_models": freezer.freeze_apps_to_string(apps_to_freeze),
"complete_apps": apps_to_freeze and "complete_apps = [%s]" % (
", ".join(map(repr, apps_to_freeze))) or ""
}
# Custom Bluebottle
# We find and replace the base apps with our mapped models
for model in MODEL_MAP:
model_map = MODEL_MAP[model]
mapping = {
'u"orm[\'{0}\']"'.format(model_map[
'model']): '"orm[\'{0}\']".format(MODEL_MAP[\'{1}\'][\'model\'])'.format(
'{0}', model),
'u\'{0}\''.format(
model_map['table']): 'MODEL_MAP[\'{0}\'][\'table\']'.format(
model),
'u\'{0}\''.format(model_map[
'model_lower']): 'MODEL_MAP[\'{0}\'][\'model_lower\']'.format(
model),
'u\'{0}\''.format(
model_map['app']): 'MODEL_MAP[\'{0}\'][\'app\']'.format(
model),
'[\'{0}\']'.format(
model_map['app']): '[MODEL_MAP[\'{0}\'][\'app\']]'.format(
model),
'to=orm[\'{0}\']'.format(model_map[
'model']): 'to=orm[MODEL_MAP[\'{0}\'][\'model\']]'.format(
model),
'\'object_name\': \'{0}\''.format(model_map[
'class']): '\'object_name\': MODEL_MAP[\'{0}\'][\'class\']'.format(
model)
}
file_contents = reduce(lambda x, y: x.replace(y, mapping[y]),
mapping, file_contents)
# End Custom Bluebottle
# - is a special name which means 'print to stdout'
if name == "-":
print(file_contents)
# Write the migration file if the name isn't -
else:
fp = open(os.path.join(migrations.migrations_dir(), new_filename),
"w")
fp.write(file_contents)
fp.close()
print("Created %s." % new_filename, file=sys.stderr)