def test_archive_only_expired_scholarships(): Scholarship.create({ 'id': 'foo', 'name': 'foo', 'createdAt': '2020-01-01', 'state': State.PUBLISHED.value, 'deadline': YESTERDAY, }) Scholarship.create({ 'id': 'bar', 'name': 'bar', 'createdAt': '2020-01-01', 'state': State.PUBLISHED.value, 'deadline': YESTERDAY, }) Scholarship.create({ 'id': 'available', 'name': 'bar', 'createdAt': '2020-01-01', 'state': State.PUBLISHED.value, 'deadline': TOMORROW, }) run_archive_scholarships() expired_scholarship = Scholarship.get('foo') expired_scholarship2 = Scholarship.get('bar') available_scholarship = Scholarship.get('available') assert expired_scholarship.state == State.ARCHIVED.value assert expired_scholarship2.state == State.ARCHIVED.value assert available_scholarship.state == State.PUBLISHED.value
def pending_detail(scholarship_id): scholarship = Scholarship.get( id=scholarship_id, ignore=NotFound.code, _source=[ 'name', 'description', 'deadline', 'fundingType', 'state', 'academicLevel', 'entity.name', 'entity.code', 'country.name', 'country.code', 'sourceDetails.url', 'sourceDetails.id', 'sourceDetails.steps', 'fillStatus', 'language', 'approval.approvedAt', 'denial.deniedAt', 'denial.reason', 'archive.archivedAt', ], ) if not scholarship: raise NotFound return scholarship.serialize()
def show(scholarship_id): scholarship = Scholarship.get( id=scholarship_id, ignore=NotFound.code, _source=[ 'name', 'description', 'deadline', 'fundingType', 'state', 'academicLevel', 'entity.code', 'entity.name', 'country.name', 'country.code', 'sourceDetails.url', 'sourceDetails.steps', ], ) if not scholarship: raise NotFound if scholarship['state'] != State.PUBLISHED.value: raise Forbidden else: del scholarship['state'] return scholarship.serialize()
def test_entity_cant_be_edited(api): edited_entity = { 'name': 'newfoo', 'website': 'http://new_foo.com', } foo_scholarship = Scholarship.get('foo') assert foo_scholarship.entity.name == 'Foo' response = api.put('/api/entities/foo/', json=edited_entity) assert response.status_code == 200 assert Scholarship.get('foo').entity.name == 'newfoo' # Other entities should not change assert Scholarship.get('bar').entity.name == 'Bar'
def handle(event: ScholarshipApproved): scholarship = Scholarship.get(event.scholarship_id) scholarship.update( refresh=True, state=State.PUBLISHED.value, approval={'approvedAt': event.timestamp}, )
def handle(event: ScholarshipArchived): scholarship = Scholarship.get(event.scholarship_id) scholarship.update( refresh=True, state=State.ARCHIVED.value, archive={'archivedAt': event.timestamp}, )
def handle(event: ScholarshipDenied): scholarship = Scholarship.get(event.scholarship_id) scholarship.update( refresh=True, state=State.DENIED.value, denial={ 'reason': event.reason, 'deniedAt': event.timestamp, }, )
def handle(event: ScholarshipRestored): scholarship = Scholarship.get(event.scholarship_id) scholarship.update( refresh=True, state=State.PENDING.value, archive={'archivedAt': None}, denial={ 'reason': None, 'deniedAt': None, }, )
def test_archive_scholarship(): Scholarship.create({ 'id': 'foo', 'name': 'foo', 'createdAt': '2020-01-01', 'state': State.PUBLISHED.value, 'deadline': YESTERDAY, }) run_archive_scholarships() scholarship = Scholarship.get('foo') assert scholarship.state == State.ARCHIVED.value
def test_today_scholarship_deadline_is_available(): Scholarship.create({ 'id': 'foo', 'name': 'foo', 'createdAt': '2020-01-01', 'state': State.PUBLISHED.value, 'deadline': TODAY, }) run_archive_scholarships() scholarship = Scholarship.get('foo') assert scholarship.state == State.PUBLISHED.value
def handle(event: PendingEdited): scholarship = Scholarship.get(event.scholarship_id) fields = event.fields.copy() fields['fillStatus'] = UpdateDraft._fill_status(event.is_complete) fields['country'] = UpdateDraft._country(fields.pop('country')) if 'steps' in fields: if 'sourceDetails' in fields: fields['sourceDetails']['steps'] = fields.pop('steps') else: fields['sourceDetails'] = {'steps': fields.pop('steps')} if 'entity' in fields: fields['entity'] = UpdateDraft._entity(fields.pop('entity')) scholarship.update(refresh=True, **fields)