Changeset 2392 for TI07-MOLES/trunk


Ignore:
Timestamp:
10/04/07 16:49:33 (13 years ago)
Author:
lawrence
Message:

Tiny modification to citation handling

Location:
TI07-MOLES/trunk/PythonCode/wsgi
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • TI07-MOLES/trunk/PythonCode/wsgi/DIF.py

    r2386 r2392  
    136136        #Data Creators 
    137137        self.creators=[] 
    138         # use author here because a full dif entry for creator wont necessarily exist in citation ... 
    139         self.authors=DIFAuthors(self.tree,helper) 
     138        # Let's first see if we get an author out of the citation, 
     139        self.authors=helper.getText(self.tree,'Data_Set_Citation/Dataset_Creator')  
    140140        self.date=dateParse(helper.getText(self.tree,'Data_Set_Citation/Dataset_Release_Date'),'YYYY') 
    141         if self.date=='': self.date='XXXX' 
     141        #if self.date=='': self.date='XXXX' 
    142142        self.title=helper.getText(self.tree,'Data_Set_Citation/Dataset_Title') 
    143         self.briefCitation=None 
     143        self.briefCitation='' 
    144144        if (self.authors!='' and self.date!='' and self.title!=''): 
    145145            self.briefCitation='%s (%s): %s'%(self.authors,self.date,self.title) 
     146        #for now 
     147        self.citation=self.briefCitation 
     148         
     149        self.personnel=[DIFcontact(helper,f) for f in helper.findall(self.tree,'Personnel')] 
     150         
    146151        #services 
    147152        self.services=[] 
  • TI07-MOLES/trunk/PythonCode/wsgi/People2.py

    r2390 r2392  
    3737class Contact(holder): 
    3838    ''' A simple information model and html representation of a contact ''' 
    39     def __init__(self,helper,elem,keys): 
    40         model={'name':None,'email':'','phone':'','fax':'','address':None,'role':''} 
     39    def __init__(self,helper,elem,keys,name=''): 
     40        model={'name':None,'email':'','phone':'','fax':'','address':[],'role':''} 
    4141        holder.__init__(self,model) 
    42         for k in model: 
    43             if model[k]=='':  
    44                 self[k]=helper.getText(elem,keys[k]) 
     42        if name=='': 
     43            for k in model: 
     44                if model[k]=='':  
     45                    self[k]=helper.getText(elem,keys[k]) 
     46        else: 
     47            self['name']=name 
    4548    def toHTML(self): 
    4649        print self 
     
    103106                 
    104107class DIFcontact: 
    105     def __init__(self,helper,elem): 
     108    def __init__(self,helper,elem,name=''): 
    106109        okeys={'sname':'Data_Center_Name/Short_Name','lname':'Data_Center_Name/Long_Name', 
    107110                'url':'Data_Center_URL'} 
    108111        pkeys={'role':'Role','name':None,'phone':'Phone','fax':'Fax','address':None,'email':'Email'} 
    109         if elem is None: 
    110             self.core=None 
     112        if name=='': 
     113            if elem is None: 
     114                self.core=None 
     115                return 
     116        else: 
     117            self.core=Contact(0,0,0,name=name) 
    111118            return 
    112119        if helper.strip(elem.tag)=='Data_Center': 
     
    122129                if t.text is not None: a.append(t.text) 
    123130            self.core['address']=a 
    124             self.core['name']=helper.getText(elem,'First_Name')+' '+helper.getText(elem,'Last_Name') 
     131            self.core['name']=self.__handleName( 
     132                    helper.getText(elem,'First_Name'),helper.getText(elem,'Last_Name')) 
    125133        else: 
    126134            raise ValueError('DIF contact type not understood [%s]'%elem.tag) 
     
    133141            return 'Not Found' 
    134142        else: return self.core.url() 
    135     
    136          
    137  
    138 class DIFAuthors: 
    139     ''' Attempt to get dataset authorship information from a DIF ''' 
    140     def __init__(self,elem,helper=None): 
    141         if helper is None: helper=nsdumb() 
    142         # first try for an investigator in the personnel section 
    143         authors=['Investigator','Dataset_Creator','Dataset_Author'] 
    144         people=helper.findall(elem,'Personnel') 
    145         a,e='','' 
    146         people=helper.findall(elem,'Personnel') 
    147         for p in people: 
    148             role=helper.getText(p,'Role') 
    149             if role=='Investigator': 
    150                 a+='%s, %s;'%(helper.getText(p,'Last_Name'),helper.getText(p,'First_Name')) 
    151                 e=helper.getText(p,'Email') 
    152         if a!='':a=a[0:-1] 
    153         if a=='': 
    154             # carry on looking in the citation element instead 
    155             a=helper.getText(elem,'Data_Set_Citation/Dataset_Creator') 
    156         self.authors,self.email=a,e 
    157     def __str__(self): 
    158         return self.authors 
    159      
     143    def __handleName(self,f,l): 
     144        ''' Sort out first name last name handling ''' 
     145        if f=='': return l 
     146        return '%s, %s'%(l,f) 
     147         
     148def getAuthors(dclist): 
     149    ''' Parse a list of DIFcontacts and get any "author" types out ''' 
     150    authorTypes=['Investigator','Dataset_Creator','Dataset_Author'] 
     151    authors=[] 
     152    for a in dclist: 
     153        if a.core['role'] in authorTypes:authors.append(a) 
     154    return authors 
     155         
    160156import unittest 
    161157Example=''' 
     
    217213        d=DIFcontact(h,e) 
    218214        print d.toHTML() 
     215     
     216    def testDIFname(self): 
     217        '''Make sure we can create a contact, with just a name ''' 
     218        x=DIFcontact(0,0,name='Bryan Lawrence') 
     219        print x.toHTML() 
    219220    
    220221if __name__=="__main__": 
  • TI07-MOLES/trunk/PythonCode/wsgi/layout/metadata.css

    r2090 r2392  
    33.keywords {COLOR: Blue; FONT-SIZE:120%; FONT-WEIGHT:bold;} 
    44.metaentry {COLOR: Black} 
    5 .abstract {MARGIN: 10px; font-style:italic; font-size:110%} 
     5.abstract {MARGIN-LEFT: 50px; MARGIN-RIGHT:50px; MARGIN-TOP:10px; MARGIN-BOTTOM:10px; font-style:italic; font-size:100%; border:thin solid black; padding: 3px} 
    66 
    77.key {BACKGROUND-IMAGE: url(keySm.gif); BACKGROUND-POSITION: right top;BACKGROUND-REPEAT: no-repeat} 
  • TI07-MOLES/trunk/PythonCode/wsgi/layout/ndg.css

    r2090 r2392  
    2828 
    2929 
    30 tr.rbgWhite {BACKGROUND-COLOR: #FFFFFF; } 
    31 tr.rbgGrey  {BACKGROUND-COLOR: #F4F4F4; } 
    32 tr.rbgBeige {BACKGROUND-COLOR: #FDFFCC; } 
     30tr.rbgWhite {BACKGROUND-COLOR: #FFFFFF; BORDER-BOTTOM: thin solid black;} 
     31tr.rbgGrey  {BACKGROUND-COLOR: #F0F0F0; BORDER-BOTTOM: thin solid black;} 
     32tr.rbgBeige {BACKGROUND-COLOR: #FDFFCC; BORDER-BOTTOM: thin solid black;} 
    3333 
    3434#Header {color: black; background-color: white; text-align: center; margin-bottom: 10px; padding-top: 3px; padding-right: 10px; padding-left: 10px; padding-bottom: 10px; clear: both; border-bottom: 2px solid red; font-size: medium; font-weight:bold;} 
  • TI07-MOLES/trunk/PythonCode/wsgi/renderDiscoverySet.py

    r2386 r2392  
    130130            rlist=['',] 
    131131            if summary: 
    132                 if d.briefCitation is not None: 
     132                if d.briefCitation <>'': 
    133133                    rlist[0]='%s: %s'%(span('Citation','ndgem'),d.briefCitation) 
    134134                else: 
  • TI07-MOLES/trunk/PythonCode/wsgi/renderEntity.py

    r2380 r2392  
    4545 
    4646        body=contentHTML+relatedHTML+serviceHTML 
     47         
     48        if entity.citation<>'': 
     49            #cite='<table><tbody><tr><td>Citation&nbsp;</td><td>%s</td></tr></tbody></table>'%entity.citation 
     50            cite='<p>Citation<br/><span class="citation">%s</span></p>'%entity.citation 
     51        else: cite='' 
     52         
    4753        html=''' 
    4854                <DIV id=""> 
     
    5056                <span class="title">%s</span> 
    5157                <DIV class="abstract">%s </DIV> 
     58                %s 
    5259                <p><br/></p> 
    5360                %s 
    54         </DIV>'''%(entity.name,entity.abstract,body) 
     61        </DIV>'''%(entity.name,entity.abstract,cite,body) 
    5562        return html 
    5663    
     
    133140         
    134141        #except: pass 
     142         
     143         
     144        if entity.personnel<>[]: 
     145            for p in entity.personnel: 
     146                html+='''<tr><td class="line">%s</td><td>%s</td></tr>'''%( 
     147                        p.core['role'],p.toHTML()) 
     148 
    135149         
    136150        html+=''' 
  • TI07-MOLES/trunk/PythonCode/wsgi/stubB.py

    r2386 r2392  
    157157                self.services=[] 
    158158                self.config=config 
     159                self.citation='' 
    159160                 
    160161                try: 
Note: See TracChangeset for help on using the changeset viewer.