vulyk.ext package¶
Submodules¶
vulyk.ext.leaderboard module¶
-
class
vulyk.ext.leaderboard.
LeaderBoardManager
(task_type_name: str, answer_model: vulyk.models.tasks.AbstractAnswer, user_model: type)[source]¶ Bases:
object
-
get_leaderboard
(limit: int) → List[Dict[str, Union[vulyk.models.user.User, int]]][source]¶ Find users who contributed the most
- Parameters
limit (int) – number of top users to return
- Returns
List of dicts {user: user_obj, freq: count}
- Return type
List[Dict[str, Union[User, int]]]
-
vulyk.ext.storage module¶
Copy files from all static folders to root folder.
vulyk.ext.worksession module¶
-
class
vulyk.ext.worksession.
WorkSessionManager
(work_session_model: Type[U])[source]¶ Bases:
object
This class is responsible for accounting of work-sessions. Every time we give a task to user, a new session record is being created. If user skips the task, we mark it as skipped and delete the session. When user finishes the task, we close the session having added the timestamp of the event. Thus we’re able to perform any kind of data mining and stats counting using the data later.
Could be overridden in plugins.
-
U
¶ alias of TypeVar(‘U’)
-
delete_work_session
(task: vulyk.models.tasks.AbstractTask, user_id: bson.objectid.ObjectId) → None[source]¶ Deletes current WorkSession if skipped.
- Parameters
task (AbstractTask) – Given task
user_id (ObjectId) – ID of user, who skips a task
- Raises
WorkSessionLookUpError – session is not found; WorkSessionUpdateError – can not delete the session
-
end_work_session
(task: vulyk.models.tasks.AbstractTask, user_id: bson.objectid.ObjectId, answer: vulyk.models.tasks.AbstractAnswer) → None[source]¶ Ends given WorkSession for given user. This is the route for correctly finished tasks: given session to be marked as closed and a timestamp of the event to be saved.
- Parameters
task (AbstractTask) – Given task
user_id (ObjectId) – ID of user, who finishes a task
answer (AbstractAnswer) – Given answer
- Raises
WorkSessionLookUpError – session is not found; WorkSessionUpdateError – can not close the session
-
record_activity
(task: vulyk.models.tasks.AbstractTask, user_id: bson.objectid.ObjectId, seconds: int) → None[source]¶ Update an activity counter. The intention is to find out how much time was actually spent working on the task, excluding sexting, brewing coffee and jogging.
- Parameters
task (AbstractTask) – The task the session belongs to.
user_id (ObjectId) – ID of current user
seconds (int) – User was active for
- Raises
WorkSessionLookUpError – session is not found; WorkSessionUpdateError – can not update the session
-
start_work_session
(task: vulyk.models.tasks.AbstractTask, user_id: bson.objectid.ObjectId) → None[source]¶ Starts new WorkSession for given user. By default we use datetime.now in the underlying model to save in start_time field.
A user should finish a certain task only once, that’s why we perform an upsert below.
- Parameters
task (AbstractTask) – Given task
user_id (ObjectId) – ID of user, who gets new task
- Raises
WorkSessionUpdateError – can not start a session
-