def createFragilityTable(databasename): import os, subprocess from Connection import Connection maquina = " -h 127.0.0.1 -p 5434" con2 = Connection() con = con2.getConnection() sql_dir = Directory.getPathSqlDir() #file = "C:\Users\AG\.qgis2\python\plugins\SeismicRisk\Database\SQL\create_fragility.txt" file = sql_dir + "create_fragility.txt" sql_temp = Directory.getPathTempDir() file_err = sql_temp + "errores.txt" #cmd = "psql -U " + con.user + maquina + " " + databasename + " < " + file + " > C:/Data/Python/errores.txt" cmd = "psql -U " + con.user + maquina + " " + con.database + " < " + file + " > " + file_err print " Fragility Curves 435 " print cmd logging.debug(cmd) subprocess.call(cmd, shell=True)
def send_content(self, request): '''Main loop for this view''' # get the meetings this user is in if request.session.user.superuser == '1': #the superuser gets sent straight to the Administrator page #pm_meetings = Directory.get_meetings() #meetings = [] self.forward_to_superuser(request) else: pm_meetings = [] meetings = [] for meeting in Directory.get_meetings(): if Directory.get_group(meeting.id, request.session.user.id) != None: if self.user_is_pm(meeting, request.session.user.id): pm_meetings.append(meeting) else: meetings.append(meeting) # send to the appropriate page if len(meetings)+len(pm_meetings) == 0: #and request.session.user.superuser != '1': #superuser is now redirected before this line self.no_meetings(request) elif len(meetings)+len(pm_meetings) == 1: #and request.session.user.superuser != '1': #superuser is now redirected before this line if len(meetings) == 1: self.forward_to_meeting(request, meetings[0]) else: #self.forward_to_meeting(request, pm_meetings[0]) self.forward_to_pm(request, pm_meetings[0]) else: self.show_meetings(request, meetings, pm_meetings)
def deleteFragilitiesCurves(databasename, idfragility): import os, subprocess from Connection import Connection maquina = " -h 127.0.0.1 -p 5434" con2 = Connection() con = con2.getConnection() sql = "delete from fragility_curve_structure where idfragility='" + str(idfragility) + "';\n" sql += "delete from fragility_curve_level where idfragility='" + str(idfragility) + "';\n" sql += "delete from fragility_curve where idfragility='" + str(idfragility) + "';\n" temp_dir = Directory.getPathTempDir() #file = "C:/Data/Python/sql_temporal.txt" file = temp_dir + "sql_temporal.txt" w.writefile(file, sql) sql_temp = Directory.getPathTempDir() file_err = sql_temp + "errores.txt" #cmd = "psql -U " + con.user + maquina + " " + databasename + " < " + file + " > C:/Data/Python/errores.txt" cmd = "psql -U " + con.user + maquina + " " + con.database + " < " + file + " > " + file_err print cmd subprocess.call(cmd, shell=True)
def editFiles(self, dirName, pattern): if not self.isReady: print "FileEditor is not ready" return dir = Directory(dirName) filenames = dir.filenames(pattern) for filename in filenames: self.editFileBlocks(filename)
def editFiles(self, dirName, pattern): if (not self.isReady): print "FileEditor is not ready" return dir = Directory(dirName) filenames = dir.filenames(pattern) for filename in filenames: if isfile(filename): self.editFileBlocks(filename)
def save_user(self, request): '''Saves (or creates) a user''' userid = request.getvalue('userid', 'New') if (userid == 'New'): user = Directory.create_user(request.session.user.id) else: user = Directory.get_user(userid) for key in Directory.USER_FIELDS: setattr(user, key, request.getvalue(key, '')) user.save()
def matchFiles(self, dirName, pattern): dir = Directory(dirName) filenames = dir.filenames(pattern) matches = [] for filename in filenames: if isfile(filename): success = self.matchFile(filename) if (success): matches.append(filename) return matches
def meetings_page(self, request): '''Shows the meetings (embedded in the main page table)''' request.writeln('<div class="module"><h1>Programs</h1>') # current meetings request.writeln(''' <div align="center" name="meetingselect" id="meetingselect"> <div id="meetinglist"> ''') meetings = Directory.get_meetings() meetings.sort(lambda a,b: cmp(a.name, b.name)) for meeting in meetings: request.writeln('''<div class="progBox"> <span style="display:none;" id="meetinginfo_''' + meeting.id + '''">''' + str(meeting.id) + '''/''' + meeting.view + '''/''' + meeting.name + '''</span> <span style="float:left;">'''+meeting.name+'''</span> <span style="float:right;"> <a class="ui-icon ui-icon-pencil" href='javascript:editMeeting("''' + meeting.id + '''");'></a> <a class="ui-icon ui-icon-closethick" href='javascript:deleteMeeting("''' + meeting.id + '''");'></a> <a class="ui-icon ui-icon-plusthick" href='javascript:renameMeeting("''' + meeting.id + '''");'></a> </span> </div> ''') request.writeln('''</div><br/> <center> <div id="programFormDialog" style="display:none;" title="Create New Program"> ''' + request.cgi_form(_adminaction='newmeeting', meetingname=None, meetingview=None, meetingusers=None, name='npForm') + ''' <select style="display:none;" name="meetingview"><option value="poet">POET Acquisition Collaboration</option></select> <table border=0 style="height:100%;padding:10px;"> <tr> <td>Name:</td><td><input type="text" name="meetingname" size="20" /></td> </tr> <tr> <td>Users:</td><td><select name="meetingusers" multiple size="5"> ''') users = Directory.get_users() users.sort(lambda a,b: cmp(a.username, b.username)) for user in users: request.writeln('''<option id="'''+ user.id + '''">''' + user.name + '''</option>''') request.writeln(''' </select></td> </tr> <tr> <td><input type="submit" id="newProgram" value="Create" onclick="document.npForm.submit();" /></td><td><input type="button" id="cancelNP" value="Cancel" /></td> </tr> </table> </form> </div> <input type="button" id="createNP" value="Create New Program"></input> </center> </div> </div> ''')
def on_click_pushbutton_2(self): ans = self.showDialog("The files will be copied") if ans == True: items = self.listWidget.selectedItems() num_ITEMS = [ item.text() for item in self.listWidget_3.selectedItems() ] print(num_ITEMS) text_file = open("./txt_files/source_dir.txt", "r") self.source_dir = text_file.read() text_file.close() text_file = open("./txt_files/destination_dir.txt", "r") self.destination_dir = text_file.read() text_file.close() folders_list = self.Selected_list_list location_list = self.get_image_locations() Directory.copy_files(num_ITEMS, self.source_dir, self.destination_dir, folders_list, location_list) if (os.path.exists( str(self.destination_dir + "/" + 'image_history.json'))): with open(self.destination_dir + "/" + 'image_history.json') as json_file: data = json.load(json_file) temp = data['images'] for i in num_ITEMS: k = 0 for j in range(len(temp)): if temp[j]['name'] == i: k = 1 for c in range(len(folders_list)): f = 0 for s in range(len(temp[j]['folders'])): if temp[j]['folders'][ s] == folders_list[c]: f = 1 if f == 0: temp[j]['folders'].append( folders_list[c]) if k == 0: store_json = {"name": i, "folders": folders_list} print(store_json) temp.append(store_json) else: data = {"images": []} self.write_json(data) self.write_json(data) self.Selected_list.clear() self.Selected_list_list.clear() self.listWidget_3.clearSelection() return
def deleteLoss(databasename): import os, subprocess from Connection import Connection maquina = " -h 127.0.0.1 -p 5434" con2 = Connection() con = con2.getConnection() sql = "delete from popoliloss " #file = "C:/Data/Python/sql_temporal.txt" dir_temp = Directory.getPathTempDir() file = dir_temp + "sql_temporal.txt" w.writefile(file, sql) logging.debug("sql") logging.debug(sql) cmd = "psql -U " + con.user + maquina + " " + databasename + " < " + file print cmd subprocess.call(cmd, shell=True)
def send_game(self, request): '''Shows the game window''' # get the game objects game = datagate.get_item(request.getvalue('global_rootid')) teams = game.search1(name='groups') team = Directory.get_group(game.id, request.session.user.id) if not team: raise 'You have not been added to a team in this game.' try: chats = game.search1(name='chats') # just use first team's chat for now -- eventually we want to see what team the user is on and link to the chat parent for that team except IndexError: raise 'You cannot play a StrikeCom game without any teams. Please add at least one team and try again.' chat = chats.search1(name=team.name) board = game.search1(name='board') turns = game.search1(name='turns') request.writeln(HTML_HEAD) request.writeln(''' <frameset border="0" cols="*,200"> <frameset border="0" rows="*,50"> <frame marginheight="0" marginwidth="0" name="playingboard" src="''' + request.cgi_href(global_rootid=turns.id, view='StrikeComPlayingBoard', frame=None) + '''"> <frame scrolling="no" marginheight="0" marginwidth="0" name="legend" src="''' + request.cgi_href(view='StrikeComLegend', frame=None) + '''"> </frameset> <frame scrolling="no" marginheight="0" marginwidth="0" name="chat" src="''' + request.cgi_href(global_rootid=chat.id, view='StrikeComCommenter', frame=None) + '''"> </frameset> ''')
def send_main_frames(self, request): # get the game objects game = datagate.get_item(request.getvalue('global_rootid')) teams = game.search1(name='groups') team = Directory.get_group(game.id, request.session.user.id) if not team: raise 'You have not been added to a team in this game.' try: chats = game.search1(name='chats') # just use first team's chat for now -- eventually we want to see what team the user is on and link to the chat parent for that team except IndexError: raise 'You cannot play a StrikeCom game without any teams. Please add at least one team and try again.' chat = chats.search1(name=team.name) board = game.search1(name='board') turns = game.search1(name='turns') # send the html request.writeln(HTML_HEAD_NO_CLOSE) request.writeln(''' </head> <frameset border="0" rows="45,*"> <frame marginheight="0" marginwidth="0" scrolling="no" name="navigation" src="''' + request.cgi_href(subview='navigation') + '''"> <frame marginheight="0" marginwidth="0" scrolling="no" name="game" src="''' + request.cgi_href(subview='game') + '''"> </frameset> </html> ''')
def createDirectory(self, path): location = self.dirTraveral(path) if location is False: return ((path, False)) name = self.childNode(path) location.child[name] = Directory(name) return ((path, True))
def createMaterial(databasename): maquina = " -h 127.0.0.1 -p 5434" con2 = Connection() con = con2.getConnection() sql = "alter table popoliloss add material text;" sql = "alter table popoliloss add material text;" print " sql losses " + sql dir_temp = Directory.getPathTempDir() #file = "C:/Data/Python/sql.txt" file = dir_temp + "sql.txt" w.writefile(file, sql) file_err = dir_temp + "errores.txt" cmd = "psql -U " + con.user + maquina + " " + databasename + " < " + file + " > " + file_err subprocess.call(cmd, shell=True)
def users_page(self, request): '''Shows the users (embedded in the main page table)''' # the title request.writeln('<center><div class="i">Users:</div></center>') # current users request.writeln(''' <p align="center"> <select name="userselect" id="userselect" size="15"> ''') users = Directory.get_users() users.sort(lambda a,b: cmp(a.username, b.username)) for user in users: if user.superuser == '1': request.writeln('<option value="">' + html(user.name) + '</option>') else: request.writeln('<option value="' + user.id + '">' + html(user.name) + '</option>') request.writeln(''' </select> </p> <p align="center"> <a href="javascript:editUser();">Edit</a> | <a href="javascript:deleteUser();">Delete</a> </p> <hr> <p align="center"> <a href="''' + request.cgi_href(_adminaction='edituser') + '''">Add New User</a> | <a href="''' + request.cgi_href(_adminaction='generateusers') + '''">Autogenerate Users</a> | <a href="''' + request.cgi_href(_adminaction='exportusers') + '''">Export User Information</a> </p> ''')
def insertFragilityCurves(databasename, id): import os, subprocess from Connection import Connection maquina = " -h 127.0.0.1 -p 5434" con2 = Connection() con = con2.getConnection() sql = "insert into fragility_curve (idfragility, name) values('" + str(id)+"','curva')" print " sql fragility insert " + sql temp_dir = Directory.getPathTempDir() #file = "C:/Data/Python/sql.txt" file = temp_dir + "sql.txt" w.writefile(file, sql) cmd = "psql -U " + con.user + maquina + " " + databasename + " < " + file print cmd subprocess.call(cmd, shell=True)
def readDatabaseParameters(self): # create a parser from ConfigParser import ConfigParser parser = ConfigParser() # read config file import Directory pathsql = Directory.getPathSqlDir() # sys.path.insert(0, "C:\Users\AG\.qgis2\python\plugins\SeismicRisk\Database\\") pathsql = pathsql.replace("Database/SQL", "config") filename = pathsql + "database.ini" section = 'postgresql' #print "\n filename " #print filename parser.read(filename) # get section, default to postgresql db = {} if parser.has_section(section): params = parser.items(section) for param in params: db[param[0]] = param[1] else: raise Exception('Section {0} not found in the {1} file'.format( section, filename)) print db print db['host'] return db
def importFragilitiesAssignationFromText(filename, databasename): import os, subprocess from Connection import Connection maquina = " -h 127.0.0.1 -p 5434" con2 = Connection() con = con2.getConnection() sql = "Copy fragility_curve_structure from '" + filename+ "' delimiter ','" print sql temp_dir = Directory.getPathTempDir() file = temp_dir + "sql_temporal.txt" w.writefile(file, sql) logging.debug("sql") logging.debug(sql) cmd = "psql -U " + con.user + maquina + " " + con.database + " < " + file print cmd subprocess.call(cmd, shell=True)
def do_generate_users(self, request): '''Automatically generates users''' try: name = request.getvalue('name', '') assert name != '' start = int(request.getvalue('start', 'error')) end = int(request.getvalue('end', 'error')) passlen = int(request.getvalue('passlength', 'error')) except: request.writeln('<p align="center"><font color="red">Error: Some fields were not entered correctly or were blank; autogeneration cancelled.</font></p>') return rand = random.Random() index_len = len(str(end)) for i in range(start, end + 1): user = Directory.create_user(request.session.user.id) newname = name for j in range(len(str(i)), index_len): # pad lower numbers with zeros newname += '0' newname += str(i) user.name = newname user.email = '' user.username = newname user.password = '' if passlen > 0: for i in range(passlen - 1): # all letters except last char is a number user.password += rand.choice(ASCII_CHARS) user.password += rand.choice(DIGIT_CHARS) user.save()
def exportLossesToText(filenameout, databasename): import os, subprocess from Connection import Connection maquina = " -h 127.0.0.1 -p 5434" con2 = Connection() con = con2.getConnection() #sql = "Copy (select gid, name, area, material, unitcost, totalcost, damage from popoliloss order by gid) To '" + filenameout+ "' With CSV DELIMITER ',' HEADER;" sql = "Copy (Select gid, name, ROUND(unitcost,2) From popoliloss order by gid) To '" + filenameout + "' With CSV DELIMITER ',' ;" dir_temp = Directory.getPathTempDir() #file = "C:/Data/Python/sql.txt" file = dir_temp + "sql.txt" w.writefile(file, sql) logging.debug("sql") logging.debug(sql) cmd = "psql -U " + con.user + maquina + " " + databasename + " < " + file print cmd subprocess.call(cmd, shell=True)
def exportFragilitiesAssignationToExcel(filename, databasename): import os, subprocess from Connection import Connection maquina = " -h 127.0.0.1 -p 5434" con2 = Connection() con = con2.getConnection() #sql = "Copy (Select * From valutazione order by idstructure, idparam) To '" + filename+ "' With CSV DELIMITER ',' HEADER;" sql = "Copy (Select * From fragility_curve_structure order by type_structure, idfragility) To '" + filename + "' With CSV DELIMITER ',';" print sql temp_dir = Directory.getPathSqlDir() file = temp_dir + "sql_temporal.txt" w.writefile(file, sql) logging.debug("sql") logging.debug(sql) cmd = "psql -U " + con.user + maquina + " " + con.database + " < " + file print cmd subprocess.call(cmd, shell=True) from Utils import XLSConverterDefinitivo XLSConverterDefinitivo.convertToXLS(filename)
def importLossesFromText(filename, databasename): import os, subprocess from Connection import Connection maquina = " -h 127.0.0.1 -p 5434" con2 = Connection() con = con2.getConnection() #sql = "Copy popoliloss from '" + filename+ "' delimiter |" sql = "Copy popoliloss(gid, name, unitcost) from '" + filename + "' delimiter ','" dir_temp = Directory.getPathTempDir() #file = "C:/Data/Python/sql_temporal.txt" file = dir_temp + "sql_temporal.txt" w.writefile(file, sql) logging.debug("sql") logging.debug(sql) cmd = "psql -U " + con.user + maquina + " " + databasename + " < " + file print cmd subprocess.call(cmd, shell=True) print " Loss imported from '" + filename + "'"
def main(): names, images = character.charList() # if len(sys.argv) != 2: # print('usage: main.py <dir_name>', file=sys.stderr) # sys.exit(1) # dirName = sys.argv[1] dirName = "Data_set" desktop = os.path.join(os.path.join(os.environ['USERPROFILE']), 'Desktop') path = os.path.join(desktop, dirName) Directory.Dir(dirName, names) for img in range(len(images)): Name = names[img].split('\\') Name = Name[-1].split('.') print(Name[0].upper(), "Progressing....") Simple_data = Helper.create_simple( Helper.Convert_white_black(images[img])) Noise_data = Helper.create_noise(Simple_data) Color_data = Helper.create_color(Noise_data) for i in tqdm(range(len(Color_data))): time.sleep(0.01) folder_name = names[img].split('\\') folder_name = folder_name[-1].split('.') Helper.Save_Image(Color_data, path, folder_name[0].upper())
def send_comment(self, userid, prefix, comment): self.lock.acquire() # only send one comment at a time (since we're hitting multiple rootids) try: sent_to = {} for sessionid, rootid in self.sessions.items(): # get the session; if the session has expired, remove and move on session = Directory.get_session(sessionid) if not session: del self.sessions[sessionid] continue # if we've already sent to this rootid, skip and move on if sent_to.has_key(rootid): continue sent_to[rootid] = rootid # find the actual parent of this comment root = datagate.get_item(rootid) if not root: print "RatingProxy couldn't find rootid:", rootid continue parentid = self.find_parent(root, prefix) or rootid # create and send the event to the system (goes to all interested users) # I'm using a blank windowid so it goes to anyone looking at this rootid item = datagate.create_item(parentid=parentid, creatorid=userid) item.text = comment item.save() event = BaseView.views['rating']._create_event(item, 'processAdd') Events.send_event(rootid, event) finally: self.lock.release()
def deleteFragilitiesAssignation(databasename): import os, subprocess from Connection import Connection maquina = " -h 127.0.0.1 -p 5434" con2 = Connection() con = con2.getConnection() sql = "delete from fragility_curve_structure " temp_dir = Directory.getPathTempDir() #file = "C:/Data/Python/sql_temporal.txt" file = temp_dir + "sql_temporal.txt" w.writefile(file, sql) logging.debug("sql") logging.debug(sql) cmd = "psql -U " + con.user + maquina + " " + con.database + " < " + file print cmd subprocess.call(cmd, shell=True)
def do_delete_users(self, request): '''Delete ranges of autogenerated users''' prefix = request.getvalue('prefix', '') if len(prefix) == 0: return for user in Directory.get_users(): if len(user.name) >= len(prefix) and user.name[:len(prefix)] == prefix: user.delete()
def edit_user(self, request): '''Shows the edit user screen''' user = Directory.get_user(request.getvalue('userid', 'New')) if user == None: user = datagate.Item() # just create a dummy item userid = 'New' else: userid = user.id
def fileCreation(self, object): FbxFiles().deselectAllObj() object.select_set(True) path = Directory.Directory().get_folder_path() + '\\' + object.name + '.fbx' # check these two bpy.ops.export_scene.fbx(filepath=path, use_selection=True, use_custom_props=True, axis_forward='-Z', axis_up='Y') return path
def updateIndexDamageFromFragilitiesCurves(databasename): maquina = " -h 127.0.0.1 -p 5434" con2 = Connection() con = con2.getConnection() sql = "update popoliloss set damage = value from view_fragility_curve_structure where view_fragility_curve_structure.gid =popoliloss.gid" print " sql losses " + sql dir_temp = Directory.getPathTempDir() #file = "C:/Data/Python/sql.txt" file = dir_temp + "sql.txt" w.writefile(file, sql) file_err = dir_temp + "errores.txt" cmd = "psql -U " + con.user + maquina + " " + databasename + " < " + file + " > " + file_err print "\n" print cmd subprocess.call(cmd, shell=True) sql = "update popoliloss set totalcost = area*unitcost*damage;" print " sql losses " + sql dir_temp = Directory.getPathTempDir() #file = "C:/Data/Python/sql.txt" file = dir_temp + "sql.txt" w.writefile(file, sql) cmd = "psql -U " + con.user + maquina + " " + databasename + " < " + file + " > " + file_err print "\n" print cmd subprocess.call(cmd, shell=True)
def answer_question_action(self, request, id, ans, com): creator = request.session.user item = datagate.get_item(id) answers = item.search1(name="answers") #if this user has already answered this question, update it instead of creating it answer = None for each in answers: if each.who == creator.name: answer = each if not answer: answer = datagate.create_item(creatorid=creator.id, parentid=answers.id) answer.name = 'answer' answer.who = creator.name answer.when = time.strftime('%a, %d %b %Y %H:%M:%S') answer.answer = ans answer.comment = com answer.save() meeting = Directory.get_meeting(request.getvalue('global_rootid', '')) parent = meeting.get_parent() activities = parent.search1(view='questioneditor') userAnswer = activities.search1(name="userAnswers") userFound = False if userAnswer != None: for user in userAnswer: if user.name == creator.name: userFound = True answered = None for child in user: if child.questionId == id: answered = child if not answered: answered = datagate.create_item(creatorid=creator.id, parentid=user.id) answered.questionId = id answered.answer = ans answered.when = time.strftime('%a, %d %b %Y %H:%M:%S') answered.save() if userFound == False or userAnswer == None: userCreated = datagate.create_item(creatorid=creator.id, parentid=userAnswer.id) userCreated.name = creator.name answered = datagate.create_item(creatorid=creator.id, parentid=userCreated.id) answered.questionId = id answered.answer = ans answered.when = time.strftime('%a, %d %b %Y %H:%M:%S') answered.save() if id not in creator.answeredQuestions: creator.answeredQuestions.append(id) #creator.backtrack = 0 #resets the user to their first unanswered question if creator.backtrack < 0: creator.backtrack += 1 #moves the user forward one question creator.save() event = QuestionAsker.next_question(self,request,creator) return event
def poputateFragilitiesCurvesToBuildings(databasename): import os, subprocess from Connection import Connection maquina = " -h 127.0.0.1 -p 5434" con2 = Connection() con = con2.getConnection() sql = "" from Logic import Common number_of_structures = Common.calculatenumberofstructures(databasename) for x in range(0, number_of_structures): # Y = divmov(x, 3) y = x % 2 #sqlinsert = "insert into fragility_curve_structure values('" + str(x) + "', '" + str(y + 1) + "');\n" sqlinsert = "insert into fragility_curve_structure values('" + str(x) + "', '0');\n" # #print sql sql += sqlinsert print " sql assing fragility " + sql temp_dir = Directory.getPathTempDir() #file = "C:/Data/Python/sql.txt" file = temp_dir + "sql_temporal.txt" w.writefile(file, sql) sql_temp = Directory.getPathTempDir() file_err = sql_temp + "errores.txt" #cmd = "psql -U " + con.user + maquina + " " + databasename + " < " + file + " > C:/Data/Python/errores.txt" cmd = "psql -U " + con.user + maquina + " " + con.database + " < " + file + " > " + file_err print cmd subprocess.call(cmd, shell=True)
def set_qsubDir(self): """initialize the directory where jobs are submitted""" self.qsubDirName = self.name self.qsubDirName = os.path.join(os.getcwd(), self.qsubDirName) self.qsubDirName += '_%s%s%s_%s%s' % \ (str(self.call_time.year), str(self.call_time.month).zfill(2), str(self.call_time.day).zfill(2), str(self.call_time.hour).zfill(2), str(self.call_time.minute).zfill(2)) self.qsubDir = Directory.Directory(self.qsubDirName)
def exportCSV_action(self, request, filters): meeting = Directory.get_meeting(request.getvalue('global_rootid', '')) events = [] #dictionaries = answerData, answerDataAveraged, questionPOETData, questionSetData, poetData, setData dictionaries = ReportFindings.makeDictionaries(self, meeting, filters, True) exportEvents = ReportFindings.makeExports(self, dictionaries) events.extend(exportEvents) return events
def __init__(self): self._MENU = "\nAvailable commands:" \ "\n- ls\n- tree\n- pwd\n- cd up\n- cd down" \ "\n- make dir\n- ren dir\n- del dir" \ "\n- make file\n- read file\n- edit file" \ "\n- ren file\n- del file\n- exit\n" self._program_path = os.getcwd() self._home_path = os.path.join(self._program_path, "root") self._current_path = self._home_path if not os.path.isdir(self._home_path): print("root doesn't exist") Directory.create_dir("root") else: print("root is exists") if len(os.listdir('./root')): print("root isn't empty") else: print("root is empty") os.chdir(self._home_path)
def startCrawl(self): if self.bookName == None: print("请输入参数") else: dirUrl = Directory.DirSearcher(self.bookName).search() if dirUrl == None: print("没有这本书") return links = Spider.Spi(dirUrl).search() with open(self.bookName + ".txt", "w") as book: for link in links: cc = ccc.ConCraw(link).crawling(book)
def update_files_graph(directory_path): current_directory = Directory.Directory(directory_path) subDirectories, files = current_directory.get_children_list() return dict(data=[ go.Bar( x=[file.name for file in files[1:]], y=[file.get_size() for file in files[1:]], ) ], layout=go.Layout(title="Files", ))
def createFile(self, path): try: location = self.dirTraveral(path) if location is False: return ((path, False)) if location.is_file is True: raise Error name = self.childNode(path) location.child[name] = Directory(name, True) return ((path, True)) except Error as e: print(e) return ((path, False))
def set_picked(self,request): creator = request.session.user meeting = Directory.get_meeting(request.getvalue('global_rootid', '')) parent = meeting.get_parent() meetingRoot = parent.get_parent() groups = meetingRoot.search1(name='groups') allGroups = groups.get_child_items(self) for group in allGroups: allChildren = group.get_child_items(self) for child in allChildren: if creator.id == child.user_id: return group.sets return []
def edit_user(self, request): '''Shows the edit user screen''' user = Directory.get_user(request.getvalue('userid', 'New')) if user == None: user = datagate.Item() # just create a dummy item title = "New User" userid = 'New' else: userid = user.id title = "Edit User" request.writeln(''' <center><div class="i">''' + title + ''':</div> ''' + request.cgi_form(_adminaction='saveuser', userid=userid, name=None, email=None, username=None, password=None, title=None, office=None, work=None, home=None, mobile=None, fax=None, comments=None) + ''' <table border=0 cellspacing=5><tr> <td>Real Name:</td> <td><input type="text" name="name" size="30" value="''' + user.getvalue('name', '') + '''"></td> </tr><tr> <td>Email:</td> <td><input type="text" name="email" size="30" value="''' + user.getvalue('email', '') + '''"></td> </tr><tr> <td>Username:</td> <td><input type="text" name="username" size="30" value="''' + user.getvalue('username', '') + '''"></td> </tr><tr> <td>Password:</td> <td><input type="text" name="password" size="30" value="''' + user.getvalue('password', '') + '''"></td> </tr><tr> <td>Title:</td> <td><input type="text" name="title" size="30" value="''' + user.getvalue('title' ,'') + '''"></td> </tr><tr> <td>Office:</td> <td><input type="text" name="office" size="30" value="''' + user.getvalue('office', '') + '''"></td> </tr><tr> <td>Work Number:</td> <td><input type="text" name="work" size="30" value="''' + user.getvalue('work', '') + '''"></td> </tr><tr> <td>Home Number:</td> <td><input type="text" name="home" size="30" value="''' + user.getvalue('home', '') + '''"></td> </tr><tr> <td>Mobile Number:</td> <td><input type="text" name="mobile" size="30" value="''' + user.getvalue('mobile', '') + '''"></td> </tr><tr> <td>Fax Number:</td> <td><input type="text" name="fax" size="30" value="''' + user.getvalue('fax', '') + '''"></td> </tr><tr> <td valign="top">Comments:</td> <td><textarea name="comments" rows=10 cols=50>''' + user.getvalue('comments', '') + '''</textarea></td> </tr></table> <input type="submit" value="Submit"> </form> ''')
def updateIndexDamageFromSeismicPredictionModel(databasename): maquina = " -h 127.0.0.1 -p 5434" con2 = Connection() con = con2.getConnection() sql = "update popoliloss set damage = (select damage from popoliforpostgres where popoliforpostgres.gid =popoliloss.gid)" print " sql losses " + sql dir_temp = Directory.getPathTempDir() #file = "C:/Data/Python/sql.txt" file = dir_temp + "sql.txt" w.writefile(file, sql) file_err = dir_temp + "errores.txt" cmd = "psql -U " + con.user + maquina + " " + databasename + " < " + file + " > " + file_err subprocess.call(cmd, shell=True) sql = "update popoliloss set totalcost = area*unitcost*damage" print " sql losses " + sql dir_temp = Directory.getPathTempDir() #file = "C:/Data/Python/sql.txt" file = dir_temp + "sql.txt" w.writefile(file, sql) cmd = "psql -U " + con.user + maquina + " " + databasename + " < " + file + " > " + file_err subprocess.call(cmd, shell=True)
def get_initial_events(self, request, rootid): '''Retrieves a list of initial javascript calls that should be sent to the client when the view first loads. Typically, this is a series of add_processor events.''' global potentialQuestionList creator = request.session.user meeting = Directory.get_meeting(request.getvalue('global_rootid', '')) parent = meeting.get_parent() meetingRoot = parent.get_parent() groups = meetingRoot.search1(name='groups') activities = parent.search1(view='questioneditor') userGroup = '' #find which user group user belongs to allGroups = groups.get_child_items(self) for group in allGroups: allChildren = group.get_child_items(self) for child in allChildren: if creator.id == child.user_id: userGroup = group.name #setPicked = group.sets setPicked = QuestionAsker.set_picked(self,request) #get the question ids of the questions that have already been answered groupMapping = activities.search1(name="groupMapping") potentialQuestionList = '' for group in groupMapping: if group.name == userGroup: for child in group.get_child_items(self): if child.name == 'quesId': potentialQuestionList = child.quesId[:] filterParams = QuestionAsker.filter_params(self,request,setPicked) events = [] try: if (creator.backtrack * -1) < len(creator.answeredQuestions): events.append(Event('enableBack')) else: events.append(Event('disableBack')) except AttributeError: creator.backtrack = 0 if not filterParams[0] == "": events.append(Event('populateEnd', filterParams[0],str(creator.id))) else: events.append(Event('populateForm', filterParams[1], filterParams[2], filterParams[3], filterParams[4], str(creator.id), filterParams[5])) return events
def extension_directory(): """Uses directory to fill in extension owners""" count = 2 directory = Directory.return_directory() # KeyError while count < 12: try: var = directory[str(Cell("A" + str(count)).value)] except KeyError: var = "Unavailable" finally: Cell("B" + str(count)).value = var count += 1 return
def update_directory_graph(directory_path): global current_path current_path = directory_path # Every time the graph is updated we update the current path. current_directory = Directory.Directory(directory_path) subDirectories, files = current_directory.get_children_list() return dict(data=[ go.Bar( x=[dr.name for dr in subDirectories[1:]], y=[dr.get_stats()[0] for dr in subDirectories[1:]], ) ], layout=go.Layout(title="Sub-Directories", ))
def __buildStructure(self, listFullPath, indexFullPath, currentDirectory): if (self.directoryStructure == ""): self.directoryStructure = Directory.Directory() self.directoryStructure.dirname = listFullPath[indexFullPath] self.directoryStructure.fullpath = self.__getFullPath( listFullPath, indexFullPath) self.__buildStructure(listFullPath, indexFullPath + 1, self.directoryStructure) return if (indexFullPath == 0): self.__buildStructure(listFullPath, indexFullPath + 1, self.directoryStructure) return if (indexFullPath == (len(listFullPath) - 1)): currentDirectory.listFiles.append(listFullPath[indexFullPath]) return found = 0 for i in range(len(currentDirectory.listDirectories)): if (listFullPath[indexFullPath] == currentDirectory.listDirectories[i].dirname): self.__buildStructure(listFullPath, indexFullPath + 1, currentDirectory.listDirectories[i]) found = 1 if (found == 0): newDirectory = Directory.Directory() newDirectory.dirname = listFullPath[indexFullPath] newDirectory.fullpath = self.__getFullPath(listFullPath, indexFullPath) currentDirectory.listDirectories.append(newDirectory) self.__buildStructure(listFullPath, indexFullPath + 1, newDirectory)
def update_directory_details(directory_path): global details_template current_directory = Directory.Directory(directory_path) sub_directories, files = current_directory.get_children_list() dr_name = current_directory.name dr_size = current_directory.get_stats() dr_all_files = dr_size[2] dr_all_subdr = dr_size[1] dr_size, size_type = get_readable_size(dr_size[0]) dr_files = files[0] dr_subdr = sub_directories[0] return details_template.format(dr_name, dr_size, size_type, dr_subdr, dr_all_subdr, dr_files, dr_all_files)
def export_users(self, request): '''Exports the users for import into another application''' request.writeln(''' <div align="center" class="i">Export User Information</div> <p> Copy and paste the following data into your favorite editor. Save the file with a ".csv" extension and then load into Excel or another application. Note that this feature is present for researchers running treatments (to print out lists of usernames and passwords to give participants) rather than for administrators who want to snoop passwords. </p> ''') request.writeln('<pre><tt>') request.writeln('User ID,Username,Password,Real Name,Email') for user in Directory.get_users(): request.writeln('\t'.join([ user.id, self._format_csv(user.username), self._format_csv(user.password), self._format_csv(user.name), self._format_csv(user.email)])) request.writeln('</tt></pre>')
def get_initial_events(self, request, rootid): '''Retrieves a list of initial javascript calls that should be sent to the client when the view first loads. Typically, this is a series of add_processor events.''' meeting = Directory.get_meeting(request.getvalue('global_rootid', '')) parent = meeting.get_parent() activities = parent.search1(view='questioneditor') events = [] allQuestions = [] for child in activities.search1(name="questions"): item = datagate.get_item(child.id) options = item.search1(name="options") allChoices = options.get_child_items(self) allOptions = [] for choice in allChoices: allOptions.append(choice.text) allQuestions.append([child.id, child.text, child.format, child.comment, allOptions, options.num_selections, child.comOpt]) return events
def log_it(self, request): '''Logs the information in a request''' # first create the request info = [] info.append('Date: ' + time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime())) session = Directory.get_session(request.getvalue('z', '')) if session and session.user: info.append('User: '******'a') f.write('\n'.join(info) + '\n\n') f.close() finally: log_sync_lock.release()
def send_content(self, request): '''All cgi requests come through here. This assumes that the headers have been sent and the output stream is ready''' # first check for the superuser if request.session.user.superuser != '1': request.writeln(HTML_HEAD + HTML_BODY) request.writeln("Error: You are not the superuser. Please login again with the superuser username and password.") request.writeln("</body></html>") return # export the meeting doc = Directory.export_meeting(request.getvalue('global_rootid', '')) # gzip it to a stringio object and write to the response zipped = StringIO.StringIO() gz = gzip.GzipFile(mode='w', fileobj=zipped) gz.write(doc.toxml()) gz.close() request.write(zipped.getvalue()) zipped.close()
def manager(theFile, size): directoryName = Utils.getFileNameWithNoExt(theFile) inputText = open(theFile, "r") numberOfLines = File.getNumberOfLines(theFile) createdDirectory = Directory.createSubDir(theFile, True) Directory.cd(createdDirectory) ListOfLinesStr = inputText.readlines() d = 0 for i in range(d, numberOfLines, int(size)): # Create subdirectories for each set of lines subDir = Utils.getSubDirNameWithRange(d + 1, d + int(size)) createdDirectory = Directory.createSubDir(subDir, False) Directory.cd(createdDirectory) File.createPartsFile(theFile, Utils.getFileNameWithRange(d + 1, d + int(size)), d + 1, d + int(size)) for j in range(d, d + int(size), 1): if (d < numberOfLines): File.createTokensFile(Utils.getTokens(ListOfLinesStr[d]), Utils.getNameTokenLine(d + 1)) d += 1 Directory.cd('../') # In order to fill another subdirectory
def exportLossForReadingfromUi(databasename, filenameut): maquina = " -h 127.0.0.1 -p 5434" con2 = Connection() con = con2.getConnection() sql = "select gid, name, area, unitcost, totalcost, damage from popoliloss order by gid;" dir_temp = Directory.getPathTempDir() #file = "C:/Data/Python/sql.txt" file = dir_temp + "sql.txt" #file = dir_temp + "sql.txt" w.writefile(file, sql) cmd = "psql -t -U " + con.user + maquina + " " + databasename + " < " + file + " > " + filenameut subprocess.call(cmd, shell=True)
def html_update_action(self, request, filters): meeting = Directory.get_meeting(request.getvalue('global_rootid', '')) setData = ReportFindings.makeDictionaries(self, meeting, filters, False) #for set in ["Mandatory", "Agility", "Trust", etc.]: sets = set([]) for key in setData.keys(): sets.add( key.split('|')[0] ) sets = list(sets) groupsList = ["PM", "PMO", "Contractor", "Senior Stakeholder", "User"] htmlData = [] firstRow = [""] firstRow.extend(groupsList) #["", "PM", "PMO", "Contractor", "Senior Stakeholder", "User"] htmlData.append(firstRow) #[ ["", "PM", "PMO", "Contractor", "Senior Stakeholder", "User"] ] for aset in sets: nextRow = [aset] # e.g. ["Mandatory"] for group in groupsList: #["PM", "PMO", "Contractor", "Senior Stakeholder", "User"]: try: responses = setData[aset+"|"+group] responses = filter((lambda x: x < 8), responses) mean = float(sum(responses))/float(len(responses)) nextRow.append(mean) except KeyError: nextRow.append(0) except ZeroDivisionError: nextRow.append(0) htmlData.append(nextRow) #log.info("htmlData: "+str(htmlData)) htmlString = ReportFindings.makeHTMLString(self, htmlData) #log.info("htmlString = "+htmlString) #events.append(Event('redirectCSV')) events = [] events.append(Event('updateTable', htmlString)) return events
def get_user_rights(self, request, activity=None): '''Returns the current user's rights for the given activity, or None if not found''' # is this the superuser? rights = {} if request.session.user.superuser == '1': for right in self.rights_list: rights[right] = 1 return rights # compile them up for regular users if activity == None: activity = datagate.get_item(request.getvalue('global_rootid', '')) if hasattr(activity, 'linkitemid'): # the group rights might be stored in a linked item activity = datagate.get_item(activity.linkitemid) meeting = datagate.get_item(request.getvalue('global_meetingid', '')) group = Directory.get_group(meeting.id, request.session.user.id) for right in self.rights_list: key = 'groupright_' + group.name + '_' + right if hasattr(activity, key) and getattr(activity, key) == '1': rights[right] = 1 else: rights[right] = 0 return rights
def answer_question_action(self, request, id, ans, com): creator = request.session.user item = datagate.get_item(id) answers = item.search1(name="answers") answer = datagate.create_item(creatorid=creator.id, parentid=answers.id) answer.name = 'answer' answer.who = creator.name answer.when = time.strftime('%a, %d %b %Y %H:%M:%S') answer.answer = ans answer.comment = com answer.save() meeting = Directory.get_meeting(request.getvalue('global_rootid', '')) parent = meeting.get_parent() activities = parent.search1(view='questioneditor') userAnswer = activities.search1(name="userAnswers") userFound = False if userAnswer != None: for user in userAnswer: if user.name == creator.name: userFound = True answered = datagate.create_item(creatorid=creator.id, parentid=user.id) answered.questionId = id answered.when = time.strftime('%a, %d %b %Y %H:%M:%S') answered.save() if userFound == False or userAnswer == None: userCreated = datagate.create_item(creatorid=creator.id, parentid=userAnswer.id) userCreated.name = creator.name answered = datagate.create_item(creatorid=creator.id, parentid=userCreated.id) answered.questionId = id answered.when = time.strftime('%a, %d %b %Y %H:%M:%S') answered.save() event = QuestionAsker.next_question(self,request) return event
def send_menu(self, request): '''Sends the menu''' meeting = Directory.get_meeting(request.getvalue('global_rootid', '')) activities_item = meeting.search1(name='activities') activities = datagate.get_child_items(activities_item.id) rights = self.get_user_rights(request) request.writeln(HTML_HEAD_NO_CLOSE + ''' <script language='JavaScript' type='text/javascript'> <!-- var views = new Array(); ''') for activity in activities: request.writeln(' views["' + activity.id + '"] = "' + activity.view + '";') request.writeln(''' function selectActivity() { var activityid = document.getElementById('activityid').value; parent.activity.location.href = "''' + request.cgi_href(global_windowid=request.getvalue('global_windowid', ''), global_view=None, global_rootid=None, frame=None) + '''&global_view=" + views[activityid] + "&global_rootid=" + activityid; } function initialLoad() { selectActivity(); } function openHelp() { window.open("''' + WEB_PROGRAM_URL + '''/Help/", "helpwindow", "dependent,height=400,width=300,scrollbars,resizable"); return false; } function gotoActivity(activityid, requester_sessionid) { var activity = document.getElementById('activityid'); if ("''' + request.session.id + '''" != requester_sessionid) { activity.value = activityid; selectActivity(); }else{ alert("The sync message has been sent to all participants in this meeting."); } } function syncParticipants() { if (confirm("Syncronize this meeting's participants to this activity?")) { var activityid = document.getElementById('activityid').value; sendEvent('gotoActivity', activityid, "''' + request.session.id + '''"); } } //--> </script> </head> <body id="menu" ''" onload="initialLoad();" style="margin:0;padding:0;"> <table cellspacing="0" style="border-bottom:#99ccff 1px dotted;padding:3px;"> <tr> <td id="menu-logo"> <div id="poet-logo">POET</div> </td> <td id="menu-activities"> ''') user_is_pm = 0 for child in meeting: if child.name == "groups": for group in child: if group.name == "PM": for pm_item in group: if pm_item.user_id == request.session.user.id: user_is_pm = 1 if rights['Show Activities Selector'] or request.session.user.superuser == '1' or user_is_pm == 1: # don't show unless there are more than one or the superuser request.writeln(''' <div class="hide">Activity: <select name="activityid" id='activityid' onchange="javascript:selectActivity()"> ''') for activity in activities: request.writeln('<option value="' + activity.id + '">' + activity.name + '</option>') request.writeln('</select>') if request.session.user.superuser == '1': request.writeln('<input type="button" value="Sync Participants" onclick="javascript:syncParticipants();"></div>') # select activity based on meeting status elif meeting.status < 2: #results not released -- send to QuestionAsker # this hidden input allows the selectActivity() js functions to work (called with body.onLoad) request.writeln('<input type="hidden" name="activityid" id="activityid" value="' + activities[1].id + '">') else: #results released -- send to Findings request.writeln('<input type="hidden" name="activityid" id="activityid" value="' + activities[2].id + '">') request.writeln('</td><td id="user-menu">') request.writeln('logged in as <strong>' + html(request.session.user.name) + '</strong>') if request.session.user.superuser == '1' or user_is_pm == 1: request.writeln('<span class="divider">|</span> <a target="_top" href="' + request.cgi_href(itemid=meeting.id, global_view='Administrator', global_adminview='POET') + '">Edit</a>') request.writeln(''' <span class="divider">|</span> <a onclick='javascript:openHelp();'>Help</a> <span class="divider">|</span> <a target="_top" href="''' + request.cgi_href(global_view='logout') + '''" >Logout</a> </td></tr></table> <script language='JavaScript' type='text/javascript'>startEventLoop();</script> </body></html> ''')
def process_admin_actions(self, request): '''Process all item actions''' meeting = datagate.get_item(request.getvalue('global_meetingid', '')) action = request.getvalue('_mhaction', '') if action == 'copyitem': meeting = datagate.copy_deep(request.getvalue('_copyitemid', ''), Directory.meetings_item.id) meeting.name = request.getvalue('_itemname', '') meeting.save() return meeting #elif action == 'publish': #handled by Ask elif action == 'results': meeting.status = 2 elif action == 'import': try: importfile = request.form['subaction'] gz = gzip.GzipFile(importfile.filename, 'r', fileobj=importfile.file) doc = xml.dom.minidom.parse(gz) except IOError: raise IOError, 'An error occurred while importing the file. Are you sure it is a gzipped XML document (exported from GroupMind)?' return Directory.import_meeting(doc, request.session.user.id) activities_item = meeting.search1(name='activities') groups_item = meeting.search1(name='groups') if action == 'editname': itemname = request.getvalue('activityname', '') if itemname != '': child = activities_item.get_child(request.getvalue('activityid')) child.name = itemname child.save() elif action == 'addactivity': # create the activity name = request.getvalue('name', '') if name != '': activity = datagate.create_item(creatorid=request.session.user.id, parentid=activities_item.id) activity.name = name activity.previousid = request.getvalue('previousid', '') activity.view = request.getvalue('viewtype', '') activity.save() # allow the activity view to initialize itself BaseView.views[activity.view.lower()].initialize_activity(request, activity) elif action == 'delactivity': datagate.del_item(request.getvalue('activityid', '')) elif action == 'moveactivity': activity = datagate.get_item(request.getvalue('activityid')) parent = activity.get_parent() parent.remove_child(activity) parent.insert_child(activity, request.getvalue('previousid')) parent.save() elif action == 'addgroup': name = request.getvalue('name', '') if name != '': group = datagate.create_item(creatorid=request.session.user.id, parentid=groups_item.id) group.name = name group.save() elif action == 'delgroup': datagate.del_item(request.getvalue('groupid', '')) elif action == 'groupusers': fromGroup = request.getvalue('fromGroup', '') toGroup = request.getvalue('toGroup', '') users = request.getvalue('users', '').split() if not fromGroup == "unassigned_list": for c in datagate.get_child_items(fromGroup): for u in users: if c.user_id == u: datagate.get_item(fromGroup).remove_child(c) if not toGroup == "unassigned_list": for u in users: child = datagate.create_item(creatorid=request.session.user.id, parentid=toGroup) child.user_id = u child.save() elif action == 'addset': groupid = request.getvalue('groupid', '') group = datagate.get_item(groupid) submit = request.getvalue('switchSet', '') if submit == 'released': meeting.status = 1 creator = request.session.user activities_item = meeting.search1(name='activities') root = activities_item.search1(name="Question Editor") questions = root.search1(name="questions") groupMapping = root.search1(name="groupMapping") d = {} #dictionary -- for binding dynamic variable names to values for g in groupMapping: listName = (str(g.name) + "IDlist").replace(' ', '') #replace -- removes spaces d[listName] = [] sets = root.search1(name="sets") d2 = {} #dictionary -- for binding dynamic variable names to values for s in sets: listName2 = (str(s.name) + "IDlist").replace(' ', '') #replace -- removes spaces d2[listName2] = [] for q in questions: if not q.delete: userGroups = q.users for u in userGroups: for g in groupMapping: if u == g.name: listName = (str(g.name) + "IDlist").replace(' ', '') (d[listName]).append(q.id) allSets = q.search1(name="sets") for t in allSets.get_child_items(self): for s in sets: if s.name == t.name: listName2 = (str(s.name) + "IDlist").replace(' ', '') (d2[listName2]).append(q.id) for g in groupMapping: children = g.get_child_items(self) if not children: p = datagate.create_item(creatorid=creator.id, parentid=g.id) p.name = 'percent' p.percent = 0 p.save() ques = datagate.create_item(creatorid=creator.id, parentid=g.id) ques.name = 'quesId' else: ques = g.search1(name='quesId') listName = (str(g.name) + "IDlist").replace(' ', '') ques.quesId = d[listName] ques.save() for s in sets: childs = s.get_child_items(self) if not childs: questions = datagate.create_item(creatorid=creator.id, parentid=s.id) questions.name = "quesId" else: questions = s.search1(name='quesId') listName2 = (str(s.name) + "IDlist").replace(' ', '') questions.quesId = d2[listName2] questions.save() setsid = request.getvalue('setsid', '') sets = datagate.get_item(setsid) setList = [] for item in sets: cbname = item.name + "_cb" cb = request.getvalue(cbname, '') if cb == "on": setList.append(item.name) if setList == []: group.sets = '' else: group.sets = setList else: group.sets = '' group.save() # finally, return the meeting (since we might have created it here) return meeting
def send_content(self, request): # Sends content of page request.writeln(HTML_HEAD_NO_CLOSE + '<link type="text/css" rel="stylesheet" href="' + join(WEB_PROGRAM_URL, "layout.css") + '" /></head>') request.writeln('''<body onload='setUser("''' + str(request.session.user.id) + '''")'>''') thisPage = Directory.get_meeting(request.getvalue('global_rootid', '')) parent_id = thisPage.parentid parent = datagate.get_item(parent_id) grandparent_id = parent.parentid meeting = datagate.get_item(grandparent_id) thisPage = Directory.get_meeting(request.getvalue('global_rootid', '')) parent = thisPage.get_parent() meeting = parent.get_parent() user_is_pm = False for child in meeting: if child.name == "groups": for group in child: if group.name == "PM": for pm_item in group: if pm_item.user_id == request.session.user.id: user_is_pm = True if request.session.user.superuser == '1' or user_is_pm: request.writeln('<table cellspacing="0" style="border-bottom:#99ccff 1px dotted;padding:3px;" width=100%><tr>') request.writeln('''<td id="menu-logo"> <div id="poet-logo">POET</a> </td>''') request.writeln('<td id="user-menu">') request.writeln('logged in as <strong>'+request.session.user.name+'</strong>') #navigation if request.session.user.superuser == '1': request.writeln('<span class="divider">|</span> <a href="' + request.cgi_href(_adminaction=None, global_adminview=None) + '">Home</a>') request.writeln(' <span class="divider">|</span> <a target="_top" href="' + request.cgi_href(itemid=meeting.id, global_view='Administrator', global_adminview='POET') + '">Manage Program</a>') request.writeln('''<span class="divider">|</span> <a onclick='javascript:openProgInfo();'>Program Information</a> <span class="divider">|</span> <a onclick='javascript:openHelp();'>Help</a> <span class="divider">|</span> ''') request.writeln('<a href="' + request.cgi_href(global_view='login', _adminaction='logout') + '">Logout</a>') request.writeln('</td>') request.writeln('</tr></table>') if meeting.status == 0: #this might need rethinking msg = "Thank you for logging in.<br/>No questions have been published yet. Please return later to participate." else: msg = "Thank you for logging in.<br/>You have answered all of the questions that have been assigned to you. You will be informed when more questions or survey results are released to you." request.writeln('''<script src="''' + join(WEB_PROGRAM_URL, 'jquery-1.4.2.min.js') + '''"></script>''') request.writeln('''<script src="''' + join(WEB_PROGRAM_URL, 'jquery-ui-1.8.2.custom.min.js') + '''"></script>''') request.writeln('''<link href="''' + join(WEB_PROGRAM_URL, 'jquery-ui-1.8.2.custom.css') + '''" rel="stylesheet" type="text/css"/>''') request.writeln(''' <script language='JavaScript' type='text/javascript'> $(function() { $("#progressbar").progressbar({ value: progress }); }); $(function() { $("input:button, input:submit").button(); }); var currentQuestion; var progress; var loggedInUser; function openHelp() { window.open("''' + WEB_PROGRAM_URL + '''/Help/", "helpwindow", "dependent,height=800,width=1000,scrollbars,resizable"); return false; } function openProgInfo() { window.open("''' + WEB_PROGRAM_URL + '''/ProgInfo/", "proginfowindow", "dependent,height=800,width=1000,scrollbars,resizable"); return false; } function setUser(user){ loggedInUser = user; window.open("''' + WEB_PROGRAM_URL + '''/ProgInfo/", "proginfowindow", "dependent,height=800,width=1000,scrollbars,resizable"); } function populateEnd(message,creator) { if(creator == loggedInUser){ document.getElementById('progressbar').style.display = "none"; document.getElementById('quesNum').style.display = "none"; //document.getElementById('previewQuestion').innerHTML = "'''+msg+'''"; document.getElementById('previewQuestion').innerHTML = message; document.getElementById('previewCommentInput').style.display = "none"; document.getElementById('questionInput').style.display = "none"; document.getElementById('backButton').style.display = "inline-block"; document.getElementById('submitButton').style.display = "none"; document.getElementById('resetButton').style.display = "none"; document.getElementById('naInput').style.display = "none"; } } function populateForm(question, preselect, answered, asked, creator, set) { if(creator == loggedInUser){ document.getElementById('setAssessment').innerHTML = "- " + set + " Questions"; currentQuestion = question; document.getElementById('progressbar').style.display = "block"; document.getElementById('quesNum').style.display = "block"; //document.getElementById('previewCommentInput').style.display = "block"; document.getElementById('questionInput').style.display = "block"; document.getElementById('backButton').style.display = "inline-block"; document.getElementById('submitButton').style.display = "inline-block"; document.getElementById('resetButton').style.display = "inline-block"; //document.getElementById('naInput').style.display = "none"; //populates the questions being asked $("#progressbar").progressbar({value: parseInt(100*(answered+1)/asked, 10)}); document.getElementById('quesNum').innerHTML = (answered+1) + " of " + asked; document.getElementById('previewQuestion').innerHTML = question[1]; formatChanger(question[2], document.getElementById('questionInput'), question[4], question[5]); if(question[3] == "yes"){ document.getElementById('previewCommentInput').style.display = "block"; document.getElementById('previewComments').value = ""; }else{ document.getElementById('previewCommentInput').style.display = "none"; document.getElementById('previewComments').value = ""; } if(question[7] == "na"){ document.getElementById('naInput').style.display = "block"; if(preselect == "N/A"){ document.getElementById('naAnswer').checked = true; } else{ document.getElementById('naAnswer').checked = false; } } else{ document.getElementById('naInput').style.display = "none"; document.getElementById('naAnswer').checked = false; } radioButton = document.getElementById(preselect); if (null != radioButton){ radioButton.checked = true; } } } function formatChanger(format, area, choices, num){ //changes the answer options depending on which format the question is var type = 1; switch(format){ case "truefalse": var trueFalse = '<div id="tfInput" class="radio-group">'; trueFalse += '<span class="radio-option">'; trueFalse += '<input id="trueInput" type="radio" name="trueFalseInput" value="true" /> '; trueFalse += '<label for="trueInput">True</label></span> '; trueFalse += '<span class="radio-option">'; trueFalse += '<input id="falseInput" type="radio" name="trueFalseInput" value="false" /> '; trueFalse += '<label for="falseInput">False</label></span></div>'; area.innerHTML = trueFalse; break; case "multiplechoice": var multiplePreview = '<div id="listOptions"></div>'; area.innerHTML = multiplePreview; populateOptions(type, choices, num); break; case "likert": var likert = '<div id="likertInput" class="radio-group">'; likert += '<table cellpadding="6"><tr align="center">'; likert += '<td><input id="stdInput" type="radio" name="agreementInput" value="stronglydisagree" /></td>'; likert += '<td><input id="dInput" type="radio" name="agreementInput" value="disagree" /></td>'; likert += '<td><input id="swdInput" type="radio" name="agreementInput" value="somewhatdisagree" /></td>'; likert += '<td><input id="nInput" type="radio" name="agreementInput" value="neither" /></td>'; likert += '<td><input id="swaInput" type="radio" name="agreementInput" value="somewhatagree" /></td>'; likert += '<td><input id="aInput" type="radio" name="agreementInput" value="agree" /></td>'; likert += '<td><input id="staInput" type="radio" name="agreementInput" value="stronglyagree" /></td>'; likert += '</tr><tr>'; likert += '<td><label for="sdInput">Strongly Disagree</label></td>'; likert += '<td><label for="dInput">Disagree</label></td>'; likert += '<td><label for="swdInput">Somewhat Disagree</label></td>'; likert += '<td><label for="nInput">Neither agree<br/>nor disagree</label></td>'; likert += '<td><label for="swaInput">Somewhat Agree</label></td>'; likert += '<td><label for="aInput">Agree</label></td>'; likert += '<td><label for="staInput">Strongly Agree</label></td>'; likert += '</tr></table></div>'; area.innerHTML = likert; break; case "yesno": var yesNo = '<div id="ynInput" class="radio-group">'; yesNo += '<span class="radio-option">'; yesNo += '<input id="yesInput" type="radio" name="yesNoInput" value="yes" /> '; yesNo += '<label for="yesInput">Yes</label></span> '; yesNo += '<span class="radio-option">'; yesNo += '<input id="noInput" type="radio" name="yesNoInput" value="no" /> '; yesNo += '<label for="noInput">No</label></span></div>'; area.innerHTML = yesNo;; break; case "topn": type = 0; var topNPreview = "Please select " + num + " items.<br/>"; topNPreview += '<div id="listOptions"></div>'; area.innerHTML = topNPreview; populateOptions(type, choices, num); break; default: } } function populateOptions(type, allChoices, num){ //populate available options for the question if(allChoices != null){ var listOptions = ""; for(var i=0;i<allChoices.length;i++){ if(type == '0'){ listOptions += '<input type="checkbox" name="choiceInput" value="' + allChoices[i] + '" /> '; } else{ listOptions += '<input type="radio" name="choiceInput" value="' + allChoices[i] + '" /> '; } listOptions += allChoices[i]; listOptions += '<br/>'; } document.getElementById('listOptions').innerHTML = listOptions; } } function disableBack(){ document.getElementById('backButton').disabled = true; document.getElementById('backButton').style.visibility = "hidden"; document.getElementById('backButton').style.display = "none"; //document.getElementById('backButton').aria-disabled = true; //$("#backButton").removeClass("ui-button-disabled").removeClass("ui-state-disabled"); } function enableBack(){ document.getElementById('backButton').disabled = false; document.getElementById('backButton').style.visibility = "visible"; document.getElementById('backButton').style.display = "inline"; //document.getElementById('backButton').aria-disabled = false; //$("#backButton").addClass("ui-button-disabled").addClass("ui-state-disabled"); } function submitClicked(){ enableBack(); var answer = ""; if(currentQuestion[6] == "no" && document.getElementById('previewComments').value == ""){ alert("Please enter a comment."); } else{ if((document.getElementById('naInput').style.display == "block") && (document.getElementById('naAnswer').checked)){ answer = "N/A"; if(answer == ""){ alert("No answer was selected"); } else{ sendEvent('answer_question', currentQuestion[0], answer, document.getElementById('previewComments').value); } } else{ switch(currentQuestion[2]){ case "truefalse": var radios = document.getElementsByName('trueFalseInput'); for (var i=0; i <radios.length; i++) { if (radios[i].checked) { answer = radios[i].value; } } if(answer == ""){ alert("No answer was selected"); } else{ sendEvent('answer_question', currentQuestion[0], answer, document.getElementById('previewComments').value); } break; case "multiplechoice": var radios = document.getElementsByName('choiceInput'); for (var i=0; i <radios.length; i++) { if (radios[i].checked) { answer = radios[i].value; } } if(answer == ""){ alert("No answer was selected"); } else{ sendEvent('answer_question', currentQuestion[0], answer, document.getElementById('previewComments').value); } break; case "likert": var radios = document.getElementsByName('agreementInput'); for (var i=0; i <radios.length; i++) { if (radios[i].checked) { answer = radios[i].value; } } if(answer == ""){ alert("No answer was selected"); } else{ sendEvent('answer_question', currentQuestion[0], answer, document.getElementById('previewComments').value); } break; case "yesno": var radios = document.getElementsByName('yesNoInput'); for (var i=0; i <radios.length; i++) { if (radios[i].checked) { answer = radios[i].value; } } if(answer == ""){ alert("No answer was selected"); } else{ sendEvent('answer_question', currentQuestion[0], answer, document.getElementById('previewComments').value); } break; case "topn": var radios = document.getElementsByName('choiceInput'); for (var i=0; i <radios.length; i++) { if (radios[i].checked) { answer = radios[i].value; if(answer == ""){ alert("No answer was selected"); } else{ sendEvent('answer_question', currentQuestion[0], answer, document.getElementById('previewComments').value); } } } break; default: } } } } function resetClicked(){ document.getElementById('previewComments').value = ""; switch(currentQuestion[2]){ case "truefalse": var radios = document.getElementsByName('trueFalseInput'); for (var i=0; i <radios.length; i++) { radios[i].checked = false ; } break; case "multiplechoice": var radios = document.getElementsByName('choiceInput'); for (var i=0; i <radios.length; i++) { radios[i].checked = false ; } break; case "likert": var radios = document.getElementsByName('agreementInput'); for (var i=0; i <radios.length; i++) { radios[i].checked = false ; } break; case "yesno": var radios = document.getElementsByName('yesNoInput'); for (var i=0; i <radios.length; i++) { radios[i].checked = false ; } break; case "topn": var radios = document.getElementsByName('choiceInput'); for (var i=0; i <radios.length; i++) { radios[i].checked = false ; } break; default: } } function backClicked(){ sendEvent('back_clicked') } </script> ''') # HTML for the page # request.writeln(''' <br/> <div id="container"> <div id="program-assessment" class="module"> <h1>Program Assessment <span id="setAssessment"></span></h1> <div id="assessmentContent"> <div id="progressbar"> </div> <div id="quesNum"> </div> <div id="content"> <div id="question-viewer"> <p class="previewText" id='previewQuestion'></p> <div class="previewInput"> <div id="questionInput"> </div> <div id="naInput"> N/A <input type="checkbox" value="N/A" id="naAnswer" /> </div> <div id="previewCommentInput" class="comments" style="display:none;"> <h3><label for="previewComments">Comments:</label></h3> <textarea id="previewComments" cols="40" rows="3"></textarea> </div> <div class="bottom-toolbar-ask"> <div class="questionButtons"> <input type="submit" id='backButton' onclick="backClicked()" value="Back" /> <input type="submit" id='submitButton' onclick="submitClicked()" value="Submit" /> <input type="submit" id='resetButton' onclick="resetClicked()" value="Reset" />''') # This code properly enables/disables the button, but doesn't affect its visibility. Haven't figured out how to get around that. ''' includeBack = True backtrack = request.session.user.backtrack try: previousQuestion = request.session.user.answeredQuestions[backtrack-1] #previous question's id except IndexError: includeBack = False #there is no previous question -- do not print "Back" button if includeBack: request.writeln("""<input type="submit" id='backButton' onclick="backClicked()" value="Back" disabled="false" />""") else: request.writeln("""<input type="submit" id='backButton' onclick="backClicked()" value="Back" disabled="true" />""") ''' request.writeln('''</div> </div> </div> </div><!-- /#question-viewer --> </div><!-- /#content --> </div> <!-- /#assessmentContent --> </div><!-- /#program-assessment --> </div><!-- /#container --> ''') request.writeln("<script language='JavaScript' type='text/javascript'>startEventLoop();</script>") request.writeln("</body></html>")
def filter_params(self,request, setPicked): global potentialQuestionList creator = request.session.user meeting = Directory.get_meeting(request.getvalue('global_rootid', '')) parent = meeting.get_parent() meetingRoot = parent.get_parent() groups = meetingRoot.search1(name='groups') activities = parent.search1(view='questioneditor') answered = 0 asked = 0 question = '' answeredQuestionList = [] userGroup = '' userQues = '' qId = '' events = [] end = False if not setPicked: return ["Thank you for logging in.<br/>You currently have no questions assigned for you to answer. You will be informed when questions or survey results are released to you.", 0, 0, 0] #find which user group user belongs to allGroups = groups.get_child_items(self) for group in allGroups: allChildren = group.get_child_items(self) for child in allChildren: if creator.id == child.user_id: userGroup = group.name #get the number of questions already answered by the user userAnswer = activities.search1(name="userAnswers") for user in userAnswer: if user.name == creator.name: userQues = user.get_child_items(self) #answered = len(userQues) #get the list of question ids of the questions that have already been answered for q in userQues: answeredQuestionList.append(q.questionId) # this is equivalent to potentialQuestionList = list( set(potentialQuestionList) - set(answeredQuestionList) ) # I'm not sure which is more efficient or readable, though. for q in potentialQuestionList[:]: for a in answeredQuestionList: if q == a: potentialQuestionList.remove(q) #make list of questions from potentialQuestionList and set selected setQuestionList = [] sets = activities.search1(name="sets") for s in sets: if s.name in setPicked: for qIds in s.get_child_items(self): if qIds.name == 'quesId': for q in qIds.quesId: if(potentialQuestionList.count(q) != 0) and q not in setQuestionList: setQuestionList.append(q) if creator.initialize: creator.sessionQuestionList = potentialQuestionList[:] creator.initialize = False #asked = len(setQuestionList) + answered answered = len(creator.answeredQuestions) + creator.backtrack asked = len(creator.sessionQuestionList) preselect = "" if answered >= asked : end = "You have answered all of your questions.</br>Please log in later to view the results." else: end = "" if creator.backtrack < 0: questionId = creator.answeredQuestions[creator.backtrack] questionXML = datagate.get_item(questionId) answers = questionXML.search1(name="answers") question = QuestionAsker.get_question(self,questionId) #if this user has already answered this question, preselect their answer answer = None for each in answers: if each.who == creator.name: answer = each #answerDictionary translates answers to radioButton IDs answerDictionary = {'stronglydisagree': 'stdInput', 'disagree': 'dInput', 'somewhatdisagree': 'swdInput', 'neither': 'nInput', 'stronglyagree': 'staInput', 'agree':'aInput', 'somewhatagree':'swaInput', 'N/A':'N/A'} preselect = answerDictionary[answer.answer] #log.info("answerDictionary["+(answer.answer)+"] = preselect = "+answerDictionary[answer.answer]) else: question = QuestionAsker.get_question(self,setQuestionList[0]) preselect = "" params = [end, question, preselect, answered, asked, setPicked] return params
#!/usr/bin/env python from Grep import * from Directory import * x = Grep() x.addFilter(r'UTIL_THROW') d = Directory(r'.') filenames = d.filenames('*.cpp') for filename in filenames: x.grep(filename) if x.results[0]: print filename x.clearResults()
def main(nombreGif): (folder1, folder2) = Directory.createDirectory() # read the gif images = GIF.readGif(nombreGif) # play with scanned images (motionPixels, pixeles) = detectMotion(images) # save files Directory.movedir(folder1) saveImage(motionPixels) Directory.creatGif() Directory.backDirectory() Directory.movedir(folder2) saveImage(pixeles) Directory.creatGif() Directory.backDirectory()