Changeset 16078 for main/waeup.uniben/trunk
- Timestamp:
- 2 May 2020, 20:07:43 (5 years ago)
- Location:
- main/waeup.uniben/trunk/src/waeup/uniben/applicants
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
main/waeup.uniben/trunk/src/waeup/uniben/applicants/applicant.py
r11785 r16078 24 24 from waeup.uniben.applicants.interfaces import( 25 25 ICustomApplicant, ICustomUGApplicantEdit, ICustomPGApplicantEdit, 26 IPUTMEApplicantEdit )26 IPUTMEApplicantEdit, ITranscriptApplicant) 27 27 28 28 class CustomApplicant(NigeriaApplicant): 29 29 30 30 grok.implements(ICustomApplicant, ICustomUGApplicantEdit, 31 ICustomPGApplicantEdit, IPUTMEApplicantEdit )31 ICustomPGApplicantEdit, IPUTMEApplicantEdit, ITranscriptApplicant) 32 32 grok.provides(ICustomApplicant) 33 33 -
main/waeup.uniben/trunk/src/waeup/uniben/applicants/browser.py
r15506 r16078 49 49 ICustomPGApplicantEdit, 50 50 ICustomUGApplicantEdit, 51 IPUTMEApplicantEdit) 51 IPUTMEApplicantEdit, 52 ITranscriptApplicant) 52 53 from waeup.kofa.applicants.workflow import ADMITTED, PAID, STARTED 53 54 from kofacustom.nigeria.applicants.interfaces import ( … … 207 208 @property 208 209 def form_fields(self): 210 if self.target is not None and self.target == 'trans': 211 form_fields = grok.AutoFields(ITranscriptApplicant).omit( 212 'locked', 'suspended') 213 form_fields['dispatch_address'].custom_widget = BytesDisplayWidget 214 form_fields['perm_address'].custom_widget = BytesDisplayWidget 215 return form_fields 209 216 if self.target == 'ictwk': 210 217 form_fields = grok.AutoFields(IUnibenRegistration) … … 372 379 @property 373 380 def form_fields(self): 381 if self.target is not None and self.target == 'trans': 382 form_fields = grok.AutoFields(ITranscriptApplicant) 383 form_fields['applicant_id'].for_display = True 384 return form_fields 374 385 if self.target == 'ictwk': 375 386 form_fields = grok.AutoFields(IUnibenRegistration) … … 432 443 @property 433 444 def form_fields(self): 445 if self.target is not None and self.target == 'trans': 446 form_fields = grok.AutoFields(ITranscriptApplicant).omit( 447 'locked', 'suspended') 448 form_fields['applicant_id'].for_display = True 449 form_fields['reg_number'].for_display = True 450 form_fields['place_of_birth'].field.required = True 451 form_fields['date_of_birth'].field.required = True 452 form_fields['nationality'].field.required = True 453 form_fields['email'].field.required = True 454 form_fields['phone'].field.required = True 455 form_fields['perm_address'].field.required = True 456 form_fields['dispatch_address'].field.required = True 457 form_fields['entry_mode'].field.required = True 458 form_fields['entry_session'].field.required = True 459 form_fields['end_session'].field.required = True 460 form_fields['course_studied'].field.required = True 461 return form_fields 434 462 if self.target == 'ictwk': 435 463 form_fields = grok.AutoFields(IUnibenRegistration) -
main/waeup.uniben/trunk/src/waeup/uniben/applicants/export.py
r14851 r16078 25 25 from kofacustom.nigeria.applicants.interfaces import ( 26 26 INigeriaUGApplicant, INigeriaPGApplicant, IBankAccount) 27 from waeup.uniben.applicants.interfaces import IUnibenRegistration 27 from waeup.uniben.applicants.interfaces import ( 28 IUnibenRegistration, ITranscriptApplicant) 28 29 29 30 class CustomApplicantExporter(NigeriaApplicantExporter): … … 36 37 iface_names(IApplicantBaseData) + 37 38 iface_names(IUnibenRegistration) + 39 iface_names(ITranscriptApplicant) + 38 40 iface_names(IBankAccount) 39 41 ))) + ( -
main/waeup.uniben/trunk/src/waeup/uniben/applicants/interfaces.py
r15490 r16078 29 29 IApplicantBaseData, 30 30 AppCatCertificateSource, CertificateSource) 31 from waeup.kofa.university.vocabularies import StudyModeSource 32 from waeup.kofa.students.vocabularies import ( 33 nats_vocab, GenderSource, StudyLevelSource) 31 34 from waeup.kofa.schoolgrades import ResultEntryField 32 35 from waeup.kofa.interfaces import ( … … 184 187 # raise Invalid(_("Matriculation number not found.")) 185 188 189 class ITranscriptApplicant(IKofaObject): 190 """A transcript applicant. 191 """ 192 193 suspended = schema.Bool( 194 title = _(u'Account suspended'), 195 default = False, 196 required = False, 197 ) 198 199 locked = schema.Bool( 200 title = _(u'Form locked'), 201 default = False, 202 required = False, 203 ) 204 205 applicant_id = schema.TextLine( 206 title = _(u'Application Id'), 207 required = False, 208 readonly = False, 209 ) 210 211 reg_number = TextLineChoice( 212 title = _(u'Kofa Registration Number'), 213 readonly = False, 214 required = True, 215 source = contextual_reg_num_source, 216 ) 217 218 firstname = schema.TextLine( 219 title = _(u'First Name'), 220 required = True, 221 ) 222 223 middlename = schema.TextLine( 224 title = _(u'Middle Name'), 225 required = False, 226 ) 227 228 lastname = schema.TextLine( 229 title = _(u'Last Name (Surname)'), 230 required = True, 231 ) 232 233 matric_number = schema.TextLine( 234 title = _(u'Matriculation Number'), 235 readonly = False, 236 required = True, 237 ) 238 239 date_of_birth = FormattedDate( 240 title = _(u'Date of Birth'), 241 required = False, 242 #date_format = u'%d/%m/%Y', # Use grok-instance-wide default 243 show_year = True, 244 ) 245 246 sex = schema.Choice( 247 title = _(u'Gender'), 248 source = GenderSource(), 249 required = True, 250 ) 251 252 place_of_birth = schema.TextLine( 253 title = _(u'Place of Birth'), 254 readonly = False, 255 required = False, 256 ) 257 258 nationality = schema.Choice( 259 vocabulary = nats_vocab, 260 title = _(u'Nationality'), 261 required = False, 262 ) 263 264 email = schema.ASCIILine( 265 title = _(u'Email Address'), 266 required = True, 267 constraint=validate_email, 268 ) 269 270 phone = PhoneNumber( 271 title = _(u'Phone'), 272 description = u'', 273 required = False, 274 ) 275 276 perm_address = schema.Text( 277 title = _(u'Current Local Address'), 278 required = False, 279 readonly = False, 280 ) 281 282 dispatch_address = schema.Text( 283 title = _(u'Dispatch Addresses'), 284 description = u'Addresses to which transcript should be posted.', 285 required = False, 286 readonly = False, 287 ) 288 289 entry_mode = schema.Choice( 290 title = _(u'Entry Mode'), 291 source = StudyModeSource(), 292 required = False, 293 readonly = False, 294 ) 295 296 entry_session = schema.Choice( 297 title = _(u'Entry Session'), 298 source = academic_sessions_vocab, 299 required = False, 300 readonly = False, 301 ) 302 303 end_session = schema.Choice( 304 title = _(u'End Session'), 305 source = academic_sessions_vocab, 306 required = False, 307 readonly = False, 308 ) 309 310 course_studied = schema.Choice( 311 title = _(u'Course of Study / Degree'), 312 source = CertificateSource(), 313 required = False, 314 readonly = False, 315 ) 316 317 purpose = schema.TextLine( 318 title = _(u'Purpose of this Application'), 319 readonly = False, 320 required = False, 321 ) 322 323 course_changed = schema.Choice( 324 title = _(u'Change of Study Course'), 325 description = u'If yes, select previous course of study.', 326 source = CertificateSource(), 327 readonly = False, 328 required = False, 329 ) 330 331 change_level = schema.Choice( 332 title = _(u'Change Level'), 333 description = u'If yes, select level at which you changed course of study.', 334 source = StudyLevelSource(), 335 required = False, 336 readonly = False, 337 ) 338 339 no_copies = schema.Choice( 340 title = _(u'Number of Copies'), 341 description = u'Must correspond with the number of dispatch addresses above.', 342 values=[1, 2, 3, 4], 343 required = False, 344 readonly = False, 345 default = 1, 346 ) 347 186 348 class ICustomUGApplicant(IApplicantBaseData, IBankAccount): 187 349 """An undergraduate applicant. … … 409 571 410 572 class ICustomApplicant(ICustomUGApplicant, ICustomPGApplicant, 411 IUnibenRegistration ):573 IUnibenRegistration, ITranscriptApplicant): 412 574 """An interface for both types of applicants. 413 575 -
main/waeup.uniben/trunk/src/waeup/uniben/applicants/tests/test_browser.py
r15313 r16078 21 21 """ 22 22 import os 23 import datetime 24 import pytz 23 25 from StringIO import StringIO 24 from datetime import datetime25 26 from hurry.workflow.interfaces import IWorkflowInfo, IWorkflowState 26 27 from zope.securitypolicy.interfaces import IPrincipalRoleManager 28 from zope.component import createObject, getUtility 29 from waeup.kofa.configuration import SessionConfiguration 30 from waeup.kofa.interfaces import IUserAccount 27 31 from waeup.kofa.browser.tests.test_pdf import samples_dir 28 32 from waeup.kofa.applicants.container import ApplicantsContainer … … 31 35 from waeup.kofa.applicants.tests.test_browser import ApplicantsFullSetup, PH_LEN 32 36 33 session_1 = datetime. now().year - 237 session_1 = datetime.datetime.now().year - 2 34 38 SAMPLE_IMAGE = os.path.join(os.path.dirname(__file__), 'test_image.jpg') 35 39 … … 127 131 self.assertTrue('<span>55</span>' in self.browser.contents) 128 132 configuration = CustomSessionConfiguration() 129 configuration.academic_session = datetime. now().year - 2133 configuration.academic_session = datetime.datetime.now().year - 2 130 134 self.app['configuration'].addSessionConfiguration(configuration) 131 135 # Admission checking fee is 0, thus admission checking payment … … 290 294 open(path, 'wb').write(self.browser.contents) 291 295 print "Sample ictwk_application_slip.pdf written to %s" % path 296 297 def test_transcript_payment(self): 298 configuration = SessionConfiguration() 299 configuration.academic_session = session_1 300 self.app['configuration'].addSessionConfiguration(configuration) 301 # Add special application container 302 applicantscontainer = ApplicantsContainer() 303 applicantscontainer.year = session_1 304 applicantscontainer.application_fee = 200.0 305 applicantscontainer.code = u'trans1234' 306 applicantscontainer.prefix = 'trans' 307 applicantscontainer.title = u'This is a trans container' 308 applicantscontainer.application_category = 'no' 309 applicantscontainer.mode = 'create' 310 applicantscontainer.strict_deadline = True 311 applicantscontainer.with_picture = False 312 delta = datetime.timedelta(days=10) 313 applicantscontainer.startdate = datetime.datetime.now(pytz.utc) - delta 314 applicantscontainer.enddate = datetime.datetime.now(pytz.utc) + delta 315 self.app['applicants']['trans1234'] = applicantscontainer 316 # Add an applicant 317 applicant = createObject('waeup.Applicant') 318 # reg_number is the only field which has to be preset here 319 # because managers are allowed to edit this required field 320 applicant.reg_number = u'12345' 321 self.app['applicants']['trans1234'].addApplicant(applicant) 322 IUserAccount( 323 self.app['applicants']['trans1234'][ 324 applicant.application_number]).setPassword('apwd') 325 # Login 326 self.browser.open(self.login_path) 327 self.browser.getControl( 328 name="form.login").value = applicant.applicant_id 329 self.browser.getControl(name="form.password").value = 'apwd' 330 self.browser.getControl("Login").click() 331 self.browser.getLink("Application record").click() 332 self.browser.getControl(name="form.date_of_birth").value = '09/09/1988' 333 self.browser.getControl(name="form.email").value = 'xx@yy.zz' 334 self.browser.getControl(name="form.nationality").value = ['NG'] 335 self.browser.getControl(name="form.firstname").value = 'Angela' 336 self.browser.getControl(name="form.lastname").value = 'Merkel' 337 self.browser.getControl(name="form.sex").value = ['f'] 338 self.browser.getControl(name="form.no_copies").value = ['3'] 339 self.browser.getControl(name="form.course_studied").value = ['CERT1'] 340 self.browser.getControl(name="form.matric_number").value = '234' 341 self.browser.getControl(name="form.place_of_birth").value = 'Bochum' 342 self.browser.getControl(name="form.dispatch_address").value = 'Kuensche' 343 self.browser.getControl(name="form.perm_address").value = 'Kuensche' 344 self.browser.getControl(name="form.entry_mode").value = ['ug_ft'] 345 self.browser.getControl(name="form.entry_session").value = ['2014'] 346 self.browser.getControl(name="form.end_session").value = ['2015'] 347 self.browser.getControl(name="form.phone.country").value = ['+234'] 348 self.browser.getControl(name="form.phone.ext").value = '5678' 349 self.browser.getControl("Save").click() 350 self.browser.getControl("Add online payment ticket").click() 351 self.assertTrue('Payment ticket created' in self.browser.contents) 352 self.assertTrue('<span>200.0</span>' in self.browser.contents) 353 self.assertEqual(applicant.values()[0].amount_auth, 200.0) 354 return -
main/waeup.uniben/trunk/src/waeup/uniben/applicants/utils.py
r14867 r16078 60 60 '(2nd supplementary advert)', 'ASE'], 61 61 'spft': ['Special Full-Time Programmes', 'SP'], 62 'trans': ['Transcript Application', 'TR'], 62 63 } 63 64
Note: See TracChangeset for help on using the changeset viewer.