1: from zope import schema
1: from zope.interface import implements, alsoProvides, Interface, Invalid
1: from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile as FiveViewPageTemplateFile
1: from z3c.form import form, field, button
1: import z3c.form.interfaces
1: from plone.z3cform.layout import FormWrapper, wrap_form
1: from vnccollab.theme import messageFactory as _
1: from vnccollab.theme.vocabularies import SimpleVocabularyFactory
1: from vnccollab.theme.browser.zimbratask import IZimbraTaskForm, ZimbraTaskForm
1: from vnccollab.theme.browser.file_issue import IFileTicketForm, FileTicketForm
2: class INewTicketForm(Interface):
"""
1: """
1: type_of_ticket = schema.Choice(
1: title = _(u'Type of Ticket'),
1: description = _(u''),
1: vocabulary = 'vnccollab.theme.vocabularies.NewTicketVocabulary',
1: required = True)
2: class NewTicketFormBase(form.Form):
1: """New Ticket Base Form. It's just a selector."""
1: implements(INewTicketForm)
1: fields = field.Fields(INewTicketForm)
1: ignoreContext = True
1: label = _(u'New Ticket')
1: description = u'Allows you to create a Redmine Ticket or Zimbra Task.'
1: id = 'new_ticket_form'
1: def updateWidgets(self):
>>>>>> form.Form.updateWidgets(self)
>>>>>> if (('redmine_task_form.buttons.create' in self.request.form)
>>>>>> or ('zimbra_task_form.buttons.create' in self.request.form)):
# Shows subform selector only first time
>>>>>> self.widgets['type_of_ticket'].mode = z3c.form.interfaces.HIDDEN_MODE
2: class ZimbraTaskFormWrapper(FormWrapper):
1: """Wrapper form for New Zimbra Task"""
1: form = ZimbraTaskForm
2: class FileTicketFormWrapper(FormWrapper):
1: """Wrapper form for New Redmine Ticket"""
1: form = FileTicketForm
2: class NewTicketForm(FormWrapper):
1: """Wrapper form for New Task. It combines Zimbra and Redmine Forms."""
1: form = NewTicketFormBase
1: index = FiveViewPageTemplateFile('templates/newticket.pt')
1: def __init__(self, context, request):
>>>>>> FormWrapper.__init__(self, context, request)
>>>>>> self.context = context
>>>>>> self.request = request
>>>>>> self.zimbra = ZimbraTaskFormWrapper(context, request)
>>>>>> self.redmine = FileTicketFormWrapper(context, request)
1: def update(self):
>>>>>> FormWrapper.update(self)
>>>>>> if 'redmine_task_form.buttons.create' not in self.request.form:
# Shows zimbra form only if redmine was not chosen
>>>>>> self.zimbra.update()
>>>>>> if 'zimbra_task_form.buttons.create' not in self.request.form:
# Shows redmine form only if zimbra was not chosen
>>>>>> self.redmine.update()