def test_request_parser_remove_argument(self): req = Request.from_values("/bubble?foo=baz") parser = RequestParser() parser.add_argument("foo", type=int) parser_copy = parser.copy() parser_copy.remove_argument("foo") args = parser_copy.parse_args(req) self.assertEquals(args, {})
def test_request_parser_remove_argument(self): req = Request.from_values("/bubble?foo=baz") parser = RequestParser() parser.add_argument('foo', type=int) parser_copy = parser.copy() parser_copy.remove_argument('foo') args = parser_copy.parse_args(req) self.assertEquals(args, {})
def test_request_parser_replace_argument(self): req = Request.from_values("/bubble?foo=baz") parser = RequestParser() parser.add_argument('foo', type=int) parser_copy = parser.copy() parser_copy.replace_argument('foo', type=str) args = parser_copy.parse_args(req) self.assertEquals(args['foo'], u'baz')
def test_request_parser_copy(self): req = Request.from_values("/bubble?foo=101&bar=baz") parser = RequestParser() parser.add_argument("foo", type=int) parser_copy = parser.copy() parser_copy.add_argument("bar", type=str) args = parser_copy.parse_args(req) self.assertEquals(args["foo"], 101) self.assertEquals(args["bar"], u"baz")
def test_request_parser_copy(self): req = Request.from_values("/bubble?foo=101&bar=baz") parser = RequestParser() parser.add_argument('foo', type=int) parser_copy = parser.copy() parser_copy.add_argument('bar', type=str) args = parser_copy.parse_args(req) self.assertEquals(args['foo'], 101) self.assertEquals(args['bar'], u'baz')
def test_request_parser_copy(self): req = Request.from_values("/bubble?foo=101&bar=baz") parser = RequestParser() foo_arg = Argument('foo', type=int) parser.args.append(foo_arg) parser_copy = parser.copy() # Deepcopy should create a clone of the argument object instead of # copying a reference to the new args list self.assertFalse(foo_arg in parser_copy.args) # Args added to new parser should not be added to the original bar_arg = Argument('bar') parser_copy.args.append(bar_arg) self.assertFalse(bar_arg in parser.args) args = parser_copy.parse_args(req) self.assertEquals(args['foo'], 101) self.assertEquals(args['bar'], u'baz')
""" from flask_restful import Resource from flask_restful.reqparse import RequestParser from flask_restful.inputs import date, boolean from bson import ObjectId from application import mongo from common.utils import validate_id item_put_parser = RequestParser() item_put_parser.add_argument("text", type=str, location="json") item_put_parser.add_argument("dueDate", type=date, location="json") item_put_parser.add_argument("finished", type=boolean, location="json") item_post_parser = item_put_parser.copy() for arg in item_post_parser.args: arg.required = True db = mongo.db.todo class TodoItem(Resource): """ Provides methods for updating and deleting todo items. Usage:: For updating todo item: curl -X PUT http://127.0.0.1:5000/todolists/<list_id>/items/<item_id> \ -H "Content-Type: application/json" \ -d '{"text": "sometext", "due_date": "2019-2-12", "finished": "true" }'
def test_request_parse_copy_including_settings(self): parser = RequestParser(trim=True, bundle_errors=True) parser_copy = parser.copy() self.assertEqual(parser.trim, parser_copy.trim) self.assertEqual(parser.bundle_errors, parser_copy.bundle_errors)
new_assignment_parser.add_argument('compare_start', default=None) new_assignment_parser.add_argument('compare_end', default=None) new_assignment_parser.add_argument('file_id', default=None) new_assignment_parser.add_argument('students_can_reply', type=bool, default=False) new_assignment_parser.add_argument('number_of_comparisons', type=int, required=True) new_assignment_parser.add_argument('enable_self_evaluation', type=int, default=None) new_assignment_parser.add_argument('pairing_algorithm', default=None) new_assignment_parser.add_argument('rank_display_limit', type=int, default=None) new_assignment_parser.add_argument('educators_can_compare', type=bool, default=False) # has to add location parameter, otherwise MultiDict will screw up the list new_assignment_parser.add_argument('criteria', type=list, default=[], location='json') new_assignment_parser.add_argument('answer_grade_weight', type=int, default=1) new_assignment_parser.add_argument('comparison_grade_weight', type=int, default=1) new_assignment_parser.add_argument('self_evaluation_grade_weight', type=int, default=1) existing_assignment_parser = new_assignment_parser.copy() existing_assignment_parser.add_argument('id', required=True, help="Assignment id is required.") assignment_users_comparison_list_parser = pagination_parser.copy() assignment_users_comparison_list_parser.add_argument('group', required=False, default=None) assignment_users_comparison_list_parser.add_argument('author', required=False, default=None) # events on_assignment_modified = event.signal('ASSIGNMENT_MODIFIED') on_assignment_get = event.signal('ASSIGNMENT_GET') on_assignment_list_get = event.signal('ASSIGNMENT_LIST_GET') on_assignment_create = event.signal('ASSIGNMENT_CREATE') on_assignment_delete = event.signal('ASSIGNMENT_DELETE') on_assignment_list_get_status = event.signal('ASSIGNMENT_LIST_GET_STATUS') on_assignment_get_status = event.signal('ASSIGNMENT_GET_STATUS') on_assignment_user_comparisons_get = event.signal('ASSIGNMENT_USER_COMPARISONS_GET')
from sqlalchemy.orm import joinedload, undefer_group, load_only from . import dataformat from compair.core import db, event, abort from compair.authorization import allow, require from compair.models import Assignment, Course, Answer, ComparisonExample from .util import new_restful_api, get_model_changes comparison_example_api = Blueprint('comparison_example_api', __name__) api = new_restful_api(comparison_example_api) new_comparison_example_parser = RequestParser() new_comparison_example_parser.add_argument('answer1_id', required=True, nullable=False) new_comparison_example_parser.add_argument('answer2_id', required=True, nullable=False) existing_comparison_example_parser = new_comparison_example_parser.copy() existing_comparison_example_parser.add_argument('id', required=True, nullable=False) # events on_comparison_example_modified = event.signal('COMPARISON_EXAMPLE_MODIFIED') on_comparison_example_list_get = event.signal('COMPARISON_EXAMPLE_LIST_GET') on_comparison_example_create = event.signal('COMPARISON_EXAMPLE_CREATE') on_comparison_example_delete = event.signal('COMPARISON_EXAMPLE_DELETE') # /id class ComparisonExampleIdAPI(Resource): @login_required def post(self, course_uuid, assignment_uuid, comparison_example_uuid): course = Course.get_active_by_uuid_or_404(course_uuid) assignment = Assignment.get_active_by_uuid_or_404(assignment_uuid) comparison_example = ComparisonExample.get_active_by_uuid_or_404(comparison_example_uuid)
from .util import new_restful_api, get_model_changes, pagination_parser answer_comment_api = Blueprint('answer_comment_api', __name__) api = new_restful_api(answer_comment_api) new_answer_comment_parser = RequestParser() new_answer_comment_parser.add_argument('user_id', default=None) new_answer_comment_parser.add_argument('content') new_answer_comment_parser.add_argument('comment_type', required=True, nullable=False) new_answer_comment_parser.add_argument('draft', type=bool, default=False) new_answer_comment_parser.add_argument('evaluation_number', type=int, default=None) new_answer_comment_parser.add_argument('attempt_uuid', default=None) new_answer_comment_parser.add_argument('attempt_started', default=None) new_answer_comment_parser.add_argument('attempt_ended', default=None) existing_answer_comment_parser = new_answer_comment_parser.copy() existing_answer_comment_parser.add_argument('id', required=True, help="Comment id is required.") answer_comment_list_parser = pagination_parser.copy() answer_comment_list_parser.add_argument('self_evaluation', required=False, default='true') answer_comment_list_parser.add_argument('evaluation', required=False, default='true') answer_comment_list_parser.add_argument('draft', required=False, default='false') answer_comment_list_parser.add_argument('ids', required=False, default=None) answer_comment_list_parser.add_argument('answer_ids', required=False, default=None) answer_comment_list_parser.add_argument('assignment_id', required=False, default=None) answer_comment_list_parser.add_argument('user_ids', required=False, default=None) # events on_answer_comment_modified = event.signal('ANSWER_COMMENT_MODIFIED') on_answer_comment_get = event.signal('ANSWER_COMMENT_GET') on_answer_comment_list_get = event.signal('ANSWER_COMMENT_LIST_GET')
utility_add_par = RequestParser() utility_add_par.add_argument('name', type=str, required=True, help='Enum name. (Required)') utility_add_par.add_argument('utility_main_group_id', type=int, required=True, help='Utility main group ID. (Required)') utility_add_par.add_argument('utility_sub_group_id', type=int, required=True, help='Utility sub group ID. (Required)') utility_add_par.add_argument('description', type=str, help='Note.') # put utility_put_par = utility_add_par.copy() utility_put_par.replace_argument('name', type=str, help='Enum name.') utility_put_par.replace_argument('utility_main_group_id', type=int, help='Utility main group ID.') utility_put_par.replace_argument('utility_sub_group_id', type=int, help='Utility sub group ID.') utility_put_par.replace_argument('description', type=str, help='Note.') # get utility_get_par = CommonFilterParser() # page, ids, disabled utility_get_par.add_argument('id', type=int, help='ID = ?') utility_get_par.add_argument('name', type=str, help='name = ?(str)') utility_get_par.add_argument('utility_main_group_name', type=str, help='Utility main group Name.')
answers_api = Blueprint('answers_api', __name__) api = new_restful_api(answers_api) new_answer_parser = RequestParser() new_answer_parser.add_argument('user_id', default=None) new_answer_parser.add_argument('group_id', default=None) new_answer_parser.add_argument('comparable', type=bool, default=True) new_answer_parser.add_argument('content', default=None) new_answer_parser.add_argument('file_id', default=None) new_answer_parser.add_argument('draft', type=bool, default=False) new_answer_parser.add_argument('attempt_uuid', default=None) new_answer_parser.add_argument('attempt_started', default=None) new_answer_parser.add_argument('attempt_ended', default=None) existing_answer_parser = new_answer_parser.copy() existing_answer_parser.add_argument('id', required=True, help="Answer id is required.") answer_list_parser = pagination_parser.copy() answer_list_parser.add_argument('group', required=False, default=None) answer_list_parser.add_argument('author', required=False, default=None) answer_list_parser.add_argument('orderBy', required=False, default=None) answer_list_parser.add_argument('top', type=bool, required=False, default=None) answer_list_parser.add_argument('ids', required=False, default=None) user_answer_list_parser = RequestParser() user_answer_list_parser.add_argument('draft', type=bool, required=False, default=False) top_answer_parser = RequestParser() top_answer_parser.add_argument( 'top_answer', type=bool, required=True, nullable=False,
from flask_restful.reqparse import RequestParser from werkzeug.datastructures import FileStorage from App.extensions import scheduler from App.models.jobs import JobData, JobStatus from App.models.logs import ModLog from App.setting import * from App.utils import (set_model_value, job_handler, get_next_time, save_job_data, save_job_status, up_job_status, save_mod_log, cron_to_dict, up_job_data, del_job, rm_empty_kw, FileHandler, gen_cmd, to_lower ) # Request 解析参数。自动去除值两边空格 parser_jobs = RequestParser(trim=True) # 继承parser_job parser_actions = parser_jobs.copy() # 继承 parser_job parser_put = parser_jobs.copy() # ============================================== [ parser_job ] ============================================== parser_jobs.add_argument("timeStyle", dest="time_style", type=str, required=True, choices=[f"{TRIGGER_TYPE_CRON}", ], help=f"请输入时间风格, [{TRIGGER_TYPE_CRON}|{TRIGGER_TYPE_DATE}|{TRIGGER_TYPE_INTERVAL}]") parser_jobs.add_argument("timeData", dest="time_data", type=str, required=True, help="请输入执行时间,如 0 5 * * *") parser_jobs.add_argument("jobType", dest="job_type", type=str, required=True, choices=[f"{JOB_TYPE_CLI}", f"{JOB_TYPE_SCRIPT}"], help=f"请输入正确的任务类型,[{JOB_TYPE_CLI}|{JOB_TYPE_SCRIPT}]") parser_jobs.add_argument("jobCmd", dest="job_cmd", type=str, help="请输入任务运行命令, 如 python test.py") parser_jobs.add_argument("createdBy", dest="created_by", type=str, required=True, help="请输入任务创建人姓名") parser_jobs.add_argument("category", dest="category", type=str, required=True, help="请输入任务所属业务,[mes|erp|warranty|radar|pms|stopcard|...]")
program_add_par.add_argument('utility_id', type=int, required=True, help='Utility ID. (Required)') program_add_par.add_argument('version', type=str, required=True, help='version str like "0.0.1". (Required)') program_add_par.add_argument('provider_employee_id', type=int, nullable=True, help='provider employee ID.') program_add_par.add_argument('description', type=str, help='description.') # put program_put_par = program_add_par.copy() program_put_par.replace_argument('utility_id', type=int, help='Utility ID.') program_put_par.replace_argument('version', type=str, help='version str like "0.0.1".') program_put_par.replace_argument('provider_employee_id', type=int, store_missing=False, help='provider employee ID.') # get program_get_par = CommonFilterParser() # page_*, ids, disabled program_get_par.add_argument('name', type=str, help='Name = ?') # delete & disable program_dd_par = CommonDisableParser() # id, ids, desc
from flask_restful import Resource, abort, fields, marshal from flask_restful.reqparse import RequestParser from App.api.api_constant import * from App.ext import cache from App.models.model_utils import get_movie_user from App.models.user import MovieUser from App.utils import gen_token_movie_user parser_base = RequestParser() parser_base.add_argument("password", type=str, required=True, help="请输入密码") parser_base.add_argument("action", type=str, required=True, help="请输入要进行的事项") # 注册用args parser_register = parser_base.copy() parser_register.add_argument("username", type=str, required=True, help="请输入用户名") parser_register.add_argument("phone", type=str, required=True, help="请输入手机号") # 登录用args, 区别在于username和phone字段中去掉了required=True parser_login = parser_base.copy() parser_login.add_argument("username", type=str, help="请输入用户名") parser_login.add_argument("phone", type=str, help="请输入手机号") # Response 中使用的模板 base_user_fields = {"username": fields.String, "phone": fields.String} user_fields = {
answers_api = Blueprint('answers_api', __name__) api = new_restful_api(answers_api) new_answer_parser = RequestParser() new_answer_parser.add_argument('user_id', default=None) new_answer_parser.add_argument('group_id', default=None) new_answer_parser.add_argument('comparable', type=bool, default=True) new_answer_parser.add_argument('content', default=None) new_answer_parser.add_argument('file_id', default=None) new_answer_parser.add_argument('draft', type=bool, default=False) new_answer_parser.add_argument('attempt_uuid', default=None) new_answer_parser.add_argument('attempt_started', default=None) new_answer_parser.add_argument('attempt_ended', default=None) existing_answer_parser = new_answer_parser.copy() existing_answer_parser.add_argument('id', required=True, help="Answer id is required.") answer_list_parser = pagination_parser.copy() answer_list_parser.add_argument('group', required=False, default=None) answer_list_parser.add_argument('author', required=False, default=None) answer_list_parser.add_argument('orderBy', required=False, default=None) answer_list_parser.add_argument('top', type=bool, required=False, default=None) answer_list_parser.add_argument('ids', required=False, default=None) user_answer_list_parser = RequestParser() user_answer_list_parser.add_argument('draft', type=bool, required=False,
new_assignment_parser.add_argument('self_eval_instructions', type=non_blank_text, default=None) new_assignment_parser.add_argument('file_id', default=None) new_assignment_parser.add_argument('students_can_reply', type=bool, default=False) new_assignment_parser.add_argument('number_of_comparisons', type=int, required=True, nullable=False) new_assignment_parser.add_argument('enable_self_evaluation', type=bool, default=False) new_assignment_parser.add_argument('enable_group_answers', type=bool, default=False) new_assignment_parser.add_argument('pairing_algorithm', default=None) new_assignment_parser.add_argument('rank_display_limit', type=int, default=None) new_assignment_parser.add_argument('educators_can_compare', type=bool, default=False) # has to add location parameter, otherwise MultiDict will screw up the list new_assignment_parser.add_argument('criteria', type=list, default=[], location='json') new_assignment_parser.add_argument('answer_grade_weight', type=int, default=1) new_assignment_parser.add_argument('comparison_grade_weight', type=int, default=1) new_assignment_parser.add_argument('self_evaluation_grade_weight', type=int, default=1) existing_assignment_parser = new_assignment_parser.copy() existing_assignment_parser.add_argument('id', required=True, nullable=False, help="Assignment id is required.") assignment_users_comparison_list_parser = pagination_parser.copy() assignment_users_comparison_list_parser.add_argument('group', required=False, default=None) assignment_users_comparison_list_parser.add_argument('author', required=False, default=None) # events on_assignment_modified = event.signal('ASSIGNMENT_MODIFIED') on_assignment_get = event.signal('ASSIGNMENT_GET') on_assignment_list_get = event.signal('ASSIGNMENT_LIST_GET') on_assignment_create = event.signal('ASSIGNMENT_CREATE') on_assignment_delete = event.signal('ASSIGNMENT_DELETE') on_assignment_list_get_status = event.signal('ASSIGNMENT_LIST_GET_STATUS') on_assignment_get_status = event.signal('ASSIGNMENT_GET_STATUS') on_assignment_user_comparisons_get = event.signal('ASSIGNMENT_USER_COMPARISONS_GET')
dict_add_par = RequestParser() dict_add_par.add_argument("category", type=str, required=True, help="Name of a group of Enum values. (Required)") dict_add_par.add_argument("name", type=str, required=True, help="Enum name. (Required)") dict_add_par.add_argument("disabled", type=int, choices=[0, 1], default=0, help=("disabled status, value choice. " "1: disabled; 0: enabled;")) dict_add_par.add_argument("note", type=str, help="Enum note.") # put dict_put_par = dict_add_par.copy() dict_put_par.replace_argument("category", type=str, help="Name of a group of Enum values.") dict_put_par.replace_argument("name", type=str, help="Enum name.") # get dict_get_par = CommonFilterParser() dict_get_par.add_argument("id", type=int, help="ID = ?") dict_get_par.add_argument("category", type=str, help="category = ?") dict_get_par.add_argument("name", type=str, help="name = ?") # del & dis dict_dd_par = CommonDisableParser()
from sqlalchemy import and_, or_ from . import dataformat from compair.authorization import require from compair.core import db, event, abort from compair.models import UserCourse, User, Course, CourseRole, \ ThirdPartyUser, ThirdPartyType, Group, Answer from .util import new_restful_api, get_model_changes group_api = Blueprint('group_api', __name__) api = new_restful_api(group_api) new_group_parser = RequestParser() new_group_parser.add_argument('name', required=True, nullable=False, help="Group name is required.") existing_group_parser = new_group_parser.copy() existing_group_parser.add_argument('id', required=True, nullable=False, help="Group id is required.") # events on_group_create = event.signal('GROUP_CREATE') on_group_edit = event.signal('GROUP_EDIT') on_group_get = event.signal('GROUP_GET') on_group_delete = event.signal('GROUP_DELETE') # / class GroupRootAPI(Resource): @login_required def post(self, course_uuid): course = Course.get_active_by_uuid_or_404(course_uuid) new_group = Group(course_id=course.id)