class ElkarteakDetailView(DetailView):
model = Herria
template_name = 'elkarteak/herria_detail.html'
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'
def get_context_data(self, **kwargs):
herria = Herria.objects.get(slug=self.kwargs.get('slug'))
context = super(ElkarteakDetailView, self).get_context_data(**kwargs)
search = self.search_url % {'herria_id': herria.euskadinet_code,
'probintzia_id': int(herria.probintzia.euskadinet_code)}
search += u'&r01kTgtPg=' + self.request.GET.get('page', u'1')
response = requests.get(search)
elkarteak = []
current_page = 1
total_number_of_pages = 1
if response.status_code == 200:
try:
tree = etree.parse(StringIO(response.content))
results = tree.xpath('/searchSession/searchResultsBySource/searchSourceResults/results')
if len(results) > 0:
results = results[0]
for item in results.findall('item'):
temp_elk = {}
for prop in item:
if prop.tag in ['documentLanguage', 'fileTitle', 'documentWorkAreaRelativePath']:
temp_elk[prop.tag] = prop.text
if prop.tag == 'documentMetaData':
for p in prop:
temp_elk[p.tag] = p.text
elkarteak.append(temp_elk)
navBar = tree.xpath('/searchSession/searchResultsBySource/searchSourceResults/navBar')
if navBar:
navBar = navBar[0]
current_page = navBar.attrib['currentPage']
total_number_of_pages = navBar.attrib['totalNumberOfPages']
except:
log.info('XML parseo errrore')
context['elkarteak'] = elkarteak
context['search_url'] = search
context['current_page'] = int(current_page)
context['total_pages'] = total_number_of_pages
context['page_range'] = range(1,int(total_number_of_pages)+1)
return context