diff roundup/cgi/actions.py @ 6938:075d8c6626b0

flake8 fixes
author John Rouillard <rouilj@ieee.org>
date Thu, 08 Sep 2022 14:23:35 -0400
parents fe0091279f50
children 9fe29682dca2
line wrap: on
line diff
--- a/roundup/cgi/actions.py	Thu Sep 08 14:06:22 2022 -0400
+++ b/roundup/cgi/actions.py	Thu Sep 08 14:23:35 2022 -0400
@@ -1,20 +1,21 @@
-import re, cgi, time, csv, codecs, sys
+import cgi
+import codecs
+import csv
+import re
+import sys
+from datetime import timedelta
 
 from roundup import hyperdb, token, date, password
 from roundup.actions import Action as BaseAction
-from roundup.i18n import _
+from roundup.anypy import urllib_
+from roundup.anypy.html import html_escape
+from roundup.anypy.strings import StringIO
 from roundup.cgi import exceptions, templating
-from roundup.mailgw import uidFromAddress
-from roundup.rate_limit import Gcra, RateLimit
 from roundup.cgi.timestamp import Timestamped
 from roundup.exceptions import Reject, RejectRaw
-from roundup.anypy import urllib_
-from roundup.anypy.strings import StringIO
-
-
-from roundup.anypy.html import html_escape
-
-from datetime import timedelta
+from roundup.i18n import _
+from roundup.mailgw import uidFromAddress
+from roundup.rate_limit import Gcra, RateLimit
 
 # Also add action to client.py::Client.actions property
 __all__ = ['Action', 'ShowAction', 'RetireAction', 'RestoreAction',
@@ -23,6 +24,7 @@
            'ConfRegoAction', 'RegisterAction', 'LoginAction', 'LogoutAction',
            'NewItemAction', 'ExportCSVAction', 'ExportCSVWithIdAction']
 
+
 class Action:
     def __init__(self, client):
         self.client = client
@@ -135,11 +137,11 @@
         allowed_pattern = re.compile(r'''^[A-Za-z0-9@:/?._~%!$&'()*+,;=-]*$''')
 
         if not allowed_pattern.match(parsed_url_tuple.path):
-           raise ValueError(self._("Path component (%(url_path)s) in %(url)s "
-                                   "is not properly escaped") % info)
+            raise ValueError(self._("Path component (%(url_path)s) in %(url)s "
+                                    "is not properly escaped") % info)
 
         if not allowed_pattern.match(parsed_url_tuple.params):
-           raise ValueError(self._("Params component (%(url_params)s) in %(url)s is not properly escaped") % info)
+            raise ValueError(self._("Params component (%(url_params)s) in %(url)s is not properly escaped") % info)
 
         if not allowed_pattern.match(parsed_url_tuple.query):
             raise ValueError(self._("Query component (%(url_query)s) in %(url)s is not properly escaped") % info)
@@ -239,7 +241,7 @@
 
         # check permission
         if not self.hasPermission('Retire', classname=self.classname,
-                itemid=itemid):
+                                  itemid=itemid):
             raise exceptions.Unauthorised(self._(
                 'You do not have permission to retire %(class)s'
             ) % {'class': self.classname})
@@ -351,9 +353,10 @@
                         if queryname != self.db.query.get(qid, 'name'):
                             continue
                         # whoops we found a duplicate; report error and return
-                        message = _("You already own a query named '%s'. "
-                                    "Please choose another name.") % \
-                                    (queryname)
+                        message = _(
+                            "You already own a query named '%s'. "
+                            "Please choose another name.") % (queryname)
+
                         self.client.add_error_message(message)
                         return
 
@@ -374,7 +377,7 @@
                             continue
                         if not self.hasPermission('Edit', 'query', itemid=qid):
                             raise exceptions.Unauthorised(self._(
-                            "You do not have permission to edit queries"))
+                                "You do not have permission to edit queries"))
                         self.db.query.set(qid, klass=self.classname,
                                           url=url, name=queryname)
                 else:
