Esempio n. 1
0
	def invite_teacher(self, username):
		"""
		Приглашение нового учителя по username
		"""
		user = UserDB.get_user(self.__id)
		if user and user['type_u']=='teacher':
			UserDB.create_teacher_invitation(username)
		else:
			raise TeacherAccessDeniedError("Expected Teacher")
Esempio n. 2
0
	def create_course(self, course_name):
		"""
		Вызывается у teacher, создает курс
		:param course_name: строка
		:return: Course
		"""
		user = UserDB.get_user(self.__id)
		if user and user['type_u']=='teacher':
			return Course.Course(owner_id=self.__id, name=course_name)
		else:
			raise TeacherAccessDeniedError("Expected teacher")
Esempio n. 3
0
	def __init__(self, id, username='', name='', group='', email=''):
		"""
		Чтобы получить пользователя из базы данных используй только параметр id
		Чтобы зарегистрировать студента в базу данных используй id, name, group, email
		Чтобы попробовать(try) зарегистрировать учителя в базу данных, используй id, username. Если учителя с таким username не ожидается, будет вызвана
		:param id: chat_id пользователя int
		:param username: username учителя
		"""
		# Checking if constructor parameters was used correctry
		if not((id and not(username or name or group or email)) or (id and username and name and not(group or email)) or (id and name and group and email and not(username))):
			raise InterrelatedParametersError(("id", "username", "name"), ("id", "name", "group", "email"), ("id"))
		self.__id = id
		if name: # Create user
			type_u = 'student'
			if username: # Trying to create teacher
				if UserDB.check_teacher_invitation(username):
					UserDB.delete_teacher_invitation(username)
					type_u = 'teacher'
				else:
					raise TeacherAccessDeniedError("Expected teacher")
			UserDB.create_user(self.__id, name, group, email, type_u)
Esempio n. 4
0
def get_marks(course_id):
    file_name = 'ExcelData/Marks_{0}.xlsx'.format(course_id)
    book = xlsxwriter.Workbook(file_name)
    sheet = book.add_worksheet('Успеваемость')
    h_sheet = book.add_worksheet('Hidden')
    h_sheet.hide()

    course = CourseDB.get_course(course_id)

    centered_format = book.add_format({
        'align': 'center',
        'valign': 'vcenter',
        'border': 1
    })
    users = list([UserDB.get_user(u_id) for u_id in course['participants']])
    sheet.merge_range(0, 0, 1, 0, 'Студенты', centered_format)
    sheet.set_column(0, 0, len(max([user['name'] for user in users])) + 4)

    task_count = len(course['task_numbers'])
    sheet.merge_range(0, 1, 1, 1 + task_count, 'Задачи', centered_format)
    sheet.write(2, 1, 'Название')
    sheet.write(3, 1, 'Макс. балл')
    sheet.write(4, 1, 'Дедлайн')

    for i, task in enumerate([
            CourseDB.get_task(course_id, t_id)
            for t_id in course['task_numbers']
    ]):
        sheet.write(2, 2 + i, task['name'])
        h_sheet.write(2, 2 + i, task['task_id'])
        sheet.write(3, 2 + i, task['highest_mark'])
        sheet.write(4, 2 + i, task['deadline'])

    for i, user in enumerate(users):
        sheet.write(i + 5, 0, str(i + 1) + '. ' + user['name'])
        h_sheet.write(i + 5, 0, user['u_id'])

        for j, mark in enumerate([
                CourseDB.get_mark(course_id, t_id, user['u_id'])
                for t_id in course['task_numbers']
        ]):
            sheet.write(i + 5, j + 2, mark['mark'])

    book.close()
    return file_name
Esempio n. 5
0
def get_attendance(course_id):
    file_name = 'ExcelData/Attendance_{0}.xlsx'.format(course_id)
    book = xlsxwriter.Workbook(file_name)
    sheet = book.add_worksheet('Посещаемость')
    h_sheet = book.add_worksheet('Hidden')
    h_sheet.hide()

    course = CourseDB.get_course(course_id)

    centered_format = book.add_format({
        'align': 'center',
        'valign': 'vcenter',
        'border': 1
    })
    users = list([UserDB.get_user(u_id) for u_id in course['participants']])
    sheet.merge_range(0, 0, 1, 0, 'Студенты', centered_format)
    sheet.set_column(0, 0, len(max([user['name'] for user in users])) + 4)

    cw_count = len(course['cw_numbers'])
    sheet.merge_range(0, 1, 1, cw_count, 'Посещаемость', centered_format)
    for i, class_work in enumerate([
            CourseDB.get_classwork(course_id, c_id)
            for c_id in course['cw_numbers']
    ]):
        sheet.write(2, i + 1, class_work['date'])
        h_sheet.write(2, i + 1, class_work['classwork_id'])

    for i, user in enumerate(users):
        sheet.write(i + 3, 0, str(i + 1) + '. ' + user['name'])
        h_sheet.write(i + 3, 0, user['u_id'])

        for j, attendance in enumerate([
                CourseDB.get_attendance(course_id, c_id, user['u_id'])
                for c_id in course['cw_numbers']
        ]):
            sheet.write(i + 3, j + 1, attendance['value'])

    book.close()
    return file_name
Esempio n. 6
0
	def participation(self): # Участие в курсах
		user = UserDB.get_user(self.__id)
		return tuple(Course.Course(course_id) for course_id in UserDB.get_user_courses(self.__id)) if user else []
Esempio n. 7
0
	def possessions(self): # Курсы под владением
		user = UserDB.get_user(self.__id)
		return tuple(Course.Course(course_id) for course_id in UserDB.get_teacher_courses(self.__id)) if user else []
Esempio n. 8
0
	def name(self, name):
		UserDB.set_user(self.__id, 'name', name)
Esempio n. 9
0
	def name(self):
		user = UserDB.get_user(self.__id)
		return user["name"] if user else ""
Esempio n. 10
0
	def type_u(self, type_u):
		if type_u in ('student', 'teacher'):
			UserDB.set_user(self.__id, 'type_u', type_u)
		else:
			raise UserTypeError(type_u)
Esempio n. 11
0
	def type_u(self):
		user = UserDB.get_user(self.__id)
		return user["type_u"] if user else 'unlogined'