appy.gen: Refactoring due to De-Plonization.
This commit is contained in:
parent
d934f49a99
commit
c5a8968bd3
35 changed files with 237 additions and 480 deletions
|
@ -3,7 +3,7 @@ import os, os.path, sys
|
|||
|
||||
# ------------------------------------------------------------------------------
|
||||
class TestMixin:
|
||||
'''This class is mixed in with any PloneTestCase.'''
|
||||
'''This class is mixed in with any ZopeTestCase.'''
|
||||
def createUser(self, userId, roles):
|
||||
'''Creates a user with id p_userId with some p_roles.'''
|
||||
self.acl_users.addMember(userId, 'password', [], [])
|
||||
|
@ -59,7 +59,7 @@ class TestMixin:
|
|||
def beforeTest(test):
|
||||
'''Is executed before every test.'''
|
||||
g = test.globs
|
||||
g['tool'] = test.app.plone.get('portal_%s' % g['appName'].lower()).appy()
|
||||
g['tool'] = test.app.config.appy()
|
||||
cfg = g['tool'].o.getProductConfig()
|
||||
g['appFolder'] = cfg.diskFolder
|
||||
moduleOrClassName = g['test'].name # Not used yet.
|
||||
|
|
|
@ -6,9 +6,9 @@ from appy.shared.data import languages
|
|||
import appy.gen
|
||||
from appy.gen import Type, Search, Selection
|
||||
from appy.gen.utils import SomeObjects, sequenceTypes, getClassName
|
||||
from appy.gen.plone25.mixins import BaseMixin
|
||||
from appy.gen.plone25.wrappers import AbstractWrapper
|
||||
from appy.gen.plone25.descriptors import ClassDescriptor
|
||||
from appy.gen.mixins import BaseMixin
|
||||
from appy.gen.wrappers import AbstractWrapper
|
||||
from appy.gen.descriptors import ClassDescriptor
|
||||
try:
|
||||
from AccessControl.ZopeSecurityPolicy import _noroles
|
||||
except ImportError:
|
||||
|
@ -411,7 +411,7 @@ class ToolMixin(BaseMixin):
|
|||
|
||||
def getCreateMeans(self, contentTypeOrAppyClass):
|
||||
'''Gets the different ways objects of p_contentTypeOrAppyClass (which
|
||||
can be a Plone content type or a Appy class) can be created
|
||||
can be a Zope content type or a Appy class) can be created
|
||||
(via a web form, by importing external data, etc). Result is a
|
||||
dict whose keys are strings (ie "form", "import"...) and whose
|
||||
values are additional data bout the particular mean.'''
|
||||
|
@ -810,7 +810,7 @@ class ToolMixin(BaseMixin):
|
|||
9: 'month_sep', 10: 'month_oct', 11: 'month_nov', 12: 'month_dec'}
|
||||
def getMonthName(self, monthNumber):
|
||||
'''Gets the translated month name of month numbered p_monthNumber.'''
|
||||
return self.translate(self.monthsIds[int(monthNumber)], domain='plone')
|
||||
return self.translate(self.monthsIds[int(monthNumber)])
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# Authentication-related methods
|
||||
|
@ -824,7 +824,7 @@ class ToolMixin(BaseMixin):
|
|||
|
||||
if jsEnabled and not cookiesEnabled:
|
||||
msg = self.translate(u'You must enable cookies before you can ' \
|
||||
'log in.', domain='plone')
|
||||
'log in.')
|
||||
return self.goto(urlBack, msg.encode('utf-8'))
|
||||
# Perform the Zope-level authentication
|
||||
login = rq.get('__ac_name', '')
|
||||
|
@ -835,11 +835,10 @@ class ToolMixin(BaseMixin):
|
|||
user = self.acl_users.validate(rq)
|
||||
if self.userIsAnon():
|
||||
rq.RESPONSE.expireCookie('__ac', path='/')
|
||||
msg = self.translate(u'Login failed', domain='plone')
|
||||
msg = self.translate(u'Login failed')
|
||||
logMsg = 'Authentication failed (tried with login "%s")' % login
|
||||
else:
|
||||
msg = self.translate(u'Welcome! You are now logged in.',
|
||||
domain='plone')
|
||||
msg = self.translate(u'Welcome! You are now logged in.')
|
||||
logMsg = 'User "%s" has been logged in.' % login
|
||||
msg = msg.encode('utf-8')
|
||||
self.log(logMsg)
|
||||
|
@ -865,7 +864,7 @@ class ToolMixin(BaseMixin):
|
|||
session.invalidate()
|
||||
self.log('User "%s" has been logged out.' % userId)
|
||||
# Remove user from variable "loggedUsers"
|
||||
from appy.gen.plone25.installer import loggedUsers
|
||||
from appy.gen.installer import loggedUsers
|
||||
if loggedUsers.has_key(userId): del loggedUsers[userId]
|
||||
return self.goto(self.getApp().absolute_url())
|
||||
|
||||
|
|
|
@ -1,17 +1,14 @@
|
|||
'''This package contains mixin classes that are mixed in with generated classes:
|
||||
- mixins/BaseMixin is mixed in with Standard Archetypes classes;
|
||||
- mixins/BaseMixin is mixed in with standard Zope classes;
|
||||
- mixins/ToolMixin is mixed in with the generated application Tool class.'''
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
import os, os.path, sys, types, mimetypes, urllib, cgi
|
||||
from appy import Object
|
||||
import appy.gen
|
||||
from appy.gen import Type, String, Selection, Role, No, WorkflowAnonymous, \
|
||||
Transition, Permission
|
||||
import appy.gen as gen
|
||||
from appy.gen.utils import *
|
||||
from appy.gen.layout import Table, defaultPageLayouts
|
||||
from appy.gen.descriptors import WorkflowDescriptor
|
||||
from appy.gen.plone25.descriptors import ClassDescriptor
|
||||
from appy.gen.descriptors import WorkflowDescriptor, ClassDescriptor
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
class BaseMixin:
|
||||
|
@ -187,8 +184,7 @@ class BaseMixin:
|
|||
fields in the database.'''
|
||||
rq = self.REQUEST
|
||||
tool = self.getTool()
|
||||
errorMessage = self.translate(
|
||||
'Please correct the indicated errors.', domain='plone')
|
||||
errorMessage = self.translate('Please correct the indicated errors.')
|
||||
isNew = rq.get('is_new') == 'True'
|
||||
# If this object is created from an initiator, get info about him.
|
||||
initiator = None
|
||||
|
@ -209,7 +205,7 @@ class BaseMixin:
|
|||
urlBack = tool.getSiteUrl()
|
||||
else:
|
||||
urlBack = self.getUrl()
|
||||
self.say(self.translate('Changes canceled.', domain='plone'))
|
||||
self.say(self.translate('Changes canceled.'))
|
||||
return self.goto(urlBack)
|
||||
|
||||
# Object for storing validation errors
|
||||
|
@ -245,7 +241,7 @@ class BaseMixin:
|
|||
obj, msg = self.createOrUpdate(isNew, values, initiator, initiatorField)
|
||||
|
||||
# Redirect the user to the appropriate page
|
||||
if not msg: msg = obj.translate('Changes saved.', domain='plone')
|
||||
if not msg: msg = obj.translate('Changes saved.')
|
||||
# If the object has already been deleted (ie, it is a kind of transient
|
||||
# object like a one-shot form and has already been deleted in method
|
||||
# onEdit), redirect to the main site page.
|
||||
|
@ -711,7 +707,7 @@ class BaseMixin:
|
|||
if not includeFake:
|
||||
includeIt = mayTrigger
|
||||
else:
|
||||
includeIt = mayTrigger or isinstance(mayTrigger, No)
|
||||
includeIt = mayTrigger or isinstance(mayTrigger, gen.No)
|
||||
if not includeNotShowable:
|
||||
includeIt = includeIt and transition.isShowable(wf, self)
|
||||
if not includeIt: continue
|
||||
|
@ -864,7 +860,7 @@ class BaseMixin:
|
|||
# Get the initial workflow state
|
||||
initialState = self.State(name=False)
|
||||
# Create a Transition instance representing the initial transition.
|
||||
initialTransition = Transition((initialState, initialState))
|
||||
initialTransition = gen.Transition((initialState, initialState))
|
||||
initialTransition.trigger('_init_', self, wf, '')
|
||||
|
||||
def getWorkflow(self, name=False, className=None):
|
||||
|
@ -875,7 +871,7 @@ class BaseMixin:
|
|||
else:
|
||||
appyClass = self.getTool().getAppyClass(className)
|
||||
if hasattr(appyClass, 'workflow'): wf = appyClass.workflow
|
||||
else: wf = WorkflowAnonymous
|
||||
else: wf = gen.WorkflowAnonymous
|
||||
if not name: return wf
|
||||
return WorkflowDescriptor.getWorkflowName(wf)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue