Some completion stuff
This commit is contained in:
parent
7990cfa700
commit
ff17665cb0
2 changed files with 28 additions and 5 deletions
|
@ -1,13 +1,15 @@
|
|||
from .database import Database
|
||||
from ..const import *
|
||||
from classes.database import Database
|
||||
|
||||
from configparser import SectionProxy
|
||||
from typing import Optional, Union
|
||||
from datetime import datetime
|
||||
|
||||
from MySQLdb.cursors import DictCursor
|
||||
from MySQLdb._exceptions import IntegrityError
|
||||
from bcrypt import hashpw, gensalt
|
||||
|
||||
from const import *
|
||||
|
||||
|
||||
class Vessel:
|
||||
"""Class describing a Vessel
|
||||
|
@ -77,6 +79,9 @@ class Vessel:
|
|||
def connect(self):
|
||||
return Database(self)
|
||||
|
||||
def reconnect(self):
|
||||
self.db = self.connect()
|
||||
|
||||
@staticmethod
|
||||
def getTimestamp() -> int:
|
||||
return int(datetime.now().timestamp())
|
||||
|
@ -195,7 +200,7 @@ class Vessel:
|
|||
def setPassword(self, username: str, password: str):
|
||||
hashed = hashpw(password.encode(), gensalt(prefix=b"2b"))
|
||||
query = QUERY_USER_SET_PASSWORD
|
||||
self.db._execute(query, (password, username))
|
||||
self.db._execute(query, (hashed, username))
|
||||
|
||||
def getEnrols(self, enrol: Optional[str] = None):
|
||||
results = list(self.db._execute(QUERY_ENROL, ctype=DictCursor))
|
||||
|
@ -247,6 +252,9 @@ class Vessel:
|
|||
email = email or f"{self.getUsers(id=userid)[userid]['username']}@pin.seachefsacademy.com"
|
||||
self.db._execute(QUERY_USER_SET_EMAIL, (email, userid))
|
||||
|
||||
def setName(self, userid: int, first: str, last: str):
|
||||
self.db._execute(QUERY_USER_SET_NAME, (first, last, userid))
|
||||
|
||||
def getCustomCourseFields(self):
|
||||
results = list(self.db._execute(QUERY_COURSE_FIELDS, ctype=DictCursor))
|
||||
return results
|
||||
|
@ -264,5 +272,18 @@ class Vessel:
|
|||
results = list(self.db._execute(QUERY_MODULE_COMPLETION, (moduleid,), ctype=DictCursor))
|
||||
return results
|
||||
|
||||
def setCourseModuleCompletion(self, moduleid: int, userid: int):
|
||||
try:
|
||||
self.db._execute(QUERY_INSERT_MODULE_COMPLETION, (moduleid, userid, Vessel.getTimestamp()))
|
||||
except IntegrityError:
|
||||
pass # Module completion record already exists
|
||||
self.db._execute(QUERY_UPDATE_MODULE_COMPLETION, (moduleid, userid))
|
||||
|
||||
def setCourseCompletion(self, courseid: int, userid: int):
|
||||
modules = self.getCourseModules(courseid)
|
||||
|
||||
for module in modules:
|
||||
self.setCourseModuleCompletion(module["id"], userid)
|
||||
|
||||
def writeLog(self, event, data):
|
||||
self.db._execute(QUERY_LOG_INSERT, (event, data))
|
||||
self.db._execute(QUERY_LOG_INSERT, (event, data))
|
||||
|
|
|
@ -9,11 +9,11 @@ QUERY_USER_INFO_FIELD = "SELECT * FROM mdl_user_info_field"
|
|||
QUERY_USER_INFO_DATA = "SELECT * FROM mdl_user_info_data"
|
||||
QUERY_USER_SET_PASSWORD = "UPDATE mdl_user SET password = %s WHERE username = %s"
|
||||
QUERY_USER_SET_EMAIL = "UPDATE mdl_user SET email = %s WHERE id = %s"
|
||||
QUERY_USER_SET_NAME = "UPDATE mdl_user SET firstname = %s, lastname = %s WHERE id = %s"
|
||||
QUERY_USER_CREATE = "INSERT INTO mdl_user(username, email, firstname, lastname, timecreated, timemodified, mnethostid, confirmed) VALUES (%s, %s, %s, %s, %s, %s, 1, 1)"
|
||||
QUERY_ASSIGN_ROLE = "INSERT INTO mdl_role_assignments(roleid, contextid, userid, timemodified) VALUES (%s, %s, %s, %s)"
|
||||
QUERY_GET_ROLE = "SELECT * FROM mdl_role_assignments WHERE contextid = %s AND userid = %s"
|
||||
QUERY_GET_USERID = "SELECT * FROM mdl_user WHERE username = %s"
|
||||
QUERY_USER_GET_PASSWORD = "SELECT password FROM mdl_user WHERE id = %s"
|
||||
|
||||
QUERY_COURSE = "SELECT * FROM mdl_course"
|
||||
QUERY_ENROL = "SELECT * FROM mdl_enrol"
|
||||
|
@ -25,6 +25,8 @@ QUERY_COURSE_CONTEXT_REVERSE = "SELECT * FROM mdl_context WHERE id = %s"
|
|||
QUERY_COURSE_FIELDS = "SELECT * FROM mdl_customfield_category cat JOIN mdl_customfield_field fld ON fld.categoryid = cat.id JOIN mdl_customfield_data dat ON dat.fieldid = fld.id"
|
||||
QUERY_COURSE_MODULES = "SELECT * FROM mdl_course_modules WHERE course = %s"
|
||||
QUERY_MODULE_COMPLETION = "SELECT * FROM mdl_course_modules_completion WHERE coursemoduleid = %s"
|
||||
QUERY_INSERT_MODULE_COMPLETION = "INSERT INTO mdl_course_modules_completion(coursemoduleid, userid, completionstate, timemodified) VALUES (%s, %s, 1, %s)"
|
||||
QUERY_UPDATE_MODULE_COMPLETION = "UPDATE mdl_course_modules_completion SET completionstate = 1 WHERE coursemoduleid = %s AND userid = %s"
|
||||
|
||||
QUERY_LOG_INSERT = "INSERT INTO mdl_logstore_standard_log(eventname, other, origin) VALUES (%s, %s, 'monster')"
|
||||
|
||||
|
|
Loading…
Reference in a new issue