Example #1
0
    def __init__(self, path, app, rootDef):
        self.__name__ = str(path)
        self.__parent__ = app
        self.id = 0
        # unique root id generated from name . negative integer.
        self.idhash = abs(hash(self.__name__)) * -1
        self.path = path
        self.configuration = rootDef
        self.queryRestraints = {}, {}

        self.meta = Conf(pool_type=rootDef["id"],
                         title=translate(rootDef["name"]),
                         pool_state=1,
                         pool_filename=path,
                         pool_wfa=u"",
                         pool_change=datetime.now(),
                         pool_changedby=u"",
                         pool_create=datetime.now(),
                         pool_createdby=u"")
        self.data = Conf()
        self.files = Conf()

        # load security
        acl = SetupRuntimeAcls(rootDef.acl, self)
        if acl:
            # omit if empty. acls will be loaded from parent object
            self.__acl__ = acl

        self.Signal("init")
Example #2
0
 def test_tmplmail(self):
     data = Conf(activationID="1234567890")
     form = Conf(activationUrl="http://123.com", mailtext="header", mailfooter="footer")
     html = render("nive_newsuser:activationmail.pt", {"data": data, "form": form, "view": BaseView(None,None)})
     self.assert_(html)
     self.assert_(html.find(data.activationID)!=-1)
     self.assert_(html.find(form.activationUrl)!=-1)
Example #3
0
 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)
Example #4
0
    def test_newform_noajax(self):
        user = User(u"test")
        user.groups.append("group:manager")
        r = self.root

        view = APIv1(r, self.request)
        view.__configuration__ = lambda: Conf(assets=(), views=())
        view.GetViewConf = lambda: Conf(
            settings={
                "form": {
                    "fields": ("comment", ),
                    "use_ajax": False
                },
                "includeAssets": False
            })

        self.request.POST = {
            "pool_type": "bookmark",
            "link": u"the link",
            "comment": u"some text"
        }
        result = view.newItemForm()
        self.assert_(self.request.response.headers["X-Result"])

        objs = len(r.GetObjsList(fields=["id"]))
        self.request.POST = {
            "pool_type": "bookmark",
            "link": u"the link",
            "comment": u"some text",
            "create$": "1"
        }
        result = view.newItemForm()
        self.assert_(self.request.response.headers["X-Result"])
        self.assert_(result["content"])
        self.assert_(objs + 1 == len(r.GetObjsList(fields=["id"])))
Example #5
0
 def GetAdminWidgets(self):
     url = self.FolderUrl(self.context.dataroot)
     confs = [
         Conf(id="admin.root",
              viewmapper=url + "list",
              name=_(u"List users")),
         Conf(id="admin.add", viewmapper=url + "add", name=_(u"Add user"))
     ]
     return confs
Example #6
0
 def test_confencoder(self):
     self.assert_(ConfEncoder().encode(Conf()))
     self.assert_(ConfEncoder().encode(Conf(**{"a": "a", "b": 1})))
     self.assert_(ConfEncoder().encode(ObjectConf()))
     self.assert_(ConfEncoder().encode(
         ObjectConf(**{
             "id": "a",
             "name": "1"
         })))
Example #7
0
 def test_replace(self):
     alist = [
         Conf(id="1", value=123),
         Conf(id="2", value=456),
         Conf(id="3", value=789)
     ]
     repl = Conf(id="2", value=999)
     new = ReplaceInListByID(alist, repl)
     self.assert_(new != alist)
     self.assert_(new[1].value == 999)
Example #8
0
 def setUp(self):
     values = {"name":"user1", 
               "email": "*****@*****.**", 
               "surname": "The", 
               "lastname": "User", 
               "groups": ("here", "there"), 
               "lastlogin": time.time()}
     values2 = {"id": 1, "pool_state": 1}
     self.user = SessionUser("user1", 1, Conf(**values), Conf(**values2))
     pass
