예제 #1
0
class Lattice(object):
    def __init__(self, actions):
        self.infimum = License()
        self.infimum.set_labels(['infimum'])
        self.infimum.set_permissions(frozenset(actions))
        self.supremum = License()
        self.supremum.set_labels(['supremum'])
        self.supremum.set_obligations(frozenset(actions))
        self.supremum.set_prohibitions(frozenset(actions))
        self.infimum.followings.append(self.supremum)
        self.supremum.precedings.append(self.infimum)
        self.licenses = []

    def len(self):
        return len(self.licenses) + 2

    def get_supremum(self):
        return self.supremum

    def get_infimum(self):
        return self.infimum

    def add_license(self, license):
        if license not in self.licenses:
            self.licenses.append(license)

    def reset(self):
        self.infimum.followings.clear()
        self.infimum.precedings.clear()
        self.supremum.followings.clear()
        self.supremum.precedings.clear()
        self.licenses.clear()
예제 #2
0
def _random_license(label):
    license = License()
    license.set_labels([str(label)])
    license.set_permissions(frozenset(_generate_set()))
    license.set_obligations(frozenset(_generate_set()))
    license.set_prohibitions(frozenset(_generate_set()))
    return license
예제 #3
0
def objectLicense(neo_license):
    obj_license = License()
    obj_license.set_labels(neo_license.labels)
    obj_license.set_permissions(frozenset(neo_license.permissions))
    obj_license.set_obligations(frozenset(neo_license.obligations))
    obj_license.set_prohibitions(frozenset(neo_license.prohibitions))
    datasets = []
    for neo_dataset in neo_license.datasets.all():
        datasets.append(objectDataset(neo_dataset))
    obj_license.set_datasets(datasets)
    return obj_license