From 16d26d048607bf17aaac94180d98d6433503cdcf Mon Sep 17 00:00:00 2001 From: "W. Trevor King" Date: Wed, 30 Jun 2010 11:30:15 -0400 Subject: [PATCH] Initial attempt at prof/import.py data import --- sitecore/prof/__init__.py | 32 ++++++++++++++++++++++-- sitecore/prof/export_mysql.py | 6 +++-- sitecore/prof/import.py | 47 ++++++++++++++++++++++++++++++++--- 3 files changed, 77 insertions(+), 8 deletions(-) diff --git a/sitecore/prof/__init__.py b/sitecore/prof/__init__.py index 7b24e72..0995fac 100644 --- a/sitecore/prof/__init__.py +++ b/sitecore/prof/__init__.py @@ -106,10 +106,11 @@ class Graduation (AttributeHolder): fields = ['college', 'field', 'title', 'year'] class Contact (AttributeHolder): - fields = ['office', 'email', 'website', 'phone', 'lab', 'lab_phone'] + fields = ['office', 'email', 'website', 'groupsite', + 'phone', 'lab', 'lab_phone'] class Bio (AttributeHolder): - fields = ['specialization', 'publications', 'profile', 'cv'] + fields = ['category', 'specialization', 'publications', 'profile', 'cv'] class Professor (AttributeHolder): fields = ['name', 'title', 'graduations', 'contact', 'bio'] @@ -147,3 +148,30 @@ class Professor (AttributeHolder): if m in degrees: degrees.remove(m) return '|'.join(degrees) + + def colleges(self): + titles = self.degrees().split('|') + return '|'.join([g.college for g in self.graduations + if g.title in titles]) + + def program(self): + "Sub-field(s)" + if self.contact.group_site == None: + return 'Physics' + #TODO: group to sub-field logic + + def sites(self): + if self.contact.groupsite == None: + return ('%s' + % (self.contact.website, self.contact.website)) + return ('Group Website: %s|Personal Website: %s' + % (self.contact.groupsite, self.contact.groupsite, + self.contact.website, self.contact.website)) + + def lab_contact(self): + "Lab Name, Lab Phone" + if self.contact.lab != None: + assert self.contact.lab_phone != None, unicode(self.name) + return '%s, %s' % (self.contact.lab, self.contact.lab_phone) + assert self.contact.lab_phone == None, unicode(self.name) + return None diff --git a/sitecore/prof/export_mysql.py b/sitecore/prof/export_mysql.py index 152eb95..e484fc8 100644 --- a/sitecore/prof/export_mysql.py +++ b/sitecore/prof/export_mysql.py @@ -172,7 +172,7 @@ Where the relevant categories are ) p.title = prof['position'] if prof['position1'] != None: - p.title += ', %s' % prof['position1'] + p.title += '|%s' % prof['position1'] p.graduations = [] degrees = [] if prof['degrees'] != None: @@ -195,12 +195,14 @@ Where the relevant categories are office=prof['office'], email=prof['email'], website=prof['personalpage'], + groupsite=prof['grouppage'], phone=prof['phone'], lab=prof['lab'], lab_phone=prof['labphone'], ) p.bio = Bio( - specialization=prof['research'], # prof['grouppage'] + role=prof['category'], + specialization=prof['research'], publications=None, profile=prof['profile'], cv=None, diff --git a/sitecore/prof/import.py b/sitecore/prof/import.py index 6faefcb..77afc41 100644 --- a/sitecore/prof/import.py +++ b/sitecore/prof/import.py @@ -50,11 +50,44 @@ class ProfessorAdder (object): self.s.expand_nav_section('facultyDirectory') def __call__(self, prof): - self.create_prof_page(prof) - TODO - - def create_prof_page(self, prof): name = '%s %s' % (prof.name.first_middle, prof.name.last) + self.create_prof_page(name) + self.lock_section() + settings = [ + ('Degrees:', prof.degrees()), + ('College:', prof.colleges()), + ('Program:', prof.program()), + ('Office:', prof.contact.office), + ('Specialization:', prof.bio.specialization), + ('Research Interests:', ''), + ('Personal Site:', prof.sites()), + ('Title:', prof.title), + ('First Name:', prof.name.first_middle), + ('Last Name:', prof.name.last), + ('Bio:', '

\n%s\n%

'+prof.bio.profile.replace( + '\n', '\n

\n

\n')), + ('Headshot:', ('/Images/physics/headshots/%s' + % name.lower().replace('.','').replace(' ','_'))), + ('Email:', prof.contact.email), + ('Phone:', prof.contact.phone), + ('Fax:', prof.lab_contact()), + ('Page Title - This shows in the tab and title bar of the brower -- Google rates it highly:', name), + ("Menu Title - This shows in the menus and navigation blocks -- it's usually a shorted version of the page title:", name), + ("Breadcrumb Title - This shows in the breadcrumb trail -- it's usually a very short version of the page title:", name), + ("See Also title - Other items that refer to this one will use this text:", name), + ] + for field_name,value in settings: + if value == None: + value = '' + granddad,field = s.find_field(field_name) + field.clear() + field.send_keys(value) + #granddad,field = s.find_field('Headshot:') + #granddad.find_element_by_link_text('Properties') + # TODO, set width/height + s.publish_section('Added/updated Prof. %s' % prof.name.last) + + def create_prof_page(self, name): self.s.open_nav_section(name) return self.s.open_nav_section('Copy of Shyamalendu Bose') @@ -80,6 +113,12 @@ class ProfessorAdder (object): % (popup, current_window)) self.s.open_nav_section(name) + def lock_section(self): + try: + self.s.lock_section() + except NoSuchElementException, e: + self.s.logger.info("can't lock %s (already locked?), skipping" % raw_name) + def main(argv): import optparse -- 2.26.2