Exemplo n.º 1
0
def mkdir_course_share(course):
    try:
        dir_courseprivate = Dirname.courseprivate(course)
        _mkdir(dir_courseprivate, gid = course.groupid, mode = 0o770)
        dir_coursepublic = Dirname.coursepublic(course)
        _mkdir(dir_coursepublic, gid = course.groupid, mode = 0o750)
        logger.info("Course dir created for course %s" % course)
    except KeyError as e:
        logger.error("Cannot create course dir, KOOPLEX['mountpoint']['course'] is missing")
Exemplo n.º 2
0
def revokeacl_course_share(usercoursebinding):
    try:
        dir_coursepublic = Dirname.coursepublic(usercoursebinding.course)
        dir_courseprivate = Dirname.courseprivate(usercoursebinding.course)
        if usercoursebinding.is_teacher:
            _revokeaccess(usercoursebinding.user, dir_courseprivate)
        _revokeaccess(usercoursebinding.user, dir_coursepublic)
    except Exception as e:
        logger.error("Cannot revoke acl %s -- %s" % (usercoursebinding, e))
Exemplo n.º 3
0
def revokeacl_course_share(usercoursebinding):
    try:
        dir_coursepublic = Dirname.coursepublic(usercoursebinding.course)
        dir_courseprivate = Dirname.courseprivate(usercoursebinding.course)
        if usercoursebinding.is_teacher:
            _revokeaccess(usercoursebinding.user, dir_courseprivate)
        _revokeaccess(usercoursebinding.user, dir_coursepublic)
    except Exception as e:
        logger.error("Cannot revoke acl %s -- %s" % (usercoursebinding, e))
Exemplo n.º 4
0
def grantacl_course_share(usercoursebinding):
    try:
        dir_coursepublic = Dirname.coursepublic(usercoursebinding.course)
        dir_courseprivate = Dirname.courseprivate(usercoursebinding.course)
        if usercoursebinding.is_teacher:
            _grantaccess(usercoursebinding.user, dir_coursepublic)
            _grantaccess(usercoursebinding.user, dir_courseprivate)
        else:
            _grantaccess(usercoursebinding.user, dir_coursepublic, acl='rX')
    except Exception as e:
        logger.error("Cannot grant acl %s -- %s" % (usercoursebinding, e))
Exemplo n.º 5
0
def mkdir_course_share(course):
    try:
        dir_courseprivate = Dirname.courseprivate(course)
        _mkdir(dir_courseprivate, gid=course.groupid, mode=0o770)
        dir_coursepublic = Dirname.coursepublic(course)
        _mkdir(dir_coursepublic, gid=course.groupid, mode=0o750)
        logger.info("Course dir created for course %s" % course)
    except KeyError as e:
        logger.error(
            "Cannot create course dir, KOOPLEX['mountpoint']['course'] is missing"
        )
Exemplo n.º 6
0
def grantacl_course_share(usercoursebinding):
    try:
        dir_coursepublic = Dirname.coursepublic(usercoursebinding.course)
        dir_courseprivate = Dirname.courseprivate(usercoursebinding.course)
        if usercoursebinding.is_teacher:
            _grantaccess(usercoursebinding.user, dir_coursepublic)
            _grantaccess(usercoursebinding.user, dir_courseprivate)
        else:
            _grantaccess(usercoursebinding.user, dir_coursepublic, acl = 'rX')
    except Exception as e:
        logger.error("Cannot grant acl %s -- %s" % (usercoursebinding, e))
Exemplo n.º 7
0
def snapshot_report(report):
    #create permanent dir
    dir_source = os.path.join(Dirname.reportprepare(report.creator),
                              report.folder)
    dir_target = os.path.join(Dirname.report(report), 'latest')
    _copy_dir(dir_source, dir_target, remove=False)
    #create tagged dir, if there is any tag
    if report.tag_name:
        dir_source = os.path.join(Dirname.reportprepare(report.creator),
                                  report.folder)
        dir_target = Dirname.report_with_tag(report)
        _copy_dir(dir_source, dir_target, remove=False)

    dir_reportroot = Dirname.reportroot(report.creator)
    _grantaccess(report.creator, dir_reportroot, acl='rX')
