本文整理汇总了Python中oasis.lib.DB.move_qt_to_topic方法的典型用法代码示例。如果您正苦于以下问题:Python DB.move_qt_to_topic方法的具体用法?Python DB.move_qt_to_topic怎么用?Python DB.move_qt_to_topic使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类oasis.lib.DB
的用法示例。
在下文中一共展示了DB.move_qt_to_topic方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_topic_position
# 需要导入模块: from oasis.lib import DB [as 别名]
# 或者: from oasis.lib.DB import move_qt_to_topic [as 别名]
def test_topic_position(self):
""" Test putting qtemplates into topics and moving them around
"""
course_id = Courses.create("TEST101", "Test topic position logic", 1, 1)
topic1_id = Topics.create(course_id, "TESTTOPIC1", 1, 2)
topic2_id = Topics.create(course_id, "TESTTOPIC2", 3, 3)
qt1_id = DB.create_qt(1, "TESTQ1", "Test question 1", 0, 5.0, 1)
qt2_id = DB.create_qt(1, "TESTQ2", "Test question 2", 0, 4.1, 2, topic1_id)
DB.move_qt_to_topic(qt1_id, topic1_id)
self.assertEqual(DB.get_qtemplate_practice_pos(qt1_id), 0)
self.assertEqual(DB.get_qtemplate_practice_pos(qt2_id), 0)
self.assertEqual(DB.get_topic_for_qtemplate(qt1_id), topic1_id)
self.assertEqual(DB.get_topic_for_qtemplate(qt2_id), topic1_id)
DB.update_qt_practice_pos(qt1_id, 3)
DB.update_qt_practice_pos(qt2_id, 2)
self.assertEqual(DB.get_qtemplate_practice_pos(qt1_id), 3)
self.assertEqual(DB.get_qtemplate_practice_pos(qt2_id), 2)
self.assertEqual(DB.get_qtemplate_practice_pos(qt1_id), 3, "Broken cache?")
self.assertEqual(DB.get_qtemplate_practice_pos(qt2_id), 2, "Broken cache?")
DB.update_qt_practice_pos(qt1_id, 0)
DB.update_qt_practice_pos(qt2_id, -1)
self.assertEqual(DB.get_qtemplate_practice_pos(qt1_id), 0)
self.assertEqual(DB.get_qtemplate_practice_pos(qt2_id), -1)
self.assertEqual(DB.get_qtemplate_practice_pos(qt1_id), 0, "Broken cache?")
self.assertEqual(DB.get_qtemplate_practice_pos(qt2_id), -1, "Broken cache?")
qts = Topics.get_qts(topic1_id)
self.assertIn(qt1_id, qts)
self.assertIn(qt2_id, qts)
self.assertEqual(len(qts), 2)
DB.move_qt_to_topic(qt1_id, topic2_id)
qts = Topics.get_qts(topic1_id)
self.assertNotIn(qt1_id, qts)
self.assertIn(qt2_id, qts)
self.assertEqual(len(qts), 1)
示例2: test_topic_nextprev
# 需要导入模块: from oasis.lib import DB [as 别名]
# 或者: from oasis.lib.DB import move_qt_to_topic [as 别名]
def test_topic_nextprev(self):
""" Do the "next/previous" options in practice work?
"""
course_id = Courses.create("TEST101", "Test topic next/prev logic", 1, 1)
topic1_id = Topics.create(course_id, "TESTTOPIC1", 1, 2)
qt1_id = DB.create_qt(1, "TESTQ1", "Test question 1", 0, 5.0, 1)
qt2_id = DB.create_qt(1, "TESTQ2", "Test question 2", 0, 4.1, 2)
qt3_id = DB.create_qt(1, "TESTQ3", "Test question 3", 0, 0.0, 2)
qt4_id = DB.create_qt(1, "TESTQ4", "Test question 4", 0, 2.0, 2)
DB.move_qt_to_topic(qt1_id, topic1_id)
DB.move_qt_to_topic(qt2_id, topic1_id)
DB.move_qt_to_topic(qt3_id, topic1_id)
DB.move_qt_to_topic(qt4_id, topic1_id)
DB.update_qt_practice_pos(qt1_id, 1)
DB.update_qt_practice_pos(qt2_id, 2)
DB.update_qt_practice_pos(qt3_id, 3)
DB.update_qt_practice_pos(qt4_id, 4)
qts = Topics.get_qts(topic1_id)
self.assertIn(qt1_id, qts)
self.assertIn(qt2_id, qts)
self.assertIn(qt3_id, qts)
self.assertIn(qt4_id, qts)
self.assertEqual(len(qts), 4)
self.assertTupleEqual(Practice.get_next_prev_pos(qt1_id, topic1_id), (None, 2))
self.assertTupleEqual(Practice.get_next_prev_pos(qt2_id, topic1_id), (1, 3))
self.assertTupleEqual(Practice.get_next_prev_pos(qt3_id, topic1_id), (2, 4))
self.assertTupleEqual(Practice.get_next_prev_pos(qt4_id, topic1_id), (3, None))
DB.update_qt_practice_pos(qt2_id, 3)
self.assertEqual(DB.get_qtemplate_practice_pos(qt1_id), 1)
self.assertEqual(DB.get_qtemplate_practice_pos(qt2_id), 3)
self.assertEqual(DB.get_qtemplate_practice_pos(qt3_id), 3)
self.assertEqual(DB.get_qtemplate_practice_pos(qt4_id), 4)
self.assertTupleEqual(Practice.get_next_prev_pos(qt1_id, topic1_id), (None, 3))
self.assertTupleEqual(Practice.get_next_prev_pos(qt2_id, topic1_id), (1, 4))
self.assertTupleEqual(Practice.get_next_prev_pos(qt3_id, topic1_id), (1, 4))
self.assertTupleEqual(Practice.get_next_prev_pos(qt4_id, topic1_id), (3, None))
self.assertTupleEqual(Practice.get_next_prev_pos(qt4_id, None), (None, None))
示例3: do_topic_page_commands
# 需要导入模块: from oasis.lib import DB [as 别名]
# 或者: from oasis.lib.DB import move_qt_to_topic [as 别名]
def do_topic_page_commands(request, topic_id, user_id):
"""We've been asked to perform some operations on the Topic page.
Expecting form fields:
selected_QTID
position_QTID
name_QTID
where QTID is a question template id. May receive many.
new_position
new_name
new_type
select_cmd = 'copy' | 'move'
select_target = TOPICID of target topic
"""
form = request.form
mesg = []
# Make a list of all the commands to run
cmdlist = []
for command in request.form.keys():
(cmd, data) = command.split('_', 2)
value = form[command]
if not value == "none":
cmdlist += [{'cmd': cmd, 'data': data, 'value': value}]
# Now run them:
# Titles first
for command in [cmd for cmd in cmdlist if cmd['cmd'] == 'name']:
qid = int(command['data'])
title = command['value']
DB.update_qt_title(qid, title)
# Then positions
for command in [cmd for cmd in cmdlist if cmd['cmd'] == 'position']:
qtid = int(command['data'])
try:
position = int(command['value'])
except ValueError:
position = 0
DB.update_qt_pos(qtid, topic_id, position)
# Then commands on selected questions
target_cmd = form.get('target_cmd', None)
if target_cmd:
qtids = [int(cmd['data']) for cmd in cmdlist if cmd['cmd'] == 'select']
try:
target_topic = int(form.get('target_topic', 0))
except ValueError:
target_topic = None
if target_cmd == 'move':
if target_topic:
for qtid in qtids:
qt_title = DB.get_qt_name(qtid)
topic_title = Topics.get_name(target_topic)
flash("Moving %s to %s" % (qt_title, topic_title))
DB.move_qt_to_topic(qtid, target_topic)
Topics.flush_num_qs(topic_id)
Topics.flush_num_qs(target_topic)
if target_cmd == 'copy':
if target_topic:
for qtid in qtids:
qt_title = DB.get_qt_name(qtid)
topic_title = Topics.get_name(target_topic)
flash("Copying %s to %s" % (qt_title, topic_title))
newid = DB.copy_qt_all(qtid)
DB.add_qt_to_topic(newid, target_topic)
Topics.flush_num_qs(target_topic)
if target_cmd == 'hide':
for qtid in qtids:
position = DB.get_qtemplate_topic_pos(qtid, topic_id)
if position > 0: # If visible, make it hidden
DB.update_qt_pos(qtid, topic_id, -position)
title = DB.get_qt_name(qtid)
flash("Made '%s' Hidden" % title)
Topics.flush_num_qs(topic_id)
if target_cmd == 'show':
for qtid in qtids:
position = DB.get_qtemplate_topic_pos(qtid, topic_id)
if position == 0: # If hidden, make it visible
newpos = DB.get_qt_max_pos_in_topic(topic_id)
DB.update_qt_pos(qtid, topic_id, newpos + 1)
Topics.flush_num_qs(topic_id)
title = DB.get_qt_name(qtid)
flash("Made '%s' Visible" % title)
if position < 0: # If hidden, make it visible
DB.update_qt_pos(qtid, topic_id, -position)
Topics.flush_num_qs(topic_id)
title = DB.get_qt_name(qtid)
flash("Made '%s' Visible" % title)
if target_cmd == "export":
if len(qtids) < 1:
#.........这里部分代码省略.........
示例4: do_topic_page_commands
# 需要导入模块: from oasis.lib import DB [as 别名]
# 或者: from oasis.lib.DB import move_qt_to_topic [as 别名]
def do_topic_page_commands(request, topic_id, user_id):
"""We've been asked to perform some operations on the Topic page.
Expecting form fields:
selected_QTID
position_QTID
name_QTID
where QTID is a question template id. May receive many.
new_position
new_name
new_type
select_cmd = 'copy' | 'move'
select_target = TOPICID of target topic
"""
form = request.form
files = request.files
mesg = []
# Make a list of all the commands to run
cmdlist = []
for command in request.form.keys():
if '_' in command:
(cmd, data) = command.split('_', 2)
value = form[command]
if not value == "none":
cmdlist += [{'cmd': cmd, 'data': data, 'value': value}]
# Now run them:
# Titles first
for command in [cmd for cmd in cmdlist if cmd['cmd'] == 'name']:
qid = int(command['data'])
title = command['value']
DB.update_qt_title(qid, title)
# Then positions
for command in [cmd for cmd in cmdlist if cmd['cmd'] == 'position']:
qtid = int(command['data'])
try:
position = int(command['value'])
except ValueError:
position = 0
DB.update_qt_practice_pos(qtid, position)
# Then commands on selected questions
target_cmd = form.get('target_cmd', None)
if target_cmd:
qtids = [int(cmd['data']) for cmd in cmdlist if cmd['cmd'] == 'select']
try:
target_topic = int(form.get('target_topic', 0))
except ValueError:
target_topic = None
if target_cmd == 'move':
if target_topic:
for qtid in qtids:
qt_title = DB.get_qt_name(qtid)
topic_title = Topics.get_name(target_topic)
flash("Moving %s to %s" % (qt_title, topic_title))
DB.move_qt_to_topic(qtid, target_topic)
Topics.flush_num_qs(target_topic)
if target_cmd == 'copy':
if target_topic:
for qtid in qtids:
qt_title = DB.get_qt_name(qtid)
topic_title = Topics.get_name(target_topic)
flash("Copying %s to %s" % (qt_title, topic_title))
position = DB.get_qtemplate_practice_pos(qtid)
newid = DB.copy_qt_all(qtid)
DB.move_qt_to_topic(newid, target_topic, position)
Topics.flush_num_qs(target_topic)
if target_cmd == 'hide':
for qtid in qtids:
position = DB.get_qtemplate_practice_pos(qtid)
if position > 0: # If visible, make it hidden
DB.update_qt_practice_pos(qtid, -position)
title = DB.get_qt_name(qtid)
flash("Made '%s' Hidden" % title)
if target_cmd == 'show':
for qtid in qtids:
position = DB.get_qtemplate_practice_pos(qtid)
if position == 0: # If hidden, make it visible
newpos = DB.get_qt_max_pos_in_topic(topic_id)
DB.update_qt_practice_pos(qtid, newpos + 1)
title = DB.get_qt_name(qtid)
flash("Made '%s' Visible" % title)
if position < 0: # If hidden, make it visible
DB.update_qt_practice_pos(qtid, -position)
title = DB.get_qt_name(qtid)
flash("Made '%s' Visible" % title)
if target_cmd == "export":
if len(qtids) < 1:
#.........这里部分代码省略.........