Example #1
0
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)
Example #2
0
  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)
Example #3
0
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)
Example #4
0
 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)
Example #5
0
 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)
Example #6
0
 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()
Example #7
0
    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
Example #8
0
  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>
    ''')
Example #9
0
    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
Example #10
0
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)
Example #11
0
  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>
    ''')    
Example #12
0
 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>
   ''')
Example #13
0
 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))
Example #14
0
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)
Example #15
0
 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>
   ''')
Example #16
0
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)
Example #17
0
    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
Example #18
0
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)
Example #19
0
 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()
Example #20
0
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)
Example #21
0
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)
Example #22
0
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 + "'"
Example #23
0
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())
Example #24
0
 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()
Example #25
0
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)
Example #26
0
 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()
Example #27
0
 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
Example #28
0
 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
Example #29
0
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)
Example #30
0
  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
Example #31
0
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)
Example #32
0
 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)
Example #33
0
  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
Example #34
0
    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)
Example #35
0
 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)
Example #36
0
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", ))
Example #37
0
 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))
Example #38
0
 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 []
Example #39
0
  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>
    ''')   
Example #40
0
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)
Example #41
0
  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
Example #43
0
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", ))
Example #44
0
    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)
Example #45
0
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)
Example #46
0
 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>')      
Example #47
0
 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
Example #48
0
 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()
Example #49
0
 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()
Example #50
0
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
Example #51
0
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)
Example #52
0
  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
Example #53
0
  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 
Example #54
0
  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
Example #55
0
  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>
    ''')
Example #56
0
  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
Example #57
0
  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>")
Example #58
0
  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
Example #59
0
#!/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()