예제 #1
0
def survey_list_json(request, survey_type):
    start_str = request.GET.get('start', '0')
    limit_str = request.GET.get('limit', '1')
    start = int(start_str)
    limit = int(limit_str)
    survey_type_int = int(survey_type)
    end = start + limit
    objects = SurveySettings.objects(
        survey_type=survey_type_int).order_by("-_id")[start:end]
    rows = objects_to_array(objects)
    for key in range(0, len(rows)):
        row = rows[key]
        if 'publishTime' in row.keys():
            if row["publishTime"] is None:
                rows[key]["state"] = '未发布'
            else:
                rows[key]["state"] = '已发布'
                if 'endTime' in row.keys():
                    if row["endTime"] is not None:
                        rows[key]["state"] = '已结束'
        else:
            rows[key]["state"] = '未发布'

    num = SurveySettings.objects(survey_type=survey_type_int).count()
    data = {"success": True, "message": "", "rows": rows, "total": num}
    return success(data)
예제 #2
0
def survey_end(request):
    message = ''
    success_state = False
    post = request.POST
    _id = post.get('_id', '')

    if _id != '':
        # 查询是否已经结束
        object_id = ObjectId(_id)
        survey_ob = SurveySettings.objects(_id=object_id).first()
        if survey_ob:
            if survey_ob.publish_time is not None:
                if survey_ob.end_time is not None:
                    message = '此调研已经结束'
            else:
                message = '结束调研失败,此调研未发布'
            if message == '':
                survey_ob["end_time"] = datetime.utcnow()
                row_count = survey_ob.save()
                if row_count > 0:
                    success_state = True
                    message = '结束调研成功'
        else:
            message = '结束调研失败,此调研不存在或已删除'
    else:
        message = '参数有误'
    if success_state is False and message == '':
        message = '结束调研失败'
    data = {"success": success_state, "message": message}
    return success(data)
예제 #3
0
def lesson_destroy(request):
    message = ''
    success_state = False
    now = datetime.utcnow()
    post = request.POST
    _id = post.get('_id', '')
    course_id = post.get('course_id', '')

    if _id != '' and course_id != '':
        object_id = ObjectId(_id)
        lesson = Lesson.objects(_id=object_id, course_id=course_id).first()
        if lesson:
            delta = lesson.start_time - now
            before = delta.days * 24 * 60 * 60 + delta.seconds
            count = before / (60 * 60)
            if count <= 1:
                message = '离讲次开始还剩一小时内不可删除'
                pass
            if message == '':
                Lesson.del_lesson(lesson)
                # 状态删除会议
                meeting_old = Meetings.objects(
                    lesson_id=lesson.lesson_id).first()
                if meeting_old:
                    Meetings.del_meeting(meeting_old)
                success_state = True
                message = '删除成功'
        else:
            message = '删除失败,此讲次不存在'
    else:
        message = '参数有误'

    data = {"success": success_state, "message": message}
    return success(data)
예제 #4
0
def survey_issue(request):
    message = ''
    success_state = False
    post = request.POST
    _id = post.get('_id', '')
    survey_type = post.get('survey_type', '')
    message2 = ''
    if _id != '' and survey_type != '':
        if survey_type == "1":
            # 课后调研类型时,查询是否存在已经发布的
            survey_old = SurveySettings.objects(
                publish_time__ne=None, end_time=None,
                survey_type=survey_type).limit(1)
            if survey_old:
                message = '请结束已经发布的调研'

        if message == "":
            object_id = ObjectId(_id)
            survey = SurveySettings.objects(_id=object_id,
                                            survey_type=survey_type).first()
            if survey:
                if survey.publish_time is not None:
                    message = '此调研已发布,请勿重复发布'
                if message == "":
                    # 用户
                    get_user = auth.get_user(request)
                    survey["publish_time"] = datetime.utcnow()
                    if get_user:
                        survey[
                            "user_name"] = get_user.first_name + get_user.last_name  # user.username

                    if survey_type == '0':  # 修改问卷调研班级表
                        survey_courses_obs = SurveyCourses.objects(sid=_id)
                        for survey_course in survey_courses_obs:
                            # 查询当前lessson的id
                            lesson = Lesson.objects(
                                start_time__lte=survey["publish_time"],
                                course_id=survey_course.course_id).order_by(
                                    "-start_time").first()
                            lesson_id = "0"
                            if lesson:
                                lesson_id = lesson.lesson_id
                            if lesson_id is not survey_course.current_lesson_id:
                                survey_course.current_lesson_id = lesson_id
                                # 执行修改
                                survey_course.save()
                                message2 = '执行修改'

                    row_count = survey.save()
                    if row_count > 0:
                        success_state = True
                        message = '发布成功'
            else:
                message = '发布失败,此调研不存在或已删除'

    else:
        message = '参数有误'
    data = {"success": success_state, "message": message, "message2": message2}
    return success(data)
