Changeset 8452


Ignore:
Timestamp:
09/07/12 15:25:20 (7 years ago)
Author:
mnagni
Message:

0.0.5

  • Fixed QueryTag?.queryWithRoleRequest bug when params_values[param.par_name] == None
  • Small refactoring removing code from os_request and creating with it in osqyery a method called createTemplateQuery
  • Refactored many "if item" to "if item is not None"
  • Rewritten atom.link and atom.person modules
Location:
mauRepo/CedaMarkup/trunk
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • mauRepo/CedaMarkup/trunk/CHANGES

    r8420 r8452  
    880.0.3 
    99Added GML ValidationTime 
    10 major refactoring (not compatible with previous version)   
     10major refactoring (not compatible with previous version) 
     11 
     120.0.5 
     13- Fixed QueryTag.queryWithRoleRequest bug when params_values[param.par_name] == None   
     14- Small refactoring removing code from os_request and creating with it in osqyery a method called createTemplateQuery 
     15- Refactored many "if item" to "if item is not None" 
     16- Rewritten atom.link and atom.person modules 
  • mauRepo/CedaMarkup/trunk/ceda_markup/atom/atom.py

    r8418 r8452  
    3131@author: Maurizio Nagni 
    3232''' 
    33 from xml.etree.ElementTree import Element, SubElement, _ElementInterface 
     33from xml.etree.ElementTree import SubElement 
    3434from ceda_markup.markup import createMarkup 
    3535 
     
    5050    doc_id.text = iid 
    5151     
    52     if subtitle: 
     52    if subtitle is not None: 
    5353        subtitle = SubElement(top, 'subtitle') 
    5454        subtitle.text = subtitle 
    5555         
    56     if rights: 
     56    if rights is not None: 
    5757        rights = SubElement(top, 'rights') 
    5858        rights.text = rights             
  • mauRepo/CedaMarkup/trunk/ceda_markup/atom/entry.py

    r8418 r8452  
    5555        markup.append(updated) 
    5656         
    57         if author: 
     57        if author is not None: 
    5858            if isinstance(author, list): 
    5959                extendElement(markup, author) 
     
    6161                markup.append(author)                
    6262                 
    63         if content: 
     63        if content is not None: 
    6464            markup.append(content) 
    6565             
     
    6767            markup.append(link) 
    6868                                             
    69         if published: 
     69        if published is not None: 
    7070            markup.append(published)                
    7171               
  • mauRepo/CedaMarkup/trunk/ceda_markup/atom/link.py

    r8369 r8452  
    3131@author: Maurizio Nagni 
    3232''' 
    33 from xml.etree.ElementTree import Element 
     33from ceda_markup.atom.atom import ATOM_ROOT_TAG, ATOM_NAMESPACE, ATOM_PREFIX 
     34from ceda_markup.markup import createMarkup 
    3435 
    35 class Link(object): 
     36REL_ALTERNATE = 'alternate' 
     37REL_ENCLOSURE = 'enclosure'     
     38REL_RELATED = 'related'     
     39REL_SELF = 'self'     
     40REL_VIA = 'via'     
     41REL_SEARCH = 'search' 
     42REL_FIRST = 'first'     
     43REL_NEXT = 'next'     
     44REL_LAST = 'last' 
     45REL = [REL_ALTERNATE, REL_ENCLOSURE, REL_RELATED, REL_SELF, REL_VIA, REL_SEARCH, REL_FIRST, REL_NEXT, REL_LAST] 
     46 
     47def createLink(href, root = None, ns = ATOM_NAMESPACE, rel = None, itype = None, hreflang = None, title = None, length = None): 
     48           
    3649    ''' 
    37     classdocs 
    38     ''' 
    39  
    40     REL_ALTERNATE = 'alternate' 
    41     REL_ENCLOSURE = 'enclosure'     
    42     REL_RELATED = 'related'     
    43     REL_SELF = 'self'     
    44     REL_VIA = 'via'     
    45     REL_SEARCH = 'search' 
    46     REL_FIRST = 'first'     
    47     REL_NEXT = 'next'     
    48     REL_LAST = 'last'     
    49     REL = [REL_ALTERNATE, REL_ENCLOSURE, REL_RELATED, REL_SELF, REL_VIA, REL_SEARCH, REL_FIRST, REL_NEXT, REL_LAST]     
    50      
    51  
    52     def __init__(self, href, rel = None, type = None, hreflang = None, title = None, length = None): 
    53         ''' 
    54         Constructor 
    55         @param root: the document root element where attach the prefix:namespace for this element  
    56         @param href:  
     50        @param href:     
     51        @param root: the document root element where attach the prefix:namespace for this element   
    5752        @param rel: one of the Link.REL constants 
    5853        @param type:  
    5954        @param hreflang: 
    6055        @param title: an atom.Title instance 
    61         @param length: length of the resource in bytes     
    62         ''' 
    63         self.href = href 
     56        @param length: length of the resource in bytes        
     57    ''' 
     58    markup = createMarkup('link', ATOM_PREFIX, ns, root)     
     59    markup.set('href', href) 
     60     
     61    if rel is not None: 
     62        markup.set('rel', rel)             
    6463         
    65         if rel and rel in Link.REL: 
    66             self.rel = rel 
    67              
    68         if type: 
    69             self.type = type             
     64    if itype is not None: 
     65        markup.set('type', itype) 
     66 
     67    if hreflang is not None: 
     68        markup.set('hreflang', hreflang) 
    7069         
    71         if hreflang: 
    72             self.hreflang = hreflang         
    73              
    74         if title: 
    75             self.title = title             
     70    if title is not None: 
     71        markup.set('title', title) 
     72 
     73    if length is not None: 
     74        markup.set('length', length) 
    7675         
    77         if length: 
    78             self.length = length     
    79              
    80     def buildElement(self): 
    81         link = Element("link")         
    82         link.set('href', self.href) 
    83                  
    84         if hasattr(self, 'rel'): 
    85             link.set('rel', self.rel)             
    86          
    87         if hasattr(self, 'type'): 
    88             link.set('type', self.type) 
    89  
    90         if hasattr(self, 'hreflang'): 
    91             link.set('hreflang', self.hreflang) 
    92              
    93         if hasattr(self, 'title'): 
    94             link.set('title', self.title) 
    95  
    96         if hasattr(self, 'length'): 
    97             link.set('length', self.length)                         
    98  
    99         return link                 
     76    return markup 
  • mauRepo/CedaMarkup/trunk/ceda_markup/atom/person.py

    r8369 r8452  
    3131@author: Maurizio Nagni 
    3232''' 
    33 from xml.etree.ElementTree import SubElement, Element 
    34 from abc import abstractmethod 
     33from ceda_markup.markup import createMarkup 
     34from ceda_markup.atom.atom import ATOM_NAMESPACE, ATOM_PREFIX 
    3535 
    36 class Person(object): 
    37     ''' 
    38     classdocs 
    39     ''' 
     36def _createPerson(markup, uri = None, email = None): 
     37    if uri is not None: 
     38        markup.set('uri', uri)         
    4039 
     40    if email is not None: 
     41        markup.set('email', email) 
     42    return markup 
     43     
    4144 
    42     def __init__(self, name, uri = None, email = None): 
    43         ''' 
    44         Constructor 
    45         ''' 
    46         self.name = name 
    47          
    48         if uri: 
    49             self.uri = uri 
    50          
    51         if email: 
    52             self.email = email         
    53                  
    54     def buildElement(self): 
    55         entry = self.buildRoot() 
    56          
    57         name = SubElement(entry, 'name') 
    58         name.text = self.name 
    59          
    60         if hasattr(self, 'uri'): 
    61             uri = SubElement(entry, 'uri') 
    62             uri.text = self.uri         
    63          
    64         if hasattr(self, 'email'): 
    65             email = SubElement(entry, 'email') 
    66             email.text = self.email 
     45def createAuthor(root = None, ns = ATOM_NAMESPACE, uri = None, email = None): 
     46    markup = createMarkup('author', ATOM_PREFIX, ns, root) 
     47    return _createPerson(markup, uri, email) 
    6748 
    68     @abstractmethod 
    69     def buildRoot(self): 
    70         """ 
    71             Build the Element root for this instance 
    72         """ 
    73         pass  
    74      
    75 class Author(Person): 
    76     ''' 
    77     classdocs 
    78     ''' 
    79  
    80     def __init__(self, name, uri = None, email = None): 
    81         super(Author, self).__init__(name, uri, email) 
    82          
    83     def buildRoot(self): 
    84         return Element('author') 
    85      
    86 class Contributor(Person): 
    87     ''' 
    88     classdocs 
    89     ''' 
    90  
    91     def __init__(self, name, uri = None, email = None): 
    92         super(Contributor, self).__init__(name, uri, email) 
    93          
    94     def buildRoot(self): 
    95         return Element('author')         
     49def createContributor(root = None, ns = ATOM_NAMESPACE, uri = None, email = None): 
     50    markup = createMarkup('contributor', ATOM_PREFIX, ns, root) 
     51    return _createPerson(markup, uri, email)         
  • mauRepo/CedaMarkup/trunk/ceda_markup/opensearch/os_engine.py

    r8418 r8452  
    6868            if item.extension == mimetype: 
    6969                response = item 
    70         if response: 
     70        if response is not None: 
    7171            kwargs['params_values'] = params_values 
    7272            queries = QueryTag.queryWithRoleRequest(mimetype, self.osRequest.query.params_model, params_values) 
  • mauRepo/CedaMarkup/trunk/ceda_markup/opensearch/os_request.py

    r8447 r8452  
    8484        self.os_adult_content = '1' 
    8585 
    86         if os_description: 
     86        if os_description is not None: 
    8787            self.os_description = os_description[:MAX_OS_DESCRIPTION_LEN] 
    8888         
    89         if os_short_name: 
     89        if os_short_name is not None: 
    9090            self.os_short_name = os_short_name[:MAX_OS_SHORT_NAME_LEN] 
    9191                     
    9292        #Should check that is an email format 
    93         if os_contact:         
     93        if os_contact is not None:         
    9494            self.os_contact = os_contact 
    9595          
    96         if os_tags: 
     96        if os_tags is not None: 
    9797            self.os_tags = os_tags[:MAX_OS_TAGS_LEN] 
    9898 
    99         if os_long_name: 
     99        if os_long_name is not None: 
    100100            self.os_long_name = os_long_name[:MAX_OS_LONG_NAME_LEN] 
    101101 
    102         if os_developer: 
     102        if os_developer is not None: 
    103103            self.os_developer = os_developer[:MAX_OS_DEVELOPER_LEN] 
    104104 
    105         if os_attribution: 
     105        if os_attribution is not None: 
    106106            self.os_attribution = os_attribution[:MAX_OS_ATTRIBUTION_LEN]             
    107107             
     
    109109            self.os_syndacation_right = os_syndacation_right             
    110110             
    111         if os_adult_content and os_adult_content in ['false', 'FALSE', '0', 'no', 'NO']: 
     111        if os_adult_content  is not None and os_adult_content in ['false', 'FALSE', '0', 'no', 'NO']: 
    112112            # should be set to False but because of  
    113113            # http://code.google.com/p/gdata-python-client/issues/detail?id=611 
     
    204204        url.set("type", get_mimetype(response_type)) 
    205205         
    206         template_query = "" 
    207         for param in self.query.params_model: 
    208             term = self._assignPrefix(root, param) 
    209              
    210             urlParam = "" 
    211             if param.required:              
    212                 urlParam = ("%s={%s}") % (param.par_name, term) 
    213             else: 
    214                 urlParam = ("%s={%s?}") % (param.par_name, term) 
    215                 
    216             template_query += ("%s&") % (urlParam)             
     206        template_query = self.query.createTemplateQuery(root) 
     207            
    217208        query_template = ("%s%s?%s") % (ospath, response_type, template_query[:-1]) 
    218209        url.set("template", query_template) 
    219210         
    220         if rel and rel != URL_REL_DEFAULT: 
     211        if rel  is not None and rel != URL_REL_DEFAULT: 
    221212            url.set("rel", rel) 
    222213         
    223         if indexOffset and indexOffset != URL_INDEX_OFFSET_DEFAULT:             
     214        if indexOffset  is not None and indexOffset != URL_INDEX_OFFSET_DEFAULT:             
    224215            url.set("indexOffset", str(indexOffset)) 
    225216         
    226         if pageOffset and pageOffset != URL_PAGE_OFFSET_DEFAULT:                     
     217        if pageOffset  is not None and pageOffset != URL_PAGE_OFFSET_DEFAULT:                     
    227218            url.set("pageOffset", str(pageOffset))         
    228219         
  • mauRepo/CedaMarkup/trunk/ceda_markup/opensearch/os_response.py

    r8369 r8452  
    8181         
    8282    def createDocument(self, totalResults = None, startIndex = None, itemsPerPage = None, query = None):         
    83         if totalResults: 
     83        if totalResults is not None: 
    8484            os_totalResults =  SubElement(self._root, OpenSearchResponse.assignPrefix('totalResults')) 
    8585            os_totalResults.text = totalResults 
    8686         
    87         if startIndex: 
     87        if startIndex is not None: 
    8888            os_startIndex =  SubElement(self._root, OpenSearchResponse.assignPrefix('startIndex')) 
    8989            os_startIndex.text = startIndex 
    9090 
    91         if itemsPerPage: 
     91        if itemsPerPage is not None: 
    9292            os_itemsPerPage =  SubElement(self._root, OpenSearchResponse.assignPrefix('itemsPerPage')) 
    9393            os_itemsPerPage.text = itemsPerPage                
  • mauRepo/CedaMarkup/trunk/ceda_markup/opensearch/osimage.py

    r8369 r8452  
    5151    def buildElement(self): 
    5252        url = Element("Image") 
    53         if self.height and isinstance(self.height, (int, long)): 
     53        if self.height  is not None and isinstance(self.height, (int, long)): 
    5454            url.set("height", self.height)             
    5555         
    56         if self.width and isinstance(self.width, (int, long)): 
     56        if self.width  is not None and isinstance(self.width, (int, long)): 
    5757            url.set("width", self.width)  
    5858             
  • mauRepo/CedaMarkup/trunk/ceda_markup/opensearch/osquery.py

    r8369 r8452  
    5656        self.params_model = params_model 
    5757         
    58         if rel and rel in URL_REL: 
     58        if rel  is not None and rel in URL_REL: 
    5959            self.rel = rel 
    6060        else: 
    6161            self.rel = URL_REL_DEFAULT 
    6262         
    63         if indexOffset and isinstance(indexOffset, (int, long)) and indexOffset > 0: 
     63        if indexOffset  is not None and isinstance(indexOffset, (int, long)) and indexOffset > 0: 
    6464            self.indexOffset = indexOffset 
    6565        else: 
    6666            self.indexOffset = URL_INDEX_OFFSET_DEFAULT    
    6767         
    68         if pageOffset and isinstance(pageOffset, (int, long)) and pageOffset > 0:             
     68        if pageOffset  is not None and isinstance(pageOffset, (int, long)) and pageOffset > 0:             
    6969            self.pageOffset = pageOffset 
    7070        else: 
     
    7575        pass 
    7676        
    77      
     77    def createTemplateQuery(self, root): 
     78        ''' 
     79            Creates a string to be used as parameters template list in the "description". 
     80            As this description is used in a OpenSearch URL tag, the root parameter is required  
     81            in order to update the tag with the necessary namespaces 
     82            @param root: the OpenSearchRequest.ROOT_TAG tag. 
     83            @return: a string describing the parameters query 
     84        ''' 
     85        template_query = "" 
     86        for param in self.query.params_model: 
     87            term = self._assignPrefix(root, param) 
     88             
     89            urlParam = "" 
     90            if param.required:              
     91                urlParam = ("%s={%s}") % (param.par_name, term) 
     92            else: 
     93                urlParam = ("%s={%s?}") % (param.par_name, term) 
     94                
     95            template_query += ("%s&") % (urlParam) 
     96        return template_query  
  • mauRepo/CedaMarkup/trunk/ceda_markup/opensearch/query.py

    r8369 r8452  
    5050        os_query.set("role", "request")  
    5151        for param in params_model: 
    52             if param.par_name in params_values: 
     52            if param.par_name in params_values and params_values[param.par_name] is not None: 
    5353                if param.term_name == 'searchTerms': 
    5454                    os_query.set(param.term_name, ' '.join(str(x) for x in params_values[param.par_name])) 
Note: See TracChangeset for help on using the changeset viewer.