Changeset 11954 for main/waeup.kofa/branches/henrik-regista/src/waeup
- Timestamp:
- 13 Nov 2014, 16:54:17 (10 years ago)
- Location:
- main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba
- Files:
-
- 46 edited
- 2 moved
Legend:
- Unmodified
- Added
- Removed
-
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/app.py
r11952 r11954 25 25 from waeup.ikoba.mandates.container import MandatesContainer 26 26 from waeup.ikoba.interfaces import ( 27 I Institution, IIkobaPluggable, IObjectUpgradeEvent, IJobManager,27 ICompany, IIkobaPluggable, IObjectUpgradeEvent, IJobManager, 28 28 VIRT_JOBS_CONTAINER_NAME) 29 29 from waeup.ikoba.userscontainer import UsersContainer … … 32 32 from waeup.ikoba.configuration import ConfigurationContainer 33 33 34 class Institution(grok.Application, grok.Container, Logger):35 """A institution.34 class Company(grok.Application, grok.Container, Logger): 35 """A company. 36 36 """ 37 grok.implements(I Institution)37 grok.implements(ICompany) 38 38 39 39 # Setup authentication for this app. Note: this is only … … 44 44 45 45 def __init__(self, *args, **kw): 46 super( Institution, self).__init__(*args, **kw)46 super(Company, self).__init__(*args, **kw) 47 47 self.setup() 48 48 return … … 85 85 self.logger.info('Plugin update finished.') 86 86 return 87 attrs_to_fields( Institution)87 attrs_to_fields(Company) 88 88 89 89 class ObjectUpgradeEvent(ObjectEvent): … … 92 92 grok.implements(IObjectUpgradeEvent) 93 93 94 @grok.subscribe( Institution, grok.IObjectAddedEvent)95 def handle_ institution_added(app, event):96 """If a institutionis added, a message is logged.94 @grok.subscribe(Company, grok.IObjectAddedEvent) 95 def handle_company_added(app, event): 96 """If a company is added, a message is logged. 97 97 """ 98 app.logger.info(' Institution`%s` added.' % getattr(app, '__name__', None))98 app.logger.info('Company `%s` added.' % getattr(app, '__name__', None)) 99 99 return -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/app.txt
r11952 r11954 7 7 .. module:: waeup.ikoba.app 8 8 9 .. class:: Institution9 .. class:: Company 10 10 11 11 The main Ikoba application object is given with 12 :class:` Institution`. It provides the main containers as faculties,12 :class:`Company`. It provides the main containers as faculties, 13 13 hostels, etc. 14 14 15 15 .. attribute:: name 16 16 17 A string. The name of a institution.17 A string. The name of a company. 18 18 19 19 .. attribute:: faculties 20 20 21 21 An arbitrary object containing "faculties". In the case of 22 ` Institution` it is a container of type22 `Company` it is a container of type 23 23 `waeup.ikoba.interfaces.IFacultiesContainer`. 24 24 25 25 26 Creating ` Institution` instances26 Creating `Company` instances 27 27 =============================== 28 28 29 As :class:` Institution` instances make use of the Zope Component29 As :class:`Company` instances make use of the Zope Component 30 30 Architecture (ZCA), we have to setup the basic component registries, 31 31 before we can create instances. We do this by simply grokking the … … 34 34 registries (this is done by the testlayer automatically). 35 35 36 Now we can import the :class:` Institution` class and create an36 Now we can import the :class:`Company` class and create an 37 37 instance: 38 38 39 >>> from waeup.ikoba.app import Institution40 >>> my institution = Institution()41 >>> my institution42 <waeup.ikoba.app. Institutionobject at 0x...>39 >>> from waeup.ikoba.app import Company 40 >>> mycompany = Company() 41 >>> mycompany 42 <waeup.ikoba.app.Company object at 0x...> 43 43 44 Instances of ` Institution` comply with the interface45 `waeup.ikoba.interfaces.I Institution`:44 Instances of `Company` comply with the interface 45 `waeup.ikoba.interfaces.ICompany`: 46 46 47 47 >>> from zope.interface.verify import verifyClass 48 >>> from waeup.ikoba.interfaces import I Institution49 >>> verifyClass(I Institution, Institution)48 >>> from waeup.ikoba.interfaces import ICompany 49 >>> verifyClass(ICompany, Company) 50 50 True 51 51 … … 53 53 interface: 54 54 55 >>> from waeup.ikoba.app import Institution56 >>> my institution = Institution()57 >>> my institution['configuration'].name58 u'Sample Institution'55 >>> from waeup.ikoba.app import Company 56 >>> mycompany = Company() 57 >>> mycompany['configuration'].name 58 u'Sample Company' 59 59 60 >>> my institution['users']60 >>> mycompany['users'] 61 61 <waeup.ikoba.userscontainer.UsersContainer object at 0x...> 62 62 63 >>> my institution['datacenter']63 >>> mycompany['datacenter'] 64 64 <waeup.ikoba.datacenter.DataCenter object at 0x...> 65 65 66 >>> my institution['configuration']66 >>> mycompany['configuration'] 67 67 <waeup.ikoba.configuration.ConfigurationContainer object at 0x...> 68 68 … … 103 103 and setup a new Ikoba instance, we will get a message: 104 104 105 >>> from waeup.ikoba.app import Institution106 >>> site = Institution()105 >>> from waeup.ikoba.app import Company 106 >>> site = Company() 107 107 Setup was called for 108 <waeup.ikoba.app. Institutionobject at 0x...>108 <waeup.ikoba.app.Company object at 0x...> 109 109 110 Apparently the plugin can do with the Institutionobject whatever it110 Apparently the plugin can do with the Company object whatever it 111 111 likes. That's what plugins are for. -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/authentication.txt
r11952 r11954 11 11 12 12 >>> from zope.component.hooks import setSite # only needed in tests 13 >>> from waeup.ikoba.app import Institution13 >>> from waeup.ikoba.app import Company 14 14 >>> root = getRootFolder() 15 >>> u = Institution()15 >>> u = Company() 16 16 >>> root['app'] = u 17 17 >>> setSite(root['app']) # only needed in tests -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/browser/batchprocessing.txt
r11952 r11954 21 21 Create a site: 22 22 23 >>> from waeup.ikoba.app import Institution24 >>> getRootFolder()['app'] = Institution()23 >>> from waeup.ikoba.app import Company 24 >>> getRootFolder()['app'] = Company() 25 25 >>> from zope.component.hooks import setSite 26 26 >>> setSite(getRootFolder()['app']) -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/browser/breadcrumbs.py
r11952 r11954 28 28 from waeup.ikoba.browser.interfaces import ( 29 29 IBreadcrumb, IBreadcrumbIgnorable, IBreadcrumbContainer, IIkobaObject, 30 I Institution, IUsersContainer, IDataCenter,30 ICompany, IUsersContainer, IDataCenter, 31 31 ) 32 32 from waeup.ikoba.reports import IReportsContainer … … 86 86 return self.viewname 87 87 88 class InstitutionBreadcrumb(Breadcrumb):89 """A breadcrumb for institutionindex pages.90 """ 91 grok.context(I Institution)88 class CompanyBreadcrumb(Breadcrumb): 89 """A breadcrumb for company index pages. 90 """ 91 grok.context(ICompany) 92 92 title = _(u'Home') 93 93 parent = None … … 97 97 98 98 Here we need a special `parent()` implementation, because the 99 parent object is not a real parent (the Institutionobject has no99 parent object is not a real parent (the Company object has no 100 100 valid parent in terms of breadcrumbs). Instead it is the 101 101 ``administration`` view of the same context the ``manage`` page 102 102 itself is bound to. 103 103 """ 104 grok.context(I Institution)104 grok.context(ICompany) 105 105 grok.name('manage') 106 106 title = _(u'Portal Settings') … … 113 113 114 114 class AdministrationBreadcrumb(Breadcrumb): 115 """A breadcrumb for administration areas of Institutioninstances.116 """ 117 grok.context(I Institution)115 """A breadcrumb for administration areas of Company instances. 116 """ 117 grok.context(ICompany) 118 118 grok.name('administration') 119 119 title = _(u'Administration') -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/browser/breadcrumbs.txt
r11952 r11954 9 9 =============================== 10 10 11 We create a institutionto check the breadcrumb functionality.12 13 >>> from waeup.ikoba.app import Institution11 We create a company to check the breadcrumb functionality. 12 13 >>> from waeup.ikoba.app import Company 14 14 >>> root = getRootFolder() 15 >>> root['app'] = Institution()15 >>> root['app'] = Company() 16 16 >>> app = root['app'] 17 17 … … 25 25 >>> blist1 = getBreadcrumbList(app, 'index') 26 26 >>> blist1 27 [<waeup.ikoba.browser.breadcrumbs. InstitutionBreadcrumb object at 0x...>]27 [<waeup.ikoba.browser.breadcrumbs.CompanyBreadcrumb object at 0x...>] 28 28 29 29 A slightly more extensive list for the datacenter: … … 32 32 >>> from pprint import pprint 33 33 >>> pprint(blist2) 34 [<waeup.ikoba.browser.breadcrumbs. InstitutionBreadcrumb object at 0x...>,34 [<waeup.ikoba.browser.breadcrumbs.CompanyBreadcrumb object at 0x...>, 35 35 <waeup.ikoba.browser.breadcrumbs.AdministrationBreadcrumb object at 0x...>, 36 36 <waeup.ikoba.browser.breadcrumbs.DataCenterBreadcrumb object at 0x...>] 37 37 38 We get a breadcrumb for institution, administration area and data38 We get a breadcrumb for company, administration area and data 39 39 center in that order. 40 40 … … 47 47 48 48 >>> pprint([(x.context, x.viewname) for x in blist2]) 49 [(<waeup.ikoba.app. Institutionobject at 0x...>, 'index'),50 (<waeup.ikoba.app. Institutionobject at 0x...>, 'administration'),49 [(<waeup.ikoba.app.Company object at 0x...>, 'index'), 50 (<waeup.ikoba.app.Company object at 0x...>, 'administration'), 51 51 (<waeup.ikoba.datacenter.DataCenter object at 0x...>, 'index')] 52 52 53 53 The administration area breadcrumb might be a surprise, as there is no 54 54 equivalent object in the ZODB. In fact the administration area is only 55 a certain view (the 'administration' view) on the institutionobject.55 a certain view (the 'administration' view) on the company object. 56 56 57 57 We will show below, how you can define breadcrumbs this way. … … 62 62 63 63 This way we can make sure, that there are different breadcrumb lists 64 generated for instance for the administration view of Institution64 generated for instance for the administration view of Company 65 65 instances and the index view. While the first should look something 66 66 like:: … … 118 118 119 119 >>> pprint(mybccontainer.getList()) 120 [<...breadcrumbs. InstitutionBreadcrumb object at 0x...>,120 [<...breadcrumbs.CompanyBreadcrumb object at 0x...>, 121 121 <...breadcrumbs.AdministrationBreadcrumb object at 0x...>, 122 122 <...breadcrumbs.UsersContainerBreadcrumb object at 0x...>] … … 128 128 129 129 Now we can get breadcrumbs for contexts and view names. For example a 130 breadcrumb for the 'index' view of our Institutionobject:130 breadcrumb for the 'index' view of our Company object: 131 131 132 132 >>> from zope.component import getAdapter … … 134 134 >>> b1 = getAdapter(app, IBreadcrumb, 'index') 135 135 >>> b1 136 <waeup.ikoba.browser.breadcrumbs. InstitutionBreadcrumb object at 0x...>136 <waeup.ikoba.browser.breadcrumbs.CompanyBreadcrumb object at 0x...> 137 137 138 138 Breadcrumb objects provide a title: … … 168 168 169 169 >>> b2.parent 170 (<waeup.ikoba.app. Institutionobject at 0x...>, 'administration')171 172 This result denotes a new context object (the Institutioninstance we170 (<waeup.ikoba.app.Company object at 0x...>, 'administration') 171 172 This result denotes a new context object (the Company instance we 173 173 created above) and a view name ('administration'). 174 174 … … 188 188 As you can see, we get an AdministrationBreadcrumb, although the 189 189 context object, for which the breadcrumb was created is also the 190 Institutioninstance as above:190 Company instance as above: 191 191 192 192 >>> b3.context is b1.context … … 197 197 >>> context, viewname = b3.parent 198 198 >>> context, viewname 199 (<waeup.ikoba.app. Institutionobject at 0x...>, 'index')199 (<waeup.ikoba.app.Company object at 0x...>, 'index') 200 200 201 201 We create last breadcrumb: -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/browser/browser.txt
r11952 r11954 4 4 Here we visit all parts of a Ikoba portal using a browser. 5 5 6 Institution 6 Company 7 7 ========== 8 8 9 9 We can watch universities in the browser. 10 10 11 We create an institutionobject and put into the ZODB root::11 We create an company object and put into the ZODB root:: 12 12 13 13 >>> root = getRootFolder() … … 15 15 [] 16 16 17 >>> from waeup.ikoba.app import Institution18 >>> u = Institution()19 >>> root['my institution'] = u17 >>> from waeup.ikoba.app import Company 18 >>> u = Company() 19 >>> root['mycompany'] = u 20 20 >>> list(root) 21 [u'my institution']21 [u'mycompany'] 22 22 23 23 >>> from zope.component.hooks import setSite 24 >>> setSite(root['my institution'])24 >>> setSite(root['mycompany']) 25 25 26 26 To make sure, we can 'watch' pages, we first have to initialize out … … 30 30 >>> browser = Browser() 31 31 32 Let's get the default view of a institution::33 34 >>> browser.open('http://localhost/my institution')32 Let's get the default view of a company:: 33 34 >>> browser.open('http://localhost/mycompany') 35 35 >>> print browser.contents 36 36 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"... … … 55 55 The contact form for anonymous users is called 'Enquiries':: 56 56 57 >>> browser.open('http://localhost/my institution')57 >>> browser.open('http://localhost/mycompany') 58 58 >>> browser.getLink('Enquiries').click() 59 59 >>> browser.getControl('Send').click() … … 74 74 Registered users with an email address can request a password change: 75 75 76 >>> root['my institution']['users'].addUser('forgetful', 'secret',title='Bob Forgetful',76 >>> root['mycompany']['users'].addUser('forgetful', 'secret',title='Bob Forgetful', 77 77 ... description='A forgetful user', email='aa@aa.ng') 78 >>> browser.open('http://localhost/my institution/changepw')78 >>> browser.open('http://localhost/mycompany/changepw') 79 79 >>> browser.getControl(name="form.identifier").value = 'forgetful' 80 80 >>> browser.getControl(name="form.email").value = 'aa@aa.ng' … … 91 91 We can then get an edit view of the configuration container:: 92 92 93 >>> browser.open('http://localhost/my institution/configuration')94 >>> print browser.contents 95 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"... 96 ...<form action="http://localhost/my institution/configuration/@@index"97 ... 98 99 The edit form contains the default value for the institutionname::100 101 >>> 'Sample Institution' in browser.contents93 >>> browser.open('http://localhost/mycompany/configuration') 94 >>> print browser.contents 95 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"... 96 ...<form action="http://localhost/mycompany/configuration/@@index" 97 ... 98 99 The edit form contains the default value for the company name:: 100 101 >>> 'Sample Company' in browser.contents 102 102 True 103 103 … … 110 110 ... 111 111 112 >>> browser.open('http://localhost/my institution/configuration')112 >>> browser.open('http://localhost/mycompany/configuration') 113 113 >>> browser.getControl("Update plugins").click() 114 114 >>> print browser.contents … … 120 120 and is properly rendered on the frontpage of the portal: 121 121 122 >>> browser.open('http://localhost/my institution')122 >>> browser.open('http://localhost/mycompany') 123 123 >>> print browser.contents 124 124 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"... … … 134 134 If we change to German so that the German part of frontpage.rst is rendered: 135 135 136 >>> browser.open('http://localhost/my institution//@@change_language?lang=de')136 >>> browser.open('http://localhost/mycompany//@@change_language?lang=de') 137 137 >>> print browser.contents 138 138 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"... … … 147 147 Switch back to English: 148 148 149 >>> browser.open('http://localhost/my institution//@@change_language?lang=en')149 >>> browser.open('http://localhost/mycompany//@@change_language?lang=en') 150 150 151 151 … … 153 153 ============ 154 154 155 >>> browser.open('http://localhost/my institution')155 >>> browser.open('http://localhost/mycompany') 156 156 >>> browser.getLink('Portal Users').click() 157 157 >>> print browser.contents … … 187 187 manually by setting the roles attribute: 188 188 189 >>> print root['my institution']['users']['bob'].roles189 >>> print root['mycompany']['users']['bob'].roles 190 190 [] 191 >>> root['my institution']['users']['bob'].roles = ['waeup.UsersManager']192 >>> print root['my institution']['users']['bob'].roles191 >>> root['mycompany']['users']['bob'].roles = ['waeup.UsersManager'] 192 >>> print root['mycompany']['users']['bob'].roles 193 193 ['waeup.UsersManager'] 194 >>> browser.open('http://localhost/my institution/users')194 >>> browser.open('http://localhost/mycompany/users') 195 195 >>> print browser.contents 196 196 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"... … … 200 200 Users can't be added twice: 201 201 202 >>> browser.open('http://localhost/my institution/users/add')202 >>> browser.open('http://localhost/mycompany/users/add') 203 203 >>> browser.getControl(name="form.name").value = 'bob' 204 204 >>> browser.getControl(name="form.title").value = 'Bob The User' … … 215 215 Users can be deleted: 216 216 217 >>> browser.open('http://localhost/my institution/users')217 >>> browser.open('http://localhost/mycompany/users') 218 218 >>> browser.getControl("Remove", index=0).click() 219 219 >>> 'User account bob successfully deleted' in browser.contents … … 227 227 Let's enter the contact form:: 228 228 229 >>> browser.open('http://localhost/my institution/contactadmin')229 >>> browser.open('http://localhost/mycompany/contactadmin') 230 230 >>> print browser.contents 231 231 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"... … … 236 236 contact@waeup.org):: 237 237 238 >>> browser.open('http://localhost/my institution/contactadmin')238 >>> browser.open('http://localhost/mycompany/contactadmin') 239 239 >>> browser.getControl(name='form.body').value = "test message" 240 240 >>> browser.getControl('Send').click() … … 253 253 The data center helps us uploading files for later import or similar. 254 254 255 >>> browser.open('http://localhost/my institution')255 >>> browser.open('http://localhost/mycompany') 256 256 >>> browser.getLink('Data Center').click() 257 257 -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/browser/captcha.py
r11952 r11954 32 32 ICaptchaRequest, ICaptchaResponse, ICaptcha, ICaptchaConfig, 33 33 ICaptchaManager) 34 from waeup.ikoba.interfaces import I Institution34 from waeup.ikoba.interfaces import ICompany 35 35 36 36 # … … 322 322 # A test page to see a captcha in action 323 323 grok.name('captcha') 324 grok.context(I Institution)324 grok.context(ICompany) 325 325 grok.require('waeup.Public') 326 326 title = 'Captcha Test' -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/browser/exceptions.py
r11952 r11954 64 64 """A page rendered when an object cannot be found. 65 65 66 XXX: This page won't work for objects above a w.k. Institution.66 XXX: This page won't work for objects above a w.k.Company. 67 67 """ 68 68 grok.context(INotFound) -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/browser/interfaces.py
r11952 r11954 21 21 from zope.interface import Interface, Attribute 22 22 from waeup.ikoba.interfaces import ( 23 IIkobaObject, I Institution, IUsersContainer, IDataCenter, validate_email)23 IIkobaObject, ICompany, IUsersContainer, IDataCenter, validate_email) 24 24 from waeup.ikoba.interfaces import MessageFactory as _ 25 25 … … 161 161 162 162 If no `headerline` is given, a default will be rendered (name 163 of institution).163 of company). 164 164 165 165 If no `title` is given, nothing will be rendered. -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/browser/layout.py
r11952 r11954 227 227 228 228 def getAppTitle(self): 229 return getattr(grok.getSite()['configuration'], 'name', u'Sample Institution')229 return getattr(grok.getSite()['configuration'], 'name', u'Sample Company') 230 230 231 231 def getAppAcronym(self): -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/browser/pages.py
r11952 r11954 46 46 IkobaDisplayFormPage, NullValidator) 47 47 from waeup.ikoba.browser.interfaces import ( 48 I Institution, ICaptchaManager, IChangePassword)48 ICompany, ICaptchaManager, IChangePassword) 49 49 from waeup.ikoba.browser.layout import jsaction, action, UtilityView 50 50 from waeup.ikoba.interfaces import MessageFactory as _ … … 325 325 class ContactAdminForm(IkobaForm): 326 326 grok.name('contactadmin') 327 #grok.context(I Institution)327 #grok.context(ICompany) 328 328 grok.template('contactform') 329 329 grok.require('waeup.Authenticated') … … 405 405 406 406 # 407 # Institutionrelated pages...407 # Company related pages... 408 408 # 409 409 410 class InstitutionPage(IkobaDisplayFormPage):411 """ The main institutionpage.410 class CompanyPage(IkobaDisplayFormPage): 411 """ The main company page. 412 412 """ 413 413 grok.require('waeup.Public') 414 414 grok.name('index') 415 grok.context(I Institution)415 grok.context(ICompany) 416 416 pnav = 0 417 417 label = '' … … 434 434 """ 435 435 grok.name('administration') 436 grok.context(I Institution)436 grok.context(ICompany) 437 437 grok.require('waeup.managePortal') 438 438 label = _(u'Administration') … … 443 443 """ 444 444 grok.name('feed.rss') 445 grok.context(I Institution)445 grok.context(ICompany) 446 446 grok.require('waeup.Public') 447 grok.template(' institutionrss20feed')447 grok.template('companyrss20feed') 448 448 449 449 name = 'General news feed' … … 457 457 @property 458 458 def title(self): 459 return getattr(grok.getSite(), 'name', u'Sample Institution')459 return getattr(grok.getSite(), 'name', u'Sample Company') 460 460 461 461 @property … … 1568 1568 """Captcha'd page for all kind of users to request a password change. 1569 1569 """ 1570 grok.context(I Institution)1570 grok.context(ICompany) 1571 1571 grok.name('changepw') 1572 1572 grok.require('waeup.Anonymous') -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/browser/pdf.py
r11952 r11954 710 710 doc, 'ikoba_headtitle', getattr( 711 711 site_config, 'name', 712 u'Sample Institution'))712 u'Sample Company')) 713 713 canvas.setFont("Helvetica-Bold", 18) 714 714 if self.header_logo_left_path is not None: -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/browser/tests/test_async.py
r11952 r11954 8 8 from zope.security.interfaces import Unauthorized 9 9 from zope.testbrowser.testing import Browser 10 from waeup.ikoba.app import Institution10 from waeup.ikoba.app import Company 11 11 from waeup.ikoba.async import AsyncJob, get_job_id 12 12 from waeup.ikoba.interfaces import IJobManager … … 29 29 self.storage = os.path.join(self.workdir, 'storage') 30 30 os.mkdir(self.storage) 31 app = Institution()31 app = Company() 32 32 app['datacenter'].setStoragePath(self.storage) 33 33 -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/browser/tests/test_permissions.py
r11952 r11954 31 31 from zope.security.interfaces import Unauthorized 32 32 from zope.testbrowser.testing import Browser 33 from waeup.ikoba.app import Institution33 from waeup.ikoba.app import Company 34 34 from waeup.ikoba.testing import ( 35 35 FunctionalLayer, FunctionalTestCase, get_all_loggers, remove_new_loggers, … … 58 58 def setUp(self): 59 59 super(PermissionTest, self).setUp() 60 # Set up a complete institutionto have every page available...61 app = Institution()60 # Set up a complete company to have every page available... 61 app = Company() 62 62 self.getRootFolder()['app'] = app 63 63 setSite(self.getRootFolder()['app']) -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/browser/viewlets.py
r11952 r11954 24 24 from zope.traversing.browser import absoluteURL 25 25 from waeup.ikoba.browser.pages import ( 26 InstitutionPage, DatacenterPage,26 CompanyPage, DatacenterPage, 27 27 UsersContainerPage, UserManageFormPage) 28 28 from waeup.ikoba.browser.interfaces import ( 29 IBreadcrumbContainer, I Institution, IUsersContainer)29 IBreadcrumbContainer, ICompany, IUsersContainer) 30 30 from waeup.ikoba.interfaces import ( 31 31 IIkobaUtils, IIkobaObject, IIkobaXMLExporter, -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/frontpage.html
r11952 r11954 16 16 Ikoba is part of the 17 17 <a href="https://waeup.org/">West African eUniversity Project (WAeUP)</a>. 18 It is a powerful and comprehensive Student Management System.18 It is a powerful and comprehensive Online Application and Registration Portal. 19 19 The software is written in Python and built upon the Open Source 20 20 <a href="http://grok.zope.org/">Grok Web Framework</a>. -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/imagestorage.py
r11952 r11954 285 285 want to change this path -- it is dynamic. That means, if you call 286 286 the file store from 'within' a site, the root path will be located 287 inside this site (a :class:`waeup.ikoba. Institution` instance). If287 inside this site (a :class:`waeup.ikoba.Company` instance). If 288 288 you call it from 'outside' a site some temporary dir (always the 289 289 same during lifetime of the file store instance) will be used. The -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/index.txt
r11952 r11954 20 20 accesscodes/api.txt 21 21 jambtables/api.txt 22 institution/api.txt22 company/api.txt 23 23 utils/api.txt 24 24 -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/interfaces.py
r11952 r11954 253 253 EXAM_SUBJECTS_DICT = Attribute("Dict of examination subjects") 254 254 EXAM_GRADES = Attribute("Dict of examination grades") 255 INST_TYPES_DICT = Attribute("Dict if institutiontypes")255 INST_TYPES_DICT = Attribute("Dict if company types") 256 256 STUDY_MODES_DICT = Attribute("Dict of study modes") 257 257 APP_CATS_DICT = Attribute("Dict of application categories") … … 288 288 """ 289 289 290 class I Institution(IIkobaObject):291 """Representation of an institution.290 class ICompany(IIkobaObject): 291 """Representation of an company. 292 292 """ 293 293 … … 593 593 594 594 name = schema.TextLine( 595 title = _(u'Name of Institution'),596 default = _(u'Sample Institution'),595 title = _(u'Name of Company'), 596 default = _(u'Sample Company'), 597 597 required = True, 598 598 ) 599 599 600 600 acronym = schema.TextLine( 601 title = _(u'Abbreviated Title of Institution'),601 title = _(u'Abbreviated Title of Company'), 602 602 default = u'WAeUP.Ikoba', 603 603 required = True, … … 796 796 Components implementing this interface are referred to as 797 797 'plugins'. They are normally called when a new 798 :class:`waeup.ikoba.app. Institution` instance is created.798 :class:`waeup.ikoba.app.Company` instance is created. 799 799 800 800 Plugins can setup and update parts of the central site without the 801 site object (normally a :class:`waeup.ikoba.app. Institution` object)801 site object (normally a :class:`waeup.ikoba.app.Company` object) 802 802 needing to know about that parts. The site simply collects all 803 803 available plugins, calls them and the plugins care for their … … 852 852 Utilities providing this interface are looked up when a Pluggable 853 853 Authentication Utility (PAU) for any 854 :class:`waeup.ikoba.app. Institution` instance is created and put854 :class:`waeup.ikoba.app.Company` instance is created and put 855 855 into ZODB. 856 856 -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/locales/de/LC_MESSAGES/waeup.ikoba.po
r11952 r11954 1073 1073 1074 1074 #: waeup/ikoba/interfaces.py:595 1075 msgid "Name of Institution"1075 msgid "Name of Company" 1076 1076 msgstr "Name der Universität" 1077 1077 1078 1078 #: waeup/ikoba/interfaces.py:596 1079 msgid "Sample Institution"1079 msgid "Sample Company" 1080 1080 msgstr "Deomo-Universität" 1081 1081 1082 1082 #: waeup/ikoba/interfaces.py:601 1083 msgid "Abbreviated Title of Institution"1083 msgid "Abbreviated Title of Company" 1084 1084 msgstr "Abkürzung" 1085 1085 -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/locales/en/LC_MESSAGES/waeup.ikoba.po
r11952 r11954 1004 1004 1005 1005 #: waeup/ikoba/interfaces.py:595 1006 msgid "Name of Institution"1006 msgid "Name of Company" 1007 1007 msgstr "" 1008 1008 1009 1009 #: waeup/ikoba/interfaces.py:596 1010 msgid "Sample Institution"1010 msgid "Sample Company" 1011 1011 msgstr "" 1012 1012 1013 1013 #: waeup/ikoba/interfaces.py:601 1014 msgid "Abbreviated Title of Institution"1014 msgid "Abbreviated Title of Company" 1015 1015 msgstr "" 1016 1016 -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/locales/fr/LC_MESSAGES/waeup.ikoba.po
r11952 r11954 1076 1076 #: waeup/ikoba/interfaces.py:595 1077 1077 #, fuzzy 1078 msgid "Name of Institution"1078 msgid "Name of Company" 1079 1079 msgstr "Nom du département" 1080 1080 1081 1081 #: waeup/ikoba/interfaces.py:596 1082 msgid "Sample Institution"1082 msgid "Sample Company" 1083 1083 msgstr "" 1084 1084 1085 1085 #: waeup/ikoba/interfaces.py:601 1086 msgid "Abbreviated Title of Institution"1086 msgid "Abbreviated Title of Company" 1087 1087 msgstr "" 1088 1088 -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/locales/ha/LC_MESSAGES/waeup.ikoba.po
r11952 r11954 1005 1005 1006 1006 #: waeup/ikoba/interfaces.py:595 1007 msgid "Name of Institution"1007 msgid "Name of Company" 1008 1008 msgstr "" 1009 1009 1010 1010 #: waeup/ikoba/interfaces.py:596 1011 msgid "Sample Institution"1011 msgid "Sample Company" 1012 1012 msgstr "" 1013 1013 1014 1014 #: waeup/ikoba/interfaces.py:601 1015 msgid "Abbreviated Title of Institution"1015 msgid "Abbreviated Title of Company" 1016 1016 msgstr "" 1017 1017 -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/locales/ig/LC_MESSAGES/waeup.ikoba.po
r11952 r11954 1005 1005 1006 1006 #: waeup/ikoba/interfaces.py:595 1007 msgid "Name of Institution"1007 msgid "Name of Company" 1008 1008 msgstr "" 1009 1009 1010 1010 #: waeup/ikoba/interfaces.py:596 1011 msgid "Sample Institution"1011 msgid "Sample Company" 1012 1012 msgstr "" 1013 1013 1014 1014 #: waeup/ikoba/interfaces.py:601 1015 msgid "Abbreviated Title of Institution"1015 msgid "Abbreviated Title of Company" 1016 1016 msgstr "" 1017 1017 -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/locales/waeup.ikoba.pot
r11952 r11954 1011 1011 1012 1012 #: waeup/ikoba/interfaces.py:595 1013 msgid "Name of Institution"1013 msgid "Name of Company" 1014 1014 msgstr "" 1015 1015 1016 1016 #: waeup/ikoba/interfaces.py:596 1017 msgid "Sample Institution"1017 msgid "Sample Company" 1018 1018 msgstr "" 1019 1019 1020 1020 #: waeup/ikoba/interfaces.py:601 1021 msgid "Abbreviated Title of Institution"1021 msgid "Abbreviated Title of Company" 1022 1022 msgstr "" 1023 1023 -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/locales/yo/LC_MESSAGES/waeup.ikoba.po
r11952 r11954 1005 1005 1006 1006 #: waeup/ikoba/interfaces.py:595 1007 msgid "Name of Institution"1007 msgid "Name of Company" 1008 1008 msgstr "" 1009 1009 1010 1010 #: waeup/ikoba/interfaces.py:596 1011 msgid "Sample Institution"1011 msgid "Sample Company" 1012 1012 msgstr "" 1013 1013 1014 1014 #: waeup/ikoba/interfaces.py:601 1015 msgid "Abbreviated Title of Institution"1015 msgid "Abbreviated Title of Company" 1016 1016 msgstr "" 1017 1017 -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/mandates/browser.py
r11952 r11954 20 20 import grok 21 21 from waeup.ikoba.browser.layout import UtilityView 22 from waeup.ikoba.interfaces import I Institution22 from waeup.ikoba.interfaces import ICompany 23 23 from waeup.ikoba.interfaces import MessageFactory as _ 24 24 … … 26 26 """View to execute mandate. 27 27 """ 28 grok.context(I Institution)28 grok.context(ICompany) 29 29 grok.name('mandate') 30 30 grok.require('waeup.Public') -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/mandates/container.py
r11952 r11954 49 49 50 50 class MandatesPlugin(grok.GlobalUtility): 51 """A plugin that creates container for mandates inside a institution.51 """A plugin that creates container for mandates inside a company. 52 52 """ 53 53 grok.implements(IIkobaPluggable) -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/mandates/tests.py
r11952 r11954 27 27 from zope.component import createObject 28 28 from zope.component.hooks import setSite, clearSite 29 from waeup.ikoba.app import Institution29 from waeup.ikoba.app import Company 30 30 from waeup.ikoba.interfaces import IUserAccount 31 31 from waeup.ikoba.mandates.interfaces import ( … … 63 63 64 64 # Setup a sample site for each test 65 app = Institution()65 app = Company() 66 66 self.dc_root = tempfile.mkdtemp() 67 67 app['datacenter'].setStoragePath(self.dc_root) -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/payments/catalog.py
r11952 r11954 19 19 """ 20 20 import grok 21 from waeup.ikoba.interfaces import I Institution21 from waeup.ikoba.interfaces import ICompany 22 22 from waeup.ikoba.payments.interfaces import IPayment 23 23 … … 25 25 """A catalog for all payments. 26 26 """ 27 grok.site(I Institution)27 grok.site(ICompany) 28 28 grok.name('payments_catalog') 29 29 grok.context(IPayment) -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/testing.py
r11952 r11954 126 126 maybe_grok, setUpZope, cleanUpZope, 127 127 ) 128 from waeup.ikoba.app import Institution128 from waeup.ikoba.app import Company 129 129 130 130 class MyTestCase(unittest.TestCase): … … 148 148 149 149 def test_jambdata_in_site(self): 150 u = Institution()150 u = Company() 151 151 self.assertTrue('jambdata' in u.keys()) 152 152 return -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/tests/test_app.py
r11952 r11954 22 22 from zope.component.hooks import setSite 23 23 from zope.interface.verify import verifyClass, verifyObject 24 from waeup.ikoba.app import Institution24 from waeup.ikoba.app import Company 25 25 from waeup.ikoba.interfaces import ( 26 I Institution, IJobManager, VIRT_JOBS_CONTAINER_NAME)26 ICompany, IJobManager, VIRT_JOBS_CONTAINER_NAME) 27 27 from waeup.ikoba.testing import FunctionalLayer, FunctionalTestCase 28 28 29 class InstitutionTests(FunctionalTestCase):29 class CompanyTests(FunctionalTestCase): 30 30 31 31 layer = FunctionalLayer 32 32 33 33 def setUp(self): 34 super( InstitutionTests, self).setUp()34 super(CompanyTests, self).setUp() 35 35 self.workdir = tempfile.mkdtemp() 36 self.getRootFolder()['app'] = Institution()36 self.getRootFolder()['app'] = Company() 37 37 self.app = self.getRootFolder()['app'] 38 38 return 39 39 40 40 def tearDown(self): 41 super( InstitutionTests, self).tearDown()41 super(CompanyTests, self).tearDown() 42 42 shutil.rmtree(self.workdir) 43 43 return 44 44 45 45 def test_ifaces(self): 46 institution = Institution()47 assert verifyClass(I Institution, Institution)48 assert verifyObject(I Institution, institution)46 company = Company() 47 assert verifyClass(ICompany, Company) 48 assert verifyObject(ICompany, company) 49 49 return 50 50 -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/tests/test_imagestorage.py
r11952 r11954 27 27 from zope.component.hooks import setSite 28 28 from zope.interface.verify import verifyClass, verifyObject 29 from waeup.ikoba.app import Institution29 from waeup.ikoba.app import Company 30 30 from waeup.ikoba.testing import FunctionalLayer, FunctionalTestCase 31 31 from waeup.ikoba.imagestorage import ( … … 228 228 self.fd = open(self.samplefile, 'r') 229 229 self.fd2 = open(self.otherfile, 'r') 230 self.getRootFolder()['app'] = Institution()230 self.getRootFolder()['app'] = Company() 231 231 self.app = self.getRootFolder()['app'] 232 232 self.app['datacenter'].setStoragePath(self.workdir) -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/tests/test_maintenance.py
r11952 r11954 9 9 from zope.component.hooks import setSite 10 10 from zope.interface import Interface, implements 11 from waeup.ikoba.app import Institution11 from waeup.ikoba.app import Company 12 12 from waeup.ikoba.maintenance import update_catalog 13 13 from waeup.ikoba.testing import FunctionalTestCase, FunctionalLayer … … 41 41 super(UpdateCatalogTests, self).setUp() 42 42 # Setup a sample site for each test 43 app = Institution()43 app = Company() 44 44 self.dc_root = tempfile.mkdtemp() 45 45 app['datacenter'].setStoragePath(self.dc_root) -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/tests/test_objecthistory.py
r11952 r11954 25 25 from zope.security.management import newInteraction, endInteraction 26 26 from zope.security.testing import Principal, Participation 27 from waeup.ikoba.app import Institution27 from waeup.ikoba.app import Company 28 28 from waeup.ikoba.interfaces import IObjectHistory, IIkobaObject 29 29 from waeup.ikoba.testing import FunctionalTestCase, FunctionalLayer … … 43 43 44 44 # Prepopulate ZODB 45 app = Institution()45 app = Company() 46 46 self.dc_root = tempfile.mkdtemp() 47 47 app['datacenter'].setStoragePath(self.dc_root) -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/tests/test_smtp.py
r11952 r11954 27 27 from zope.component.hooks import setSite 28 28 from zope.sendmail.interfaces import IMailDelivery 29 from waeup.ikoba.app import Institution29 from waeup.ikoba.app import Company 30 30 from waeup.ikoba.interfaces import IMailService 31 31 from waeup.ikoba.smtp import ( … … 341 341 super(ExternalMailerTests, self).setUp() 342 342 # Setup a sample site for each test 343 app = Institution()343 app = Company() 344 344 self.dc_root = tempfile.mkdtemp() 345 345 app['datacenter'].setStoragePath(self.dc_root) -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/userscontainer.py
r11952 r11954 92 92 obj= object 93 93 path = '' 94 while obj.__class__.__name__ != ' Institution':94 while obj.__class__.__name__ != 'Company': 95 95 path = '%s/' % obj.__name__ + path 96 96 obj = obj.__parent__ -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/utils/batching.txt
r11952 r11954 20 20 * accepts a single data type identified by an interface. 21 21 22 * knows about the places inside a site ( Institution) where to store,22 * knows about the places inside a site (Company) where to store, 23 23 remove or update the data. 24 24 -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/utils/browser.py
r11952 r11954 25 25 from waeup.ikoba.interfaces import IObjectHistory 26 26 27 from waeup.ikoba.interfaces import I Institution27 from waeup.ikoba.interfaces import ICompany 28 28 29 29 class ReindexPage(UtilityView, grok.View): … … 32 32 Reindexes a catalog. For managers only. 33 33 """ 34 grok.context(I Institution)34 grok.context(ICompany) 35 35 grok.name('reindex') 36 36 grok.require('waeup.managePortal') -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/utils/helpers.txt
r11952 r11954 185 185 ... <BLANKLINE> 186 186 ... <body> 187 ... <form action="http://localhost/my institution/faculties/TF/add"187 ... <form action="http://localhost/mycompany/faculties/TF/add" 188 188 ... method="post" class="edit-form" 189 189 ... enctype="multipart/form-data"> … … 194 194 ... """) 195 195 <BLANKLINE> 196 <form action="http://localhost/my institution/faculties/TF/add"196 <form action="http://localhost/mycompany/faculties/TF/add" 197 197 method="post" class="edit-form" 198 198 enctype="multipart/form-data"> -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/utils/logger.py
r11952 r11954 67 67 68 68 The datacenter and its storage are created automatically when you 69 create a :class:`waeup.ikoba.app. Institution`. This also means that69 create a :class:`waeup.ikoba.app.Company`. This also means that 70 70 logging with the `Logger` mix-in will work only inside so-called sites 71 (` Institution` instances put into ZODB are such `sites`).71 (`Company` instances put into ZODB are such `sites`). 72 72 73 73 Other components in this module help to make everything work. … … 386 386 return 387 387 388 from waeup.ikoba.interfaces import I Institution389 @grok.subscribe(I Institution, grok.IObjectRemovedEvent)388 from waeup.ikoba.interfaces import ICompany 389 @grok.subscribe(ICompany, grok.IObjectRemovedEvent) 390 390 def handle_site_removed(obj, event): 391 391 collector = queryUtility(ILoggerCollector) -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/utils/tests/test_batching.py
r11952 r11954 30 30 from zope.component.interfaces import IFactory 31 31 from zope.interface import Interface, implements, verify 32 from waeup.ikoba.app import Institution32 from waeup.ikoba.app import Company 33 33 from waeup.ikoba.interfaces import ( 34 34 ICSVExporter, IBatchProcessor, IExportJobContainer, IJobManager, … … 137 137 138 138 # Setup a sample site for each test 139 app = Institution()139 app = Company() 140 140 self.dc_root = tempfile.mkdtemp() 141 141 app['datacenter'].setStoragePath(self.dc_root) … … 597 597 def test_active_site(self): 598 598 # we get the datafinder if one is installed and site set 599 self.getRootFolder()['app'] = Institution()599 self.getRootFolder()['app'] = Company() 600 600 finder = getUtility(IExportContainerFinder) 601 601 setSite(self.getRootFolder()['app']) … … 606 606 def test_broken_site(self): 607 607 # if the current site has no ExportContainer, we get None 608 self.getRootFolder()['app'] = Institution()608 self.getRootFolder()['app'] = Company() 609 609 app = self.getRootFolder()['app'] 610 610 del app['datacenter'] # datacenter _is_ the export container -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/utils/tests/test_converters.py
r11952 r11954 32 32 Interface, implements, invariant, Invalid, implementedBy, verify) 33 33 34 from waeup.ikoba.app import Institution34 from waeup.ikoba.app import Company 35 35 from waeup.ikoba.testing import FunctionalLayer, FunctionalTestCase 36 36 from waeup.ikoba.interfaces import ( … … 155 155 156 156 # Setup a sample site for each test 157 app = Institution()157 app = Company() 158 158 self.dc_root = tempfile.mkdtemp() 159 159 app['datacenter'].setStoragePath(self.dc_root) -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/utils/tests/test_logger.py
r11952 r11954 25 25 from zope.component.hooks import setSite, clearSite 26 26 from zope.interface.verify import verifyClass, verifyObject 27 from waeup.ikoba.app import Institution27 from waeup.ikoba.app import Company 28 28 from waeup.ikoba.testing import FunctionalLayer, FunctionalTestCase 29 29 … … 49 49 super(LoggersTests, self).setUp() 50 50 # Setup a sample site for each test 51 app = Institution()51 app = Company() 52 52 self.dc_root = tempfile.mkdtemp() 53 53 self.dc_root2 = None … … 223 223 224 224 # Setup a sample site for each test 225 app = Institution()225 app = Company() 226 226 self.dc_root = tempfile.mkdtemp() 227 227 app['datacenter'].setStoragePath(self.dc_root) … … 281 281 super(LoggerCollectorTests, self).setUp() 282 282 # Setup a sample site for each test 283 app = Institution()283 app = Company() 284 284 self.dc_root = tempfile.mkdtemp() 285 285 app['datacenter'].setStoragePath(self.dc_root) … … 377 377 super(LogfileChangeTests, self).setUp() 378 378 # Setup a sample site for each test 379 app = Institution()379 app = Company() 380 380 self.dc_root = tempfile.mkdtemp() 381 381 self.dc_root_new = None -
main/waeup.kofa/branches/henrik-regista/src/waeup/ikoba/webservices.py
r11952 r11954 20 20 from zope.component import getUtility 21 21 from zope.catalog.interfaces import ICatalog 22 from waeup.ikoba.interfaces import I Institution, application_sessions_vocab22 from waeup.ikoba.interfaces import ICompany, application_sessions_vocab 23 23 24 24 class XMLRPCPermission(grok.Permission): … … 34 34 grok.permissions('waeup.xmlrpc',) 35 35 36 class InstitutionXMLRPC(grok.XMLRPC):36 class CompanyXMLRPC(grok.XMLRPC): 37 37 """XMLRPC webservices for Ikoba portals. 38 38 … … 40 40 but positional arguments only. 41 41 """ 42 grok.context(I Institution)42 grok.context(ICompany) 43 43 44 44 @grok.require('waeup.Public')
Note: See TracChangeset for help on using the changeset viewer.