예제 #5
0
def lesson_list_json(request, course_id):
    objects = Lesson.objects(course_id=course_id).order_by('start_time')
    rows = objects_to_array(objects)
    now = get_beijing_time()
    # time.localtime(time.time())
    for key in range(0, len(rows)):
        row = rows[key]
        # 根据指定的格式把一个时间字符串解析为时间元组
        start = datetime.strptime(row["startTime"], '%Y-%m-%d %H:%M:%S')
        end = datetime.strptime(row["endTime"], '%Y-%m-%d %H:%M:%S')
        delta = start - now
        # 未开始备课(无论是否已到了上课时间):未开始
        # 备课中(无论是否已到了上课时间)\已完成备课且未到上课时间:备课中
        # 已备课且到了上课的时间:上课中
        # 老师结束听课:已结束 字段“isEnd”=true

        if row["readyStatus"] == 0:
            rows[key]["readyStatus"] = '未开始'
        elif row["readyStatus"] == 1:
            rows[key]["readyStatus"] = '备课中'
        else:
            # 上课时间未到
            if delta.total_seconds() > 0:
                rows[key]["readyStatus"] = '备课中'
            elif row["isEnd"] is False:
                rows[key]["readyStatus"] = '上课中'
            else:
                rows[key]["readyStatus"] = '已结束'

        rows[key]["startDate"] = start.strftime('%Y-%m-%d')
        rows[key]["startTime"] = start.strftime('%H:%M')
        rows[key]["endTime"] = end.strftime('%H:%M')
        rows[key]["time"] = start.strftime('%H:%M') + "-" + end.strftime(
            '%H:%M')

        # if start.hour < 6 or start.hour > 21:
        # rows[key]["startTime"] = ''
        # if end.hour < 6 or end.hour > 22 or (end.hour == 6 and end.minute == 0):
        #     rows[key]["endTime"] = ''
        # b、开始上课前一小时之前可修改,一小时之内不可再修改。

        before = delta.days * 24 * 60 * 60 + delta.seconds
        count = before / (60 * 60)
        if count <= 1:
            rows[key]["isEdit"] = False
        else:
            rows[key]["isEdit"] = True
    num = Lesson.objects(course_id=course_id).count()
    data = {"success": True, "message": "", "rows": rows, "total": num}
    return success(data)
예제 #6
0
def register(request, form):
    username = form.cleaned_data['username']
    password = form.cleaned_data['password']
    first_name = form.cleaned_data['first_name']
    last_name = form.cleaned_data['last_name']
    email = form.cleaned_data['email']
    user = User.objects.create_user(username=username,
                                    email=email,
                                    password=password,
                                    first_name=first_name,
                                    last_name=last_name)
    user.is_active = False
    user.save()
    return success(user)
