import os, re, codecs import util from pipelines import get_doc, get_doc_generic, put_file # build web pages from fragments output_type = ".php" # use php when uploading output_type2 = ".html" # use php when uploading which_template = "/template.html" which_template2 = "/template2.html" masonry_template = """
%%IMGALT%%

%%TITLE%%

%%CARDBODY%%

""" def item_to_masonry(item): # link title img imgalt desc #print(item) #print(item[1] + "\n" ) ix = {'TITLE': "%s" % (item[0], item[1]), 'IMGSRC': item[2] or 'http://www.gavilan.edu/_files/img/blank.gif', 'IMGALT': item[3], 'CARDBODY': item[4], 'LINK': item[0] } output = '' for L in masonry_template.split('\n'): match = re.search(r'%%(\w+)%%',L) if match: tag = match.group(1) #print("Found a tag: %s" % tag) line = re.sub(r'%%\w+%%', ix[tag], L) output += line else: output += L return output def try_untemplate(): from bs4 import BeautifulSoup as bs import bs4 dir1 = 'C:/Users/peter/Documents/gavilan/www mirror' j = 0 j_in_dir = [] for x in os.listdir(dir1): if x in ['student','staff']: for xy in os.listdir(dir1+'/'+x): j+= 1 print("%i.\t%s" % (j,x+'/'+xy)) j_in_dir.append(x+'/'+xy) else: j+= 1 print("%i.\t%s" % (j,x)) j_in_dir.append(x) dir2 = j_in_dir[int(input("Choose a folder to look in: "))-1] dir = dir1 + '/' + dir2 i = 0 f_in_dir = [] for x in os.listdir(dir): if x.endswith('php'): i+= 1 print("%i.\t%s" % (i,x)) f_in_dir.append(x) choices = input("Choose inputs. Separate with a space: ") for C in choices.split(" "): #choice = int( input("Choose a page to make into template: ") ) - 1 choice = int( C ) - 1 print(f_in_dir[choice]) raw_html_in = open(dir + "/" + f_in_dir[choice],'r').read() php_sig = '!!!PHP!!!' php_elements = [] def php_remove(m): php_elements.append(m.group()) return php_sig def php_add(m): return php_elements.pop(0) # Pre-parse HTML to remove all PHP elements html = re.sub(r'<\?php.*?\?>', php_remove, raw_html_in, flags=re.S+re.M) # Try just poppin the first php tag. We probably leave it behind... php_elements.pop(0) bb = bs(html,'html.parser') if not os.path.isdir(dir + '/template'): os.mkdir(dir + '/template',0o777) output_f = '.'.join(f_in_dir[choice].split('.')[:-1]) + '.html' output = open( dir + '/template/' + output_f, 'w', encoding='utf-8') b = bb.find(id='breadcrumbs').get_text() b = re.sub(r'\s+',' ',b) parts = b.split(' > ') b = parts[-1] c = bb.find('h1',class_='page-heading').get_text() a = bb.find('article') a.div.extract() # the first div has the h1 header a_out = "" for ea in a.contents: try: a_out += ea.prettify(formatter="html") except: if type(ea) == bs4.element.Comment: a_out += "\n" % ea.string else: a_out += ea.string + "\n" # some article cleanup a_out = re.sub( r'\n{3,}','\n\n',a_out) a_out = re.sub( r'( )+',' ',a_out) a_out = re.sub(php_sig, php_add, a_out) print("breadcrumb: %s" % b) print("\n\ntitle: %s\n" % c) #print("\n\narticle: %s" % a_out.strip()) output.write("BREADCRUMB=%s\n" % b) output.write("TITLE=%s\n" % c) output.write("ARTICLE=%s" % a_out) output.close() def do_template(temp,source,side): subs = {'BANNER':'http://www.gavilan.edu/_files/img/blank.gif', 'SIDEBAR':''.join(side),} state = 0 items = "" output = "" for L in source: if state: if re.search('%%ITEMS%%',L): subs['ARTICLE'] += items else: subs['ARTICLE'] += L else: parts = L.split('=',1) if parts[0] == 'ITEM': i_parts = parts[1].split('|') items += item_to_masonry(i_parts) + "\n" if parts[0] == 'ARTICLE': subs['ARTICLE'] = "" state = 1 else: subs[parts[0].strip()] = parts[1].strip() #subs['ITEMS'] = items #print("Building page with this: " + str(subs)) for L in temp: if len(L)<200: match = re.search(r'%%(\w+)%%',L) if match: tag = match.group(1) line = re.sub(r'%%\w+%%', subs[tag], L) output += line else: output += L else: output += L return output def remove_filetype(f): parts = f.split(r'.') return '.'.join(parts[:-1]) def make(): dir1 = 'C:/Users/peter/Documents/gavilan/www mirror' j = 0 j_in_dir = [] for x in os.listdir(dir1): if x in ['student','staff']: for xy in os.listdir(dir1+'/'+x): j += 1 print("%i.\t%s" % (j,x+'/'+xy)) j_in_dir.append(x+'/'+xy) else: j+= 1 print("%i.\t%s" % (j,x)) j_in_dir.append(x) dir2 = j_in_dir[int(input("Choose a folder to look in: "))-1] in_dir = dir1 + '/' + dir2 #in_dir = r"C:/Users/peter/Documents/gavilan/www mirror/finaid_2019" # how many slashes? Whats the depth? Any more than zero, start adding ../ s. depth = dir2.count("/") print("Depth is %i\n\n" % depth) src = in_dir + r"/template/" sidebar = "" template = dir1 + which_template if depth: template = dir1 + which_template2 pages = [] for F in os.listdir(src): if re.search(r'sidebar',F): sidebar = F #elif re.search(r'template',F): # template = F elif F.endswith('.html'): pages.append(F) print("Template: %s\nSidebar: %s\nPages: %s" % (template,sidebar,str(pages))) template_text = open(template,'r').readlines() side_txt = open(src + sidebar, 'r').readlines() for P in pages: in1_text = open(src + P, 'r').readlines() out_file = open(in_dir + "/" + remove_filetype(P) + output_type , 'w') out_file2 = open(in_dir + "/" + remove_filetype(P) + output_type2 , 'w') print(P) out_file.write( do_template( template_text, in1_text, side_txt) ) out_file.close() out_file2.write( do_template( template_text, in1_text, side_txt) ) out_file2.close() def txt_2_table(): input = open("C:/Users/peter/Documents/gavilan/www mirror/counseling_2019/who_call.txt",'r').readlines() output = '' state = '' for L in input: parts = L.split(r' ') if state=='begintable': state= 'intable' if state=='': output += "

" if state=='intable': # in a table and a line is beginning output += "" for P in parts: P = P.strip() print(P) if P=='NT': if state=='intable': output += "\n" output += "
\n" state = 'begintable' continue elif P=='ET': output += '
\n' state = '' continue elif P=='|': # between cells output += "" continue output += " " + P # the normal case - input to output if state=='intable': # in a table and a line just ended output += "\n" if state=='begintable': # in a table and the header just ended output += "\n" state = 'intable' if state=='': output += "

" output = open("C:/Users/peter/Documents/gavilan/www mirror/counseling_2019/who_call_out.txt.html",'w').write(output) # https://docs.google.com/document/d/1Jw3rSGxuCkujMLrm-5p_zxSzCQavfwo_7Esthjzg0rQ/edit?usp=sharing def studenttech_faq(): """f = "../www mirror/student/online/template/tech_faq.html" input = open(f,'r') lines = input.readlines() input.close() output = open(f,'w') for L in lines: output.write(L ) if re.search('',L): break output.write( get_doc('1Jw3rSGxuCkujMLrm-5p_zxSzCQavfwo_7Esthjzg0rQ', 1) )""" codecs.open('qanda_student/public/questions.json','w','utf-8').write( \ get_doc_generic('1Jw3rSGxuCkujMLrm-5p_zxSzCQavfwo_7Esthjzg0rQ', bracket=0,verbose=0)) put_file('/gavilan.edu/student/', 'qanda_student/public/', 'questions.json') print("I uploaded the questions, but remember to do the images too if they changed.") # https://docs.google.com/document/d/1tI_b-q75Lzu25HcA0GCx9bGfUt9ccM8m2YrrioDFZcA/edit?usp=sharing def de_faq(): """f = "cache/faq_template.html" input = codecs.open(f,'r','utf-8') lines = input.readlines() input.close() output = codecs.open('cache/de_teach_faq.html','w','utf-8') for L in lines: output.write(L ) if re.search('',L): output.write( get_doc_generic('1tI_b-q75Lzu25HcA0GCx9bGfUt9ccM8m2YrrioDFZcA', bracket=0,verbose=1)) """ codecs.open('qanda/public/questions.json','w','utf-8').write( \ get_doc_generic('1tI_b-q75Lzu25HcA0GCx9bGfUt9ccM8m2YrrioDFZcA', bracket=0,verbose=0)) put_file('/gavilan.edu/staff/tlc/canvas_help/', 'qanda/public/', 'questions.json') print("I uploaded the questions, but remember to do the images too if they changed.") def degwork_faq(): f = "../www mirror/counseling_2019/template/degreeworks.html" input = open(f,'r') lines = input.readlines() input.close() output = open(f,'w') for L in lines: output.write(L ) if re.search('',L): break output.write( '\n' + get_doc('1ctmPkWwrIJ1oxlj8Z8UXYjijUzMW2VxnsVDSE1KfKME') ) def vrc_faq(): # https://docs.google.com/document/d/1anAmnSusL-lTSAz-E4lcjlzq1CA8YJyUfUHxnKgmJEo/edit?usp=sharing f = "../www mirror/student/veterans/template/faq.html" input = open(f,'r') lines = input.readlines() input.close() output = open(f,'w') for L in lines: output.write(L ) if re.search('',L): break output.write( '\n' + get_doc('1anAmnSusL-lTSAz-E4lcjlzq1CA8YJyUfUHxnKgmJEo',verbose=1) ) def counseling_faq(): f = "../www mirror/counseling_2019/template/faq.html" input = open(f,'r') lines = input.readlines() input.close() output = open(f,'w') for L in lines[0:3]: output.write(L) output.write( get_doc('101iOplZearjv955FX2FX9AM6bUnkcryo7BShKuzE9tI') ) def finaid_faq(): f = "../www mirror/finaid_2019/template/faq.html" input = open(f,'r') lines = input.readlines() input.close() output = open(f,'w') i = 0 for L in lines[0:3]: #print("%i, %s" % (i,L)) output.write(L) i+=1 output.write( get_doc('1-FarjfyzZceezdSBXDHpP2cF_vaa9Qx6HvnIqwipmA4') ) def coun_loc(): f = "../www mirror/counseling_2019/template/location.html" input = open(f,'r') lines = input.readlines() input.close() output = open(f,'w') i = 0 for L in lines[0:3]: #print("%i, %s" % (i,L)) output.write(L) i+=1 output.write( get_doc('1hxQZ9iXMWvQQtaoVlRgor9v4pdqdshksjeHD2Z4E6tg') ) def tutor_faq(): f = "../www mirror/student/learningcommons/template/faq.html" input = open(f,'r') lines = input.readlines() input.close() output = open(f,'w') i = 0 for L in lines[0:3]: #print("%i, %s" % (i,L)) output.write(L) i+=1 output.write( get_doc('1gCYmGOanQ2rnd-Az2HWFjYErBm_4tp_RuJs6a7MkYrE',1) ) def test_repl(): from interactive import MyRepl c = MyRepl() c.set_my_dict( { "Peter": "thats me", "Mike": "a VP", "Pablo": "isn't here", "Mary": "Far away" }) c.inputloop() if __name__ == "__main__": print ('') options = { 1: ['Build www pages', make] , 2: ['De-template an existing page', try_untemplate], 3: ['Text to table', txt_2_table], 4: ['Pull the Counseling FAQ from gdocs', counseling_faq] , 5: ['Pull the DegreeWorks FAQ from gdocs', degwork_faq] , 6: ['Pull the Finaid FAQ from gdocs', finaid_faq] , 7: ['Pull the Tutoring FAQ from gdocs', tutor_faq] , 8: ['Pull the Counseling Location page from gdocs', coun_loc] , 9: ['Pull the student tech faq page from gdocs', studenttech_faq] , 10: ['Pull the DE faq page from gdocs', de_faq] , 11: ['Pull the VRC faq page from gdocs', vrc_faq] , 12: ['Test a REPL', test_repl ], } for key in options: print(str(key) + '.\t' + options[key][0]) print('') resp = input('Choose: ') # Call the function in the options dict options[ int(resp)][1]()