Skip to content

Commit

Permalink
Merge pull request #11 from imatem/addForms
Browse files Browse the repository at this point in the history
Add forms
  • Loading branch information
adriana-rv authored Feb 9, 2018
2 parents 1d68827 + 5bd1b41 commit 8b870f1
Show file tree
Hide file tree
Showing 8 changed files with 190 additions and 3 deletions.
33 changes: 33 additions & 0 deletions src/collective/judgment/browser/addpdffiles.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# -*- coding: utf-8 -*-
# from collective.judgment import _
from Acquisition import aq_inner
from plone.dexterity.browser.add import DefaultAddForm
from plone.dexterity.browser.add import DefaultAddView
from plone.dexterity.interfaces import IDexterityFTI
from plone.dexterity.utils import addContentToContainer
from zope.component import getUtility


class PdfFileAddForm(DefaultAddForm):
portal_type = 'Pdf File'

def add(self, object):

fti = getUtility(IDexterityFTI, name=self.portal_type)
container = aq_inner(self.context)
new_object = addContentToContainer(container, object)

parentfti = getUtility(IDexterityFTI, name=container.portal_type)

if parentfti.immediate_view:
self.immediate_view = "/".join(
[container.absolute_url(), fti.immediate_view]
)
else:
self.immediate_view = "/".join(
[container.absolute_url(), ]
)


class PdfFileAddView(DefaultAddView):
form = PdfFileAddForm
22 changes: 22 additions & 0 deletions src/collective/judgment/browser/configure.zcml
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,30 @@
type="plone"
directory="static"
/>
<!-- custom add and edit forms -->
<adapter
for="Products.CMFCore.interfaces.IFolderish
zope.publisher.interfaces.browser.IDefaultBrowserLayer
plone.dexterity.interfaces.IDexterityFTI"
provides="zope.publisher.interfaces.browser.IBrowserPage"
factory=".addpdffiles.PdfFileAddView"
name="Pdf File"
/>
<class class=".addpdffiles.PdfFileAddView">
<require
permission="collective.judgment.AddPromotion"
interface="zope.publisher.interfaces.browser.IBrowserPage"
/>
</class>

<browser:page
for="collective.judgment.content.files.IPdfFile"
name="edit"
class=".editpdffiles.EditForm"
permission="collective.judgment.AddPromotion"
/>

<!-- macros and views -->
<browser:page
for="*"
name="macro_comments"
Expand Down
18 changes: 18 additions & 0 deletions src/collective/judgment/browser/editpdffiles.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# -*- coding: utf-8 -*-
from zope.component import getUtility
from plone.dexterity.browser.edit import DefaultEditForm
from plone.registry.interfaces import IRegistry


class EditForm(DefaultEditForm):

def nextURL(self):
view_url = self.context.aq_parent.absolute_url()
portal_type = getattr(self.context.aq_parent, 'portal_type', None)
if portal_type is not None:
registry = getUtility(IRegistry)
use_view_action = registry.get(
'plone.types_use_view_action_in_listings', [])
if portal_type in use_view_action:
view_url = view_url + '/view'
return view_url
8 changes: 6 additions & 2 deletions src/collective/judgment/browser/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ def order_items(self):
items['report'] = None
items['plan'] = None
items['letter'] = None
items['pdf'] = None
others = []

for item in self.context.items():
Expand All @@ -45,6 +46,8 @@ def order_items(self):
items['report'] = item[1]
elif itemportal == 'Reasoned Letter':
items['letter'] = item[1]
elif itemportal == 'Pdf File':
items['pdf'] = item[1]
else:
others.append(item[1])

Expand All @@ -55,14 +58,15 @@ def iddictToType(self, key):
'cv': 'Curriculum Vitae',
'plan': 'Activities Plan',
'report': 'Activities Report',
'letter': 'Reasoned Letter'
'letter': 'Reasoned Letter',
'pdf': 'Pdf File'
}
return iddict.get(key, '')

def editurl(self, key):
nametype = self.iddictToType(key)
if nametype:
return '++add++' + nametype
return '++add++' + nametype + '?title=foopdf'

return ''

Expand Down
16 changes: 15 additions & 1 deletion src/collective/judgment/content/files.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,25 @@

from collective.judgment.validators import isValidFileType
from plone.autoform import directives
from zope.interface import provider
from zope.schema.interfaces import IContextAwareDefaultFactory