예제 #7
0
def results_list_json(request, survey_id):
    message = ''
    start_str = request.GET.get('start', '0')
    limit_str = request.GET.get('limit', '1')
    start = int(start_str)
    limit = int(limit_str)

    end = start + limit
    survey_settings = SurveySettings.objects(_id=ObjectId(survey_id)).first()
    questions = []
    if survey_settings:
        questions_array = survey_settings.questions
        for key in range(0, len(questions_array)):
            if "question" in questions_array[key].keys():
                question = questions_array[key]["question"]
                questions.append({"questions" + str(key): question})

    num = SurveyResults.objects(sid=survey_id).count()
    if num < end:
        end = num
    results_obs = SurveyResults.objects(
        sid=survey_id).order_by("-_id")[start:end]
    # objects = SurveySettings.objects(survey_id=ObjectId(survey_id)).first()
    rows = objects_to_array(results_obs)
    for key in range(0, len(rows)):
        row = rows[key]
        rows[key]["realName"] = Users.get_real_name(row["userName"])
        answers_array = row["answers"]
        for key2 in range(0, len(answers_array)):
            rows[key]["questions" + str(key2)] = answers_array[key2]

    num = SurveyResults.objects(sid=survey_id).count()
    if num == 0:
        message = '无数据'
        success_state = False
    else:
        success_state = True

    data = {
        "success": success_state,
        "message": message,
        "rows": rows,
        "total": num,
        "questions": questions
    }
    return success(data)
예제 #8
0
def survey_get(request, survey_type, survey_id):
    message = ''
    success_state = False
    survey_settings = {}
    if survey_id != '':
        _id = ObjectId(survey_id)
        objects = SurveySettings.objects(_id=_id,
                                         survey_type=survey_type).limit(1)
        if objects:
            success_state = True
            survey_settings = objects_to_array(objects)[0]
            if survey_settings["questions"]:
                survey_settings["questions"] = objects_to_array(
                    survey_settings["questions"])
                survey_settings["questionsStr"] = data_to_json(
                    survey_settings["questions"])

            # 获取已选择适用班级
            survey_courses_objects = SurveyCourses.objects(sid=survey_id)
            ssurvey_courses_array = objects_to_array(survey_courses_objects)
            survey_settings["surveyCourses"] = []
            survey_course_data = []
            for key in range(0, len(ssurvey_courses_array)):
                row = ssurvey_courses_array[key]
                if 'courseId' in row.keys():
                    survey_course_obs = Course.objects(
                        course_id=row["courseId"]).limit(1)
                    if survey_course_obs:
                        survey_course = objects_to_array(survey_course_obs)[0]
                        if survey_course:
                            survey_settings["surveyCourses"].append(
                                survey_course["name"])
                            survey_course_data.append(survey_course["id"])

            survey_settings["survey_course"] = data_to_json(survey_course_data)
        else:
            message = "问卷数据查询失败"
    else:
        message = "参数有误"
    data = {
        "success": success_state,
        "data": survey_settings,
        "message": message
    }
    return success(data)
예제 #9
0
def login(request, form):
    username = form.cleaned_data['username']
    password = form.cleaned_data['password']
    user = authenticate(username=username, password=password)
    message = ''
    if user is None:
        message = "用户名密码错误"
    elif not user.is_active:
        message = "用户还未激活,请联系管理员"

    success_state = True
    result = 'no'
    if message == '':
        result = "ok"
        _login(request, user)

    data = {"success": success_state, "message": message, "result": result}
    return success(data)
예제 #10
0
def survey_destroy(request):
    # message = ''
    success_state = False

    post = request.POST
    _id = post.get('_id', '')
    if _id != '':
        object_id = ObjectId(_id)
        lesson = SurveySettings.objects(_id=object_id).first()
        if lesson:
            lesson.delete()
            success_state = True
            message = '删除成功'
        else:
            message = '删除失败,此讲次不存在'
    else:
        message = '参数有误'

    data = {"success": success_state, "message": message}
    return success(data)
예제 #11
0
def course_lists(request):
    start_str = request.GET.get('start', '0')
    limit_str = request.GET.get('limit', '1')
    start = int(start_str)
    limit = int(limit_str)
    end = start + limit

    objects = Course.objects().order_by("-insert_time")[start:end]
    rows = objects_to_array(objects)
    # 学科列表
    subjects = {
        1: "语文",
        2: "数学",
        3: "英语",
        4: "物理",
        5: "化学",
        6: "生物",
        7: "历史",
        8: "地理",
        9: "政治",
        10: "文科综合",
        11: "理科综合",
        12: "其他",
        13: "科学"
    }

    for key in range(0, len(rows)):
        row = rows[key]
        if "subject" in row.keys():
            if row["subject"] in subjects.keys():
                row["subject"] = subjects[row["subject"]]
            else:
                row["subject"] = ""
        else:
            row["subject"] = ""
    num = Course.objects().count()
    data = {"success": True, "message": "", "rows": rows, "total": num}
    return success(data)
