Skip to content

Commit cdde4aa

Browse files
committed
workflow: simplify
1 parent f3ff005 commit cdde4aa

File tree

6 files changed

+27
-29
lines changed

6 files changed

+27
-29
lines changed

TODO

-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
- Add online demo for goodforms
1313
- Check XXX / FIXME / TODO on code
1414
- Update copyrights
15-
- Fix workflow
1615
- Fix display form main view (multipages...)
1716
- Add better ODS samples into data/
1817
- Fix company field in User class

application.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
from form import Form, Forms
4141
from form_views import Forms_View
4242
from model import FormModel
43-
from workflow import EMPTY, PENDING, FINISHED
43+
from workflow import NOT_REGISTERED, EMPTY, PENDING, FINISHED
4444

4545

4646
class Application(Folder):
@@ -117,7 +117,7 @@ def get_stats(self):
117117
if user.get_value('password') is None:
118118
stats['unconfirmed_users'] += 1
119119
else:
120-
state = form.get_workflow_state()
120+
state = form.get_value('form_state')
121121
if state == EMPTY:
122122
stats['empty_forms'] += 1
123123
elif state == PENDING:
@@ -155,7 +155,8 @@ def subscribe_user(self, user):
155155
# Add the form
156156
if self.get_resource(username, soft=True) is None:
157157
self.make_resource(username, Form,
158-
title={'en': user.get_title()})
158+
title={'en': user.get_title()},
159+
form_state=NOT_REGISTERED)
159160

160161

161162
# Views

form.py

+3-10
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,7 @@ class Form(Folder):
120120

121121
# Fields
122122
data = File_Field(title=MSG(u'Form'), class_handler=FormHandler)
123-
form_state = Text_Field(title=MSG(u'State'), indexed=True, stored=True)
124-
workflow = WorkflowState_Field
123+
form_state = WorkflowState_Field()
125124

126125
def init_resource(self, *args, **kw):
127126
# Proxy
@@ -295,13 +294,8 @@ def get_form_title(self):
295294

296295
######################################################################
297296
# Security
298-
def get_workflow_state(self):
299-
# FIXME
300-
return 'pending'
301-
302-
303297
def is_ready(self):
304-
return self.get_workflow_state() == FINISHED
298+
return self.get_value('form_state') == FINISHED
305299

306300

307301
def is_first_time(self):
@@ -493,7 +487,7 @@ class Forms(Folder):
493487

494488
class_id = 'forms'
495489
class_title = MSG(u"Form answers")
496-
class_views = ['view', 'new_resource', 'export']
490+
class_views = ['view', 'export']
497491
class_icon_css = 'fa-user'
498492

499493
def get_document_types(self):
@@ -549,5 +543,4 @@ def get_controls(self):
549543

550544
# Views
551545
view = Forms_View
552-
new_resource = NewResource_Local(title=MSG(u'Create an answer to form'))
553546
export = Forms_Export

form_views.py

+15-13
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
from workflow import WorkflowState, NOT_REGISTERED, PENDING, FINISHED, EXPORTED
4242
from customization import custom_flag
4343
from rw import ODSWriter, XLSWriter
44+
from workflow import NOT_REGISTERED, EMPTY, PENDING, FINISHED, EXPORTED
4445

4546
# Messages
4647
MSG_APPLICATION_TITLE = MSG(u'<span class="application-title">Title of your application:</span> {title}', format='replace_html')
@@ -217,8 +218,10 @@ def raw_action(self, resource, context, form):
217218
context.database.change_resource(resource)
218219
# Transmit list of errors when returning GET
219220
context.message = MSG_SAVED
220-
# if resource.get_workflow_state() == EMPTY:
221-
resource.set_workflow_state(PENDING)
221+
# Update form state
222+
if resource.get_value('form_state') == EMPTY:
223+
resource.set_value('form_state', PENDING)
224+
222225