Exemplo n.º 8
0
def revokeacl_course_workdir(usercoursebinding):
    try:
        if usercoursebinding.is_teacher:
            dir_usercourse = Dirname.courseworkdir(usercoursebinding)
            _revokeaccess(usercoursebinding.user, dir_usercourse)
    except Exception as e:
        logger.error("Cannot revoke acl %s -- %s" % (usercoursebinding, e))
Exemplo n.º 9
0
def grantacl_course_workdir(usercoursebinding):
    try:
        if usercoursebinding.is_teacher:
            dir_usercourse = Dirname.courseworkdir(usercoursebinding)
            _grantaccess(usercoursebinding.user, dir_usercourse, acl = 'rX') #NOTE: formerly rw access was granted
    except Exception as e:
        logger.error("Cannot grant acl %s -- %s" % (usercoursebinding, e))
Exemplo n.º 10
0
def revokeacl_course_workdir(usercoursebinding):
    try:
        if usercoursebinding.is_teacher:
            dir_usercourse = Dirname.courseworkdir(usercoursebinding)
            _revokeaccess(usercoursebinding.user, dir_usercourse)
    except Exception as e:
        logger.error("Cannot revoke acl %s -- %s" % (usercoursebinding, e))
Exemplo n.º 11
0
def mkdir_home(user):
    """
    @summary: create a home directory for the user
    @param user: the user
    @type user: kooplex.hub.models.User
    """
    dir_home = Dirname.userhome(user)
    _mkdir(dir_home, uid=user.profile.userid, gid=user.profile.groupid)
Exemplo n.º 12
0
def grantacl_course_workdir(usercoursebinding):
    try:
        if usercoursebinding.is_teacher:
            dir_usercourse = Dirname.courseworkdir(usercoursebinding)
            _grantaccess(usercoursebinding.user, dir_usercourse,
                         acl='rX')  #NOTE: formerly rw access was granted
    except Exception as e:
        logger.error("Cannot grant acl %s -- %s" % (usercoursebinding, e))
Exemplo n.º 13
0
def mkdir_home(user):
    """
    @summary: create a home directory for the user
    @param user: the user
    @type user: kooplex.hub.models.User
    """
    dir_home = Dirname.userhome(user)
    _mkdir(dir_home, uid = user.profile.userid, gid = user.profile.groupid)
Exemplo n.º 14
0
def mkdir_course_workdir(usercoursebinding):
    try:
        dir_usercourse = Dirname.usercourseworkdir(usercoursebinding)
        uid = usercoursebinding.user.profile.userid
        gid = usercoursebinding.course.groupid
        _mkdir(dir_usercourse, uid = uid, gid = gid, mode = 0o770)
    except KeyError as e:
        logger.error("Cannot create course dir, KOOPLEX['mountpoint']['usercourse'] is missing")
Exemplo n.º 15
0
def rmdir_course_workdir(course):
    try:
        dir_usercourse = Dirname.course(course)
        dir_util.remove_tree(dir_usercourse)
    except KeyError as e:
        logger.error("Cannot remove course dir, KOOPLEX['mountpoint']['usercourse'] is missing")
    except Exception as e:
        logger.error("Cannot remove course %s workdir -- %s" % (course, e))
Exemplo n.º 16
0
def rmdir_course_workdir(course):
    try:
        dir_usercourse = Dirname.course(course)
        dir_util.remove_tree(dir_usercourse)
    except KeyError as e:
        logger.error(
            "Cannot remove course dir, KOOPLEX['mountpoint']['usercourse'] is missing"
        )
    except Exception as e:
        logger.error("Cannot remove course %s workdir -- %s" % (course, e))
Exemplo n.º 17
0
def cp_userassignment2correct(userassignmentbinding):
    try:
        archivefile = Filename.assignmentcollection(userassignmentbinding)
        dir_target = Dirname.assignmentcorrectdir(userassignmentbinding)
        with tarfile.open(archivefile, mode='r') as archive:
            archive.extractall(path = dir_target)
        _grantaccess(userassignmentbinding.corrector, dir_target, acl = 'rwX')
        _grantaccess(userassignmentbinding.user, dir_target, acl = 'rX')
    except Exception as e:
        logger.error("Cannot copy correct dir %s -- %s" % (userassignmentbinding, e))