예제 #12
0
def survey_detail_get(request, survey_type, survey_id):
    message = ''
    success_state = False
    survey_settings = {}
    if survey_id != '':
        _id = ObjectId(survey_id)
        objects = SurveySettings.objects(_id=_id,
                                         survey_type=survey_type).limit(1)
        if objects:
            success_state = True

            survey_settings = objects_to_array(objects)[0]
            if 'publishTime' in survey_settings.keys():
                if survey_settings["publishTime"] is None:
                    survey_settings["state"] = '未发布'
                else:
                    survey_settings["state"] = '已发布'
                    if 'endTime' in survey_settings.keys():
                        if survey_settings["endTime"] is not None:
                            survey_settings["state"] = '已结束'
            else:
                survey_settings["state"] = '未发布'

            survey_settings["surveyTypeStr"] = "课中调研"
            if survey_type == '1':
                survey_settings["surveyTypeStr"] = "课后调研"
            survey_settings["questionsStr"] = ''
            if survey_settings["questions"]:
                survey_settings["questions"] = objects_to_array(
                    survey_settings["questions"])
                for key in range(0, len(survey_settings["questions"])):
                    question = survey_settings["questions"][key]
                    options_str = ''
                    option_sc = ["A", "B", "C", "D", "E"]
                    if "option" in question.keys():
                        for i in range(0, len(question["option"])):
                            options_str += (option_sc[i] + '&nbsp;' +
                                            question["option"][i] +
                                            '&nbsp;&nbsp;&nbsp;&nbsp;')
                    survey_settings[
                        "questionsStr"] += """<div class='view_html'><p>{0}、{1}</p>
                    <p class='p_option'>{2}</p></div>""".format(
                            (key + 1), question["question"], options_str)

            # 获取已选择适用班级
            survey_courses_objects = SurveyCourses.objects(sid=survey_id)
            ssurvey_courses_array = objects_to_array(survey_courses_objects)
            survey_settings["surveyCourses"] = []

            for key in range(0, len(ssurvey_courses_array)):
                row = ssurvey_courses_array[key]
                if 'courseId' in row.keys():
                    survey_course_obs = Course.objects(
                        course_id=row["courseId"]).limit(1)
                    if survey_course_obs:
                        survey_course = objects_to_array(survey_course_obs)[0]
                        if survey_course:
                            survey_settings["surveyCourses"].append(
                                survey_course["name"])
        else:
            message = "问卷数据查询失败"
    else:
        message = "参数有误"
    data = {
        "success": success_state,
        "data": survey_settings,
        "message": message
    }
    return success(data)
