import logging
import uuid
from os.path import exists
from os import makedirs, rename, rmdir, walk, linesep
from libctm.environment import get_env
from libctm.storage import artifact
from libctm.user import get_user_by_name, get_user
_groups = {}
class Group:
def __init__(self, title, members, assignments,
history=None,
achievements=None):
self.title = title
self.members = members
self.assignments = assignments
self.history = history
self.achievements = achievements
def create_group(name):
path = get_env() + '/groups/' + name
if not exists(path):
makedirs(path)
else:
logging.error("Group already exist %s" % name)
exit(1)
def remove_group(name, hard=False):
path = get_env() + '/groups/' + name
if not exists(path):
logging.error('No such group %s' % name)
exit(1)
if not hard:
new_path = get_env() + '/groups/.' + name
if exists(new_path):
logging.error('There is already an archived group called %s' % name)
exit(1)
rename(path, new_path)
else:
rmdir(path)
def get_groups():
for dirname, dirnames, filenames in walk(get_env() + '/groups'):
return dirnames
@artifact('users')
def add_user_to_group(group, user, f):
id = get_user_by_name(user) + linesep
if id in f.readlines():
logging.error("User already defined %s in %s" % (user, group))
exit(1)
f.write(id)
@artifact('users', 'r')
def get_group_members(group, f):
return [get_user(x.strip()).strip() for x in f.readlines()]
@artifact('achievements')
def add_achievement_to_group(group, achievement, f):
id = uuid.uuid1()
# TODO file structure for objects
ctm.zip_zip
版权申诉
129 浏览量
2022-09-14
23:13:07
上传
评论
收藏 20KB ZIP 举报
APei
- 粉丝: 63
- 资源: 1万+
最新资源
- 基于QT+C++的智能云监护仪项目,能够实时显示使用者心电、血氧、血压波形及其它各种参数+源码(毕业设计&课程设计&项目开发)
- 基于java开发的app接收硬件端传输的心音信号,具有显示心音波形,发出心音的功能+源码(毕业设计&课程设计&项目开发)
- Python 程序语言设计模式思路-行为型模式:职责链模式:将请求从一个处理者传递到下一个处理者
- 9241703124789646.16健身系统2.apk
- postgresql-16.3-1-windows-x64.exe
- Python 程序语言设计模式思路-结构型模式:装饰器讲解及利用Python装饰器模式实现高效日志记录和性能测试
- 基于YOLOv5和DeepSORT的多目标跟踪仿真与记录
- Python 程序语言设计模式思路-创建型模式:原型模式:通过复制现有对象来创建新对象,面向对象编程
- 卸载软件geek卸载软件geek
- Python 程序语言设计模式思路-创建型模式:单例模式,确保一个类的唯一实例(装饰器)面向对象编程、继承
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