Beispiel #1
0
    def getType(self, aPath):

        osType = UnknownSubstance.getItemByPath(self.mTypes, aPath)

        if osType is not None:
            return osType

        return UnknownSubstance.unknown('UNKNOWN TYPE', aPath)
Beispiel #2
0
    def getLanguage(self, aPath):

        language = UnknownSubstance.getItemByPath(self.mLanguages, aPath)

        if language is not None:
            return language

        return UnknownSubstance.unknown('UNKNOWN LANGUAGE', aPath)
Beispiel #3
0
    def getLanguage(self, aPath):

        language = UnknownSubstance.getItemByPath(self.mLanguages, aPath)

        if language is not None:
            return language

        return UnknownSubstance.unknown('UNKNOWN LANGUAGE', aPath)
Beispiel #4
0
    def getVersion(self, aPath):

        version = UnknownSubstance.getItemByPath(self.mVersions, aPath)

        if version is not None:
            return version

        return UnknownSubstance.unknown('UNKNOWN VERSION', aPath)
Beispiel #5
0
def getKB(aPath):

    length = len(aPath)
    startKB = aPath.find('KB')

    if startKB != -1 and startKB + 2 < length:
        startKB += 2
        endKB = startKB

        while endKB < length and aPath[endKB].isdigit():
            endKB += 1

        if endKB - startKB > 0:
            return int(aPath[startKB:endKB])

    return UnknownSubstance.unknown('UNKNOWN KB', aPath)
Beispiel #6
0
def getKB(aPath):

    length = len(aPath)
    startKB = aPath.find('KB')

    if startKB != -1 and startKB + 2 < length:
        startKB += 2
        endKB = startKB

        while endKB < length and aPath[endKB].isdigit():
            endKB += 1

        if endKB - startKB > 0:
            return int(aPath[startKB:endKB])

    return UnknownSubstance.unknown('UNKNOWN KB', aPath)
Beispiel #7
0
    def get(self, aQuery, aLimit=-1, aSkip=0, aSort=None):

        statement = ('SELECT kb_id, Date, Path, Version, Type, Language FROM Updates'
                     ' INNER JOIN KBs ON kb_id LIKE KBs.id'
                     ' INNER JOIN Dates ON date_id LIKE Dates.id'
                     ' INNER JOIN Paths ON path_id LIKE Paths.id'
                     ' INNER JOIN Versions ON version_id LIKE Versions.id'
                     ' INNER JOIN Types ON type_id LIKE Types.id'
                     ' INNER JOIN Languages ON language_id LIKE Languages.id')

        if aQuery:
            subStatement = []
            for key in Updates.validKeys:
                if key in aQuery.keys():
                    if 'Date' == key:
                        aQuery[key] = core.dates.toString(aQuery[key])

                    value = aQuery[key]

                    if 'KB' == key:
                        key = 'KBs.id'

                    if isinstance(value, int):
                        subStatement.append('{} LIKE {}'.format(key, value))
                    elif isinstance(value, str):
                        subStatement.append('{} LIKE \'{}\''.format(key, value))
                    elif isinstance(value, list):
                        value = '{}'.format(value)
                        value = value.replace('[', '')
                        value = value.replace(']', '')
                        subStatement.append('{} IN ({})'.format(key, value))
            if subStatement:
                statement = '{} WHERE {}'.format(statement, subStatement[0])
                for i in range(1, len(subStatement)):
                    statement = '{} AND {}'.format(statement, subStatement[i])

        statement = statement.replace('\\\\', '\\')

        if aSort:
            for key in Updates.validKeys:
                if key in aSort.keys():
                    value = aSort[key]
                    if 'KB' == key:
                        key = 'KBs.id'
                    if (isinstance(value, int) and value < 0):
                        value = 'DESC'
                    else:
                        value = 'ASC'
                    statement = '{} ORDER BY {} {}'.format(statement, key, value)
                    break

        statement = '{} LIMIT {} OFFSET {}'.format(statement, aLimit, aSkip)

        readResult = db.sqliteDB.readAsync(self.mInit, statement, lambda l: l.fetchall())

        if not readResult:
            return []

        kb_num = 0
        date_num = 1
        path_num = 2
        version_num = 3
        type_num = 4
        language_num = 5

        updates = []
        for r in readResult:
            update = {}
            update['Date'] = core.dates.toDate(r[date_num])
            update['Path'] = r[path_num]

            if -1 != r[kb_num]:
                update['KB'] = r[kb_num]
            else:
                update['KB'] = UnknownSubstance.unknown('UNKNOWN KB',
                                                        update['Path'])

            if 'UNKNOWN VERSION' != r[version_num]:
                update['Version'] = r[version_num]
            else:
                update['Version'] = UnknownSubstance.unknown('UNKNOWN VERSION',
                                                             update['Path'])

            if 'UNKNOWN TYPE' != r[type_num]:
                update['Type'] = r[type_num]
            else:
                update['Type'] = UnknownSubstance.unknown('UNKNOWN TYPE',
                                                          update['Path'])

            if 'UNKNOWN LANGUAGE' != r[language_num]:
                update['Language'] = r[language_num]
            else:
                update['Language'] = UnknownSubstance.unknown('UNKNOWN LANGUAGE',
                                                              update['Path'])

            updates.append(update)

        updates = Updates.separateToKnownAndUnknown(updates)
        updates['known'].extend(updates['unKnown'])
        updates = updates['known']

        return updates
Beispiel #8
0
    def getPathKey(self, aValue):

        return UnknownSubstance.getKeyPathByValue(
            self.mCalligraphicTypes, aValue)