예제 #13
0
def survey_save(request, form):
    message = ''
    success_state = False
    post = request.POST
    # 获取form参数
    # title:调研标题 count:调研次数 surveyType:调研类型(0:课中调研,1:课后调研)questions:问卷中的问题
    title = post.get('title', '')
    count_str = post.get('count', '0')
    questions_str = post.get('questionsStr', '[]')

    count = int(count_str)
    questions = str_to_data(questions_str)

    _id = post.get('_id', '')
    if _id != '':
        object_id = ObjectId(_id)
    else:
        object_id = ObjectId()
    survey = {}

    if _id != '':
        survey = SurveySettings.objects(_id=object_id).first()
        if survey:
            if survey.publish_time is not None:
                message = '已发布的调研不能修改'
        else:
            message = '参数有误'

    if message == '':
        if _id != '':
            message = '修改'
        else:
            message = '添加'

        if survey:
            survey.title = title
            survey.count = count
            survey.questions = questions
        else:
            survey_type_str = post.get('surveyType')
            survey = SurveySettings(_id=object_id,
                                    title=title,
                                    survey_type=int(survey_type_str),
                                    count=count,
                                    questions=questions)

        effect_rows = survey.save()

        if effect_rows > 0:
            # 保存适用班级
            # 班级id
            courses_ids_str = post.get('survey_course', '')
            if courses_ids_str:
                _id = str(object_id)
                effect_rows2 = 0
                course_ids = str_to_data(courses_ids_str)
                survey_courses_ids = []
                # SurveyCourses
                for key in range(0, len(course_ids)):
                    course_id = str(course_ids[key])
                    # 是否已经存在此课程
                    survey_course_old = SurveyCourses.objects(
                        sid=_id, course_id=course_id).limit(1)
                    if not survey_course_old:
                        # 保存
                        survey_courses_id = ObjectId()
                        survey_course = SurveyCourses(_id=survey_courses_id,
                                                      sid=_id,
                                                      course_id=course_id)
                        effect_rows20 = survey_course.save()
                        if effect_rows20 > 0:
                            effect_rows2 += 1
                    else:
                        survey_courses_id = str(survey_course_old[0].id)
                        effect_rows2 += 1

                    survey_courses_ids.append(survey_courses_id)

                if effect_rows2 > 0:  # 班级保存成功
                    not_survey_course = SurveyCourses.objects(
                        course_id__nin=course_ids, sid=_id)
                    # 删除之前的班级
                    if not_survey_course:
                        not_survey_course.delete()

            success_state = True
            message += '成功'
        else:
            message += '失败'

    data = {"success": success_state, "message": message}
    return success(data)
예제 #14
0
def lesson_save(request, form):
    message = ''
    error = 0
    now = datetime.utcnow()
    post = request.POST

    # 获取form参数
    # startDate:开课日期 startTime:开课时间开始 endTime:开课时间结束 courseId:所属课程id
    start_date = post.get('startDate', '')
    start_time_str = post.get('startTime', '')
    end_time_str = post.get('endTime', '')
    course_id = form.cleaned_data['courseId']
    format_str = "%Y-%m-%d %H:%M:%S"

    start_time = datetime.strptime(start_date + " " + start_time_str + ":00",
                                   format_str)
    end_time = datetime.strptime(start_date + " " + end_time_str + ":00",
                                 format_str)
    start_time = get_utc_time(start_time)
    end_time = get_utc_time(end_time)

    delta = start_time - now
    before = delta.days * 24 * 60 * 60 + delta.seconds
    count = before / (60 * 60)
    _id = post.get('_id', '')
    lesson_id = post.get('id', '0')
    name = post.get('name', '')

    if _id != '':
        object_id = ObjectId(_id)
    else:
        object_id = ObjectId()
    # print(object_id)
    lesson = {}
    if count <= 1:
        message = '开课时间应该在当前时间的一小时以后'
    else:
        if _id != '':
            # 开始上课前一小时之前可修改,一小时之内不可再修改
            lesson = Lesson.objects(_id=object_id).first()
            if lesson:
                delta = lesson.start_time - now
                before = delta.days * 24 * 60 * 60 + delta.seconds
                count = before / (60 * 60)
                if count <= 1:
                    message = '开始上课前一小时之内不可再修改'
                    pass
            else:
                message = '参数有误'
        if message == '':
            is_exist = Lesson.is_exist_time(start_time, course_id, lesson_id)
            if is_exist:
                message = '同一课程的讲次在同一天时间段不能有重叠'
    if message != '':
        error = 1
    else:

        if _id != '':
            message = '修改'
        else:
            message = '添加'

        if lesson_id == '0' or not lesson:
            count = Lesson.lesson_count(course_id)
            while 1:
                count += 1
                if count > 99:
                    count_str = "-"
                elif count > 9:
                    count_str = '-0'
                else:
                    count_str = '-00'
                lesson_id = course_id + count_str + str(count)
                count_exist = Lesson.objects(lesson_id=lesson_id).count()
                if count_exist == 0:
                    break

        if lesson:
            lesson.lesson_id = lesson_id
            lesson.name = name
            lesson.start_time = start_time
            lesson.end_time = end_time
        else:
            lesson = Lesson(_id=object_id,
                            lesson_id=lesson_id,
                            name=name,
                            course_id=course_id,
                            start_time=start_time,
                            end_time=end_time)

        effect_rows = lesson.save()

        if effect_rows > 0:
            start_time_s = start_time - timedelta(days=1)
            end_time_s = end_time + timedelta(hours=2)

            meeting = {}
            if lesson:
                meeting_old = Meetings.objects(lesson_id=lesson_id).first()
                if meeting_old:
                    if meeting_old.start_time != start_time_s or meeting_old.end_time != end_time_s:
                        Meetings.del_meeting(meeting_old)
                    else:
                        meeting = meeting_old
                        meeting.name = name
            if not meeting:
                meeting = Meetings(
                    lesson_id=lesson_id,
                    name=name,
                    start_time=(
                        start_time -
                        timedelta(days=settings.MEETINGMANAGE["beforeDays"])),
                    end_time=(end_time + timedelta(hours=2)))
            meeting.save()
            message += '成功'
        else:
            message += '失败'
            error = 1
    data = {"success": True, "message": message, "error": error}
    return success(data)
