本文整理汇总了Python中virtualfolder.models.VirtualFolder.all_projects方法的典型用法代码示例。如果您正苦于以下问题:Python VirtualFolder.all_projects方法的具体用法?Python VirtualFolder.all_projects怎么用?Python VirtualFolder.all_projects使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类virtualfolder.models.VirtualFolder
的用法示例。
在下文中一共展示了VirtualFolder.all_projects方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: handle
# 需要导入模块: from virtualfolder.models import VirtualFolder [as 别名]
# 或者: from virtualfolder.models.VirtualFolder import all_projects [as 别名]
def handle(self, **options):
"""Add virtual folders from file."""
try:
with open(options["vfolder"][0], "r") as inputfile:
vfolders = json.load(inputfile)
except IOError as e:
raise CommandError(e)
except ValueError as e:
raise CommandError("Please check if the JSON file is malformed. " "Original error:\n%s" % e)
for vfolder_item in vfolders:
try:
temp = ",".join(vfolder_item["filters"]["files"])
if not temp:
raise ValueError
except (KeyError, ValueError):
raise CommandError("Virtual folder '%s' has no filtering " "rules." % vfolder_item["name"])
self.stdout.write("Importing virtual folders...")
added_count = 0
updated_count = 0
errored_count = 0
for vfolder_item in vfolders:
vfolder_item["name"] = vfolder_item["name"].strip().lower()
# Put all the files for each virtual folder as a list and save it
# as its filter rules.
languages, projects, new_rules = self.parse_vfolder_rules(
vfolder_item["location"].strip(), vfolder_item["filters"]["files"]
)
vfolder_item["filter_rules"] = new_rules
if "filters" in vfolder_item:
del vfolder_item["filters"]
# Now create or update the virtual folder.
try:
# Retrieve the virtual folder if it exists.
vfolder = VirtualFolder.objects.get(name=vfolder_item["name"])
except VirtualFolder.DoesNotExist:
# If the virtual folder doesn't exist yet then create it.
try:
self.stdout.write(u"Adding new virtual folder %s..." % vfolder_item["name"])
vfolder_item["all_projects"] = not projects
vfolder_item["all_languages"] = not languages
vfolder = VirtualFolder(**vfolder_item)
vfolder.save()
except ValidationError as e:
errored_count += 1
self.stdout.write("FAILED")
self.stderr.write(e)
else:
if projects:
vfolder.projects.add(*Project.objects.filter(code__in=projects))
if languages:
vfolder.languages.add(*Language.objects.filter(code__in=languages))
self.stdout.write("DONE")
added_count += 1
else:
# Update the already existing virtual folder.
changed = False
if not projects:
vfolder.all_projects = True
changed = True
logging.debug("'All projects' for virtual folder '%s' " "will be changed.", vfolder.name)
if not languages:
vfolder.all_languages = True
changed = True
logging.debug("'All languages' for virtual folder '%s' " "will be changed.", vfolder.name)
if projects:
vfolder.projects.set(*Project.objects.filter(code__in=projects))
if languages:
vfolder.languages.set(*Language.objects.filter(code__in=languages))
if vfolder.filter_rules != vfolder_item["filter_rules"]:
vfolder.filter_rules = vfolder_item["filter_rules"]
changed = True
logging.debug("Filter rules for virtual folder '%s' will " "be changed.", vfolder.name)
if "priority" in vfolder_item and vfolder.priority != vfolder_item["priority"]:
vfolder.priority = vfolder_item["priority"]
changed = True
logging.debug(
"Priority for virtual folder '%s' will be " "changed to %f.", vfolder.name, vfolder.priority
)
if "is_public" in vfolder_item and vfolder.is_public != vfolder_item["is_public"]:
vfolder.is_public = vfolder_item["is_public"]
changed = True
logging.debug("is_public status for virtual folder " "'%s' will be changed.", vfolder.name)
#.........这里部分代码省略.........