| OLD | NEW | 
|     1 #!/usr/bin/env python |     1 #!/usr/bin/env python | 
|     2 # |     2 # | 
|     3 # Copyright 2007 Google Inc. |     3 # Copyright 2007 Google Inc. | 
|     4 # |     4 # | 
|     5 # Licensed under the Apache License, Version 2.0 (the "License"); |     5 # Licensed under the Apache License, Version 2.0 (the "License"); | 
|     6 # you may not use this file except in compliance with the License. |     6 # you may not use this file except in compliance with the License. | 
|     7 # You may obtain a copy of the License at |     7 # You may obtain a copy of the License at | 
|     8 # |     8 # | 
|     9 #     http://www.apache.org/licenses/LICENSE-2.0 |     9 #     http://www.apache.org/licenses/LICENSE-2.0 | 
|    10 # |    10 # | 
| (...skipping 16 matching lines...) Expand all  Loading... | 
|    27  |    27  | 
|    28 It is important for Git/Mercurial users to specify a tree/node/branch to diff |    28 It is important for Git/Mercurial users to specify a tree/node/branch to diff | 
|    29 against by using the '--rev' option. |    29 against by using the '--rev' option. | 
|    30 """ |    30 """ | 
|    31 # This code is derived from appcfg.py in the App Engine SDK (open source), |    31 # This code is derived from appcfg.py in the App Engine SDK (open source), | 
|    32 # and from ASPN recipe #146306. |    32 # and from ASPN recipe #146306. | 
|    33  |    33  | 
|    34 import cookielib |    34 import cookielib | 
|    35 import getpass |    35 import getpass | 
|    36 import logging |    36 import logging | 
|    37 import md5 |  | 
|    38 import mimetypes |    37 import mimetypes | 
|    39 import optparse |    38 import optparse | 
|    40 import os |    39 import os | 
|    41 import re |    40 import re | 
|    42 import socket |    41 import socket | 
|    43 import subprocess |    42 import subprocess | 
|    44 import sys |    43 import sys | 
|    45 import urllib |    44 import urllib | 
|    46 import urllib2 |    45 import urllib2 | 
|    47 import urlparse |    46 import urlparse | 
|    48  |    47  | 
 |    48 # Work-around for md5 module deprecation warning in python 2.5+: | 
 |    49 try:  | 
 |    50   # Try to load hashlib (python 2.5+) | 
 |    51   from hashlib import md5 | 
 |    52 except ImportError: | 
 |    53   # If hashlib cannot be imported, load md5.new instead. | 
 |    54   from md5 import new as md5 | 
 |    55  | 
|    49 try: |    56 try: | 
|    50   import readline |    57   import readline | 
|    51 except ImportError: |    58 except ImportError: | 
|    52   pass |    59   pass | 
|    53  |    60  | 
|    54 # The logging verbosity: |    61 # The logging verbosity: | 
|    55 #  0: Errors only. |    62 #  0: Errors only. | 
|    56 #  1: Status messages. |    63 #  1: Status messages. | 
|    57 #  2: Info logs. |    64 #  2: Info logs. | 
|    58 #  3: Debug logs. |    65 #  3: Debug logs. | 
| (...skipping 609 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   668       file_too_large = False |   675       file_too_large = False | 
|   669       if is_base: |   676       if is_base: | 
|   670         type = "base" |   677         type = "base" | 
|   671       else: |   678       else: | 
|   672         type = "current" |   679         type = "current" | 
|   673       if len(content) > MAX_UPLOAD_SIZE: |   680       if len(content) > MAX_UPLOAD_SIZE: | 
|   674         print ("Not uploading the %s file for %s because it's too large." % |   681         print ("Not uploading the %s file for %s because it's too large." % | 
|   675                (type, filename)) |   682                (type, filename)) | 
|   676         file_too_large = True |   683         file_too_large = True | 
|   677         content = "" |   684         content = "" | 
|   678       checksum = md5.new(content).hexdigest() |   685       checksum = md5(content).hexdigest() | 
|   679       if options.verbose > 0 and not file_too_large: |   686       if options.verbose > 0 and not file_too_large: | 
|   680         print "Uploading %s file for %s" % (type, filename) |   687         print "Uploading %s file for %s" % (type, filename) | 
|   681       url = "/%d/upload_content/%d/%d" % (int(issue), int(patchset), file_id) |   688       url = "/%d/upload_content/%d/%d" % (int(issue), int(patchset), file_id) | 
|   682       form_fields = [("filename", filename), |   689       form_fields = [("filename", filename), | 
|   683                      ("status", status), |   690                      ("status", status), | 
|   684                      ("checksum", checksum), |   691                      ("checksum", checksum), | 
|   685                      ("is_binary", str(is_binary)), |   692                      ("is_binary", str(is_binary)), | 
|   686                      ("is_current", str(not is_base)), |   693                      ("is_current", str(not is_base)), | 
|   687                     ] |   694                     ] | 
|   688       if file_too_large: |   695       if file_too_large: | 
| (...skipping 617 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1306     file = open(options.description_file, 'r') |  1313     file = open(options.description_file, 'r') | 
|  1307     description = file.read() |  1314     description = file.read() | 
|  1308     file.close() |  1315     file.close() | 
|  1309   if description: |  1316   if description: | 
|  1310     form_fields.append(("description", description)) |  1317     form_fields.append(("description", description)) | 
|  1311   # Send a hash of all the base file so the server can determine if a copy |  1318   # Send a hash of all the base file so the server can determine if a copy | 
|  1312   # already exists in an earlier patchset. |  1319   # already exists in an earlier patchset. | 
|  1313   base_hashes = "" |  1320   base_hashes = "" | 
|  1314   for file, info in files.iteritems(): |  1321   for file, info in files.iteritems(): | 
|  1315     if not info[0] is None: |  1322     if not info[0] is None: | 
|  1316       checksum = md5.new(info[0]).hexdigest() |  1323       checksum = md5(info[0]).hexdigest() | 
|  1317       if base_hashes: |  1324       if base_hashes: | 
|  1318         base_hashes += "|" |  1325         base_hashes += "|" | 
|  1319       base_hashes += checksum + ":" + file |  1326       base_hashes += checksum + ":" + file | 
|  1320   form_fields.append(("base_hashes", base_hashes)) |  1327   form_fields.append(("base_hashes", base_hashes)) | 
|  1321   # If we're uploading base files, don't send the email before the uploads, so |  1328   # If we're uploading base files, don't send the email before the uploads, so | 
|  1322   # that it contains the file status. |  1329   # that it contains the file status. | 
|  1323   if options.send_mail and options.download_base: |  1330   if options.send_mail and options.download_base: | 
|  1324     form_fields.append(("send_mail", "1")) |  1331     form_fields.append(("send_mail", "1")) | 
|  1325   if not options.download_base: |  1332   if not options.download_base: | 
|  1326     form_fields.append(("content_upload", "1")) |  1333     form_fields.append(("content_upload", "1")) | 
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1364   try: |  1371   try: | 
|  1365     RealMain(sys.argv) |  1372     RealMain(sys.argv) | 
|  1366   except KeyboardInterrupt: |  1373   except KeyboardInterrupt: | 
|  1367     print |  1374     print | 
|  1368     StatusUpdate("Interrupted.") |  1375     StatusUpdate("Interrupted.") | 
|  1369     sys.exit(1) |  1376     sys.exit(1) | 
|  1370  |  1377  | 
|  1371  |  1378  | 
|  1372 if __name__ == "__main__": |  1379 if __name__ == "__main__": | 
|  1373   main() |  1380   main() | 
| OLD | NEW |