Example #9
0
class DummyText(object):
    useCache = False
    data = Conf(tcache=u"<p>Cached Text</p>", textblock=u"Markdown text!")
    meta = Conf(title=u"")

    def GetID(self):
        return 1

    def HTML(self):
        return u"<p>Text</p>" ""
Example #10
0
 def __init__(self, values, ident):
     self.id = 0
     self.data = Conf(**values)
     self.meta = Conf()
     self.identity = ident or str(self.id)
     if values.get("groups"):
         groups = tuple(values.get("groups"))
     else:
         groups = (u"group:admin", )
     self.groups = self.data.groups = groups
Example #11
0
    def test_renderjson(self):
        user = User(u"test")
        user.groups.append("group:manager")
        view = APIv1(self.root, self.request)
        r = self.root
        objs = r.GetObjs()
        for o in objs:
            r.Delete(o.id, obj=o, user=user)
        o1 = create_bookmark(r, user)
        self.remove.append(o1.id)
        o3 = create_bookmark(r, user)
        self.remove.append(o3.id)

        o2 = create_bookmark(o1, user)
        create_track(o1, user)
        create_track(o1, user)
        create_track(o3, user)

        values = view.subtree()
        self.assert_(self.request.response.status.startswith("400"))

        self.request.POST = {"profile": "none"}
        values = view.subtree()
        self.assert_(self.request.response.status.startswith("400"))

        profile = {
            "descent": ("nive.definitions.IContainer", ),
            "addContext": True
        }
        view.GetViewConf = lambda: Conf(settings=profile)
        values = view.subtree()
        self.assert_(values != {})
        self.assert_(len(values["items"]) == 2)
        self.assert_(len(values["items"][0]["items"]) == 3)

        profile = {
            "descent": ("nive.definitions.IContainer", ),
            "parameter": {
                "pool_type": "bookmark"
            },
            "addContext": True
        }
        view.GetViewConf = lambda: Conf(settings=profile)
        values = view.subtree()
        self.assert_(values != {})
        self.assert_(len(values["items"]) == 2)
        self.assert_(len(values["items"][0]["items"]) == 1)

        view = APIv1(o1, self.request)
        self.request.POST = {"subtree": "0"}
        values = view.subtree()
        self.assert_(values != {})
        self.assert_(values.get("items") == None)
Example #12
0
    def test_load(self):
        storage = self.app.Factory(IModuleConf, "persistence")
        self.assert_(storage)
        storage(self.app, Conf(id="test")).Save({
            "title": u"öäüß",
            "something": 123
        })

        values = Conf(id="test")
        storage(self.app, values).Load()
        self.assert_(values["something"] == 123)
        self.assert_(values["title"] == u"öäüß")
Example #13
0
class ConfigurationForm(HTMLForm):
    
    actions = [
        Conf(id=u"default",    method="Start",   name=u"Initialize", hidden=True,  css_class=u"",            html=u"", tag=u""),
        Conf(id=u"edit",       method="Update",  name=u"Save",       hidden=False, css_class=u"btn btn-primary",  html=u"", tag=u""),
    ]
    
    def Start(self, action, **kw):
        """
        Initially load data from object. 
        context = obj
        
        returns bool, html
        """
        conf = self.context
        data = {}
        for f in self.GetFields():
            # data
            if f.id in conf:
                if f.datatype=="password":
                    continue
                data[f.id] = conf.get(f.id,"")
        return data!=None, self.Render(data)


    def Update(self, action, **kw):
        """
        Process request data and update object.
        
        returns bool, html
        """
        redirectSuccess = kw.get("redirectSuccess")
        msgs = []
        conf=self.context
        result,data,errors = self.Validate(self.request)
        if result:
            # lookup persistent manager for configuration
            storage = self.app.Factory(IModuleConf, "persistence")
            if storage:
                storage(app=self.app, configuration=conf).Save(data)
                msgs.append(_(u"OK. Data saved."))
            else:
                msgs.append(_(u"No persistent storage for configurations activated. Nothing saved."))
                result = False
            errors=None
            if self.view and redirectSuccess:
                redirectSuccess = self.view.ResolveUrl(redirectSuccess, obj)
                if self.use_ajax:
                    self.view.Relocate(redirectSuccess, messages=msgs)
                else:
                    self.view.Redirect(redirectSuccess, messages=msgs)
        return result, self.Render(data, msgs=msgs, errors=errors)    