Exemplo n.º 18
0
def mkdir_course_workdir(usercoursebinding):
    try:
        dir_usercourse = Dirname.usercourseworkdir(usercoursebinding)
        uid = usercoursebinding.user.profile.userid
        gid = usercoursebinding.course.groupid
        _mkdir(dir_usercourse, uid=uid, gid=gid, mode=0o770)
    except KeyError as e:
        logger.error(
            "Cannot create course dir, KOOPLEX['mountpoint']['usercourse'] is missing"
        )
Exemplo n.º 19
0
def cp_userassignment2correct(userassignmentbinding):
    try:
        archivefile = Filename.assignmentcollection(userassignmentbinding)
        dir_target = Dirname.assignmentcorrectdir(userassignmentbinding)
        with tarfile.open(archivefile, mode='r') as archive:
            archive.extractall(path=dir_target)
        _grantaccess(userassignmentbinding.corrector, dir_target, acl='rwX')
        _grantaccess(userassignmentbinding.user, dir_target, acl='rX')
    except Exception as e:
        logger.error("Cannot copy correct dir %s -- %s" %
                     (userassignmentbinding, e))
Exemplo n.º 20
0
def cp_assignmentsnapshot(userassignmentbinding):
    from hub.models import UserCourseBinding
    try:
        assignment = userassignmentbinding.assignment
        archivefile = Filename.assignmentsnapshot(assignment)
        dir_target = Dirname.assignmentworkdir(userassignmentbinding)
        with tarfile.open(archivefile, mode = 'r') as archive:
            archive.extractall(path = dir_target)
        _revokeaccess(userassignmentbinding.user, dir_target)
        for binding in UserCourseBinding.objects.filter(course = assignment.coursecode.course, is_teacher = True):
            _grantaccess(binding.user, dir_target, acl = 'rX')
    except Exception as e:
        logger.error("Cannot cp snapshot dir %s -- %s" % (userassignmentbinding, e))
Exemplo n.º 21
0
def prepare_dashboardreport_withinitcell(report):
    import json
    fn = os.path.join(Dirname.report(report), report.index)
    d = json.load(open(fn))
    for ic in range(len(d['cells'])):
        d['cells'][ic]['metadata']['init_cell'] = True

    # Get rid of unnecessray info
    kernel = d['metadata']['kernelspec']
    language = d['metadata']['language_info']
    d['metadata'].clear()
    d['metadata']['kernelspec'] = kernel
    d['metadata']['language_info'] = language
    json.dump(d, open(fn, 'w'))
Exemplo n.º 22
0
def clonescript_vcpcache(vcprojectprojectbinding):
    vcp = vcprojectprojectbinding.vcproject
    profile = vcp.token.user.profile
    dir_target = Dirname.vcpcache(vcprojectprojectbinding.vcproject)
    fn_script = os.path.join(dir_target, "clone.sh")
    script = """
#! /bin/bash

set -v

mv $0 $(mktemp)

git clone ssh://git@%s/%s %s
    """ % (vcp.token.repository.domain, vcp.project_name, dir_target)
    _createfile(fn_script, script, uid = profile.userid, gid = profile.groupid)
Exemplo n.º 23
0
def cp_assignmentsnapshot(userassignmentbinding):
    from hub.models import UserCourseBinding
    try:
        assignment = userassignmentbinding.assignment
        archivefile = Filename.assignmentsnapshot(assignment)
        dir_target = Dirname.assignmentworkdir(userassignmentbinding)
        with tarfile.open(archivefile, mode='r') as archive:
            archive.extractall(path=dir_target)
        _revokeaccess(userassignmentbinding.user, dir_target)
        for binding in UserCourseBinding.objects.filter(
                course=assignment.coursecode.course, is_teacher=True):
            _grantaccess(binding.user, dir_target, acl='rX')
    except Exception as e:
        logger.error("Cannot cp snapshot dir %s -- %s" %
                     (userassignmentbinding, e))
Exemplo n.º 24
0
def garbage_report(report):
    #remove tagged report
    dir_source = Dirname.report_with_tag(report)
    garbage = Filename.report_garbage(report)
    _archivedir(dir_source, garbage, remove=True)
Exemplo n.º 25
0
def garbagedir_share(userprojectbinding):
    dir_share = Dirname.share(userprojectbinding)
    garbage = Filename.share_garbage(userprojectbinding)
    _archivedir(dir_share, garbage)
