PYTHON   16

loop_routines.py

Guest on 17th August 2021 01:39:42 PM

  1. #####################################################################
  2. #       Routines for Image Loop Webpage
  3. #       David Carey
  4. #      
  5. #####################################################################
  6.  
  7. import cgi, os, os.path, glob, re, string
  8.  
  9. # points to web root from os side
  10. base_directory_path = '/home/torn/html'
  11.  
  12. # points to web root from browser side
  13. base_URL = 'http://www.atmos.albany.edu/facstaff/torn'
  14.  
  15.  
  16. ######################################################################
  17. # condition path
  18. ######################################################################
  19.  
  20. def condition_path(url):
  21.         # strip leading/trailing whitespace
  22.         url = url.rstrip()
  23.         strings = []
  24.         # convert URL to path relative to web server root
  25.         if url.count('~') != 0:
  26.                 url = url.split('~')
  27.                 strings.append(base_directory_path)
  28.                 strings.append(url[1])
  29.         else:
  30.                 # url is empty or unreadable
  31.                 strings ='no url'
  32.         return ''.join(strings)
  33.        
  34.                        
  35. ######################################################################
  36. # validate path
  37. ######################################################################
  38.  
  39. def validate_path(url):
  40.         strings = []
  41.         # is this a valid path?
  42.         if not os.path.isdir(url):
  43.                 strings.append('not a valid directory')
  44.         else:
  45.                 if not is_loop(url):
  46.                         strings.append('not a loopable directory')
  47.                 else:
  48.                         strings.append('is a loopable directory')
  49.         return ''.join(strings)
  50.        
  51.  
  52. ######################################################################
  53. # get path given URL
  54. ######################################################################
  55.  
  56. def path_from_url(url):
  57.         path = base_directory_path+os.path.abspath(url)
  58.         return path
  59.  
  60. ######################################################################
  61. # get URL given path
  62. ######################################################################
  63.  
  64. def url_from_path(path):
  65.         path = os.path.abspath(path)
  66.         url = path.replace(str(base_directory_path),str(base_URL))
  67.         return url     
  68.  
  69.  
  70. ######################################################################
  71. # validate query string
  72. ######################################################################
  73.  
  74. def validate_query_string(query_string):
  75.  
  76.         return query_string
  77.  
  78.  
  79. ######################################################################
  80. #    count files
  81. ######################################################################
  82.  
  83. def count_files(path,filetype):
  84.         """
  85.         return the number of files (of a specified type) in a directory
  86.         """
  87.         files = glob.glob1(path,filetype)
  88.         return len(files)
  89.  
  90.  
  91. ######################################################################
  92. #    first image in array
  93. ######################################################################
  94.  
  95. def get_first_image(path,filetype):
  96.         """
  97.         return the first file in the looping directory for pre-loading into the page
  98.         """
  99.         files = glob.glob1(path,filetype)
  100.         files.sort()
  101.        
  102.         # number of files in directory
  103.         num_files = count_files(path,filetype)
  104.  
  105.         # file number index for generating array
  106.         image_number=0
  107.        
  108.         # hold strings for constructing array code
  109.         strings = []
  110.         if num_files > 0:
  111.                         strings.append(url_from_path(path +'/'+ files[0]))
  112.         else: strings.append('                                          // ERROR: no image files found\n')
  113.         results = "".join(strings)
  114.         return results
  115.  
  116. ######################################################################
  117. #    last image in array (most recent)
  118. ######################################################################
  119.  
  120. def get_last_image(path,filetype):
  121.         """
  122.         return the last file (newest) in the looping directory for pre-loading into the page
  123.         """
  124.         files = glob.glob1(path,filetype)
  125.         files.sort()
  126.        
  127.         # number of files in directory
  128.         num_files = count_files(path,filetype)
  129.  
  130.         # file number index for generating array
  131.         image_number=0
  132.        
  133.         # hold strings for constructing array code
  134.         strings = []
  135.         if num_files > 0:
  136.                         strings.append(url_from_path(path +'/'+ files[num_files-1]))
  137.         else: strings.append('                                          // ERROR: no image files found\n')
  138.         results = "".join(strings)
  139.         return results
  140.  
  141.  
  142. ######################################################################
  143. #    draw image and control bar
  144. ######################################################################
  145.  
  146. def draw_controlbar(name):
  147.         strings.append('                                                                <table class="grayBorder">\n')
  148.         strings.append('                                                                <tr>\n')
  149.         strings.append('                                                                <td class="controlLabelText">onMouseOver=document.'+name+'Form.'+name+'.src="images/animation_buttons/'+name+'Play()\');\n')
  150.         strings.append('                                                                tmp += '+name+'DrawButton(\''+name+'Play\', \'Play\', \''+name+'StartPlay()\');\n')
  151.         strings.append('                                                                tmp += '+name+'DrawButton(\''+name+'Pause\', \'Pause\', \''+name+'StopPlay()\');\n')
  152.         strings.append('                                                                tmp += '+name+'DrawButton(\''+name+'First\', \'First image\', \''+name+'FirstImage()\');\n')
  153.         strings.append('                                                                tmp += '+name+'DrawButton(\''+name+'Prev\', \'Previous image\', \''+name+'StepBackward()\');\n')
  154.         strings.append('                                                                tmp += '+name+'DrawButton(\''+name+'Next\', \'Next image\', \''+name+'StepForward()\');\n')
  155.         strings.append('                                                                tmp += '+name+'DrawButton(\''+name+'Last\', \'Last image\', \''+name+'LastImage()\');\n')
  156.         strings.append('                                                                tmp += \'<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Speed:</td>\';\n')
  157.         strings.append('                                                                tmp += '+name+'DrawButton(\''+name+'Slowdown\', \'Slower\', \''+name+'Slower()\');\n')
  158.         strings.append('                                                                tmp += '+name+'DrawButton(\''+name+'Speedup\', \'Faster\', \''+name+'Faster()\');\n')
  159.         strings.append('                                                                tmp += '+name+'DrawButton(\''+name+'Speedreset_en\', \'Reset\', \''+name+'SpeedReset()\');\n')
  160.         strings.append('                                                        \n')
  161.         strings.append('                                                                        tmp += \'onMouseOver=document.'+name+'Form.\' + targetName + \'.src="images/animation_buttons/\' + targetName + \'_over.png" \';\n')
  162.         strings.append('                                                                        tmp += \'onMouseOut=document.'+name+'Form.\' + targetName + \'.src="images/animation_buttons/\' + targetName + \'.png" \';\n')
  163.         strings.append('                                                                } else {\n')
  164.         strings.append('                                                                        tmp = \'<td><a href="javascript:\'+ clickFunction+ \'"><img name="\' + targetName + \'" src="images/animation_buttons/\' + name + \'_greyed.png" alt="\' + alt + \'" \';\n')
  165.         strings.append('                                                                }\n')
  166.         strings.append('                                                                tmp += \'onClick="\' + clickFunction + \'" border="0"></a></td>\';\n')
  167.  
  168.  
  169. ######################################################################
  170. #   create common javascript code for entire page       8.26.2005
  171. ######################################################################
  172.  
  173. def get_common_javascript_code():
  174.  
  175.         strings = []
  176.         strings.append('                                                        <SCRIPT language="JavaScript">\n')
  177.         strings.append('                                                        <!--\n')       
  178.         strings.append('\n')
  179.         strings.append('                                                        //--------------------------------------------------------------------------\n')
  180.         strings.append('                                                        //     c o m m o n   c o d e \n')
  181.         strings.append('                                                        //--------------------------------------------------------------------------\n')
  182.         strings.append('\n')
  183.         strings.append('                                                                var preloadedImages=new Array();\n')
  184.         strings.append('\n')
  185.         strings.append('                                                                function preloadimages(){\n')
  186.         strings.append('                                                                        //\n')
  187.         strings.append('                                                                        // pre-load button graphics\n')
  188.         strings.append('                                                                        //\n')
  189.         strings.append('\n')
  190.         strings.append('                                                                        for (i=0;i<preloadimages.arguments.length;i++){\n')
  191.         strings.append('                                                                                preloadedImages[i]=new Image();\n')
  192.         strings.append('                                                                                preloadedImages[i].src=preloadimages.arguments[i];\n')
  193.         strings.append('                                                                        }\n')
  194.         strings.append('                                                                }\n')
  195.         strings.append('\n')
  196.         strings.append('                                                                // variables\n')
  197.         strings.append('                                                                icon_dir = \'images/animation_buttons\';\n')
  198.         strings.append('\n')
  199.         strings.append('                                                                // text box label\n')
  200.         strings.append('                                                                textBoxLabel = \'<span class="control_label"><!-- caption here --></span>\';\n')
  201.         strings.append('\n')
  202.         strings.append('                                                                                                                //-->\n')
  203.         strings.append('                                                                </SCRIPT>\n')
  204.         result = ''.join(strings)
  205.         return result
  206.  
  207.  
  208. ######################################################################
  209. #   create javascript code for each pane        8.26.2005
  210. ######################################################################
  211.  
  212. def get_javascript_code(path,filetype,name):
  213.  
  214.         # enforce initial capitalization of name
  215.         name = string.capitalize(name)
  216.        
  217.         strings = []
  218.         strings.append('                                                <SCRIPT language="JavaScript">\n')
  219.         strings.append('                                                        <!--\n')
  220.         strings.append('                                                        //--- '+name+' -------------------------------------------------------------\n')
  221.         strings.append('                                                        //--------------------------------------------------------------------------\n')
  222.         strings.append('                                                        //     p a n e   s p e c i f i c   v a r i a b l e s \n')
  223.         strings.append('                                                        //--------------------------------------------------------------------------\n')
  224.         strings.append('\n')   
  225.         strings.append('\n')   
  226.         strings.append('                                                                // number of individual '+name+'Speed steps\n')
  227.         strings.append('                                                                numberOf'+name+'Speeds = 20;\n')
  228.         strings.append('\n')   
  229.         strings.append('                                                                // init'+name+'Speed: initial animation '+name+'Speed\n')
  230.         strings.append('                                                                init'+name+'Speed = 16;\n')
  231.         strings.append('                                                                '+name+'Speed = init'+name+'Speed;\n')
  232.         strings.append('\n')   
  233.         strings.append('                                                                // initial '+name+'Delay value\n')
  234.         strings.append('                                                                '+name+'Delay=800;\n')
  235.         strings.append('\n')
  236.         strings.append('\n')
  237.         strings.append('                                                        //--------------------------------------------------------------------------\n')
  238.         strings.append('                                                        //     p a n e   s p e c i f i c    f u n c t i o n s\n')
  239.         strings.append('                                                        //--------------------------------------------------------------------------\n')
  240.         strings.append('\n')
  241.         strings.append('                                                                function '+name+'Startup() {\n')
  242.         strings.append('                                                                        //\n')
  243.         strings.append('                                                                        // startup: update the '+name+' speed and frame text widgets\n')
  244.         strings.append('                                                                        //\n')
  245.         strings.append('\n')                   
  246.         strings.append('                                                                        set'+name+'Images(0);\n')
  247.         strings.append('                                                                        set'+name+'Delay();\n')
  248.         strings.append('\n')   
  249.         strings.append('                                                                }\n')
  250.         strings.append('\n')
  251.         strings.append('                                                        //---------------------------------------------------------------------\n')
  252.         strings.append('\n')   
  253.         strings.append('                                                                function draw'+name+'ImageTextbox() {\n')
  254.         strings.append('                                                                        // \n')
  255.         strings.append('                                                                        // draw '+name+' text box\n')
  256.         strings.append('                                                                        //\n')
  257.         strings.append('\n')
  258.         strings.append('                                                                        tmp = \'\';\n')
  259.         strings.append('                                                                        tmp = \'<div align="center" class="contol_label">\';\n')
  260. #       strings.append('                tmp += \'<span class="control_label">\';\n')
  261.         strings.append('                                                                        tmp += textBoxLabel;\n')
  262. #       strings.append('                tmp += \'</span>\';\n')
  263. #       strings.append('                                                                        tmp += \'<INPUT TYPE="text" SIZE="21" MAXLENGTH="21" Name="'+name+'ImageText" Value="" onChange="update'+name+'ImageText()" >\';\n')
  264.         strings.append('                                                                        tmp += \'<INPUT TYPE="text" SIZE="21" MAXLENGTH="21" Name="'+name+'ImageText" Value="" >\';\n')
  265.         strings.append('                                                                        tmp += \'</div>\';\n')
  266.         strings.append('                                                                        return tmp;\n')
  267.         strings.append('                                                                } \n')
  268.         strings.append('\n')
  269.         strings.append('                                                        //---------------------------------------------------------------------\n')
  270.         strings.append('\n')   
  271.         strings.append('                                                                function set'+name+'MouseOver(img) {\n')
  272.         strings.append('                                                                        if ('+name+'ClickPlay == 1) {\n')
  273.         strings.append('                                                                                img.src=\'images/animation_buttons/\' + img.name + \'_over.gif\';\n')
  274.         strings.append('                                                                        } else {\n')
  275.         strings.append('                                                                                img.src=\'images/animation_buttons/\' + img.name + \'_greyed.gif\';\n')
  276.         strings.append('                                                                        }\n')
  277.         strings.append('                                                                }\n')
  278.         strings.append('\n')
  279.         strings.append('                                                        //---------------------------------------------------------------------\n')
  280.         strings.append('\n')
  281.         strings.append('                                                                function set'+name+'MouseOut(img) {\n')
  282.         strings.append('                                                                        if ('+name+'ClickPlay == 1) {\n')
  283.         strings.append('                                                                                img.src=\'images/animation_buttons/\' + img.name + \'.gif\';\n')
  284.         strings.append('                                                                        } else {\n')
  285.         strings.append('                                                                                img.src=\'images/animation_buttons/\' + img.name + \'_greyed.gif\';\n')
  286.         strings.append('                                                                        }\n')
  287.         strings.append('                                                                }\n')
  288.         strings.append('\n')
  289.         strings.append('                                                        //---------------------------------------------------------------------\n')
  290.         strings.append('\n')   
  291.         strings.append('                                                                function draw'+name+'Button(name, alt, clickFunction, over_img) {\n')
  292.         strings.append('                                                                        // NS 4 doesn\t support image button\n')
  293.         strings.append('                                                                        var browser = navigator.appName;\n')
  294.         strings.append('                                                                        var version = parseInt(navigator.appVersion);\n')
  295.         strings.append('                                                                        \n')
  296.         strings.append('\n')
  297.         strings.append('                                                                        if ((browser==\'Netscape\') &&  (version == 4)) {     // Netscape 4\n')
  298.         strings.append('                                                                                if(name == \'play\') {\n')
  299.         strings.append('                                                                                        tmp = \'<td><a href="javascript:\'+ clickFunction+ \'"><img name="\' + name + \'" src="images/animation_buttons/\' + name + \'.gif" alt="\' + alt + \'" \';\n')
  300.         strings.append('                                                                                        tmp += \'onMouseOver=document.'+name+'Form \' + name + \'.src="images/animation_buttons/\' + name + \'_over.gif" \';\n')
  301.         strings.append('                                                                                        tmp += \'onMouseOut=document.'+name+'Form.\' + name + \'.src="images/animation_buttons/\' + name + \'.gif" \';\n')
  302.         strings.append('                                                                                } else {\n')
  303.         strings.append('                                                                                        tmp = \'<td><a href="javascript:\'+ clickFunction+ \'">')
  304.         strings.append('                                                                                        <img name="\' + name + \'" src="images/animation_buttons/\' + name + \'_greyed.gif" alt="\' + alt + \'"\'; \n')
  305.         strings.append('                                                                                }\n')
  306.         strings.append('                                                                                tmp += \'onClick="\' + clickFunction + \'" border="0"></a></td>\';\n')
  307.         strings.append('                                                                        } else {     // NOT Netscape\n')
  308.         strings.append('                                                                                if(name == \'play\') {\n')
  309.         strings.append('                                                                                        tmp = \'<td><img name="\' + name + \'" src="images/animation_buttons/\' + name + \'.gif" alt="\' + alt + \'" \';\n')
  310.         strings.append('                                                                                        tmp += \'onMouseOver=document.'+name+'Form \' + name + \'.src="images/animation_buttons/\' + name + \'_over.gif" \';\n')
  311.         strings.append('                                                                                        tmp += \'onMouseOut=document.'+name+'Form.\' + name + \'.src="images/animation_buttons/\' + name + \'.gif" \';\n')
  312.         strings.append('                                                                                } else {\n')
  313.         strings.append('                                                                                        tmp = \'<td><img name="\' + name + \'" src="images/animation_buttons/\' + name + \'_greyed.gif" alt="\' + alt + \'"\';\n')
  314.         strings.append('                                                                                        tmp += \'onMouseOver="javascript:set'+name+'MouseOver(this)"; \';\n')
  315.         strings.append('                                                                                        tmp += \'onMouseOut="javascript:set'+name+'MouseOut(this)"; \';\n')
  316.         strings.append('                                                                                }\n')
  317.         strings.append('                                                                                tmp += \'onClick="\' + clickFunction + \'"></td>\';\n')
  318.         strings.append('                                                                        }\n')
  319.         strings.append('                                                                        return tmp;\n')
  320.         strings.append('                                                                }\n')
  321.         strings.append('\n')
  322.         strings.append('                                                        //---------------------------------------------------------------------\n')
  323.         strings.append('\n')   
  324.         strings.append('                                                        function draw'+name+'ControlButtons() {\n')
  325.         strings.append('\n')
  326.         strings.append('                                                                        tmp = \'<table border="0" class="controlButtons">\';\n')
  327.         strings.append('                                                                        tmp += \'<tr>\';\n')
  328.         strings.append('                                                                        tmp += draw'+name+'Button(\'play\', \'Play\', \'start'+name+'Play()\');\n')
  329.         strings.append('                                                                        tmp += draw'+name+'Button(\'pause\', \'Pause\', \'stop'+name+'Play()\');\n')
  330.         strings.append('                                                                        tmp += draw'+name+'Button(\'first\',\'First image\', \''+name+'FirstImage()\');\n')
  331.         strings.append('                                                                        tmp += draw'+name+'Button(\'prev\', \'Previous image\', \''+name+'StepBackward()\');\n')
  332.         strings.append('                                                                        tmp += draw'+name+'Button(\'next\', \'Next image\', \''+name+'StepForward()\');\n')
  333.         strings.append('                                                                        tmp += draw'+name+'Button(\'last\', \'Last image\', \''+name+'LastImage()\');\n')
  334.         strings.append('                                                                        tmp += \'<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="controlLabelText">Speed:</span></td>\';\n')
  335.         strings.append('                                                                        tmp += draw'+name+'Button(\'slowdown\', \'Slower\', \''+name+'Slower()\');\n')
  336.         strings.append('                                                                        tmp += draw'+name+'Button(\'speedup\', \'Faster\', \''+name+'Faster()\');\n')
  337.         strings.append('                                                                        tmp += draw'+name+'Button(\'speedreset\', \'Reset\', \''+name+'SpeedReset()\');\n')
  338.         strings.append('                                                                        tmp += \'<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>\';\n')
  339.         strings.append('                                                                        tmp += \'<td>\';\n')
  340.         strings.append('                                                                        tmp += draw'+name+'ImageTextbox();\n')
  341.         strings.append('                                                                        tmp += \'</td>\';\n')
  342.         strings.append('                                                                        tmp += \'</tr>\';\n')
  343.         strings.append('                                                                        tmp += \'</table>\';\n')
  344. #       strings.append('                                                                        tmp += \'<br>\';\n')
  345.         strings.append('                                                                        return tmp;\n')
  346.         strings.append('\n')
  347.         strings.append('                                                                }\n')
  348.         strings.append('\n')
  349.         strings.append('                                                        //---------------------------------------------------------------------\n')
  350.         strings.append('\n')       
  351.         strings.append('                                                                function draw'+name+'Image() {\n')
  352.         strings.append('                                                                        tmp += \'<IMG NAME="'+name+'Animation" \';\n')
  353.         strings.append('                                                                        tmp += \'SRC="\';\n')
  354.         strings.append('                                                                        tmp +=  '+name+'FirstImageURL;\n')
  355.         strings.append('                                                                        tmp +=  \' " ALT="Loading" BORDER="0" \';\n')
  356.         strings.append('                                                                        tmp += \' >\';\n')
  357.         strings.append('                                                                        tmp += \'<BR>\';\n')
  358.         strings.append('                                                                        return tmp;\n')
  359.         strings.append('                                                                } \n')
  360.         strings.append('\n')
  361.         strings.append('                                                        //--------------------------------------------------------------------------\n')
  362.        
  363.         strings.append('                                                        //     e m b e d   c o d e\n')
  364.         strings.append('                                                        //--------------------------------------------------------------------------\n')
  365.         strings.append('\n')
  366.         strings.append('                                                                // write '+name+' FORM code  to browser\n')
  367.         strings.append('\n')
  368.         strings.append('                                                                tmp = \'<FORM NAME="'+name+'Form">\';\n')
  369.         strings.append('                                                                tmp += draw'+name+'Image();\n')
  370.         strings.append('                                                                tmp += \'<br>\';\n')
  371.         strings.append('                                                                tmp += draw'+name+'ControlButtons();\n')
  372.         strings.append('                                                                tmp += \'</FORM>\';\n')
  373.         strings.append('                                                                document.write (tmp);\n')
  374.         strings.append('\n')
  375.         strings.append('                                                                //-->\n')
  376.         strings.append('                                                                </SCRIPT>\n')
  377.         result = ''.join(strings)
  378.         return result
  379.  
  380.  
  381. ######################################################################
  382. #    create looping image array       8.26.2005
  383. ######################################################################
  384.  
  385. # code based on Canadian Meteorological Office Page
  386.  
  387. def get_image_array(path,filetype,name,first):
  388.         """
  389.         Create a JavaScript image array and pass it back to calling function
  390.         Input: directory path of images, filetype to include
  391.         Output: string representation of array for inclusion in JS code block
  392.         """
  393.  
  394.         files = glob.glob1(path,filetype)
  395.         files.sort()
  396.        
  397.         # enforce initial capitalization of name
  398.         name = string.capitalize(name)
  399.        
  400.         # count number of files
  401.         num_files = count_files(path,filetype)
  402.        
  403.         # file number index for generating array
  404.         image_number=0
  405.        
  406.         # hold strings for constructing array code
  407.         strings = []
  408.         strings.append('                                                <SCRIPT language="JavaScript">\n')
  409.         strings.append('                                                <!--\n')
  410.         # build array header
  411.         strings.append('                                                    // create '+name+' image array ------------------------------------------\n')
  412.         strings.append('\n')
  413.         strings.append('                                                    // '+name+'ImageTot: total images ('+name+')\n')
  414.         strings.append('                                                    '+name+'ImageTot='+str(num_files)+';\n')
  415.         strings.append('\n')
  416.         # set max pause
  417.         strings.append('                                                    // max'+name+'Pause: repeat final frame n times before restarting loop\n')
  418.         strings.append('                                                    max'+name+'Pause = '+str(num_files-1)+';\n')               
  419.         strings.append('\n')
  420.         # determine which image to show on loading
  421.         if first:
  422.                 strings.append('                                                    '+name+'FirstImageURL = \"'+get_first_image(path,filetype)+'\";\n')
  423.         else:
  424.                 strings.append('                                                    '+name+'FirstImageURL = \"'+get_last_image(path,filetype)+'\";\n')
  425.         strings.append('\n')
  426.         strings.append('                                                    '+name+'Frames = new Array();\n')
  427.         strings.append('\n')
  428.         strings.append('                                                    // '+name+' array elements ------------------------------------------\n')
  429.         strings.append('\n')
  430.                        
  431.         # iterate through files in directory and build array code
  432.         for file in files:
  433.                        strings.append('                                                         '+name+'ImagesComplete['+str(image_number)+'] = \"' + url_from_path(path) +'/'+ get_thumbnail(file) + '\";\n')
  434.                        strings.append('                                                         '+name+'Frames['+str(image_number)+'] = new Object();\n')
  435.                        strings.append('                                                         '+name+'Frames['+str(image_number)+'].path  = \"' + url_from_path(path) +'/'+ get_thumbnail(file) + '\";\n')
  436.                        strings.append('                                                         '+name+'Frames['+str(image_number)+'].date  = \"''\";\n')
  437. #                      strings.append('                                                         '+name+'Frames['+str(image_number)+'].date  = \"'+get_timestamp(file) +'\";\n')
  438.                        strings.append('\n')
  439.                        image_number +=1
  440.        
  441.         else: strings.append('                                                  // ERROR: no image files found\n')
  442.         strings.append('\n')
  443.         strings.append('                                                        //-->\n')
  444.         strings.append('                                                </SCRIPT>\n')
  445.         results = "".join(strings)
  446.         return results
  447.  
  448.  
  449.  
  450.  
  451. #######################################################################        
  452. #   filesystem navigation routines
  453. #######################################################################
  454.                
  455. def get_files(path):
  456.         """returns files in the specified directory"""
  457.         files=[]
  458.         tmp = os.listdir(os.path.abspath(path)) # includes absoulte path
  459.         #tmp = os.listdir(path) # does NOT include absolute path
  460.         for a in tmp:
  461.                 if os.path.isfile(a):
  462.                         files.append(a)
  463.         return files   
  464.  
  465. def get_dirs(path):
  466.         """returns subdirectories in the specified directory"""
  467.         dirs=[]
  468.         #tmp = os.listdir(os.path.abspath(path)) # includes absoulte path
  469.         tmp = os.listdir(path) # does NOT include absolute path
  470.         for a in tmp:
  471.                 if os.path.isdir(a):
  472.                         dirs.append(a)
  473.         return dirs    
  474.        
  475.        
  476. ############################################
  477. #    loop routines
  478. ############################################
  479.  
  480. def get_filetype(path):
  481.         # the first filetype is default
  482.         file_types = ['*.png','*.gif','*.jpg']
  483.         files = []
  484.         for file_type in file_types:
  485.                 # number of files in directory
  486.                 files.append((file_type,glob.glob1(path,file_type)))
  487.         def cmp_(a,b):
  488.                 return cmp(len(a[1]), len(b[1]))
  489.         files.sort(cmp_)
  490.         files.reverse()
  491.        
  492.         return files[0][0]
  493.  
  494.  
  495. ############################################
  496. #    loop routines
  497. ############################################
  498.  
  499. def is_loop(path):
  500.         """ returns true/false if loop is/is not a loopable asset
  501.         and is completely agnostic of file type """
  502.         file_types = ['*.gif','*.jpg','*.png']
  503.         num_files = []
  504.         for file_type in file_types:
  505.                 # number of files in directory
  506.                 files = glob.glob1(path,file_type)
  507.                 num_files.append(len(files))   
  508.         if max(num_files) >= 2:
  509.                 return 1
  510.         else:
  511.                 return 0
  512.  
  513. ############################################
  514. #    return thumbnail image
  515. ############################################
  516.  
  517. def get_thumbnail(path):
  518.         return path    
  519.        
  520. ############################################
  521. #    return timestamp
  522. ############################################
  523.  
  524. def get_timestamp(file):
  525.         return ''
  526.  
  527. ############################################
  528. #    return help info
  529. ############################################
  530.  
  531. def help_string():
  532.         strings = []
  533.         strings.append('\n')
  534.         strings.append('Input query string as: <code>http://www.atmos.washington.edu/~carey/loop.psp<span color="9999dd">?url=<directory relative to atmos web server root>&title=<title string here (no punctuation, spaces allowed)</span></code>\n')
  535.         strings.append('Ex: http://www.atmos.washington.edu/~carey/loop.psp?url=~carey/images/test_loop&title=Test loop sequence \n')
  536.  
  537.         result = ''.join(strings)
  538.         return result
  539.  
  540. ############################################
  541. #    return error message
  542. ############################################
  543.  
  544. def get_error(type):
  545.         # returns formatted error - 'ype' specifies which message to display
  546.         if type == 1:
  547.                 # URL key missing
  548.                 error_message = 'URL key missing'
  549.                 error_detail = 'Input query string as: <code>http://www.atmos.washington.edu/~carey/loop.psp<font color="dd9999">?url=</font><font color="#9999dd"><em>directory_name</em></font><font color="#dd9999">&title=</font><font color="#9999dd"><em>title_string</em></font></code>'
  550.         elif type == 2:
  551.                 # URL value empty
  552.                 error_message = 'URL value is an empty string'
  553.                 error_detail = 'Input query string as: <code>http://www.atmos.washington.edu/~carey/loop.psp<font color="dd9999">?url=</font><font color="#9999dd"><em>directory_name</em></font><font color="#dd9999">&title=</font><font color="#9999dd"><em>title_string</em></font></code>'
  554.         elif type == 3:
  555.                 # invalid loop directory
  556.                 error_message = 'Specified directory is invalid (or does not exist)'
  557.                 error_detail = 'Input query string as: <code>http://www.atmos.washington.edu/~carey/loop.psp<font color="dd9999">?url=</font><font color="#9999dd"><em>directory_name</em></font><font color="#dd9999">&title=</font><font color="#9999dd"><em>title_string</em></font></code>'
  558.         elif type ==4:
  559.                 # directory content not loopable
  560.                 error_message = 'Specified directory does not contain loopable content'
  561.                 error_detail = 'Input query string as: <code>http://www.atmos.washington.edu/~carey/loop.psp<font color="dd9999">?url=</font><font color="#9999dd"><em>directory_name</em></font><font color="#dd9999">&title=</font><font color="#9999dd"><em>title_string</em></font></code>'
  562.         else:
  563.                 # uspecified error
  564.                 error_message = 'Unspecified error'
  565.                 error_detail = 'Input query string as: <code>http://www.atmos.washington.edu/~carey/loop.psp<font color="dd9999">?url=</font><font color="#9999dd"><em>directory_name</em></font><font color="#dd9999">&title=</font><font color="#9999dd"><em>title_string</em></font></code>' # format error output
  566.         strings = []
  567.         strings.append('<table class = \'grayBorder\' cellpadding = \'6\'>\n')
  568.         strings.append('        <tr valign=\'middle\'>\n')
  569.         strings.append('                <td  width="60" class="grayBorder" bgcolor="#cc3333">\n')
  570.         strings.append('                        <span class=\'giant\' width="60" align=\'center\'><center>&nbsp;&nbsp;!&nbsp;&nbsp;</center></span>\n')
  571.         strings.append('                </td>\n')
  572.         strings.append('                <td width=\'400\'>\n')
  573.         strings.append('                        <span class=\'error_message\'><p>\n')
  574.         strings.append('                        '+error_message+'\n')
  575.         strings.append('                        </span>\n')
  576.         strings.append('                        <p>\n')
  577.         strings.append('                        <span class=\'error_detail\'>\n')      
  578.         strings.append('                        '+error_detail+'<br>\n')       
  579.         strings.append('                        </span>\n')
  580.         strings.append('                </td>\n')
  581.         strings.append('        </tr>\n')
  582.         strings.append('</table>\n')
  583.        
  584.         error_text = ''.join(strings)
  585.        
  586.         return error_text

Raw Paste


Login or Register to edit or fork this paste. It's free.