def test_add_remove_project(self): self.failUnlessEqual(Project.objects.count(),0) proj = Project(name='test',order=0, doc_type='STD', description='test_add_remove_project', task_group='TGx', par_date=datetime.datetime.now()) proj.save() self.failUnlessEqual(Project.objects.count(),1) run_test_task_queue(self.client) self.failUnlessEqual(Project.objects.count(),1) self.failUnlessEqual(DenormalizedProject.objects.count(),1) dn = DenormalizedProject.objects.get(pk=proj.pk) self.failIfEqual(dn,None) self.failUnlessEqual(Project.objects.count(),1) proj.delete() self.failUnlessEqual(Project.objects.count(),0) run_test_task_queue(self.client) self.failUnlessEqual(DenormalizedProject.objects.count(),0)
def delete(cls, project_id): """ Удалить участников, удалить вакансии, поставить статус откликам - удаленные. У ученого убрать из managing_project_ids. """ project = yield Project.get_by_id(project_id) for participant_id in project.participants: yield cls.delete_participant(participant_id) for vacancy_id in project.vacancies: yield cls.delete_vacancy(vacancy_id) for response_id in project.responses: yield cls.set_del_status_response(response_id) scientist = yield Scientist.get_by_id(project.manager_id) scientist.managing_project_ids.remove(project_id) yield scientist.save(fields=[u'managing_project_ids'], columns=[u'managing_project_ids']) yield Project.delete(project_id, tbl=Project.TABLE)