Exemple #1
0
    def save(obj, parser):

        if parser == None:
            parser = obj._parser
        try:
            ruleTable = PolicyRuleTableModel.objects.get(name=obj.name)
            ruleTable.type = obj._policy
            ruleTable.defaultParser = obj._parser
            ruleTable.defaultPersistence = obj._persistenceBackend
            ruleTable.defaultPersistenceFlag = obj._persist
            ruleTable.save()
        except:
            ruleTable = PolicyRuleTableModel(
                name=obj.name,
                uuid=obj.uuid,
                type=obj._policy,
                defaultParser=parser,
                defaultPersistence=obj._persistenceBackend,
                defaultPersistenceFlag=obj._persist)

            ruleTable.save()

        #flag to know if save comes from addRule or removeRule()
        addRule = 0
        uuidInRuleSet = list()
        for rule in obj._ruleSet:

            #need to removeRule later
            uuidInRuleSet.append(rule.rule.getUUID())
            #lbergesio: Rule is saved parsed, as a string
            #Possibly if Rule exists (try) it is not required to update its fields.==>
            #==> IT IS NEEDED FOR THE RuleTable.moveRule()
            try:
                ruleModel = PolicyRuleModel.objects.get(
                    RuleUUID=rule.rule.getUUID())
            except:
                # If #Rules == #Models then it is the PolicyRuleTableModel being
                # deleted, not the PolicyRuleModel (last is the normal case)
                if len(obj._ruleSet) != PolicyRuleModel.objects.all().count():
                    addRule = 1
                    ruleModel = PolicyRuleModel(RuleUUID=rule.rule.getUUID())

            ruleModel.RuleTableName = obj.name
            ruleModel.Rule = ParseEngine.craftRule(rule.rule, obj._parser)
            ruleModel.RuleIsEnabled = rule.enabled
            ruleModel.RulePosition = obj._ruleSet.index(rule)
            ruleModel.save()
        #if the save() comes from a removeRule, check which one was removed and delete
        if not addRule:
            for ruleModel in PolicyRuleModel.objects.filter(
                    RuleTableName=obj.name):
                if ruleModel.RuleUUID not in uuidInRuleSet:
                    ruleModel.delete()
                    break
Exemple #2
0
	def save(obj, parser):
	
		if parser == None:
			parser = obj._parser
		try:
			ruleTable = PolicyRuleTableModel.objects.get(name=obj.name)
			ruleTable.type = obj._policy
			ruleTable.defaultParser = obj._parser
			ruleTable.defaultPersistence = obj._persistenceBackend
			ruleTable.defaultPersistenceFlag = obj._persist
			ruleTable.save()
		except:		
			ruleTable = PolicyRuleTableModel(name = obj.name, uuid = obj.uuid, type = obj._policy, defaultParser = parser, defaultPersistence = obj._persistenceBackend, defaultPersistenceFlag = obj._persist)

			ruleTable.save()


		#flag to know if save comes from addRule or removeRule()
		addRule = 0
		uuidInRuleSet=list()
		for rule in obj._ruleSet:
			
			#need to removeRule later
			uuidInRuleSet.append(rule.rule.getUUID())
			#lbergesio: Rule is saved parsed, as a string
			#Possibly if Rule exists (try) it is not required to update its fields.==> 
			#==> IT IS NEEDED FOR THE RuleTable.moveRule()
			try:
				ruleModel = PolicyRuleModel.objects.get(RuleUUID = rule.rule.getUUID())
			except:	
				# If #Rules == #Models then it is the PolicyRuleTableModel being
				# deleted, not the PolicyRuleModel (last is the normal case)
				if len(obj._ruleSet) != PolicyRuleModel.objects.all().count():
				    addRule = 1
				    ruleModel = PolicyRuleModel(RuleUUID = rule.rule.getUUID())

			ruleModel.RuleTableName = obj.name
			ruleModel.Rule = ParseEngine.craftRule(rule.rule, obj._parser)
			ruleModel.RuleIsEnabled = rule.enabled
			ruleModel.RulePosition = obj._ruleSet.index(rule)
			ruleModel.save()
		#if the save() comes from a removeRule, check which one was removed and delete
		if not addRule:
			for ruleModel in PolicyRuleModel.objects.filter(RuleTableName = obj.name):
				if ruleModel.RuleUUID not in uuidInRuleSet:
					ruleModel.delete()
					break