コード例 #1
0
ファイル: main.py プロジェクト: Cal-CS-61A-Staff/cs61a-apps
    def submitRegradeRequest():
        if not is_logged_in():
            return dict(success=False)
        if request.method == "GET":
            return dict(success=False)
        email = request.get_json().get("email")
        assignment = request.get_json().get("assignment")

        with connect_db() as db:
            status = db(
                "SELECT status FROM regrade_requests WHERE courseCode=%s AND email=%s AND assignment=%s",
                [get_course(), email, assignment],
            ).fetchone()
            if status:
                status = status[0]
        if status and status not in ("needs followup"):
            return dict(success=False)

        backup_id = request.get_json().get("backup_id")
        description = request.get_json().get("description")
        ta = request.form.get("ta")
        status = "requested"
        with connect_db() as db:
            db(
                """INSERT INTO regrade_requests (
                courseCode, email, assignment, backup_id, description, assigned_to, status
                ) VALUES (%s, %s, %s, %s, %s, %s, %s)""",
                [
                    get_course(), email, assignment, backup_id, description,
                    ta, status
                ],
            )
        return dict(success=True)
コード例 #2
0
def index():
    if not is_logged_in():
        return login()
    return html("""
    Select course: 
    <form method="post" action="/view_course">
        <input placeholder="cs61a" name="course"> <input type="submit" value="Login">
    </form>""")
コード例 #3
0
    def query():
        try:
            if is_logged_in():
                user = get_user()

                email = user["email"]

                target = request.args.get("target", None)

                if is_staff(get_course()):
                    if target:
                        email = target
                    else:
                        all_students = []
                        with connect_db() as db:
                            lookup = db(
                                "SELECT shortData FROM students WHERE courseCode=%s",
                                [get_course()],
                            ).fetchall()
                            for row in lookup:
                                parsed = json.loads(row[0])
                                all_students.append(parsed)
                        return jsonify({
                            "success": True,
                            "isStaff": True,
                            "allStudents": all_students,
                            "email": user["email"],
                            "name": user["name"],
                            "lastUpdated": last_updated(),
                        })

                with connect_db() as db:
                    [short_data, data] = db(
                        "SELECT shortData, data FROM students WHERE courseCode=%s AND email=%s",
                        [get_course(), email],
                    ).fetchone()
                    [header
                     ] = db("SELECT header FROM headers WHERE courseCode=%s",
                            [get_course()]).fetchone()
                    short_data = json.loads(short_data)
                    data = json.loads(data)
                    header = json.loads(header)
                    return jsonify({
                        "success": True,
                        "header": header,
                        "data": data,
                        "email": short_data["Email"],
                        "name": short_data["Name"],
                        "SID": short_data["SID"],
                        "lastUpdated": last_updated(),
                    })
            else:
                return jsonify({"success": False, "retry": True})

        except Exception:
            pass
        return jsonify({"success": False, "retry": False})
コード例 #4
0
ファイル: main.py プロジェクト: Cal-CS-61A-Staff/cs61a-apps
 def canRequestRegrade():
     if not is_logged_in():
         return dict(canRegrade=False)
     email = request.args.get("email", "")
     assignment = request.args.get("name", "")
     with connect_db() as db:
         status = db(
             "SELECT status FROM regrade_requests WHERE courseCode=%s AND email=%s AND assignment=%s",
             [get_course(), email, assignment],
         ).fetchone()
         if status:
             status = status[0]
     return dict(canRegrade=(not status or status in ("needs followup")))
コード例 #5
0
def view_course(course=None):
    if not course:
        course = request.form["course"]
        return redirect(url_for("canonical_view_course", course=course))
    if not is_logged_in():
        return login()
    email = get_user()["email"]
    if not is_admin(email, course):
        abort(403)

    with connect_db() as db:
        apps = db(
            "SELECT domain, app, status FROM hosted_apps WHERE course=(%s)",
            [course]).fetchall()

    return html(f"""
        <h2>Hosted Apps for {format_coursecode(course)}</h2>
        {"<p>".join(f"<code>{domain}</code> ({app}) - {status}" for domain, app, status in apps)}
    """)
コード例 #6
0
ファイル: main.py プロジェクト: Cal-CS-61A-Staff/cs61a-apps
    def query():
        try:
            if is_logged_in():
                user = get_user()

                email = user["email"]
                target = request.args.get("target", None)
                admin = True if DEV else is_admin(course=get_course(),
                                                  email=email)

                if is_staff(get_course()):
                    if target:
                        email = target
                    else:
                        show_all_students = has_access_to_all_grades()
                        students = []
                        with connect_db() as db:
                            lookup = db(
                                "SELECT shortData FROM students WHERE courseCode=%s",
                                [get_course()],
                            ).fetchall()
                            for row in lookup:
                                parsed = json.loads(row[0])
                                if show_all_students or parsed.get("TA",
                                                                   "") in (
                                                                       "",
                                                                       email,
                                                                   ):
                                    students.append(parsed)
                        return jsonify({
                            "success": True,
                            "isStaff": True,
                            "isAdmin": admin,
                            "canExportGrades": show_all_students,
                            "allStudents": students,
                            "email": user["email"],
                            "name": user["name"],
                            "lastUpdated": last_updated(),
                        })

                with connect_db() as db:
                    [short_data, data] = db(
                        "SELECT shortData, data FROM students WHERE courseCode=%s AND email=%s",
                        [get_course(), email],
                    ).fetchone()
                    [header
                     ] = db("SELECT header FROM headers WHERE courseCode=%s",
                            [get_course()]).fetchone()
                    short_data = json.loads(short_data)
                    if not (email == user["email"] or admin or short_data.get(
                            "TA", "") in ("", user["email"])):
                        return jsonify({"success": False, "retry": False})
                    data = json.loads(data)
                    header = json.loads(header)
                    return jsonify({
                        "success": True,
                        "header": header,
                        "data": data,
                        "email": short_data["Email"],
                        "name": short_data["Name"],
                        "SID": short_data["SID"],
                        "ta": short_data.get("TA", ""),
                        "lastUpdated": last_updated(),
                    })
            else:
                return jsonify({"success": False, "retry": True})

        except Exception:
            pass
        return jsonify({"success": False, "retry": False})