Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. class ElkarteakDetailView(DetailView):
  2.     model = Herria
  3.     template_name = 'elkarteak/herria_detail.html'
  4.     search_url = 'http://opendata.euskadi.net/r01hSearchResultWar/r01hPresentationXML.jsp?r01kLang=es&r01kQry=tC:euskadi;tF:registros_administrativos;tT:asociacion;m:documentLanguage.EQ.es,recTerritoryCode.EQ.%(probintzia_id)s,recTownCode.EQ.%(herria_id)s;o:documentCreateDate.DESC;pp:r01PageSize.100&r01kPgCmd=next&r01kSrchSrcId=contenidos.inter'
  5.  
  6.     def get_context_data(self, **kwargs):
  7.         herria = Herria.objects.get(slug=self.kwargs.get('slug'))
  8.         context = super(ElkarteakDetailView, self).get_context_data(**kwargs)
  9.         search = self.search_url % {'herria_id': herria.euskadinet_code,
  10.                                     'probintzia_id': int(herria.probintzia.euskadinet_code)}
  11.         search += u'&r01kTgtPg=' + self.request.GET.get('page', u'1')
  12.         response = requests.get(search)
  13.         elkarteak = []
  14.         current_page = 1
  15.         total_number_of_pages = 1
  16.         if response.status_code == 200:
  17.             try:
  18.                 tree = etree.parse(StringIO(response.content))
  19.                 results = tree.xpath('/searchSession/searchResultsBySource/searchSourceResults/results')
  20.                 if len(results) > 0:
  21.                     results = results[0]
  22.                     for item in results.findall('item'):
  23.                         temp_elk = {}
  24.                         for prop in item:
  25.                             if prop.tag in ['documentLanguage', 'fileTitle', 'documentWorkAreaRelativePath']:                    
  26.                                 temp_elk[prop.tag] = prop.text
  27.                             if prop.tag == 'documentMetaData':
  28.                                 for p in prop:
  29.                                     temp_elk[p.tag] = p.text
  30.                         elkarteak.append(temp_elk)
  31.                 navBar = tree.xpath('/searchSession/searchResultsBySource/searchSourceResults/navBar')
  32.                 if navBar:
  33.                     navBar = navBar[0]
  34.                 current_page = navBar.attrib['currentPage']
  35.                 total_number_of_pages = navBar.attrib['totalNumberOfPages']
  36.             except:
  37.                 log.info('XML parseo errrore')
  38.         context['elkarteak'] = elkarteak
  39.         context['search_url'] = search
  40.         context['current_page'] = int(current_page)
  41.         context['total_pages'] = total_number_of_pages
  42.         context['page_range'] = range(1,int(total_number_of_pages)+1)
  43.         return context