Skip to content
This repository has been archived by the owner on Sep 5, 2019. It is now read-only.

Commit

Permalink
Adds a basic directory entry view
Browse files Browse the repository at this point in the history
  • Loading branch information
Denis Krienbühl committed Sep 1, 2017
1 parent d9fe499 commit 37f902e
Show file tree
Hide file tree
Showing 6 changed files with 104 additions and 18 deletions.
31 changes: 27 additions & 4 deletions onegov/org/layout.py
Expand Up @@ -9,6 +9,7 @@
from onegov.core.static import StaticFile
from onegov.core.utils import linkify
from onegov.directory import DirectoryCollection
from onegov.directory import DirectoryEntryCollection
from onegov.event import OccurrenceCollection
from onegov.form import FormCollection, FormSubmissionFile, render_field
from onegov.newsletter import NewsletterCollection, RecipientCollection
Expand Down Expand Up @@ -1706,7 +1707,7 @@ def editbar_links(self):
text=_("Directory"),
url=self.request.link(
self.model,
name='neu'
name='+neu'
),
attrs={'class': 'new-directory'}
)
Expand All @@ -1724,7 +1725,11 @@ def breadcrumbs(self):
Link(_("Directories"), self.request.class_link(
DirectoryCollection
)),
Link(_(self.model.directory.title), self.request.link(self.model))
Link(_(self.model.directory.title), self.request.class_link(
DirectoryEntryCollection, {
'directory_name': self.model.directory_name
}
))
]

@cached_property
Expand All @@ -1733,7 +1738,7 @@ def editbar_links(self):
return [
Link(
text=_("Edit"),
url=self.request.link(self.model, 'bearbeiten'),
url=self.request.link(self.model, '+bearbeiten'),
attrs={'class': 'edit-link'}
),
Link(
Expand Down Expand Up @@ -1763,10 +1768,28 @@ def editbar_links(self):
text=_("Entry"),
url=self.request.link(
self.model,
name='neu'
name='+neu'
),
attrs={'class': 'new-directory-entry'}
)
]
),
]


class DirectoryEntryLayout(DefaultLayout):

@cached_property
def breadcrumbs(self):
return [
Link(_("Homepage"), self.homepage_url),
Link(_("Directories"), self.request.class_link(
DirectoryCollection
)),
Link(_(self.model.directory.title), self.request.class_link(
DirectoryEntryCollection, {
'directory_name': self.model.directory.name
}
)),
Link(_(self.model.title), '#')
]
4 changes: 3 additions & 1 deletion onegov/org/models/directory.py
@@ -1,5 +1,6 @@
from onegov.directory import Directory, DirectoryEntry
from onegov.org.models.extensions import HiddenFromPublicExtension
from onegov.org.models.extensions import CoordinatesExtension


class ExtendedDirectory(Directory, HiddenFromPublicExtension):
Expand All @@ -8,7 +9,8 @@ class ExtendedDirectory(Directory, HiddenFromPublicExtension):
es_type_name = 'extended_directories'


class ExtendedDirectoryEntry(DirectoryEntry):
class ExtendedDirectoryEntry(DirectoryEntry, CoordinatesExtension,
HiddenFromPublicExtension):
__mapper_args__ = {'polymorphic_identity': 'extended'}

es_type_name = 'extended_directory_entries'
18 changes: 12 additions & 6 deletions onegov/org/path.py
Expand Up @@ -460,9 +460,9 @@ def get_directories(app):

@OrgApp.path(
model=DirectoryEntryCollection,
path='/verzeichnis/{name}')
def get_directory_entries(app, name, extra_parameters, page=0):
directory = DirectoryCollection(app.session()).by_name(name)
path='/verzeichnisse/{directory_name}')
def get_directory_entries(app, directory_name, extra_parameters, page=0):
directory = DirectoryCollection(app.session()).by_name(directory_name)