@@ -424,11 +427,11 @@
                 if isinstance(prop, hyperdb.String):
                     v = self.form[key].value
                     # If this ever has unbalanced quotes, hilarity will ensue
-                    l = token.token_split(v)
-                    if len(l) != 1 or l[0] != v:
+                    tokens = token.token_split(v)
+                    if len(tokens) != 1 or tokens[0] != v:
                         self.form.value.remove(self.form[key])
                         # replace the single value with the split list
-                        for v in l:
+                        for v in tokens:
                             self.form.value.append(cgi.MiniFieldStorage(key, v))
                 elif isinstance(prop, hyperdb.Number):
                     try:
@@ -505,7 +508,7 @@
         line = 0
         for values in reader:
             line += 1
-            if line == 1: continue
+            if line == 1: continue                                # noqa: E701
             # skip property names header
             if values == props:
                 continue
@@ -538,8 +541,8 @@
             # confirm correct weight
             if len(props_without_id) != len(values):
                 self.client.add_error_message(
-                    self._('Not enough values on line %(line)s') % \
-                    {'line':line})
+                    self._('Not enough values on line %(line)s') % {
+                        'line': line})
                 return
 
             # extract the new values
@@ -547,7 +550,8 @@
             for name, value in zip(props_without_id, values):
                 # check permission to edit this property on this item
                 if exists and not self.hasPermission('Edit', itemid=itemid,
-                                     classname=self.classname, property=name):
+                                                     classname=self.classname,
+                                                     property=name):
                     raise exceptions.Unauthorised(self._(
                         'You do not have permission to edit %(class)s'
                     ) % {'class': self.classname})
@@ -812,9 +816,9 @@
         message = self._(
             'Edit Error: someone else has edited this %(klass)s (%(props)s). '
             'View <a target="_blank" href="%(klass)s%(id)s">their changes</a> '
-            'in a new window.') % { "klass": self.classname,
-                                    "props": ', '.join(props),
-                                    "id": self.nodeid}
+            'in a new window.') % {"klass": self.classname,
+                                   "props": ', '.join(props),
+                                   "id": self.nodeid}
         self.client.add_error_message(message, escape=False)
         return
 
