本文整理汇总了Python中task.models.Task.content方法的典型用法代码示例。如果您正苦于以下问题:Python Task.content方法的具体用法?Python Task.content怎么用?Python Task.content使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类task.models.Task
的用法示例。
在下文中一共展示了Task.content方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: create_tasks_from_json
# 需要导入模块: from task.models import Task [as 别名]
# 或者: from task.models.Task import content [as 别名]
def create_tasks_from_json(description):
"""
Given a list of Task description dictionaries, create Task instances,
together with other related objects.
Supported special data:
_content (string) - the text of the task, MathContent text
_folder_id (int) - ID of the folder where to add the task
_folder_position (int) - position in that folder
_tags (string) - a comma-separated list of tags
_difficulty (int) - difficulty rating to be assigned by the author
_permissions (dict {"permission type ID": [list of group IDs]})
- group permission to automatically assign.
- (ID is a string because in JSON keys must be strings)
All other elements with an underscore are ignored.
Params:
description (list): list of dict object, describing the tasks
Returns:
A list of the new Task objects.
If an exception is thrown in the middle of the process, the exception is
caputed, the message changed, and raised again.
"""
# Approx.
task_fields = set(Task._meta.get_all_field_names())
task_fields |= set(x + '_id' for x in task_fields)
created_objects = []
created_tasks = []
message_list = []
# List of objects to create
folder_tasks = []
object_permissions = []
try:
for k, desc in enumerate(description):
message_list.append('Creating {}. task...'.format(k + 1))
# First, prepare data to be able to create Task.
# --- math content ---
math_content = MathContent()
math_content.text = desc['_content']
message_list.append(desc['_content'])
math_content.save()
created_objects.append(math_content)
# Second, create Task.
task = Task()
task.content = math_content
for key, value in desc.iteritems():
if key[0] != '_' and key in task_fields:
setattr(task, key, value)
task.save()
created_objects.append(task)
created_tasks.append(task)
# Third, save other data.
# --- tags ---
tags = desc.get('_tags', '')
set_tags(task, tags)
# --- difficulty ---
difficulty = desc.get('_difficulty')
if difficulty:
task.difficulty_rating.update(task.author, int(difficulty))
# --- folder ids ---
folder_id = desc.get('_folder_id')
if folder_id is not None:
folder_tasks.append(FolderTask(
folder_id=folder_id, task=task,
position=desc.get('_folder_position', 0)))
# --- group permissions ---
for perm, group_ids in desc.get('_permissions', {}).iteritems():
for group_id in group_ids:
object_permissions.append(ObjectPermission(
content_object=task, group_id=group_id,
permission_type=perm))
FolderTask.objects.bulk_create(folder_tasks)
ObjectPermission.objects.bulk_create(object_permissions)
except Exception as e:
# This should remove all dependend objects.
for obj in created_objects:
obj.delete()
message_list.append("Reverting changes...")
message = "\n".join(message_list) + "\n\n" + traceback.format_exc()
raise type(e)(message)
finally:
# SPEED: Don't invalidate everything.
invalidate_cache_for_folders(Folder.objects.all())
return created_tasks