Example #14
0
    def test_actions(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"

        # create
        form.actions = [
            Conf(
                **{
                    "id": "default",
                    "method": "StartForm",
                    "name": "Initialize",
                    "hidden": True,
                    "description": "",
                    "css_class": "",
                    "html": "",
                    "tag": ""
                }),
            Conf(
                **{
                    "id": "create",
                    "method": "CreateObj",
                    "name": "Create",
                    "hidden": False,
                    "description": "",
                    "css_class": "",
                    "html": "",
                    "tag": ""
                }),
            Conf(
                **{
                    "id": "cancel",
                    "method": "Cancel",
                    "name": "Cancel",
                    "hidden": False,
                    "description": "",
                    "css_class": "",
                    "html": "",
                    "tag": ""
                })
        ]
        form.Setup()
        a = form.GetActions(removeHidden=False)
        self.assert_(len(a) == 3)
        a = form.GetActions(removeHidden=True)
        self.assert_(len(a) == 2)
Example #15
0
 def SessionUserFactory(self, ident, user):
     fields = ("name", "email", "surname", "lastname", "groups", "notify",
               "lastlogin")
     data = Conf()
     for f in fields:
         data[f] = user.data.get(f)
     data.lock()
     fields = ("id", "title", "pool_state")
     meta = Conf()
     for f in fields:
         meta[f] = user.data.get(f)
     meta.lock()
     su = SessionUser(ident, user.id, data, meta)
     return su
Example #16
0
    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()
        }
Example #17
0
 def SessionUserFactory(self, ident, user):
     default = ("id", "title", "pool_state", "name", "email", "surname",
                "lastname", "groups", "notify", "lastlogin")
     fields = self.app.configuration.get("sessionuser") or default
     data = Conf()
     meta = Conf()
     app = self.app
     for f in fields:
         if app.GetMetaFld(f):
             meta[f] = user.meta.get(f)
         else:
             data[f] = user.data.get(f)
     data.lock()
     meta.lock()
     return SessionUser(ident, user.id, data, meta)
Example #18
0
 def test_options(self):
     from nive.components.reform.schema import null
     from nive.definitions import Conf
     field = DummyField()
     widget = self._makeOne(strip=False)
     result = widget.renderOptions(field)
     self.assert_(result)
     widget = self._makeOne(configuration=Conf())
     result = widget.renderOptions(field)
     self.assert_(result)
     opts = {"nothing": "00000"}
     widget = self._makeOne(configuration=Conf(settings={"options":opts}))
     result = widget.renderOptions(field)
     self.assert_(result)
     self.assert_(result.find("nothing")!=-1)
Example #19
0
 def test_conf(self):
     view = BaseView(self.context2, self.request)
     self.assertFalse(view.configuration)
     conf = Conf(id="test")
     newcls = DecorateViewClassWithViewModuleConf(conf, BaseView)
     view = newcls(self.context2, self.request)
     self.assert_(view.configuration.id == "test")
Example #20
0
    def test_newform(self):
        user = User(u"test")
        user.groups.append("group:manager")
        r = self.root

        view = APIv1(r, self.request)
        view.__configuration__ = lambda: Conf(assets=(), views=())

        self.request.POST = {
            "pool_type": "bookmark",
            "link": u"the link",
            "comment": u"some text"
        }
        result = view.newItemForm()
        self.assert_(self.request.response.headers["X-Result"])

        objs = len(r.GetObjsList(fields=["id"]))
        self.request.POST = {
            "pool_type": "bookmark",
            "link": u"the link",
            "comment": u"some text",
            "create$": "1"
        }
        try:
            view.newItemForm()
        except ExceptionalResponse, result:
            self.assert_(self.request.response.headers["X-Result"])
            self.assert_(objs + 1 == len(r.GetObjsList(fields=["id"])))