223226
def action(self, resource, context, form):
224227
schema, pages = resource.get_schema_pages()
@@ -370,9 +373,9 @@ def action(self, resource, context, form):
370373
context.message = messages
371374
else:
372375
context.message = MSG_SAVED
373-
# FIXME
374-
# if resource.get_workflow_state() == EMPTY:
375-
#resource.set_workflow_state(PENDING)
376+
# Update form state
377+
if resource.get_value('form_state') == EMPTY:
378+
resource.set_value('form_state', PENDING)
376379

377380

378381

@@ -449,9 +452,8 @@ def get_namespace(self, resource, context):
449452
is_allowed_to_export = True
450453
namespace['is_allowed_to_export'] = is_allowed_to_export
451454
# State
452-
namespace['statename'] = statename = resource.get_workflow_state()
453-
namespace['form_state'] = WorkflowState.get_value(
454-
resource.get_workflow_state())
455+
namespace['statename'] = statename = resource.get_value('form_state')
456+
namespace['form_state'] = resource.get_value_title('form_state')
455457
# Transitions
456458
namespace['can_send'] = statename == PENDING and not errors
457459
namespace['can_export'] = is_allowed_to_export and not errors
@@ -465,7 +467,7 @@ def get_namespace(self, resource, context):
465467
def action_send(self, resource, context, form):
466468
"""Ce qu'il faut faire quand le formulaire est soumis.
467469
"""
468-
resource.set_workflow_state(FINISHED)
470+
resource.set_value('form_state', FINISHED)
469471

470472
# Notification e-mail
471473
application = resource.parent
@@ -502,7 +504,7 @@ def action_send(self, resource, context, form):
502504
def action_export(self, resource, context, form):
503505
"""Ce qu'il faut faire quand le formulaire est exporté.
504506
"""
505-
resource.set_workflow_state(EXPORTED)
507+
resource.set_value('form_state', EXPORTED)
506508

507509
# XXX
508510
context.commit = False
@@ -623,7 +625,7 @@ def action_export(self, resource, context, form, writer_cls=ODSWriter):
623625
and user.get_value('password') is None):
624626
state = NOT_REGISTERED
625627
else:
626-
state = item_brain.workflow_state
628+
state = item_brain.form_state
627629
value = WorkflowState.get_value(state)
628630
else:
629631
value = self.get_item_value(resource, context, item,
@@ -671,7 +673,7 @@ class Forms_Export(BaseView):
671673
def GET(self, resource, context):
672674
app = resource.parent
673675
for form in app.get_forms():
674-
state = form.get_workflow_state()
676+
state = form.get_value('form_state')
675677
if state != 'private':
676678
break
677679
else:
@@ -723,7 +725,7 @@ def GET(self, resource, context):
723725
email = ""
724726
firstname = ""
725727
lastname = form.name
726-
state = WorkflowState.get_value(form.get_workflow_state())
728+
state = form.get_value_title('form_state')
727729
state = state.gettext()
728730
row = [form.name, firstname, lastname, email, state]
729731
handler = form.get_value('data')

formpage.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ def get_namespace(self, form, view, context, skip_print=False,
183183
# Lecture seule ?
184184
root = self.get_resource('/')
185185
if not skip_print and not root.is_allowed_to_edit(context.user, form):
186-
state = form.get_workflow_state()
186+
state = form.get_value('form_state')
187187
if state in (FINISHED, EXPORTED):
188188
readonly = True
189189
# 0005160: affiche les champs même en lecture seule

workflow.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434

3535
class WorkflowState(Enumerate):
3636

37+
default = NOT_REGISTERED
3738
options = [
3839
{'name': NOT_REGISTERED, 'value': MSG(u"Not Registered")},
3940
{'name': EMPTY, 'value': MSG(u"Empty")},
@@ -46,5 +47,7 @@ class WorkflowState(Enumerate):
4647

4748
class WorkflowState_Field(Select_Field):
4849

49-
title = MSG(u'WF State')
50+
title = MSG(u'State')
5051
datatype = WorkflowState
52+
indexed = True
53+
stored = True

0 commit comments

Comments
 (0)