def __init__(self): # scientific titles self.MARK_PROF = 'prof' self.MARK_DR = 'dr' self.MARK_MGR = 'prof' scientific_titles = list(ScientificTitle.objects.all()); self._prof_t = [t for t in scientific_titles if self.MARK_PROF in t.scientific_title_abbreviation][0] self._dr_t = [t for t in scientific_titles if self.MARK_DR in t.scientific_title_abbreviation][0] self._mgr_t = [t for t in scientific_titles if self.MARK_MGR in t.scientific_title_abbreviation][0] institutions = Institution.objects.all(); self.institutions_dict = dict((ImportHelper.create_dict_key(i.get_as_dict_key), i) for i in institutions) # people dictionary and set of ids people = list(Person.objects.all()); self.people_ids = set(d.person_id for d in people) self.people_dict = dict((ImportHelper.create_dict_key(p.person_first_name, p.person_last_name), p.person_id) for p in people) self.dict_opi_id_person_id = dict((p.person_opi_id, p.person_id) for p in people) self.max_person_id = max(self.people_ids) # role self.MARK_AUTHOR = 'autor' self.MARK_REVIEWER = 'recenz' self.MARK_SUPERVISOR = 'promot' # dissertations dictionary dissertations = list(Dissertation.objects.all().prefetch_related("dissertation_institution", "dissertation_supervisors", "dissertation_reviewers", "dissertation_author")); self.dissertations_ids_dict = dict((d.dissertation_id, d) for d in dissertations) self.dissertations_ids = set(d.dissertation_id for d in dissertations) self.dissertations_opi_ids = set(d.dissertation_opi_id for d in dissertations) self.dict_opi_id_dissertation_id = dict((d.dissertation_opi_id, d.dissertation_id) for d in dissertations) self.max_dissertation_id = max(self.dissertations_ids) if len(self.dissertations_ids) > 0 else 0 self.dissertations_dict = dict((ImportHelper.create_dict_key(d.dissertation_title_text), d.dissertation_id) for d in dissertations)
def check_project_title(self, ptitle): project_key = ImportHelper.create_dict_key(ptitle) project_id = None project_key_exist = project_key in self.projects_dict if project_key_exist: project_id = self.projects_dict[project_key] return [project_key_exist, project_id]
def get_or_create_institution_object(self, institution_name, parent=None): institution = None dict_key = institution_name if parent is not None: dict_key = dict_key + parent.institution_shortname institution_key = ImportHelper.create_dict_key(dict_key) if (institution_key not in self.institutions_dict): # truncator add tree dots at the end and do smth else inst_shortname = Truncator( ImportHelper.create_shortname(institution_name)).chars(32) inst_slug = slugify_text_title(inst_shortname) if parent: institution = Institution.objects.create( institution_shortname=inst_shortname, institution_fullname=institution_name, institution_slug=inst_slug, institution_parent=parent) else: institution = Institution.objects.create( institution_shortname=inst_shortname, institution_fullname=institution_name, institution_slug=inst_slug) self.institutions_dict[institution_key] = institution logger.info(self.LOG_MSG_SUCC_DATABASE_CREATE_INST + 'get_or_create_institution_object institution_name=' + institution_name + ' institution_id=' + str(institution.institution_id)) import_report.info(';'.join((self.REPORT_INSTITUTION_CREATED, str(institution.institution_id), '', '', '', institution_name))) else: institution = self.institutions_dict[institution_key] return institution
def check_person_name(self, fname, lname): person_key = ImportHelper.create_dict_key(fname, lname) person_id = None person_key_exist = person_key in self.people_dict if person_key_exist: person_id = self.people_dict[person_key] return [person_key_exist, person_id]
def check_dissertation_title(self, dtitle): dissertation_key = ImportHelper.create_dict_key(dtitle) dissertation_id = None dissertation_key_exist = dissertation_key in self.dissertations_dict if dissertation_key_exist: dissertation_id = self.dissertations_dict[dissertation_key] return [dissertation_key_exist, dissertation_id]
def get_or_create_discipline_object(self, discipline_name): discipline = None discipline_key = ImportHelper.create_dict_key(discipline_name) if (discipline_key not in self.disciplines_dict): discipline = ResearchDiscipline.objects.create( discipline_fullname=discipline_name.capitalize()) self.disciplines_dict[discipline_key] = discipline logger.info(self.LOG_MSG_SUCC_DATABASE_CREATE_DISC + 'get_or_create_discipline_object discipline_name=' + discipline_name + ' discipline_id=' + str(discipline.discipline_id)) import_report.info(';'.join( (self.REPORT_DISCIPLINE_CREATED, str(discipline.discipline_id), '', '', '', discipline_name))) else: discipline = self.disciplines_dict[discipline_key] return discipline
def __init__(self): # scientific titles self.MARK_PROF = 'prof' self.MARK_DR = 'dr' self.MARK_MGR = 'prof' scientific_titles = ScientificTitle.objects.all() self._prof_t = [ t for t in scientific_titles if self.MARK_PROF in t.scientific_title_abbreviation ][0] self._dr_t = [ t for t in scientific_titles if self.MARK_DR in t.scientific_title_abbreviation ][0] self._mgr_t = [ t for t in scientific_titles if self.MARK_MGR in t.scientific_title_abbreviation ][0] institutions = Institution.objects.all() self.institutions_dict = dict( (ImportHelper.create_dict_key(i.get_as_dict_key), i) for i in institutions) # people dictionary and set of ids people = Person.objects.all() self.people_ids = set(p.person_id for p in people) self.people_dict = dict((ImportHelper.create_dict_key( p.person_first_name, p.person_last_name), p.person_id) for p in people) self.people_ids_dict = dict((p.person_id, p) for p in people) self.dict_opi_id_person_id = dict( (p.person_opi_id, p.person_id) for p in people) self.max_person_id = max(self.people_ids) # role self.MARK_DIRECTOR = 'kierow' self.MARK_MAIN_CONTRACTOR = 'główny' self.MARK_DOCTORAL = 'doktoran' # institution role self.MARK_INST_DIRECTOR = 'kier' self.MARK_INST_COWORK = 'wsp' self.MARK_INST_RELATED = 'powi' institution_roles = InstitutionRole.objects.all() self._roleinst_director = [ r for r in institution_roles if self.MARK_INST_DIRECTOR in r.institution_role_role ][0] self._roleinst_cowork = [ r for r in institution_roles if self.MARK_INST_COWORK in r.institution_role_role ][0] self._role_inst_related = [ r for r in institution_roles if self.MARK_INST_RELATED in r.institution_role_role ][0] # projects dictionary projects = list(Project.objects.all().prefetch_related( "project_disciplines", "project_targets", "project_institutions", "project_participants", "project_person_participations")) self.projects_ids_dict = dict((p.project_id, p) for p in projects) self.projects_ids = set(p.project_id for p in projects) self.projects_opi_ids = set(p.project_opi_id for p in projects) self.dict_opi_id_project_id = dict( (p.project_opi_id, p.project_id) for p in projects) self.max_project_id = max( self.projects_ids) if len(self.projects_ids) > 0 else 0 self.projects_dict = dict( (ImportHelper.create_dict_key(p.project_title_text), p.project_id) for p in projects) # cache self.all_participants = list( ProjectParticipant.objects.filter(is_principal=False)) self.all_directors = list( ProjectParticipant.objects.filter(is_principal=True)) self.projects_participants = {} self.projects_directors = {} for pp in self.all_participants: if pp.project.project_id not in self.projects_participants: self.projects_participants[pp.project.project_id] = [ pp.person.person_id ] else: self.projects_participants[pp.project.project_id].append( pp.person.person_id) for pp in self.all_directors: if pp.project.project_id not in self.projects_directors: self.projects_directors[pp.project.project_id] = [ pp.person.person_id ] else: self.projects_directors[pp.project.project_id].append( pp.person.person_id)
def __init__(self): # scientific titles self.MARK_PROF = 'prof' self.MARK_DR = 'dr' self.MARK_MGR = 'prof' scientific_titles = list(ScientificTitle.objects.all()) self._prof_t = [ t for t in scientific_titles if self.MARK_PROF in t.scientific_title_abbreviation ][0] self._dr_t = [ t for t in scientific_titles if self.MARK_DR in t.scientific_title_abbreviation ][0] self._mgr_t = [ t for t in scientific_titles if self.MARK_MGR in t.scientific_title_abbreviation ][0] institutions = list(Institution.objects.all()) self.institutions_dict = dict( (ImportHelper.create_dict_key(i.get_as_dict_key), i) for i in institutions) disciplines = list(ResearchDiscipline.objects.all()) self.disciplines_dict = dict( (ImportHelper.create_dict_key(d.discipline_fullname), d) for d in disciplines) # people dictionary and set of ids people = list( Person.objects.all().prefetch_related('person_disciplines')) print(len(people)) self.people_dict = dict((ImportHelper.create_dict_key( p.person_first_name, p.person_last_name), p.person_id) for p in people) self.people_ids = list(p.person_id for p in people) self.people_opi_ids = list(p.person_opi_id for p in people) self.dict_opi_id_person_id = dict( (p.person_opi_id, p.person_id) for p in people) self.max_person_id = max(self.people_ids) # cache affiliations = list( PersonAffiliation.objects.filter( is_principal=False).select_related('institution', 'person')) principal_affiliations = list( PersonAffiliation.objects.filter(is_principal=True).select_related( 'institution', 'person')) self.person_affiliations = {} self.person_principal_affiliations = {} self.person_disciplines = {} for pa in affiliations: if pa.person.person_id not in self.person_affiliations: self.person_affiliations[pa.person.person_id] = [ pa.institution.institution_id ] else: self.person_affiliations[pa.person.person_id].append( pa.institution.institution_id) for pa in principal_affiliations: if pa.person.person_id not in self.person_principal_affiliations: self.person_principal_affiliations[pa.person.person_id] = [ pa.institution.institution_id ] else: self.person_principal_affiliations[pa.person.person_id].append( pa.institution.institution_id) for p in people: self.person_disciplines[p.person_id] = list( p.person_disciplines.all())