Example #21
0
    def test_setformfailures(self):
        user = User(u"test")
        user.groups.append("group:manager")
        r = self.root
        o1 = create_bookmark(r, user)
        self.remove.append(o1.id)

        view = APIv1(o1, self.request)
        view.__configuration__ = lambda: Conf(assets=(), views=())

        # wrong subset
        self.request.POST = {
            "subset": "unknown!",
            "pool_type": "bookmark",
            "link": u"the link",
            "comment": u"some text"
        }
        self.assertRaises(ConfigurationError, view.setItemForm)

        # wrong action
        objs = len(r.GetObjsList(fields=["id"]))
        self.request.POST = {
            "pool_type": "bookmark",
            "link": u"the link",
            "comment": u"some text",
            "unknown$": "1"
        }
        result = view.setItemForm()
        self.assert_(self.request.response.headers["X-Result"])
        self.assert_(objs == len(r.GetObjsList(fields=["id"])))
Example #22
0
    def test_setform(self):
        user = User(u"test")
        user.groups.append("group:manager")
        r = self.root
        o1 = create_bookmark(r, user)
        self.remove.append(o1.id)

        view = APIv1(o1, self.request)
        view.__configuration__ = lambda: Conf(assets=(), views=())

        self.request.POST = {}
        result = view.setItemForm()
        self.assert_(self.request.response.headers["X-Result"])

        objs = len(r.GetObjsList(fields=["id"]))
        self.request.POST = {
            "link": u"the new link",
            "comment": u"some new text",
            "create$": "1"
        }
        result = view.setItemForm()
        self.assert_(result["content"])
        self.assert_(self.request.response.headers["X-Result"])
        self.assert_(objs == len(r.GetObjsList(fields=["id"])))

        view = APIv1(o1, self.request)
        view.__configuration__ = lambda: Conf(assets=(), views=())
        view.GetViewConf = lambda: Conf(settings=
                                        {"form": {
                                            "fields": ("comment", )
                                        }})

        self.request.POST = {}
        result = view.setItemForm()
        self.assert_(self.request.response.headers["X-Result"])

        objs = len(r.GetObjsList(fields=["id"]))
        self.request.POST = {
            "link": u"the new link",
            "comment": u"some new text",
            "create$": "1"
        }
        result = view.setItemForm()
        self.assert_(result["content"])
        self.assert_(self.request.response.headers["X-Result"])
        self.assert_(objs == len(r.GetObjsList(fields=["id"])))
Example #23
0
 def test_user(self):
     u = UserListener()
     u.app = testobj()
     u.app.usercache = SessionUserCache()
     u.identity = "user1"
     u.data = Conf()
     u.id = 1
     u.InvalidateCache()
Example #24
0
    def test_root(self):
        r = RootListener()
        r.app = testobj()
        r.app.usercache = SessionUserCache()
        user = r.LookupCache(ident="user1", activeOnly=None)
        self.assertFalse(user)
        r.app.usercache.Add(SessionUser("user1", 1, Conf(), Conf()), "user1")
        self.assertRaises(UserFound, r.LookupCache, ident="user1", activeOnly=None)

        u = UserListener()
        u.app = testobj()
        u.app.usercache = SessionUserCache()
        u.identity = "user1"
        u.data = Conf()
        u.id = 1
        sessionuser = r.SessionUserFactory("user1", u)
        self.assert_(sessionuser)
        r.AddToCache(sessionuser)