예제 #15
0
def course_apply_list(request):
    now = datetime.utcnow()
    objects = Course.objects(end_day__gt=now)
    rows = objects_to_array(objects)
    data = {"success": True, "rows": rows}
    return success(data)
예제 #16
0
def test(request):
    from bson.son import SON
    from django.http import HttpResponse
    from mongoengine.common import _import_class

    if Meetings.objects(lesson_id='123'):
        Meetings.objects(lesson_id='123').delete()

    now = datetime.utcnow()
    object_id = ObjectId()
    meeting = Meetings(_id=object_id,
                       name='测试',
                       platform_meeting_id=None,
                       lesson_id='123')
    self = meeting
    fields = None
    if not fields:
        fields = []

    data = SON()
    data["_id"] = None
    data['_cls'] = self._class_name
    EmbeddedDocumentField = _import_class("EmbeddedDocumentField")
    # only root fields ['test1.a', 'test2'] => ['test1', 'test2']
    root_fields = set([f.split('.')[0] for f in fields])

    for field_name in self:
        if root_fields and field_name not in root_fields:
            continue
        print(field_name)

    my_s = meeting.to_mongo()
    # print(my_s)
    # print(meeting._fields)
    meeting.save(clean=False, validate=False)
    # //rows = objects_to_array(meeting)
    # //str2 = str+"<br/>"+meeting.to_mongo
    # meeting.validate(clean=False)
    return HttpResponse(my_s)

    # t_str = '2015-06-16 06:00:00'
    # start = datetime.strptime(t_str, '%Y-%m-%d %H:%M:%S')  # "2015-04-07T19:11:21"
    # delta = now-start
    # before = delta.days * 24 * 60 * 60 + delta.seconds
    # count = before / (60 * 60)
    get_user = auth.get_user(request)
    return success(get_user)
    return success(time.ctime())
    data = {
        "totalCount":
        "100",
        "topics": [{
            "title": "XTemplate with in EditorGridPanel",
            "threadid": "133690",
            "username": "******",
            "userid": "272497",
            "dateline": "1305604761",
            "postid": "602876",
            "forumtitle": "Ext 3.x: Help",
            "forumid": "40",
            "replycount": "2",
            "lastpost": "1305857807",
            "lastposter": "kpr@emco",
            "excerpt": "Hihen i render the EditorGri..."
        }, {
            "title": "IFrame error  &quot;_flyweights is undefined&quot;",
            "threadid": "133571",
            "username": "******",
            "userid": "52119",
            "dateline": "1305533577",
            "postid": "602456",
            "forumtitle": "Ext 3.x: Help",
            "forumid": "40",
            "replycount": "1",
            "lastpost": "1305857313",
            "lastposter": "Daz",
            "excerpt": "For Ext 3.3.0 usingYet, this ..."
        }]
    }
    return success(data)
예제 #17
0
def tree(request):
    nav = NavItems.get_menu_data()
    return success(nav)