if directory:
collection = DirectoryEntryCollection(
Expand All @@ -479,6 +479,12 @@ def get_directory_entries(app, name, extra_parameters, page=0):

@OrgApp.path(
model=DirectoryEntry,
path='/verzeichnis-eintrag/{name}')
def get_directory_entry(app, name, extra_parameters):
return DirectoryEntryCollection(app.session()).by_name(name)
path='/verzeichnisse/{directory_name}/{name}')
def get_directory_entry(app, directory_name, name):
directory = DirectoryCollection(app.session()).by_name(directory_name)

if directory:
return DirectoryEntryCollection(
directory=directory,
type='extended'
).by_name(name)
2 changes: 1 addition & 1 deletion onegov/org/templates/directory.pt
Expand Up @@ -7,7 +7,7 @@

<ul tal:condition="entries" class="with-lead">
<li tal:repeat="entry entries">
<a class="list-title" tal:attributes="href link(entry)">${entry.title}</a><metal:hint use-macro="layout.macros['hidden-from-public-hint']" tal:define="item directory" />
<a class="list-title" tal:attributes="href request.link(entry)">${entry.title}</a><metal:hint use-macro="layout.macros['hidden-from-public-hint']" tal:define="item entry" />
<div class="list-lead">${entry.lead}</div>
</li>
</ul>
Expand Down
11 changes: 11 additions & 0 deletions onegov/org/templates/directory_entry.pt
@@ -0,0 +1,11 @@
<div metal:use-macro="layout.base" i18n:domain="onegov.org">
<tal:block metal:fill-slot="title">
${title}
</tal:block>
<tal:block metal:fill-slot="content">
<tal:block metal:use-macro="layout.macros.page_content"
tal:define="lead entry.lead;text None; people None; contact None; coordinates entry.coordinates">

</tal:block>
</tal:block>
</div>
56 changes: 50 additions & 6 deletions onegov/org/views/directory.py
@@ -1,15 +1,26 @@
from onegov.core.security import Public, Secret
from onegov.core.security import Public, Private, Secret
from onegov.directory import DirectoryCollection
from onegov.directory import DirectoryConfiguration
from onegov.directory import DirectoryEntry
from onegov.directory import DirectoryEntryCollection
from onegov.org import OrgApp, _
from onegov.org.forms import DirectoryForm
from onegov.org.layout import DirectoryCollectionLayout
from onegov.org.layout import DirectoryEntryCollectionLayout
from onegov.org.models import ExtendedDirectory
from onegov.org.layout import DirectoryEntryLayout
from onegov.org.models import ExtendedDirectory, ExtendedDirectoryEntry
from onegov.org.new_elements import Link


def get_directory_form_class(model, request):
return ExtendedDirectory().with_content_extensions(DirectoryForm, request)


def get_directory_entry_form_class(model, request):
return ExtendedDirectoryEntry().with_content_extensions(
model.directory.form_class, request)


@OrgApp.html(
model=DirectoryCollection,
template='directories.pt',
Expand All @@ -25,10 +36,6 @@ def view_directories(self, request):
}


def get_directory_form_class(model, request):
return ExtendedDirectory().with_content_extensions(DirectoryForm, request)


@OrgApp.form(model=DirectoryCollection, name='neu', template='form.pt',
permission=Secret, form=get_directory_form_class)
def handle_new_directory(self, request, form):
Expand Down Expand Up @@ -111,3 +118,40 @@ def view_directory(self, request):
'title': self.directory.title,
'entries': self.batch,
}


@OrgApp.form(
model=DirectoryEntryCollection,
permission=Private,
template='form.pt',
form=get_directory_entry_form_class,
name='neu')
def handle_new_directory_entry(self, request, form):
if form.submitted(request):
entry = self.directory.add(**form.data)
form.populate_obj(entry)

request.success(_("Added a new directory entry"))
return request.redirect(request.link(entry))

layout = DirectoryEntryCollectionLayout(self, request)
layout.breadcrumbs.append(Link(_("New"), '#'))

return {
'layout': layout,
'title': _("New Directory Entry"),
'form': form,
}


@OrgApp.html(
model=DirectoryEntry,
permission=Public,
template='directory_entry.pt')
def view_directory_entry(self, request):

return {
'layout': DirectoryEntryLayout(self, request),
'title': self.title,
'entry': self
}

0 comments on commit 37f902e

Please sign in to comment.