Example #25
0
    def __init__(self, path, app, rootDef):
        self.__name__ = str(path)
        self.__parent__ = app
        self.id = 0
        # unique root id generated from name . negative integer.
        self.idhash = abs(hash(self.__name__)) * -1
        self.path = path
        self.configuration = rootDef
        self.queryRestraints = {}, {}

        self.meta = Conf(
            pool_type=rootDef["id"],
            title=rootDef["name"],
            pool_state=1,
            pool_filename=path,
            pool_wfa=u"",
            pool_change=datetime.now())  # set change time to now by default
        self.data = Conf()
        self.Signal("init")
Example #26
0
class ContactForm(HTMLForm):
    """
    Contact form
    """
    mail = None
    actions = [
        Conf(id="default", method="StartForm", name=u"Initialize",
             hidden=True),
        Conf(id="sendcontact",
             method="SendForm",
             name=u"Send message",
             hidden=False,
             css_class=u"btn btn-info",
             html=u"",
             tag=u""),
    ]

    def SendForm(self, action, **kw):
        """
        Form action: send the message 
        """
        msgs = []
        result, data, errors = self.Validate(self.request)
        if result:
            user = self.view.User()
            try:
                title = data["topic"] + " - " + self.mail.title
            except:
                title = self.mail.title
            body = self.mail(user=user, data=data, view=self.view)
            tool = self.context.app.portal.userdb.GetTool("sendMail")
            result, value = tool(body=body,
                                 title=title,
                                 recvmails=[self.mail.recv],
                                 force=1)
            if not result:
                msgs.append(
                    "Sorry, a error occurred. The email could not be send.")
            else:
                msgs.append("Thanks. We have received your message.")
                return result, self._Msgs(msgs=msgs)
        return result, self.Render(data, msgs=msgs, errors=errors)
Example #27
0
    def test_newform_assets(self):
        user = User(u"test")
        user.groups.append("group:manager")
        r = self.root

        view = APIv1(r, self.request)
        view.__configuration__ = lambda: Conf(assets=(("jquery.js", "path"), ),
                                              views=())

        self.request.POST = {"assets": "only"}
        result = view.newItemForm()
        self.assert_(result["content"])
        self.assert_(result["content"].find("<form") == -1)
Example #28
0
    def test_setupacls(self):
        acl = [("Allow", "group:reader", "read",
                lambda context: context.pool_state)]

        a = SetupRuntimeAcls(acl, Conf(pool_state=1))
        self.assert_(len(a) == 1)
        self.assert_(len(a[0]) == 3)

        a = SetupRuntimeAcls(acl, Conf(pool_state=0))
        self.assert_(len(a) == 0)

        def check(context):
            return context.pool_state

        acl = [("Allow", "group:reader", "read", check)]

        a = SetupRuntimeAcls(acl, Conf(pool_state=1))
        self.assert_(len(a) == 1)
        self.assert_(len(a[0]) == 3)

        a = SetupRuntimeAcls(acl, Conf(pool_state=0))
        self.assert_(len(a) == 0)
Example #29
0
    def __init__(self, configuration=None):
        """
        Events:
        - init(configuration)
        """
        self.components = []
        self.groups = [
            Conf(id=u"authenticated", name=_(u"Authenticated"), visible=True)
        ]
        self.__acl__ = [(Allow, "group:admin", ALL_PERMISSIONS)]

        self.configuration = configuration or PortalConf()

        self.Signal("init", configuration=self.configuration)
Example #30
0
class DummyNewsuser(object):
    useCache = False
    id=123
    configuration =  newsuser.configuration
    data = Conf(mailtitle=u"a mail", mailtext=u"contact mail", mailfooter=u"no one", newsgroup=u"one.com", notify=1)
    meta = Conf(title=u"a form")
    frontendCodepage = ""
    def GetID(self):
        return 1
    def root(self):
        return self
    def LoadListItems(self, field, context):
        return []
    @property
    def app(self):
        return self
    def GetTool(self, name):
        class DummyTool(object):
            def __call__(self, **kw):
                return True, "value"
        return DummyTool()
    def QueryConfByName(self, a, b):
        return self