@@ -1050,7 +1054,7 @@
             <script nonce="%s" type="text/javascript">
             window.setTimeout('window.location = "%s"', 1000);
             </script>''' % (message, url, message,
-                          self.client.client_nonce, url)
+                            self.client.client_nonce, url)
 
 
 class ConfRegoAction(RegoCommon):
@@ -1101,7 +1105,8 @@
             # handle the create now
             try:
                 # when it hits the None element, it'll set self.nodeid
-                messages = self._editnodes(props, links)
+                # execute for side effect
+                messages = self._editnodes(props, links)   # noqa: F841
             except (ValueError, KeyError, IndexError, Reject) as message:
                 escape = not isinstance(message, RejectRaw)
                 # these errors might just be indicative of user dumbness
@@ -1126,7 +1131,9 @@
         check_user = self.db.config['WEB_REGISTRATION_PREVALIDATE_USERNAME']
         if check_user:
             try:
-                user_found = self.db.user.lookup(user_props['username'])
+                # verify user exists
+                user_found = self.db.user.lookup(user_props['username']) \
+                             # noqa: F841
                 # if user is found reject the request.
                 raise Reject(
                     _("Username '%s' is already used.") % user_props['username'])
@@ -1165,7 +1172,8 @@
 %(url)s?@action=confrego&otk=%(otk)s
 
 """) % {'name': user_props['username'], 'tracker': tracker_name,
-       'url': self.base, 'otk': otk, 'tracker_email': tracker_email}
+        'url': self.base, 'otk': otk, 'tracker_email': tracker_email}  \
+        # noqa: E122
         else:
             subject = _('Complete your registration to %s') % (tracker_name)
             body = _("""To complete your registration of the user "%(name)s" with
@@ -1174,7 +1182,7 @@
 %(url)s?@action=confrego&otk=%(otk)s
 
 """) % {'name': user_props['username'], 'tracker': tracker_name,
-       'url': self.base, 'otk': otk}
+            'url': self.base, 'otk': otk}  # noqa: E122
         if not self.client.standard_message([user_props['address']], subject,
                                             body,
                                             (tracker_name, tracker_email)):
@@ -1278,13 +1286,13 @@
                 query = {}
                 pass
 
-            redirect_url = urllib_.urlunparse((redirect_url_tuple.scheme,
-                                               redirect_url_tuple.netloc,
-                                               redirect_url_tuple.path,
-                                               redirect_url_tuple.params,
-                                               urllib_.urlencode(list(sorted(query.items())), doseq=True),
-                                               redirect_url_tuple.fragment)
-            )
+            redirect_url = urllib_.urlunparse(
+                (redirect_url_tuple.scheme,
+                 redirect_url_tuple.netloc,
+                 redirect_url_tuple.path,
+                 redirect_url_tuple.params,
+                 urllib_.urlencode(list(sorted(query.items())), doseq=True),
+                 redirect_url_tuple.fragment))
 
         try:
             # Implement rate limiting of logins by login name.
@@ -1326,13 +1334,13 @@
             if '__came_from' in self.form:
                 # set a new error
                 query['@error_message'] = err.args
-                redirect_url = urllib_.urlunparse((redirect_url_tuple.scheme,
-                                                   redirect_url_tuple.netloc,
-                                                   redirect_url_tuple.path,
-                                                   redirect_url_tuple.params,
-                                                   urllib_.urlencode(list(sorted(query.items())), doseq=True),
-                                                   redirect_url_tuple.fragment )
-                )
+                redirect_url = urllib_.urlunparse(
+                    (redirect_url_tuple.scheme,
+                     redirect_url_tuple.netloc,
+                     redirect_url_tuple.path,
+                     redirect_url_tuple.params,
+                     urllib_.urlencode(list(sorted(query.items())), doseq=True),
+                     redirect_url_tuple.fragment))
                 raise exceptions.Redirect(redirect_url)
             # if no __came_from, send back to base url with error
             return
@@ -1347,7 +1355,9 @@
 
         # If we came from someplace, go back there
         if '__came_from' in self.form:
-            query['@ok_message'] = _("Welcome %(username)s!") %{"username" : self.client.user, }       # adds welcome message to user when logged in
+            # add welcome message to user when logged in
+            query['@ok_message'] = _("Welcome %(username)s!") % {
+                "username": self.client.user, }
             redirect_url = urllib_.urlunparse((redirect_url_tuple.scheme,
                                                redirect_url_tuple.netloc,
                                                redirect_url_tuple.path,
@@ -1366,7 +1376,7 @@
             # Prevents guessing of valid usernames by detecting
             # delay caused by checking password only on valid
             # users.
-            _discard = self.verifyPassword("2", password)
+            _discard = self.verifyPassword("2", password)          # noqa: F841
             raise exceptions.LoginError(self._('Invalid login'))
 
         # verify the password
@@ -1502,7 +1512,7 @@
                     return ""
                 else:
                     if (arg.local(self.db.getUserTimezone()).pretty('%H:%M') ==
-                        '00:00'):
+                            '00:00'):
                         fmt = '%Y-%m-%d'
                     else:
                         fmt = '%Y-%m-%d %H:%M'
@@ -1701,8 +1711,8 @@
         # different Action interfaces, we have to look at the arguments to
         # figure out how to complete construction.
         if (len(args) == 1 and
-            hasattr(args[0], '__class__') and
-            args[0].__class__.__name__ == 'Client'):
+                hasattr(args[0], '__class__') and
+                args[0].__class__.__name__ == 'Client'):
             self.cgi = True
             self.execute = self.execute_cgi
             self.client = args[0]

Roundup Issue Tracker: http://roundup-tracker.org/