Browse Source

Add template functions groups()

develop
Самоукин Алексей 12 years ago
parent
commit
8818f3bb69
  1. 38
      pym/cl_template.py

38
pym/cl_template.py

@ -2197,7 +2197,7 @@ class _shareTemplate:
_deltVarStart = len(varStart)
_deltVarEnd = len(varEnd)
def getDataUser(self):
def getDataUser(self, groupsInfo=False):
"""Получить информацию о пользователе"""
userName = self.objVar.Get("ur_login")
if not userName:
@ -2211,6 +2211,17 @@ class _shareTemplate:
except:
print _("Can not found user %s")%str(userName)
cl_overriding.exit(1)
if groupsInfo:
import grp
try:
groupName = grp.getgrgid(gid).gr_name
except:
print _("Can not found group id %s")%str(gid)
cl_overriding.exit(1)
groupsNames = map(lambda x: x.gr_name,\
filter(lambda x: userName in x.gr_mem, grp.getgrall()))
groupsNames = [groupName] + groupsNames
return uid, gid, homeDir, groupsNames
return uid, gid, homeDir
class templateFunction(_error, _shareTemplate, _shareTermsFunction):
@ -2283,7 +2294,8 @@ class templateFunction(_error, _shareTemplate, _shareTermsFunction):
self.currDictIni = {}
# Время модификации конфигурационного файла для ini()
self.timeIni = -1
self.uid, self.gid, self.homeDir = self.getDataUser()
self.uid, self.gid, self.homeDir, self.groups =\
self.getDataUser(groupsInfo=True)
# Домашняя директория, плюс базовая директория
self.homeDir = os.path.join(self._baseDir, self.homeDir[1:])
# Путь к конфигурационному файлу для ini()
@ -2389,11 +2401,11 @@ class templateFunction(_error, _shareTemplate, _shareTermsFunction):
"""Функция шаблона exists(),
проверяет существование файла, если существует выдает '1'
"""
terms = funArgv.replace(" ","").split(",")
terms = map(lambda x: x.strip(), funArgv.split(","))
if len(terms) !=1:
self.printErrTemplate()
cl_overriding.exit(1)
fileName = terms[0].strip()
fileName = terms[0]
if fileName[0] == "~":
# Получаем директорию пользователя
fileName = os.path.join(self.homeDir,
@ -2414,8 +2426,8 @@ class templateFunction(_error, _shareTemplate, _shareTermsFunction):
если файл существует читает из файла локальную переменную
если один параметр - выводит значение локальной переменной
"""
terms = funArgv.replace(" ","").split(",")
if not terms[0].strip() or\
terms = funArgv.split(",")
if not terms or not terms[0].strip() or\
(len(terms)==2 and not terms[1].strip()) or\
len(terms)>2:
self.printErrTemplate()
@ -2910,6 +2922,20 @@ class templateFunction(_error, _shareTemplate, _shareTermsFunction):
textTemplateTmp[resS.end():]
return textTemplateTmp
def funcGroups(self, funArgv, resS, localVars, textTemplateTmp):
"""Функция шаблона groups(),
проверяет нахождение пользователя в группах, если находится выдает '1'
"""
terms = map(lambda x: x.strip(), funArgv.split(","))
groupNames = set(terms)
userGroups = set(self.groups)
replace = ""
if groupNames & userGroups:
replace = "1"
textTemplateTmp = textTemplateTmp[:resS.start()] + replace +\
textTemplateTmp[resS.end():]
return textTemplateTmp
def printErrTemplate(self):
"""Печать ошибки при обработке функций шаблона"""
print _("error in template %s")%self.nameTemplate

Loading…
Cancel
Save