Example #1
0
def _linear_order(licenses, limit=144):
    # More than 144 is not possible here
    if limit > 144:
        limit = 144
    label = 0
    obligations = []
    prohibitions = []
    licenses.append(License())
    licenses[-1].set_labels([str(label)])
    # obligations
    for action in ODRL.ACTIONS:
        if len(licenses) < limit:
            label += 1
            obligations.append(action)
            licenses.append(License())
            licenses[-1].set_labels([str(label)])
            licenses[-1].set_obligations(frozenset(obligations))
    # prohibitions
    for action in ODRL.ACTIONS:
        if len(licenses) < limit:
            label += 1
            prohibitions.append(action)
            licenses.append(License())
            licenses[-1].set_labels([str(label)])
            licenses[-1].set_obligations(frozenset(obligations))
            licenses[-1].set_prohibitions(frozenset(prohibitions))
Example #2
0
 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 = []
Example #3
0
def _lattice(licenses, nb_actions, consolidated=True):
    actions = ODRL.ACTIONS[:nb_actions]
    if not consolidated:
        for comb_perm in _all_actions_combinations(actions):
            for permission_set in comb_perm:
                permissions = frozenset(permission_set)
                for comb_oblig in _all_actions_combinations(actions):
                    for obligation_set in comb_oblig:
                        obligations = frozenset(obligation_set)
                        if permissions.isdisjoint(obligations):
                            for comb_prohib in _all_actions_combinations(
                                    actions):
                                for prohibition_set in comb_prohib:
                                    prohibitions = frozenset(prohibition_set)
                                    if permissions.isdisjoint(
                                            prohibitions
                                    ) and obligations.isdisjoint(prohibitions):
                                        if len(permissions) + len(
                                                prohibitions) + len(
                                                    obligations) > 0:
                                            licenses.append(License())
                                            licenses[-1].set_labels([
                                                '{}{}{}'.format(
                                                    permissions, prohibitions,
                                                    obligations)
                                            ])
                                            licenses[-1].set_permissions(
                                                permissions)
                                            licenses[-1].set_obligations(
                                                obligations)
                                            licenses[-1].set_prohibitions(
                                                prohibitions)
    else:
        for comb_actions in _all_actions_combinations(actions):
            for other_sets in comb_actions:
                permissions = frozenset(actions) - frozenset(other_sets)
                for comb_other_actions in _all_actions_combinations(
                        other_sets):
                    for last_set in comb_other_actions:
                        prohibitions = frozenset(last_set)
                        obligations = frozenset(other_sets) - prohibitions
                        if len(permissions) + len(prohibitions) + len(
                                obligations) > 0:
                            licenses.append(License())
                            licenses[-1].set_labels([
                                '{}{}{}'.format(permissions, prohibitions,
                                                obligations)
                            ])
                            licenses[-1].set_permissions(permissions)
                            licenses[-1].set_obligations(obligations)
                            licenses[-1].set_prohibitions(prohibitions)
Example #4
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
Example #5
0
def _no_order(licenses, limit=144):
    # More than 144 is not possible here
    if limit > 144:
        limit = 144
    label = 0
    for action in ODRL.ACTIONS:
        if len(licenses) < limit:
            licenses.append(License())
            licenses[-1].set_labels([str(label)])
            licenses[-1].set_obligations(frozenset([action]))
            label += 1
    for action in ODRL.ACTIONS:
        if len(licenses) < limit:
            licenses.append(License())
            licenses[-1].set_labels([str(label)])
            licenses[-1].set_prohibitions(frozenset([action]))
            label += 1
Example #6
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
Example #7
0
def add_license(request, graph):
    json_licenses = json.loads(request.body)
    added_licenses = []
    # random.shuffle(json_licenses)
    license_levels = []
    # level_median = 0
    '''
    try:
        with open(LEVELS_FILE, 'r') as f:
            license_levels = json.load(f)
    except IOError:
        pass
    '''
    for json_license in json_licenses:
        object_license = License()
        object_license.from_json(json_license)
        if object_license.contains_only_odrl_actions():
            if Constraints.is_license_viable(object_license):
                object_license, nb_visit = add_license_to_db(
                    object_license,
                    method='infimum',
                    license_levels=license_levels,
                    graph=graph)
                '''
                if license_levels:
                    level_median = median(license_levels)
                if object_license.get_level() > level_median:
                    object_license, nb_visit = add_license_to_db(object_license, method='supremum', license_levels=license_levels, graph=graph)
                else:
                    object_license, nb_visit = add_license_to_db(object_license, method='infimum', license_levels=license_levels, graph=graph)
                '''
                added_licenses.append(object_license.to_json())
            else:
                added_licenses.append(
                    "Not a valid license: License is non-viable")
        else:
            added_licenses.append("Not a valid license: Use only ODRL actions")
    '''
    with open(LEVELS_FILE, 'w') as outfile:
        json.dump(license_levels, outfile)
    '''
    response = HttpResponse(
        json.dumps(added_licenses),
        content_type='application/json',
        status=201,
    )
    response['Access-Control-Allow-Origin'] = '*'
    return response
Example #8
0
def add_license(request):
    json_licenses = json.loads(request.body)
    added_licenses = []
    for json_license in json_licenses:
        object_license = License()
        object_license.from_json(json_license)
        if object_license.contains_only_odrl_actions():
            if Constraints.is_license_viable(object_license):
                object_license = add_license_to_db(object_license)
                added_licenses.append(object_license.to_json())
            else:
                added_licenses.append(
                    "Not a valid license: License is non-viable")
        else:
            added_licenses.append("Not a valid license: Use only ODRL actions")
    response = HttpResponse(
        json.dumps(added_licenses),
        content_type='application/json',
        status=201,
    )
    response['Access-Control-Allow-Origin'] = '*'
    return response