def test_json(self, **kw): user = UserO(u"test") root = self.app.GetRoot() obj = root.Create("type1", data1_2, user) obj.data["fjson"] = {} obj.Commit(user=user) self.remove.append(obj.id) v = Viewy() form = JsonMappingForm(request=Request(), app=self.app, context=obj, view=v) form.fields = ( FieldConf(id="parameter1", datatype="string", size=1000), FieldConf(id="parameter2", datatype="string", size=100), ) form.jsonDataField = "fjson" form.Setup() data = {"parameter1": "True", "parameter2": "test"} form.request = data form.Process() data["edit$"] = 1 form.request = data form.Process() self.assert_(obj.data.get("ftext"))
def test_password(self): field = FieldConf(datatype="password", id="field", name="Field", settings={"single": True}) self.assert_(password_node(field, {}, {}, testform())) field = FieldConf(datatype="password", id="field", name="Field", settings={"single": False}) self.assert_(password_node(field, {}, {}, testform())) nodes, buttons = SchemaFactory(testform(), [field], [], force=False) self.assert_(len(nodes) == 1)
def editbasics(self): fields = ( FieldConf(id=u"title", datatype="string", size=255, required=0, name=_(u"Application title")), FieldConf(id=u"description", datatype="text", size=5000, required=0, name=_(u"Application description")), FieldConf(id=u"workflowEnabled", datatype="bool", size=2, required=0, name=_(u"Enable workflow engine")), FieldConf(id=u"fulltextIndex", datatype="bool", size=2, required=0, name=_(u"Enable fulltext index")), FieldConf(id=u"frontendCodepage",datatype="string", size=10, required=1, name=_(u"Codepage used in html frontend")), ) form = ConfigurationForm(view=self, context=self.context.configuration, app=self.context) form.fields = fields form.Setup() # process and render the form. result, data, action = form.Process() return {u"content": data, u"result": result, u"head": form.HTMLHead()}
def test_widget(self): field = FieldConf(datatype="string", id="field", name="Field", required=True, default="widget") nodes, buttons = SchemaFactory(testform(), [field], [], force=False) self.assert_(len(nodes) == 1) field = FieldConf(datatype="string", id="field", name="Field", required=False, default="widget") nodes, buttons = SchemaFactory(testform(), [field], [], force=False) self.assert_(len(nodes) == 1)
def contact(self): context = self.context # add topic if choices available fields = context.configuration.contactForm topics = context.data.topics if topics: li = [] for t in topics.split("\n"): t = t.replace("\r", "") li.append({"id": t, "name": t}) fc = FieldConf(id="topic", datatype="radio", size=200, default="", required=1, name="Topic", listItems=li) # make a new field list fn = [fc] for f in fields: fn.append(f) fields = fn # setup the form form = ContactForm(context=context, request=self.request, view=self, app=context.app) form.fields = fields form.mail = Mail(context.data.mailtitle, context.configuration.mailtmpl) form.mail.recv = (context.data.receiver, context.data.receiverName) form.anchor = u"#contact" + str(context.id) form.Setup() result, data, action = form.Process() return data
def test_json(self, **kw): form = JsonMappingForm(request=Request(), app=self.app, view=self.view) form.fields = ( FieldConf(id="parameter1", datatype="text", size=1000), FieldConf(id="parameter2", datatype="string", size=100), ) form.Setup() data = {"parameter1": "True", "parameter2": "test"} r, v, e = form.Validate(data) self.assert_(r, e) self.assert_(isinstance(v, dict)) data = {"parameter1": "True", "parameter2": "test"} r, v = form.Extract(data) self.assert_(r, v) self.assert_(isinstance(v, dict))
def test_html3(self, **kw): form = HTMLForm(loadFromType="type1", app=self.app, view=self.view, request=Request()) form.formUrl = "form/url" form.cssID = u"upload" form.css_class = u"niveform" form.subsets = { u"test": { "fields": [ u"ftext", FieldConf( **{ "id": "section1", "name": "Section 1", "datatype": "number" }) ] } } form.Setup(subset=u"test") v, d, e = form.Validate(data1_2) self.assert_(v, e) form.Render(d, msgs=None, errors=None)
def test_values2(self, **kw): form = Form(loadFromType="type1", app=self.app, view=self.view) subsets = {"test": {"fields": ["ftext", u"funit"]}} form.subsets = subsets form.Setup(subset="test") v, d, e = form.Validate(data1_2) self.assert_(v, e) form = Form(loadFromType="type1", app=self.app, view=self.view) subsets = { u"test": { "fields": [ u"ftext", FieldConf(**{ "id": "section1", "name": "Section 1", "datatype": "unit" }) ] } } form.subsets = subsets form.Setup(subset=u"test") v, d, e = form.Validate(data1_2) self.assert_(v, e) result, data = form.Extract(data1_1) self.assert_(data) result, data = form.Extract(data1_2) self.assert_(data)
def _GetFieldDefinitions(self, fields, pool_type=None): f = [] for fld in fields: if IFieldConf.providedBy(fld): f.append(fld) continue if not isinstance(fld, basestring): continue if fld in ("__preview__", ): continue # skip custom flds if fld[0] == "+": continue # Aggregate functions, custom flds if fld[0] == "-": f.append( FieldConf(**{ "id": fld, "name": fld, "datatype": "string" })) continue fl = self.app.GetFld(fld, pool_type) if fl: f.append(fl) return f
def test_configuration(self): from nive.definitions import FieldConf schema = DummySchema() field = self._makeOne(schema, configuration=FieldConf()) self.assert_(field.configuration) field = self._makeOne(schema) self.assertFalse(field.configuration)
def test_widget(self): field = FieldConf(datatype="string", id="field", name="Field", widget=Widget) nodes, buttons = SchemaFactory(testform(), [field], [], force=False) self.assert_(len(nodes) == 1)
def test_widget2(self): field = FieldConf(datatype="string", id="field", name="Field", widget="nive.components.reform.widget.Widget") nodes, buttons = SchemaFactory(testform(), [field], [], force=False) self.assert_(len(nodes) == 1)
def test_actions(self): field = FieldConf(datatype="string", id="field", name="Field") action1 = Conf(id="action1", name="Action 1", cls="btn", hidden=False) action2 = Conf(id="action2", name="Action 2", cls="btn", hidden=True) nodes, buttons = SchemaFactory(testform(), [field], [action1, action2], force=False) self.assert_(len(buttons) == 1)
def test_hidden(self): field = FieldConf(datatype="string", hidden=True, id="field", name="Field") self.assert_(hidden_node(field, {}, {}, testform())) nodes, buttons = SchemaFactory(testform(), [field], [], force=False) self.assert_(len(nodes) == 1)
def editroot(self): root = self.context.app.root(name="") if not IPersistentRoot.providedBy(root): return { u"content": _(u"The default root does not support persistent data storage." ), u"result": False, u"head": u"" } fields = (FieldConf(id=u"pool_filename", datatype="string", size=30, required=1, name=_(u"Root url name"), settings={"validator": RootnameValidator}, default=root.configuration.id), FieldConf(id=u"title", datatype="string", size=255, required=0, name=_(u"Root title"), default=root.configuration.name), FieldConf(id=u"description", datatype="text", size=5000, required=0, name=_(u"Root description")), FieldConf( id="pool_groups", datatype="checkbox", size=250, default="", name=_(u"Permission"), description=_( u"Only displayed to users in the selected group"))) form = RootForm(view=self, context=root, app=self.context) form.fields = fields form.Setup() # process and render the form. result, data, action = form.Process() return {u"content": data, u"result": result, u"head": form.HTMLHead()}
def test_validator(self): def Validator(): return field = FieldConf(datatype="string", id="field", name="Field", validator=Validator) nodes, buttons = SchemaFactory(testform(), [field], [], force=False) self.assert_(len(nodes) == 1)
def test_list(self): field = FieldConf(datatype="list", id="field", name="Field", settings={ "addempty": True, "controlset": "yes" }) self.assert_(list_node(field, {}, {}, testform())) nodes, buttons = SchemaFactory(testform(), [field], [], force=False) self.assert_(len(nodes) == 1)
def delete(self): self.ResetFlashMessages() class DeleteForm(HTMLForm): def Delete(self, action, **kw): redirectSuccess = kw.get("redirectSuccess") msgs = [] result, data, errors = self.Validate(self.request) if result: obj = self.context user = kw.get("user") or self.view.User() obj = self.context.obj(data.get("id")) if not obj: result = False msgs = [_(u"Object not found")] else: result = self.context.Delete(id, user=user, obj=obj) return self._FinishFormProcessing(result, data, msgs, errors, **kw) form = DeleteForm(view=self) form.actions = [ Conf(id="default", method="StartRequestGET", name=u"Initialize", hidden=True), Conf(id="delete", method="Delete", name=_(u"Delete all"), hidden=False), ] form.fields = [ FieldConf(id="id", name=u"ids", datatype="number", hidden=True, required=True), ] form.use_ajax = True form.Setup() result, data, action = form.Process(redirectSuccess="page_url") obj = self.context.obj(self.GetFormValue(u"id")) return { u"content": data, u"result": result, u"cmsview": self, u"objToDelete": obj, u"head": form.HTMLHead() }
def editportal(self): fields = ( FieldConf(id=u"portalDefaultUrl", datatype="string", size=200, required=1, name=_(u"Redirect for portal root (/) requests")), FieldConf(id=u"favicon", datatype="string", size=200, required=0, name=_(u"Favicon asset path")), FieldConf(id=u"robots", datatype="text", size=10000,required=0, name=_(u"robots.txt contents")), FieldConf(id=u"loginUrl", datatype="string", size=200, required=1, name=_(u"Login form url")), FieldConf(id=u"forbiddenUrl", datatype="string", size=200, required=1, name=_(u"Redirect for unauthorized requests")), FieldConf(id=u"logoutUrl", datatype="string", size=200, required=1, name=_(u"Redirect on logout")), FieldConf(id=u"accountUrl", datatype="string", size=200, required=0, name=_(u"User account page url")), ) form = ConfigurationForm(view=self, context=self.context.portal.configuration, app=self.context) form.fields = fields form.Setup() # process and render the form. result, data, action = form.Process() return {u"content": data, u"result": result, u"head": form.HTMLHead()}
def design(self): fields = (FieldConf( id=u"columns", datatype="lines", size=100, required=0, name=_(u"Column names"), description= _(u"Column names used in the main template. For multiple columns enter one per line." )), ) form = ConfigurationForm(view=self, context=self.context.configuration, app=self.context) form.fields = fields form.Setup() # process and render the form. result, data, action = form.Process() return {u"content": data, u"result": result, u"head": form.HTMLHead()}
def editdatabase(self): dbtypes=[{"id":"MySql","name":"MySql"},{"id":"Sqlite3","name":"Sqlite3"}] fields = ( FieldConf(id=u"context", datatype="list", size=20, required=1, name=_(u"Database type to be used"), listItems=dbtypes, description=_(u"Supports 'Sqlite3' and 'MySql' by default. MySql requires python-mysqldb installed.")), FieldConf(id=u"fileRoot", datatype="string", size=500, required=0, name=_(u"Relative or absolute root directory for files")), FieldConf(id=u"dbName", datatype="string", size=500, required=1, name=_(u"Database file path or name"), description=_(u"Sqlite3=database file path, MySql=database name")), FieldConf(id=u"host", datatype="string", size=100, required=0, name=_(u"Database server host")), FieldConf(id=u"port", datatype="number", size=8, required=0, name=_(u"Database server port")), FieldConf(id=u"user", datatype="string", size=100, required=0, name=_(u"Database server user")), FieldConf(id=u"password", datatype="password", size=100,required=0, name=_(u"Database server password")), ) form = ConfigurationForm(view=self, context=self.context.dbConfiguration, app=self.context) form.fields = fields form.Setup() # process and render the form. result, data, action = form.Process() return {u"content": data, u"result": result, u"head": form.HTMLHead()}
def test_values3(self, **kw): form = Form(loadFromType="type1", app=self.app, view=self.view) subsets = { u"test": { "fields": [ u"ftext", FieldConf(id="section1", name="Section 1", datatype="string", schema=schema.String()) ] } } form.subsets = subsets form.Setup(subset=u"test") v, d, e = form.Validate(data1_2) self.assert_(v, e) result, data = form.Extract(data1_1) self.assert_(data) result, data = form.Extract(data1_2) self.assert_(data)
def test_listitems(self): self._loadApp() r = self.app.root() self.assert_( len( LoadListItems(self.app.GetFld("pool_type"), app=self.app, obj=None, pool_type=None, force=True)) == 3) LoadListItems(FieldConf(id="test", datatype="list", settings={"codelist": "users"}), app=self.app) self.assert_( LoadListItems(FieldConf(id="test", datatype="list", settings={"codelist": "groups"}), app=self.app)) self.assert_( LoadListItems(FieldConf(id="test", datatype="list", settings={"codelist": "languages"}), app=self.app)) self.assert_( LoadListItems(FieldConf(id="test", datatype="list", settings={"codelist": "countries"}), app=self.app)) self.assert_( LoadListItems(FieldConf(id="test", datatype="list", settings={"codelist": "types"}), app=self.app)) self.assert_( LoadListItems(FieldConf(id="test", datatype="list", settings={"codelist": "meta"}), app=self.app))
from pyramid.threadlocal import get_current_request configuration = ToolConf( id="dbStructureUpdater", context="nive.tools.dbStructureUpdater.dbStructureUpdater", name=_(u"Database Structure"), description= _(u"Generate or update the database structure based on configuration settings." ), apply=(IApplication, ), mimetype="text/html", data=[ FieldConf( id="modify", datatype="bool", default=0, name=_(u"Modify existing columns"), description= _(u"Change existing database columns to new configuration. Depending on the changes, data may be lost!" )), FieldConf(id="showSystem", datatype="bool", default=0, name=_(u"Show system columns"), description=u"") ], views=[ ViewConf(name="", view=ToolView, attr="run", permission="system", context="nive.tools.dbStructureUpdater.dbStructureUpdater")
#@nive_module configuration = RootConf( id="editor", context="nive_cms.cmsview.cmsroot.cmsroot", template="root.pt", default=False, subtypes="*", name=_(u"Home"), extensions=("nive.extensions.persistentRoot.Persistent", ), description=__doc__) configuration.data = [ FieldConf(id=u"pool_filename", datatype="string", size=30, required=1, name=_(u"Root url name"), settings={"validator": RootnameValidator}, default=u""), FieldConf(id=u"title", datatype="string", size=255, required=0, name=_(u"Root title"), default=configuration.name), FieldConf(id=u"description", datatype="text", size=5000, required=0, name=_(u"Root description")), FieldConf(id=u"pool_groups",
}, { 'id': u'html', 'name': _(u'HTML') }, { 'id': u'css', 'name': _(u'CSS') }, ] configuration.data = [ FieldConf(id="codetype", datatype="list", size=10, default="raw", name=_(u"Type"), listItems=ct, fulltext=False, description=u""), FieldConf(id="codeblock", datatype="code", size=50000, default="", name=_(u"Code"), fulltext=False, description=u""), ] fields = ["title", "codeblock", "pool_groups"] configuration.forms = { "create": {
from nive.definitions import ConfigurationError from nive.definitions import ToolConf, FieldConf from nive.tools import Tool from nive.i18n import _ configuration = ToolConf() configuration.id = "sendMail" configuration.context = "nive.components.tools.sendMail.sendMail" configuration.name = _(u"Send mails to registered users") configuration.description = __doc__ configuration.apply = None configuration.data = [ FieldConf(id="host", name=_(u"SMTP host"), datatype="string", required=1, readonly=1, default=u"", description=u""), FieldConf(id="port", name=_(u"SMTP port"), datatype="number", required=1, readonly=1, default=21, description=u""), FieldConf(id="sender", name=_(u"SMTP sender mail"), datatype="email", required=1, readonly=1,
# user definition ------------------------------------------------------------------ from nive.definitions import StagUser, ObjectConf, FieldConf #@nive_module configuration = ObjectConf( id = "user", name = _(u"User"), dbparam = "users", context = "nive.userdb.user.user", template = "user.pt", selectTag = StagUser, container = False, description = __doc__ ) configuration.data = ( FieldConf(id="name", datatype="string", size= 30, default=u"", required=1, name=_(u"User ID"), description=u""), FieldConf(id="password", datatype="password", size=100, default=u"", required=1, name=_(u"Password"), description=u""), FieldConf(id="email", datatype="email", size=255, default=u"", required=1, name=_(u"Email"), description=u""), FieldConf(id="groups", datatype="mcheckboxes", size=255, default=u"", name=_(u"Groups"), settings={"codelist":"groups"}, description=u""), FieldConf(id="notify", datatype="bool", size= 4, default=True, name=_(u"Activate email notifications"), description=u""), FieldConf(id="surname", datatype="string", size=100, default=u"", name=_(u"Surname"), description=u""), FieldConf(id="lastname", datatype="string", size=100, default=u"", name=_(u"Lastname"), description=u""), FieldConf(id="organisation", datatype="string", size=255, default=u"", name=_(u"Organisation"), description=u""), FieldConf(id="lastlogin", datatype="datetime", size=0, readonly=True, default=u"", name=_(u"Last login"), description=u""), ) #password2 = FieldConf(id="password2", datatype="password", size= 30, default="", required=1, name="Passwort - Wiederholung", description="")
def test_configuration(self): from nive.definitions import FieldConf widget = self._makeOne(configuration=FieldConf()) self.assert_(widget.configuration) widget = self._makeOne() self.assertFalse(widget.configuration)
class spacer(PageElementBase): pass # type definition ------------------------------------------------------------------ #@nive_module configuration = ObjectConf( id = "spacer", name = _(u"Spacer"), dbparam = "spacers", context = "nive_cms.spacer.spacer", template = "spacer.pt", selectTag = StagPageElement, icon = "nive_cms.cmsview:static/images/types/spacer.png", description = _(u"Styling element to add line breaks and vertical space between elements.") ) configuration.data = [ FieldConf(id="cssClass", datatype="list", size=5, default=u"", listItems=(), name=_(u"Styling"), description=u"") ] fields =["cssClass", "pool_groups"] configuration.forms = {"create": {"fields":fields}, "edit": {"fields":fields}} jsonfields = fields + ["pool_type","pool_filename"] configuration.toJson = tuple(jsonfields) configuration.views = []