Exemplo n.º 26
0
def archivedir_workdir(userprojectbinding):
    dir_workdir = Dirname.workdir(userprojectbinding)
    target = Filename.workdir_archive(userprojectbinding)
    _archivedir(dir_workdir, target)
Exemplo n.º 27
0
def revokeaccess_share(userprojectbinding):
    user = userprojectbinding.user
    dir_share = Dirname.share(userprojectbinding)
    _revokeaccess(user, dir_share)
Exemplo n.º 28
0
def archivedir_vcpcache(vcproject):
    dir_cache = Dirname.vcpcache(vcproject)
    target = Filename.vcpcache_archive(vcproject)
    _archivedir(dir_cache, target)
Exemplo n.º 29
0
def cp_userassignment(userassignmentbinding):
    dir_source = Dirname.assignmentworkdir(userassignmentbinding)
    archive = Filename.assignmentcollection(userassignmentbinding)
    _archivedir(dir_source,
                archive,
                remove=userassignmentbinding.assignment.remove_collected)
Exemplo n.º 30
0
def snapshot_assignment(assignment):
    dir_source = Dirname.assignmentsource(assignment)
    archive = Filename.assignmentsnapshot(assignment)
    _archivedir(dir_source, archive, remove=False)
Exemplo n.º 31
0
def mkdir_workdir(userprojectbinding):
    dir_workdir = Dirname.workdir(userprojectbinding)
    _mkdir(dir_workdir,
           uid=userprojectbinding.user.profile.userid,
           gid=userprojectbinding.user.profile.groupid)
Exemplo n.º 32
0
def archive_course_workdir(usercoursebinding):
    if usercoursebinding.is_teacher:
        return
    dir_usercourse = Dirname.usercourseworkdir(usercoursebinding)
    archive = Filename.courseworkdir_archive(usercoursebinding)
    _archivedir(dir_usercourse, archive)
Exemplo n.º 33
0
def archivedir_workdir(userprojectbinding):
    dir_workdir = Dirname.workdir(userprojectbinding)
    target = Filename.workdir_archive(userprojectbinding)
    _archivedir(dir_workdir, target)
Exemplo n.º 34
0
def check_reportprepare(user):
    dir_reportprepare = Dirname.reportprepare(user)
    assert os.path.exists(
        dir_reportprepare), "Folder %s does not exist" % dir_reportprepare
Exemplo n.º 35
0
def mkdir_usergarbage(user):
    dir_usergarbage = Dirname.usergarbage(user)
    _mkdir(dir_usergarbage, uid=user.profile.userid, gid=user.profile.groupid)
Exemplo n.º 36
0
def revokeaccess_share(userprojectbinding):
    user = userprojectbinding.user
    dir_share = Dirname.share(userprojectbinding)
    _revokeaccess(user, dir_share)
Exemplo n.º 37
0
def grantaccess_share(userprojectbinding):
    user = userprojectbinding.user
    dir_share = Dirname.share(userprojectbinding)
    _grantaccess(user, dir_share)
Exemplo n.º 38
0
def grantaccess_share(userprojectbinding):
    user = userprojectbinding.user
    dir_share = Dirname.share(userprojectbinding)
    _grantaccess(user, dir_share)
Exemplo n.º 39
0
def mkdir_workdir(userprojectbinding):
    dir_workdir = Dirname.workdir(userprojectbinding)
    _mkdir(dir_workdir, uid = userprojectbinding.user.profile.userid, gid = userprojectbinding.user.profile.groupid)
Exemplo n.º 40
0
def check_reportprepare(user):
    dir_reportprepare = Dirname.reportprepare(user)
Exemplo n.º 41
0
def mkdir_vcpcache(vcprojectprojectbinding):
    profile = vcprojectprojectbinding.vcproject.token.user.profile
    dir_cache = Dirname.vcpcache(vcprojectprojectbinding.vcproject)
    _mkdir(dir_cache, uid = profile.userid, gid = profile.groupid)
    clonescript_vcpcache(vcprojectprojectbinding)
Exemplo n.º 42
0
def check_reportprepare(user):
    dir_reportprepare = Dirname.reportprepare(user)
    assert os.path.exists(dir_reportprepare), "Folder %s does not exist" % dir_reportprepare
