Projet

Général

Profil

Télécharger (4,62 ko) Statistiques
| Branche: | Révision:

root / larpe / tags / release-1.1.1 / larpe / admin / forms_prefill.ptl @ d03cb81c

1
from quixote import get_response, redirect
2
from quixote.directory import Directory
3

    
4
from qommon.form import *
5
from qommon.admin.menu import html_top, command_icon
6

    
7
from form_prefill import FormPrefill
8
from fields_prefill import FieldsDirectory
9

    
10
class FormUI:
11
    def __init__(self, form_prefill):
12
        self.form_prefill = form_prefill
13

    
14
    def form_edit(self):
15
        form = Form(enctype='multipart/form-data')
16
        form.add(StringWidget, 'name', title = _('Form name'), required = True,
17
            size = 50, value = self.form_prefill.name, hint=_('Only used for display'))
18
        form.add(UrlWidget, 'url', title = _('Form address'), required = True,
19
            size = 50, value = self.form_prefill.url)
20
        form.add(StringWidget, 'profile', title = _('ID-WSF data profile'), required = True,
21
            size = 50, value = self.form_prefill.profile, hint=_('Example: urn:liberty:id-sis-pp:2005-05'))
22
        form.add(StringWidget, 'prefix', title = _('ID-WSF data XML prefix'), required = True,
23
            size = 50, value = self.form_prefill.prefix, hint=_('Example: pp'))
24
        form.add_submit('submit', _('Submit'))
25
        form.add_submit('cancel', _('Cancel'))
26
        return form
27

    
28
    def submit_edit(self, form):
29
        for f in ('name', 'url', 'profile', 'prefix'):
30
            widget = form.get_widget(f)
31
            setattr(self.form_prefill, f, widget.parse())
32
        self.form_prefill.store()
33

    
34
class FormPage(Directory):
35
    _q_exports = ['', 'edit', 'delete']
36

    
37
    def __init__(self, form_id):
38
        self.form_prefill = FormPrefill.get(form_id)
39
        self.form_ui = FormUI(self.form_prefill)
40
        get_response().breadcrumb.append((form_id + '/', form_id))
41

    
42
    def _q_index [html] (self):
43
        html_top('forms_prefill', title = 'Form prefilling')
44

    
45
        '<h2>%s</h2>' % _('Form prefilling configuration')
46
        '<dl>'
47
        '<dt><a href="edit">%s</a></dt> <dd>%s</dd>' % (
48
                _('Edit'), _('Configure this form'))
49
        '<dt><a href="fields/">%s</a></dt> <dd>%s</dd>' % (
50
                _('Fields'), _('Configure the fields of this form'))
51
        '</dl>'
52

    
53
    def _q_lookup(self, component):
54
        if component == 'fields':
55
            return FieldsDirectory(self.form_prefill)
56

    
57
    def edit [html] (self):
58
        form = self.form_ui.form_edit()
59
        if form.get_widget('cancel').parse():
60
            return redirect('.')
61

    
62
        if form.is_submitted() and not form.has_errors():
63
            self.form_ui.submit_edit(form)
64
            return redirect('.')
65

    
66
        get_response().breadcrumb.append( ('edit', _('Edit')) )
67
        html_top('edit', title = _('Edit'))
68
        '<h2>%s</h2>' % _('Edit')
69

    
70
        form.render()
71

    
72
    def delete [html] (self):
73
        form = Form(enctype='multipart/form-data')
74
        form.widgets.append(HtmlWidget('<p>%s</p>' % _(
75
                        'You are about to irrevocably delete this form.')))
76
        form.add_submit('submit', _('Submit'))
77
        form.add_submit('cancel', _('Cancel'))
78
        if form.get_widget('cancel').parse():
79
            return redirect('..')
80
        if not form.is_submitted() or form.has_errors():
81
            get_response().breadcrumb.append(('delete', _('Delete')))
82
            html_top('delete_form', title = _('Delete Form'))
83
            '<h2>%s : %s</h2>' % (_('Delete Form'), self.form_prefill.id)
84
            form.render()
85
        else:
86
            self.form_prefill.remove_self()
87
            return redirect('..')
88

    
89

    
90
class FormsDirectory(Directory):
91
    _q_exports = ['', 'new']
92

    
93
    def __init__(self, host):
94
        get_response().breadcrumb.append(('forms_prefill/', _('Forms')))
95
        self.host = host
96

    
97
    def _q_lookup(self, component):
98
        return FormPage(component)
99

    
100
    def _q_index [html] (self):
101
        html_top('forms', title = _('Forms'))
102
        """<ul id="nav-forms-admin">
103
          <li><a href="new">%s</a></li>
104
        </ul>""" % _('New Form')
105

    
106
        '<ul class="biglist">'
107

    
108
        for form_prefill in FormPrefill.select(lambda x: x.host_id == self.host.id):
109
            if not form_prefill.name:
110
                continue
111
            '<li>'
112
            '<strong class="label">%s</strong>' % form_prefill.name
113
            url = form_prefill.url
114
            '<br /><a href="%s">%s</a>' % (url, url)
115
            '<p class="commands">'
116
            command_icon('%s/' % form_prefill.id, 'edit')
117
            command_icon('%s/delete' % form_prefill.id, 'remove')
118
            '</p></li>'
119
        '</ul>'
120

    
121
    def new [html] (self):
122
        get_response().breadcrumb.append(('new', _('New')) )
123
        form_prefill = FormPrefill()
124
        form_prefill.host_id = self.host.id
125
        form_prefill.store()
126
        return redirect('%s/edit' % form_prefill.id)
127

    
(4-4/9)