1 from zope.interface import implements
2 from webut.skin import iskin
3 from ldaptor.protocols.ldap import ldapsyntax, distinguishedname
4 from ldaptor.apps.webui.uriquote import uriUnquote
5 from ldaptor.apps.webui.i18n import _
6 from ldaptor.apps.webui import i18n, iwebui
7 from ldaptor import weave
8
9 import os
10 from nevow import rend, inevow, loaders, url, tags
11 from formless import annotate, webform, iformless
12
16
18 implements(iskin.ISkinnable)
19
20 title = _('Ldaptor Delete Page')
21
22 docFactory = loaders.xmlfile(
23 'delete.xhtml',
24 templateDir=os.path.split(os.path.abspath(__file__))[0])
25
29
32
34 return annotate.MethodBinding(
35 'delete',
36 annotate.Method(arguments=[
37 annotate.Argument('ctx', annotate.Context()),
38 ],
39 label=_('Confirm delete')),
40 action=_('Delete'))
41
43 request = inevow.IRequest(ctx)
44 user = request.getSession().getLoggedInRoot().loggedIn
45 e=ldapsyntax.LDAPEntry(client=user.client,
46 dn=self.dn)
47 d=e.delete()
48 def cb(dummy):
49 basedn = iwebui.ICurrentDN(ctx)
50 while (basedn != ''
51 and self.dn.contains(basedn)):
52 basedn = basedn.up()
53 u=url.URL.fromContext(ctx)
54 u=u.parentdir().parentdir()
55 if basedn != '':
56 u=u.child(basedn).child('search')
57 request.setComponent(iformless.IRedirectAfterPost, u)
58 return _("Deleted %s.") % self.dn
59 def eb(fail):
60 return _("Failed: %s.") % fail.getErrorMessage()
61 d.addCallbacks(cb, eb)
62 return d
63
65 try:
66 return ctx.locate(inevow.IStatusMessage)
67 except KeyError:
68 return None
69
71 r=context.tag.allPatterns(str(bool(data)))
72 return context.tag.clear()[r]
73
74 - def data_entry(self, context, data):
75 user = context.locate(inevow.ISession).getLoggedInRoot().loggedIn
76 assert user
77
78 entry = ldapsyntax.LDAPEntry(client=user.client, dn=self.dn)
79 d = entry.fetch()
80 d.addErrback(ErrorWrapper)
81 return d
82
84 if isinstance(data, ErrorWrapper):
85 return context.tag.clear() \
86 [ tags.strong(style="color: red;") \
87 [ _('An error occurred: '),
88 data.value.getErrorMessage(),
89 ]
90 ]
91 else:
92 return context.tag
93
96
99
102
104 u=url.URL.fromContext(ctx).up().clear()
105 l=[]
106 l.append(tags.a(href=u.sibling("search"))[_("Search")])
107 l.append(tags.a(href=u.sibling("add"))[_("add new entry")])
108 l.append(tags.a(href=u.sibling("edit").child(str(self.dn)))[_("edit")])
109 return l
110
113
116
117 render_i18n = i18n.render()
118
120 implements(iskin.ISkinnable)
121
122 title = _('Ldaptor Delete Page')
123
124 addSlash = True
125
126 docFactory = loaders.xmlfile(
127 'delete-nodn.xhtml',
128 templateDir=os.path.split(os.path.abspath(__file__))[0])
129
131 u = url.URL.fromContext(context)
132 return context.tag(href=u.parentdir().child('search'))
133
143
144 render_i18n = i18n.render()
145
148