コード例 #1
0
ファイル: kod_parser.py プロジェクト: Goplit/TrudKod
def create_kod_model(strline, ind):   
    km = KodeksModel()
    km.name = strline.rstrip('\n')
    dot_index = km.name.find('.')
    if dot_index > 0:
        km.short_name = km.name[:dot_index]
    else:
        km.short_name = km.name     
    km.title = km.name
    km.H1 = km.name
    km.H2 = ''
    km.description = ''
    km.keywords = ''
    km.page_id = ind+1 
    return km   
コード例 #2
0
ファイル: kod_parser.py プロジェクト: Goplit/TrudKod
def parsekodeks(kodeksfile, url_kod):      
    strlist = readfile(kodeksfile)
    par_id = 0
#    levels = {'ЧАСТЬ': 1, 'Раздел': 2, 'Глава': 3, 'Статья': 4}
    init_level = 0
    readst = False
    kmst = KodeksModel()
    textlist = []
    for ind, strline in enumerate(strlist):
        # Разбиение на части
        if (strline.find('ЧАСТЬ') == 0 or strline.find('Часть') == 0) and strlist[ind-1] == '\n' and strlist[ind+1] == '\n':
            strline = readtext(strlist, ind)
            km = create_kod_model(strline, ind)
            km.page_level = 1           
            if par_id == 0: 
                init_level = 1
            if init_level == 1:
                km.url_address = url_kod + doturl(km.short_name) + '/'
                km.parent_id = 0
                par_id = ind+1
            km.visible_left = False            
            km.save()       
            
        elif (strline.find('Раздел') == 0 or strline.find('РАЗДЕЛ') == 0) and strlist[ind-1] == '\n':
            strline = readtext(strlist, ind)
            km = create_kod_model(strline, ind)
            km.page_level = 2
            if par_id == 0:
                init_level = 2
            if init_level == 2:
                km.url_address = url_kod + doturl(km.short_name) + '/'
                km.parent_id = 0
                par_id = ind+1  
            else:
                par_km = KodeksModel.objects.filter(page_id=par_id).first()
                while par_km.page_level >= 2:
                    par_km = KodeksModel.objects.filter(page_id=par_km.parent_id).first()
                    par_id = par_km.page_id
                km.url_address = par_km.url_address + doturl(km.short_name) + '/'
                km.parent_id = par_id
                par_id = ind+1
            km.visible_left = True
            km.save()  
                   
        elif (strline.find('Глава') == 0 or strline.find('ГЛАВА') == 0) and strlist[ind-1] == '\n':
            strline = readtext(strlist, ind)
            km = create_kod_model(strline, ind)
            km.page_level = 3 
            if par_id == 0:
                init_level = 3
            if init_level == 3:
                km.url_address = url_kod + doturl(km.short_name) + '/'
                km.parent_id = 0
                par_id = ind+1  
            else:
                par_km = KodeksModel.objects.filter(page_id=par_id).first()
                while par_km.page_level >= 3:
                    par_km = KodeksModel.objects.filter(page_id=par_km.parent_id).first()
                    par_id = par_km.page_id
                km.url_address = par_km.url_address + doturl(km.short_name) + '/'
                km.parent_id = par_id
                par_id = ind+1
            km.visible_left = False 
            km.save() 
            
        elif strline.find('Статья') >= 0 and strlist[ind-1] == '\n'and strlist[ind+1] == '\n':
            strline = readtext(strlist, ind)
            kmst = create_kod_model(strline, ind)
            kmst.visible_left = False 
            kmst.page_level = 4 
            readst = True
            if par_id == 0:
                init_level = 4
            if init_level == 4:
                kmst.url_address = url_kod + doturl(kmst.short_name) + '/'
                kmst.parent_id = 0
            else:
                par_km = KodeksModel.objects.filter(page_id=par_id).first()
                kmst.url_address = par_km.url_address + doturl(kmst.short_name) + '/'
                kmst.parent_id = par_id
            if strline.find('Утратила силу') >= 0:
                kmst.save()
                readst = False
            textlist = []
        # Если текст начался                 
        elif kmst.page_level == 4 and strline != '\n':
            textlist.append('<p>' + strline.rstrip('\n') + '</p><br>')
            readst = False
        # Если текст закончился
        elif kmst.page_level == 4 and strline == '\n' and not readst:
            kmst.text_doc = "\r\n".join(textlist)
            kmst.save()