# -*- coding: utf-8 -*-
from yxy.system.views import site, ModelPage
from yxy.categories.models import Category
from yxy.articles.models import Article
import urllib
import re

class CategoryPage(ModelPage):
    def update_index_context(self, language = "cs"):
        latest_articles = Article.objects.filter(published = True, type__id = 2)
        articles_homepage = Category.objects.filter(id = 23)
        biowaste_homepage = Category.objects.filter(id = 24)
        treatment_homepage = Category.objects.filter(id = 29)
        latest_laws = Article.objects.filter(published = True, type__id = 3)
        law_homepage = Category.objects.filter(id = 40)
        return {'latest_articles': latest_articles, 'articles_homepage': articles_homepage, 'biowaste_homepage': biowaste_homepage, 'treatment_homepage': treatment_homepage, 'latest_laws': latest_laws, 'law_homepage': law_homepage}
        
    def update_context_article(self, request, category):
        facilities = Category.objects.filter(id = 21)
        map = Category.objects.filter(id = 22)
        statistics = Category.objects.filter(id = 39)
        project = Category.objects.filter(id = 47)
        portal = Category.objects.filter(id = 41)
        links = Category.objects.filter(id = 48)
        td = []
        data = []
        inputs = []
        sum = []
        if category and category.id == 52:
            if request.method == 'POST':
               params = urllib.urlencode(
                    {'eokres': request.POST['eokres'],
                     'ekraj': request.POST['ekraj'],
                     'pokres': request.POST['pokres'],
                     'pkraj': request.POST['pkraj'],
                     'kodp': request.POST['kodp'],
                     'nakl': request.POST['nakl'],
                     'ktg': request.POST['ktg'],
                     'row_cnt': request.POST['row_cnt'],
                     'rok': request.POST['rok']}
               )
               BIOWASTE = {
               "020101": u"Kaly z praní a z čištění",
               "020102": u"Odpad živočišných tkání",
               "020103": u"Odpad rostlinných pletiv",
               "020106": u"Zvířecí trus, moč a hnůj (včetně znečištěné slámy), kapalné odpady, soustřeďované odděleně a zpracovávané mimo místo vzniku",
               "020107": u"Odpady z lesnictví",
               "020201": u"Kaly z praní a z čistění",
               "020202": u"Odpad živočišných tkání",
               "020203": u"Suroviny nevhodné ke spotřebě nebo zpracování",
               "020204": u"Kaly z čištění odpadních vod v místě jejich vzniku",
               "020301": u"Kaly z praní, čištění, loupání, odstřeďování a separace",
               "020304": u"Suroviny nevhodné ke spotřebě nebo zpracování",
               "020305": u"Kaly z čištění odpadních vod v místě jejich vzniku",
               "020401": u"Zemina z čištění a praní řepy",
               "020402": u"Uhličitan vápenatý nevyhovující jakosti",
               "020403": u"Kaly z čištění odpadních vod v místě jejich vzniku",
               "020501": u"Suroviny nevhodné ke spotřebě nebo zpracování",
               "020502": u"Kaly z čištění odpadních vod v místě jejich vzniku",
               "020601": u"Suroviny nevhodné ke spotřebě nebo zpracování",
               "020603": u"Kaly z čištění odpadních vod v místě jejich vzniku",
               "020701": u"Odpad z praní, čištění a mechanického zpracování surovin",
               "020702": u"Odpad z destilace lihovin",
               "020704": u"Suroviny nevhodné ke spotřebě nebo zpracování",
               "020705": u"Kaly z čištění odpadních vod v místě jejich vzniku",
               "030101": u"Odpadní kůra a korek",
               "030105": u"Piliny, hobliny, odřezky, dřevo, dřevotřískové desky a dýhy, neuvedené pod číslem 030104",
               "030301": u"Odpadní kůra a dřevo",
               "030302": u"Kaly zeleného louhu (ze zpracování černého louhu)",
               "030305": u"Kaly z odstraňování tiskařské černi při recyklaci papíru",
               "030307": u"Mechanicky oddělený výmět z rozvlákňování odpadního papíru a lepenky",
               "030308": u"Odpady ze třídění papíru a lepenky určené k recyklaci",
               "030309": u"Odpadní kaustifikační kal",
               "030310": u"Výmětová vlákna, kaly z mechanického oddělování obsahující vlákna, výplně a povrchové vrstvy z mechanického třídění",
               "030311": u"Kaly z čistění odpadních vod v místě jejich vzniku neuvedené pod 030310",
               "040101": u"Odpadní klihovka a štípenka",
               "040106": u"Kaly obsahující chrom, zejména kaly z čištění odpadních vod v místě jejich vzniku",
               "040107": u"Kaly neobsahující chrom, zejména kaly z čištění odpadních vod v místě jejich vzniku",
               "040210": u"Organické hmoty z přírodních produktů (např. tuk, vosk)",
               "040220": u"Ostatní kaly z čištění odpadních vod v místě jejich vzniku neuvedené pod číslem 040219",
               "040221": u"Odpady z nezpracovaných textilních vláken",
               "040222": u"Odpady ze zpracovaných textilních vláken",
               "100103": u"Popílek ze spalování rašeliny a neošetřeného dřeva",
               "101304": u"Odpady z kalcinace a hašení vápna",
               "101306": u"Úlet a prach (kromě odpadů uvedených pod čísly 101312 a 101313)",
               "150101": u"Papírové a lepenkové obaly",
               "150103": u"Dřevěné obaly",
               "170201": u"Dřevo",
               "190503": u"Kompost nevyhovující jakosti",
               "190604": u"Produkty vyhnívání z anaerobního zpracování komunálního odpadu",
               "190605": u"Extrakty z anaerobního zpracování odpadů živočišného a rostlinného původu",
               "190606": u"Produkty vyhnívání z anaerobního zpracování živočišného a rostlinného odpadu",
               "190805": u"Kaly z čištění komunálních odpadních vod",
               "190812": u"Kaly z biologického čistění průmyslových odpadních vod neuvedené pod číslem 190811",
               "190814": u"Kaly z jiných způsobů čištění průmyslových odpadních vod neuvedené pod číslem 190813",
               "190901": u"Pevné odpady z primárního čištění",
               "190902": u"Kaly z čiření vody",
               "191201": u"Papír a lepenka",
               "191207": u"Dřevo neuvedené pod číslem 191206",
               "200101": u"Papír a lepenka",
               "200108": u"Biologicky rozložitelný odpad z kuchyní a stravoven",
               "200110": u"Oděvy",
               "200111": u"Textilní materiály",
               "200138": u"Dřevo neuvedené pod číslem 200137",
               "200201": u"Biologicky rozložitelný odpad",
               "200301": u"Směsný komunální odpad",
               "200302": u"Odpad z tržišť",
               "200307": u"Objemný odpad",
               } 

               TREATMENT = {
               "AN10": u"Prodej odpadu jako suroviny (druhotné suroviny)",
               "BN10": u"Prodej odpadu jako suroviny (druhotné suroviny)",
               "CN10": u"Prodej odpadu jako suroviny (druhotné suroviny)",
               "AR10": u"Aplikace do půdy, která je přínosem pro zemědělství nebo zlepšuje ekologii",
               "BR10": u"Aplikace do půdy, která je přínosem pro zemědělství nebo zlepšuje ekologii",
               "CR10": u"Aplikace do půdy, která je přínosem pro zemědělství nebo zlepšuje ekologii",
               "AN14": u"Biologická dekontaminace",
               "BN14": u"Biologická dekontaminace",
               "CN14": u"Biologická dekontaminace",
               "AD8": u"Biologická úprava",
               "BD8": u"Biologická úprava",
               "CD8": u"Biologická úprava",
               "BN16": u"Dovoz odpadu do státu, který není členským státem EU",
               "BN6": u"Dovoz odpadu z členského státu EU",
               "AD9": u"Fyzikálně-chemická úprava",
               "BD9": u"Fyzikálně-chemická úprava",
               "CD9": u"Fyzikálně-chemická úprava",
               "AD3": u"Hlubinná injektáž",
               "BD3": u"Hlubinná injektáž",
               "CD3": u"Hlubinná injektáž",
               "AN50": u"Inventurní rozdíl - vyrovnání nedostatku odpadu",
               "BN50": u"Inventurní rozdíl - vyrovnání nedostatku odpadu",
               "CN50": u"Inventurní rozdíl - vyrovnání nedostatku odpadu",
               "AN53": u"Inventurní rozdíl - vyrovnání přebytku odpadu",
               "BN53": u"Inventurní rozdíl - vyrovnání přebytku odpadu",
               "CN53": u"Inventurní rozdíl - vyrovnání přebytku odpadu",
               "AN13": u"Kompostování",
               "BN13": u"Kompostování",
               "CN13": u"Kompostování",
               "AD12": u"Konečné či trvalé uložení",
               "BD12": u"Konečné či trvalé uložení",
               "CD12": u"Konečné či trvalé uložení",
               "AR7": u"Obnova látek používaných ke snižování znečištění",
               "BR7": u"Obnova látek používaných ke snižování znečištění",
               "CR7": u"Obnova látek používaných ke snižování znečištění",
               "BN40": u"Odpad po úpravě, pokud nedošlo ke změně katalogového čísla odpadu",
               "A00": u"Produkce odpadu",
               "AN8": u"Předání (dílů, odpadů) pro opětovné použití",
               "BN8": u"Předání (dílů, odpadů) pro opětovné použití",
               "CN8": u"Předání (dílů, odpadů) pro opětovné použití",
               "AN3": u"Předání jiné oprávněné osobě (kromě přepravce, dopravce)",
               "BN3": u"Předání jiné oprávněné osobě (kromě přepravce, dopravce)",
               "CN3": u"Předání jiné oprávněné osobě (kromě přepravce, dopravce)",
               "AN2": u"Předání kalů ČOV k použití na zemědělské půdě",
               "BN2": u"Předání kalů ČOV k použití na zemědělské půdě",
               "CN2": u"Předání kalů ČOV k použití na zemědělské půdě",
               "AR12": u"Předúprava odpadu k aplikaci pod označením R1 až R11",
               "BR12": u"Předúprava odpadu k aplikaci pod označením R1 až R11",
               "CR12": u"Předúprava odpadu k aplikaci pod označením R1 až R11",
               "B00": u"Převzetí odpadu",
               "AR6": u"Regenerace kyselin a zásad",
               "BR6": u"Regenerace kyselin a zásad",
               "CR6": u"Regenerace kyselin a zásad",
               "AD1": u"Skládkování",
               "BD1": u"Skládkování",
               "CD1": u"Skládkování",
               "AR13": u"Skladování materiálu před aplikací pod označením R1 až R12 (kromě dočasného)",
               "BR13": u"Skladování materiálu před aplikací pod označením R1 až R12 (kromě dočasného)",
               "CR13": u"Skladování materiálu před aplikací pod označením R1 až R12 (kromě dočasného)",
               "AD15": u"Skladování před odstraněním pod označením D1 až D14 (kromě dočasného)",
               "BD15": u"Skladování před odstraněním pod označením D1 až D14 (kromě dočasného)",
               "CD15": u"Skladování před odstraněním pod označením D1 až D14 (kromě dočasného)",
               "AD10": u"Spalování na pevnině",
               "BD10": u"Spalování na pevnině",
               "CD10": u"Spalování na pevnině",
               "AN63": u"Staré zátěže, živelní pohromy, černé skládky apod.",
               "BN63": u"Staré zátěže, živelní pohromy, černé skládky apod.",
               "CN63": u"Staré zátěže, živelní pohromy, černé skládky apod.",
               "AN60": u"Staré zátěže, živelní pohromy, černé skládky apod.",
               "BN60": u"Staré zátěže, živelní pohromy, černé skládky apod.",
               "CN60": u"Staré zátěže, živelní pohromy, černé skládky apod.",
               "AD4": u"Ukládání do povrchových nádrží",
               "BD4": u"Ukládání do povrchových nádrží",
               "CD4": u"Ukládání do povrchových nádrží",
               "AD5": u"Ukládání do speciálně technicky provedených skládek",
               "BD5": u"Ukládání do speciálně technicky provedených skládek",
               "CD5": u"Ukládání do speciálně technicky provedených skládek",
               "AN12": u"Ukládání odpadů jako technologický materiál na zajištění skládky",
               "BN12": u"Ukládání odpadů jako technologický materiál na zajištění skládky",
               "CN12": u"Ukládání odpadů jako technologický materiál na zajištění skládky",
               "AD14": u"Úprava jiných vlastností před odstraněním pod označením D1 až D13",
               "BD14": u"Úprava jiných vlastností před odstraněním pod označením D1 až D13",
               "CD14": u"Úprava jiných vlastností před odstraněním pod označením D1 až D13",
               "AD2": u"Úprava půdními procesy",
               "BD2": u"Úprava půdními procesy",
               "CD2": u"Úprava půdními procesy",
               "AD13": u"Úprava složení před odstraněním pod označením D1 až D12",
               "BD13": u"Úprava složení před odstraněním pod označením D1 až D12",
               "CD13": u"Úprava složení před odstraněním pod označením D1 až D12",
               "AR1": u"Využití odpadu jako paliva nebo k výrobě energie",
               "BR1": u"Využití odpadu jako paliva nebo k výrobě energie",
               "CR1": u"Využití odpadu jako paliva nebo k výrobě energie",
               "AN1": u"Využití odpadů na rekultivace",
               "BN1": u"Využití odpadů na rekultivace",
               "CN1": u"Využití odpadů na rekultivace",
               "AN11": u"Využití odpadu na rekultivace skládek",
               "BN11": u"Využití odpadu na rekultivace skládek",
               "CN11": u"Využití odpadu na rekultivace skládek",
               "AR11": u"Využití odpadů, které vznikly pod označením R1 až R10",
               "BR11": u"Využití odpadů, které vznikly pod označením R1 až R10",
               "CR11": u"Využití odpadů, které vznikly pod označením R1 až R10",
               "AN17": u"Vývoz odpadu do státu, který není členským státem EU",
               "BN17": u"Vývoz odpadu do státu, který není členským státem EU",
               "CN17": u"Vývoz odpadu do státu, který není členským státem EU",
               "AN7": u"Vývoz odpadu z členského státu EU",
               "BN7": u"Vývoz odpadu z členského státu EU",
               "CN7": u"Vývoz odpadu z členského státu EU",
               "AR3": u"Získání / regenerace organických látek",
               "BR3": u"Získání / regenerace organických látek",
               "CR3": u"Získání / regenerace organických látek",
               "AR2": u"Získání / regenerace rozpouštědel",
               "BR2": u"Získání / regenerace rozpouštědel",
               "CR2": u"Získání / regenerace rozpouštědel",
               "AN5": u"Zůstatek na skladu k 31.12. běžného roku",
               "BN5": u"Zůstatek na skladu k 31.12. běžného roku",
               "CN5": u"Zůstatek na skladu k 31.12. běžného roku",
               "C00": u"Zůstatek z minulého roku"
               }

               url = urllib.urlopen('http://isoh.cenia.cz/groupisoh/fin.php', params)
               isoh_page = url.read().decode('windows-1250')

               reg1 = re.compile('<tr>.*?</tr>', re.DOTALL)
               tr = reg1.findall(isoh_page)

               inputs = [
                    request.POST['eokres'],
                    request.POST['ekraj'],
                    request.POST['pokres'],
                    request.POST['pkraj'],
                    request.POST['kodp'],
                    request.POST['nakl'],
                    request.POST['rok']
               ]

                          
               reg2 = re.compile('<td>.*?</td>|<td align="right">.*?</td>', re.DOTALL)
               for t in tr:
                   td += reg2.findall(t)

               bio = False
               i = 0
               group = []
               pkod = ""
               for d in td:
                   cell = re.sub("\<.*?\>|\&nbsp\;","",d)
                   i += 1
                   if BIOWASTE.has_key(cell):
                       data += [cell + " " + BIOWASTE[cell]]
                       bio = True
                   elif bio:
                       if TREATMENT.has_key(cell):
                           data += [cell + " " + TREATMENT[cell]]
                       elif cell != "" and (i%5 == 4 or i%5 == 0):
                           data += [round(float(cell), 3)]
                       else:
                           data += [cell]
                   if i%5 == 0:
                       bio = False

               reg3 = re.compile('<td align="right" style="background: lightgrey;">.*?</td>')
               sumtd = reg3.findall(isoh_page)
               for s in sumtd:
                   sum += [round(float(re.sub("\<.*?\>","",s)), 3)]

        return {'facilities': facilities, 'map': map, 'statistics': statistics, 'project': project, 'portal': portal, 'links': links, 'data': data, 'inputs': inputs, 'sum': sum}
    
    
    def render_page(self, request, language, category = None, object = None, preview = None):
        if category and category.id == 39:
            self.template = 'isoh.html'
        elif category and category.id == 52:
            self.template = 'isoh-results.html'
        else:
            self.template = None
        return super(CategoryPage, self).render_page(request, language, category, object, preview)    
    
 
class ArticlePage(ModelPage):
    def update_object_context(self, category):        
        facilities = Category.objects.filter(id = 21) 
        map = Category.objects.filter(id = 22)
        statistics = Category.objects.filter(id = 39)
        project = Category.objects.filter(id = 47)
        portal = Category.objects.filter(id = 41)
        links = Category.objects.filter(id = 48)
        return {'facilities': facilities, 'map': map, 'statistics': statistics, 'project': project, 'portal': portal, 'links': links}

site.register(Category, CategoryPage)
site.register(Article, ArticlePage)
