Example #1
0
    def write_dr_periods_to_file(self, file_obj=None, file_name='dr_periods.csv'):
        if file_obj == None: file_obj = open(file_name, 'w')

        for period in self.dr_periods:
            start_at = utils.int_to_datetime(period[0], self.timezone).strftime("%Y-%m-%d %H:%M:%S")
            end_at = utils.int_to_datetime(period[1], self.timezone).strftime("%Y-%m-%d %H:%M:%S")
            file_obj.write("%s,%s\n" % (start_at, end_at))

        file_obj.flush()
        return file_obj
def find_update_studygroup(student, groupid):
    """
    :param student: current logged in student from auth decorator.

    | route: /studygroups/<groupid>
    | method: GET
    | With given id parameter finds the studygroup.
    | 
    | method: POST
    | With given id parameter updates the studygroup.
    | 
    | method: DELETE
    | With given id parameter removes the studygroup.
    """
    groupid = int(groupid)
    result = check_study_group(student["id"], groupid)
    if result:
        return result

    if request.method == "GET":
        group = studygroup_model.find_by_id(_id=groupid)[0]
        return json.dumps(group)

    elif request.method == "PUT":
        print("put method")
        req_body = request.get_json()

        data = {}

        if req_body.get("name"):
            data["name"] = req_body.get("name")
        if req_body.get("description"):
            data["description"] = req_body.get("description")

        if req_body.get("study_date"):
            data["study_date"] = int_to_datetime(req_body.get("study_date"))
        if req_body.get("duration"):
            data["duration"] = req_body.get("duration")
        if req_body.get("course"):
            data["course"] = req_body.get("course")

        try:
            result = studygroup_model.update_by_id(_id=groupid,
                                                   data=data,
                                                   return_cols=["id"])
            result["message"] = "updated"
            return json.dumps(result)
        except DataBaseException as db_error:
            return db_error.message, 404
    elif request.method == "DELETE":
        try:
            result = studygroup_model.delete_by_id(_id=groupid,
                                                   return_cols=["id"])
            result["message"] = "studygroup is deleted."
            return json.dumps(result)
        except DataBaseException:
            return "failed to delete study group.", 404
Example #3
0
    def write_to_file(self, file_obj=None, file_name='series.csv',
                      start_at=None, end_at=None, exclude=True):
        if file_obj == None: file_obj = open(file_name, 'w')

        for time, value in self.data(start_at=start_at, end_at=end_at, exclude=exclude):
            time = utils.int_to_datetime(time, self.timezone).strftime("%Y-%m-%d %H:%M:%S")
            file_obj.write("%s,%s\n" % (time, value))
        
        file_obj.flush()
        return file_obj
Example #4
0
    def write_to_file(self, file_obj=None, file_name="series.csv", start_at=None, end_at=None, exclude=True):
        if file_obj == None:
            file_obj = open(file_name, "w")

        for time, value in self.data(start_at=start_at, end_at=end_at, exclude=exclude):
            time = utils.int_to_datetime(time, self.timezone).strftime("%Y-%m-%d %H:%M:%S")
            file_obj.write("%s,%s\n" % (time, value))

        file_obj.flush()
        return file_obj
def one_student(student):
    """
    :param student: current logged in student from auth decorator.
    
    | route: /students
    | method: GET
    | Retrieves one student with id.

    | route: /students
    | method: PUT
    | body: {"study_start": [timestamp], "study_end": [timestamp]}
    | Updates one student study time preference with id.
    """
    if request.method == "GET":
        return json.dumps(student)
    elif request.method == "PUT":
        req_body = request.get_json()
        data = {}
        if req_body.get("study_start"):
            data["study_start"] = int_to_datetime(req_body.get("study_start"))
        if req_body.get("study_end"):
            data["study_end"] = int_to_datetime(req_body.get("study_end"))

        student["id"] = "'{}'".format(student["id"])
        updated_keys = []
        for key in data:
            updated_keys.append(key)
        try:
            result = student_model.update_by_id(_id=student["id"],
                                                data=data,
                                                return_cols=["id"] +
                                                updated_keys)
            result["message"] = "student is updated."
            return json.dumps(result)
        except DataBaseException as db_error:
            result = {}
            result["message"] = "error not updated"
            result["error"] = db_error.message
            return json.dumps(result), 404
        except Exception as e:
            print(e)
            return "something is wrong", 500
def list_studygroups(student):
    """
    :param student: current logged in student from auth decorator.

    | route: /studygroups
    | method: GET
    | Lists all available studygroups for the caller student.
    """
    student_courses = student_course_model.find_student_courses(
        studentid=student["id"])
    student_courses = [r["crn"] for r in student_courses]
    if request.method == "GET":
        try:
            result = studygroup_model.get_available_study_groups(
                student["id"], student_courses, student["study_start"],
                student["study_end"])
            return json.dumps(result)
        except DataBaseException:
            return "no suitable studygroup", 404
    elif request.method == "POST":
        req_body = request.get_json()
        study_date = int_to_datetime(req_body.get("study_date"))
        if req_body.get("course") not in student_courses:
            result = {}
            result["message"] = "You do not have this course"
            return json.dumps(result), 403
        try:
            studygroup_model.create(
                data={
                    "course": req_body.get("course"),
                    "created_by": student["id"],
                    "name": req_body.get("name"),
                    "description": req_body.get("description"),
                    "study_date": study_date,
                    "duration": req_body.get("duration")
                })
            result = studygroup_model.find(query="created_by='{}'".format(
                student["id"]),
                                           sort_by="id DESC")[0]
            result["message"] = "created"
            return json.dumps(result)
        except DataBaseException as db_error:
            return db_error.message, 404