Exemple #1
0
async def add_exam(r: str, u: int):
    """Add exam to database

    :param r: Request
    :param u: User ID who added the exam.
    :return: Operation result. Success or fail (with error description)
    """
    user = await get_user(u)
    if not user:  # This is case is mostly impossible but still there
        return r_exam_add_fail_not_reg

    # Must be 2 parameters examDate and examGroup
    request = r.split('=')
    if len(request) < 2:
        return r_exam_add_fail_params
    # Max length of text snackbar is 90,
    # so we need to limit name of the exam (about 25 symbols for date, time and id of the exam)
    if len(request[1]) > 65:
        return r_exam_add_fail_name.format(len(request[1]))

    try:
        exam_date = datetime.strptime(
            request[0], "%d-%m-%Y %H:%M"
        )  # Convert into datetime to be sure it has no errors
    except ValueError:
        return r_exam_add_fail_date
    sql = "INSERT INTO exams (examDate, examName, examGroup, examUser) VALUES (?, ?, ?, ?)"
    cur.execute(
        sql,
        (exam_date.strftime('%Y%m%d%H%M'), request[1], user.group_peer_id, u))
    db.commit()
    return r_exam_add_success
Exemple #2
0
async def delete_exam(r: str, u: int):
    """Delete exam from database

    :param r: Request
    :param u: User ID who added the exam
    :return: Result of operation. Success or fail as string
    """
    sql = db.cursor().execute(
        "DELETE FROM exams WHERE examId = ? AND examUser = ?", (r, u)).rowcount
    db.commit()
    return r_exam_delete_success if (sql != 0) else r_exam_delete_fail
Exemple #3
0
def delete_teacher(req: int, user_id: int):
    """
    Delete teacher from database

    :param req: Request, class name
    :param user_id: User id
    :return: Result (success or fail)
    """
    sql = db.cursor().execute(
        "DELETE FROM teachers WHERE teacherId = ? AND userId = ?",
        (req, user_id)).rowcount
    db.commit()
    return r_teacher_delete_success if (
        sql != 0) else r_teacher_delete_fail  # Not 0 means deleted
Exemple #4
0
def register_user(user_id: int,
                  group_id: int):
    """
    Register user or chat. Add it to database

    :param user_id: User id (peer_id if it's called in group')
    :param group_id: Group name in database
    """
    find_res = cur.execute("SELECT * FROM groups WHERE groupId=?", (group_id,)).fetchone()
    # First we check if requested group exists in database
    if find_res is not None:  # Requested group is in database
        sql = "INSERT INTO users (userId, userGroupId) VALUES (?, ?)"
        values = (user_id, group_id)
        cur.execute(sql, values)
        db.commit()
        stats.uincr()
        return find_res['groupName']
Exemple #5
0
def add_teacher(req: str, user_id: int):
    """
    Add teacher to database
    
    :param user_id: User id, who is adding
    :param req: Request
    :return: Result
    """
    if req.lower() == "имя=предмет":
        return "🤬 Чел, ты... [Имя=Предмет это лишь пример]"
    # We create list, where 0 is Teacher, and 1 is Class
    try:
        req = req.split("=")
        req = (req[0], req[1], req[1].lower(), user_id
               )  # Teacher, Class, Searchable(we search in this column), User
    except IndexError:
        return r_teacher_add_help
    sql = "INSERT INTO teachers (teacherName, teacherClass, teacherClassSearchable, userId) VALUES (?, ?, ?, ?)"
    db.cursor().execute(sql, req)
    db.commit()
    return r_teacher_add_success.format(req[0], req[1])