Changeset 4689
- Timestamp:
- 6 Jan 2010, 03:45:02 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
waeup/branches/ulif-layout/src/waeup/university/facultycontainer.py
r4464 r4689 1 import sys2 1 import grok 3 from zope.component import getUtility 4 from zope.component.factory import Factory 5 from zope.component.interfaces import Invalid, IFactory 6 from zope.component import createObject 7 from zope.exceptions import DuplicationError 2 from zope.component.interfaces import IFactory 8 3 from zope.interface import implementedBy 9 from waeup.interfaces import IFacultyContainer, IFaculty, IWAeUPCSVImporter 10 from waeup.viewlets import (MainArea, LeftSidebar, Index, Add, Manage, 11 FormWrapMixin) 12 from waeup.widgets.interfaces import ITableProvider 4 from waeup.interfaces import IFacultyContainer, IFaculty 13 5 14 6 class FacultyContainer(grok.Container): … … 49 41 def getInterfaces(self): 50 42 return implementedBy(FacultyContainer) 51 52 53 #54 # Viewing / Layout stuff...55 #56 class Content(grok.Viewlet):57 grok.viewletmanager(MainArea)58 grok.context(IFacultyContainer)59 grok.view(Index)60 61 def update(self):62 self.table = ITableProvider(self.context).getTables(self.view)[0]63 self.table.need()64 65 def getFaculties(self):66 """Convinience method to create a sorted list of faculties.67 68 It provides a list of dicts with entries for all data needed by69 usual list templates.70 """71 result = []72 for key, val in self.context.items():73 result.append(dict(id=key, name=val.title))74 return result75 76 class ManageFacultyContainer(grok.Viewlet):77 grok.viewletmanager(MainArea)78 grok.context(IFacultyContainer)79 grok.view(Manage)80 grok.template('manage')81 82 def update(self):83 form = self.request.form84 if 'CANCEL' in form.keys():85 self.view.redirect(self.view.url(self.context))86 if not 'DELETE' in form.keys():87 return88 fac_id = form['fac_id']89 if not isinstance(fac_id, list):90 fac_id = [fac_id]91 deleted = []92 for id in fac_id:93 try:94 del self.context[id]95 deleted.append(id)96 except:97 self.view.flash('Could not delete %s: %s: %s' % (98 id, sys.exc_info()[0], sys.exc_info()[1]))99 if len(deleted):100 self.view.flash('Successfully deleted: %s' % ', '.join(deleted))101 # We have to redirect to let flash messages appear immediately...102 self.view.redirect(self.view.url())103 return104 105 class AddFacultyForm(grok.AddForm):106 grok.context(IFacultyContainer)107 form_fields = grok.AutoFields(IFaculty)108 label = 'Add a faculty'109 110 @grok.action('Add faculty')111 def addFaculty(self, **data):112 faculty = createObject(u'waeup.Faculty')113 self.applyData(faculty, **data)114 try:115 self.context.addFaculty(faculty)116 except DuplicationError:117 self.status = Invalid('The name chosen already exists '118 'in the database')119 return120 self.redirect(self.url(self.context))121 122 123 class AddFaculty(FormWrapMixin, grok.Viewlet):124 """A viewlet that wraps the `AddFacultyForm`.125 """126 grok.viewletmanager(MainArea)127 grok.context(IFacultyContainer)128 grok.view(Add)129 grok.require('waeup.manageUniversity')130 131 formview_name = 'addfacultyform' # The name of the formview we132 # want to be rendered in this133 # viewlet.134 135 136 class AddFacultyLink(grok.Viewlet):137 """A link in the left sidebar displaying 'Add faculty'138 """139 grok.viewletmanager(LeftSidebar)140 grok.context(IFacultyContainer)141 grok.view(Index)142 grok.order(5)143 # This is so cool! This link is only displayed, when the user is144 # allowed to use it!145 grok.require('waeup.manageUniversity')146 147 def render(self):148 return u'<div class="portlet"><a href="add">Add faculty</a></div>'149 150 class ManageFacultyLink(grok.Viewlet):151 """A link in the left sidebar displaying 'Manage faculty'152 """153 grok.viewletmanager(LeftSidebar)154 grok.context(IFacultyContainer)155 grok.view(Index)156 grok.order(5)157 grok.require('waeup.manageUniversity')158 159 def render(self):160 return u'<div class="portlet"><a href="manage">Manage faculties</a></div>'
Note: See TracChangeset for help on using the changeset viewer.