master
asamoukin 16 years ago
parent 20246a00e8
commit 567986b42d

@ -185,31 +185,41 @@ class calcHeader(_terms):
"""Обработка заголовков профилей и конфигурационных файлов
"""
# Допустимые параметры заголовка
allowParam = ["format", "format_conf", "comment", "append", "force",
"link", "mirror", "symbolic", "chmod","chown"]
# Корректность заголовка
headerCorrect = True
# Тип профиля
fileType = ""
# Тип вставки профиля
typeAppend = ""
# Возможные типы вставки профилей
_fileAppend = "join", "before", "after", "replace"
# Интерпретатор (#!/bin/bash) (#!/usr/bin/python)
execStr = ""
# Символ комментария
comment = False
# Выражение для поиска строки интерпретатора
reExecStr = re.compile("^#!.+\s*",re.I)
# условные операторы
terms = ('>', '<', '==', '!=', '>=', '<=')
# параметры без значения
listParNotVal = ("symbolic", "force","mirror")
# Результат вычисления условия в заголовке
headerTerm = True
# Сообщение о ошибке
errorMessage = ""
def __init__(self, text, comment=False, fileType=False, objVar=False):
# Тип профиля
self.fileType = ""
# Тип вставки профиля
self.typeAppend = ""
# Возможные типы вставки профилей
self._fileAppend = "join", "before", "after", "replace"
self.body = text
# Интерпретатор (#!/bin/bash) (#!/usr/bin/python)
self.execStr = ""
# Символ комментария
self.comment = False
# Выражение для поиска строки интерпретатора
self.reExecStr = re.compile("^#!.+\s*",re.I)
# условные операторы
self.terms = ('>', '<', '==', '!=', '>=', '<=')
# параметры без значения
self.listParNotVal = ("symbolic", "force","mirror")
# Объект с переменными
self.objVar=objVar
# Результат вычисления условия в заголовке
self.headerTerm = True
# Параметры описанные в заголовке файла профиля
self.params = {}
# некорректные параметры
incorrectParams = set([])
# Удаление Заголовка Calculate
if comment:
reCalcHeader =\
@ -258,18 +268,17 @@ class calcHeader(_terms):
for term in self.terms:
if term in i:
if not self._equalTerm(i,\
_("content profile not valid: ") + \
_("header profile not valid: ") + \
i):
self.headerTerm = False
break
else:
par = i.split("=")
if len(par) == 1:
for parNotVal in \
self.listParNotVal:
if i == parNotVal:
self.params[parNotVal] =\
"True"
if i in self.listParNotVal:
self.params[i] = "True"
else:
incorrectParams = set([i])
elif len(par) == 2:
self.params[par[0]] = par[1]
@ -280,6 +289,13 @@ class calcHeader(_terms):
if reExecRes:
self.execStr = self.body[reExecRes.start():reExecRes.end()]
self.body = self.body[reExecRes.end():]
if not incorrectParams:
incorrectParams = set(self.params.keys()) - set(self.allowParam)
if incorrectParams:
self.headerTerm = False
self.headerCorrect = False
self.errorMessage = _("incorrect header parameters - %s")\
% " ".join(list(incorrectParams))
def _getType(self):
"""Выдать тип файла"""
@ -2161,7 +2177,15 @@ class profile(_file, _terms):
self.closeNewFile()
objHeadNew = calcHeader(self.newProfile, False,
self.getFileType(),objVar=self.objVar)
if not objHeadNew.headerCorrect:
self.setError(_("Incorrect profile: " ) +\
newFile)
self.setError(objHeadNew.errorMessage)
return (applyFiles, False)
if not objHeadNew.headerTerm:
if objHeadNew.getError():
self.setError(_("Incorrect profile: " ) +\
newFile)
return (applyFiles, False)
flagSymlink = False
flagForce = False

Loading…
Cancel
Save