Merge branch 'main' into avm99963-monorail

Merged commit 34d8229ae2b51fb1a15bd208e6fe6185c94f6266

GitOrigin-RevId: 7ee0917f93a577e475f8e09526dd144d245593f4
diff --git a/project/projectadmin.py b/project/projectadmin.py
index a6e0d3e..042b198 100644
--- a/project/projectadmin.py
+++ b/project/projectadmin.py
@@ -1,7 +1,6 @@
-# Copyright 2016 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file or at
-# https://developers.google.com/open-source/licenses/bsd
+# Copyright 2016 The Chromium Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
 
 """Servlets for project administration main subtab."""
 from __future__ import print_function
@@ -16,7 +15,6 @@
 
 from businesslogic import work_env
 from framework import emailfmt
-from framework import flaskservlet
 from framework import framework_helpers
 from framework import gcs_helpers
 from framework import permissions
@@ -37,7 +35,7 @@
   """A page with project configuration options for the Project Owner(s)."""
 
   _PAGE_TEMPLATE = 'project/project-admin-page.ezt'
-  _MAIN_TAB_MODE = flaskservlet.FlaskServlet.MAIN_TAB_ADMIN
+  _MAIN_TAB_MODE = servlet.Servlet.MAIN_TAB_ADMIN
 
   def AssertBasePermission(self, mr):
     super(ProjectAdmin, self).AssertBasePermission(mr)
@@ -122,14 +120,14 @@
 
     logo_gcs_id = ''
     logo_file_name = ''
-    if 'logo' in post_data and not isinstance(post_data['logo'], string_types):
+    if 'logo' in post_data and post_data['logo'].filename != '':
       item = post_data['logo']
       logo_file_name = item.filename
       try:
         logo_gcs_id = gcs_helpers.StoreLogoInGCS(
-            logo_file_name, item.value, mr.project.project_id)
-      except gcs_helpers.UnsupportedMimeType, e:
-        mr.errors.logo = e.message
+            logo_file_name, item.read(), mr.project.project_id)
+      except gcs_helpers.UnsupportedMimeType as e:
+        mr.errors.logo = str(e)
     elif mr.project.logo_gcs_id and mr.project.logo_file_name:
       logo_gcs_id = mr.project.logo_gcs_id
       logo_file_name = mr.project.logo_file_name
@@ -189,8 +187,8 @@
 
     return summary, description
 
-  # def GetProjectAdminPage(self, **kwargs):
-  #   return self.handler(**kwargs)
+  def GetProjectAdminPage(self, **kwargs):
+    return self.handler(**kwargs)
 
-  # def PostProjectAdminPage(self, **kwargs):
-  #   return self.handler(**kwargs)
+  def PostProjectAdminPage(self, **kwargs):
+    return self.handler(**kwargs)