Exemplo n.º 43
0
def archivedir_vcpcache(vcproject):
    dir_cache = Dirname.vcpcache(vcproject)
    target = Filename.vcpcache_archive(vcproject)
    _archivedir(dir_cache, target)
Exemplo n.º 44
0
def mkdir_reportprepare(user):
    dir_reportprepare = Dirname.reportprepare(user)
    _mkdir(dir_reportprepare, uid = user.profile.userid, gid = user.profile.groupid)
Exemplo n.º 45
0
def mkdir_share(userprojectbinding):
    project = userprojectbinding.project
    dir_share = Dirname.share(userprojectbinding)
    _mkdir(dir_share, uid=project.fs_uid, gid=project.fs_gid)
Exemplo n.º 46
0
def snapshot_report(report):
    dir_source = os.path.join(Dirname.reportprepare(report.creator), report.folder)
    dir_target = Dirname.report(report)
    _copy_dir(dir_source, dir_target, remove = False)
    dir_reportroot = Dirname.reportroot(report.creator)
    _grantaccess(report.creator, dir_reportroot, acl = 'rX')
Exemplo n.º 47
0
def garbagedir_course_share(course):
    dir_course = Dirname.course(course)
    garbage = Filename.course_garbage(course)
    _archivedir(dir_course, garbage)
Exemplo n.º 48
0
def garbage_report(report):
    dir_source = Dirname.report(report)
    garbage = Filename.report_garbage(report)
    _archivedir(dir_source, garbage, remove = True)
Exemplo n.º 49
0
def mkdir_reportprepare(user):
    dir_reportprepare = Dirname.reportprepare(user)
    _mkdir(dir_reportprepare,
           uid=user.profile.userid,
           gid=user.profile.groupid)
Exemplo n.º 50
0
def mkdir_share(userprojectbinding):
    project = userprojectbinding.project
    dir_share = Dirname.share(userprojectbinding)
    _mkdir(dir_share, uid = project.fs_uid, gid = project.fs_gid)
Exemplo n.º 51
0
def archive_course_workdir(usercoursebinding):
    if usercoursebinding.is_teacher:
        return
    dir_usercourse = Dirname.usercourseworkdir(usercoursebinding)
    archive = Filename.courseworkdir_archive(usercoursebinding)
    _archivedir(dir_usercourse, archive)
Exemplo n.º 52
0
def garbagedir_share(userprojectbinding):
    dir_share = Dirname.share(userprojectbinding)
    garbage = Filename.share_garbage(userprojectbinding)
    _archivedir(dir_share, garbage)
Exemplo n.º 53
0
def snapshot_assignment(assignment):
    dir_source = Dirname.assignmentsource(assignment)
    archive = Filename.assignmentsnapshot(assignment)
    _archivedir(dir_source, archive, remove = False)
Exemplo n.º 54
0
def garbagedir_course_share(course):
    dir_course = Dirname.course(course)
    garbage = Filename.course_garbage(course)
    _archivedir(dir_course, garbage)
Exemplo n.º 55
0
def cp_userassignment(userassignmentbinding):
    dir_source = Dirname.assignmentworkdir(userassignmentbinding)
    archive = Filename.assignmentcollection(userassignmentbinding)
    _archivedir(dir_source, archive, remove = userassignmentbinding.assignment.remove_collected)
Exemplo n.º 56
0
def check_home(user):
    dir_home = Dirname.userhome(user)
    assert os.path.exists(dir_home), "Folder %s does not exist" % dir_home
Exemplo n.º 57
0
def check_home(user):
    dir_home = Dirname.userhome(user)
    assert os.path.exists(dir_home), "Folder %s does not exist" % dir_home
Exemplo n.º 58
0
def mkdir_usergarbage(user):
    dir_usergarbage = Dirname.usergarbage(user)
    _mkdir(dir_usergarbage, uid = user.profile.userid, gid = user.profile.groupid)
Exemplo n.º 59
0
def garbagedir_home(user):
    dir_home = Dirname.userhome(user)
    garbage = Filename.userhome_garbage(user)
    _archivedir(dir_home, garbage)
Exemplo n.º 60
0
def check_usergarbage(user):
    dir_usergarbage = Dirname.usergarbage(user)
    assert os.path.exists(
        dir_usergarbage), "Folder %s does not exist" % dir_usergarbage