@provider(IContextAwareDefaultFactory)
def request_title(context):
return context.REQUEST.form.get('title', '')


class IPdfFile(model.Schema):
""" Marker interfce and Dexterity Python Schema for Promotion
"""
# directives.omitted('title')
title = schema.TextLine(
title=_(u'Title'),
# description=u"",
required=False
required=False,
defaultFactory=request_title,
)

description = schema.Text(
Expand All @@ -40,6 +50,10 @@ class IPdfFile(model.Schema):
)


class PdfFile(File):
"""Convenience subclass for ``File`` only accept pdf
"""

class CurriculumVitae(File):
"""Convenience subclass for ``Curriculum Vitae`` portal type
"""
Expand Down
1 change: 1 addition & 0 deletions src/collective/judgment/profiles/default/types.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

<object meta_type="Dexterity FTI" name="promotion"/>
<object meta_type="Dexterity FTI" name="tenure"/>
<object meta_type="Dexterity FTI" name="Pdf File"/>
<object meta_type="Dexterity FTI" name="Curriculum Vitae"/>
<object meta_type="Dexterity FTI" name="Activities Plan"/>
<object meta_type="Dexterity FTI" name="Activities Report"/>
Expand Down
94 changes: 94 additions & 0 deletions src/collective/judgment/profiles/default/types/Pdf_File.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
<?xml version="1.0"?>
<object
i18n:domain="collective.judgment"
meta_type="Dexterity FTI"
name="Pdf File"
xmlns:i18n="http://xml.zope.org/namespaces/i18n">

<!-- Basic properties -->
<property
i18n:translate=""
name="title">Pdf File</property>
<property
i18n:translate=""
name="description">Lets you upload a file to the site.</property>

<property name="allow_discussion">False</property>
<property name="factory">Pdf File</property>
<property name="icon_expr"></property>
<property name="link_target"></property>

<!-- Hierarchy control -->
<property name="allowed_content_types"/>
<property name="filter_content_types">True</property>
<property name="global_allow">False</property>

<!-- Schema, class and security -->
<property name="add_permission">collective.judgment.AddPromotion</property>
<property name="klass">collective.judgment.content.files.PdfFile</property>
<property name="model_file"></property>
<property name="model_source"></property>
<property name="schema">collective.judgment.content.files.IPdfFile</property>

<!-- Enabled behaviors -->
<property name="behaviors" purge="false">
<!-- <element value="plone.app.dexterity.behaviors.metadata.ICategorization"/> -->
<!-- <element value="plone.app.dexterity.behaviors.metadata.IPublication"/> -->
<!-- <element value="plone.app.dexterity.behaviors.metadata.IOwnership"/> -->
<element value="plone.app.dexterity.behaviors.filename.INameFromFileName"/>
<element value="plone.app.dexterity.behaviors.discussion.IAllowDiscussion"/>
<!-- <element value="plone.app.dexterity.behaviors.id.IShortName"/> -->
<!-- <element value="plone.app.dexterity.behaviors.exclfromnav.IExcludeFromNavigation"/> -->
<!-- <element value="plone.app.relationfield.behavior.IRelatedItems"/> -->
</property>

<!-- View information -->
<property name="add_view_expr">string:${folder_url}/++add++Pdf File</property>
<property name="default_view">file_view</property>
<property name="default_view_fallback">False</property>
<property name="immediate_view">view</property>
<property name="view_methods">
<element value="file_view"/>
</property>

<!-- Method aliases -->
<alias
from="(Default)"
to="@@display-file"
/>
<alias
from="edit"
to="@@edit"
/>
<alias
from="sharing"
to="@@sharing"
/>
<alias
from="view"
to="(selected layout)"
/>

<!-- Actions -->
<action
action_id="view"
category="object"
condition_expr=""
i18n:attributes="title"
title="View"
url_expr="string:${object_url}/view"
visible="True">
<permission value="View"/>
</action>
<action
action_id="edit"
category="object"
condition_expr=""
i18n:attributes="title"
title="Edit"
url_expr="string:${object_url}/edit"
visible="True">
<permission value="Modify portal content"/>
</action>

</object>
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
<property name="global_allow">True</property>
<property name="filter_content_types">True</property>
<property name="allowed_content_types">
<element value="Pdf File"/>
<element value="Curriculum Vitae"/>
<element value="Activities Plan"/>
<element value="Activities Report"/>
Expand Down

0 comments on commit 8b870f1

Please sign in to comment.