#28769: Utilize 'x or y' in place of 'x if x else y'
-------------------------------------+-------------------------------------
     Reporter:  Дилян Палаузов       |                    Owner:  nobody
         Type:                       |                   Status:  new
  Cleanup/optimization               |
    Component:  Core (Other)         |                  Version:  1.11
     Severity:  Normal               |               Resolution:
     Keywords:                       |             Triage Stage:
                                     |  Unreviewed
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------

Comment (by Дилян Палаузов):

 This is already inconsistent in the code:
 {{{
 django/db/migrations/operations/models.py:48:        self.options =
 options or {}
 django/db/migrations/operations/models.py:49:        self.bases = bases or
 (models.Model,)
 django/db/migrations/operations/special.py:17:
 self.database_operations = database_operations or []
 django/db/migrations/operations/special.py:18:
 self.state_operations = state_operations or []
 django/db/migrations/operations/special.py:75:
 self.state_operations = state_operations or []
 django/db/migrations/operations/special.py:76:        self.hints = hints
 or {}
 django/db/migrations/operations/special.py:153:        self.hints = hints
 or {}
 django/db/migrations/state.py:88:        self.models = models or {}
 django/db/migrations/state.py:90:        self.real_apps = real_apps or []
 django/db/migrations/state.py:363:        self.options = options or {}
 django/db/migrations/state.py:365:        self.bases = bases or
 (models.Model, )
 django/db/migrations/state.py:366:        self.managers = managers or []
 }}}

 Adding ternary expression to avoid using incorrectly or/and is fine, but
 it was not added to start using "x if x else y" instead of "x or y".

 There are more places which can be shortened this way:
 {{{
 diff --git a/django/contrib/sessions/backends/file.py
 b/django/contrib/sessions/backends/file.py
 --- a/django/contrib/sessions/backends/file.py
 +++ b/django/contrib/sessions/backends/file.py
 @@ -73,10 +73,7 @@ class SessionStore(SessionBase):
          """
          Return the expiry time of the file storing the session's content.
          """
 -        expiry = session_data.get('_session_expiry')
 -        if not expiry:
 -            expiry = self._last_modification() +
 datetime.timedelta(seconds=settings.SESSION_COOKIE_AGE)
 -        return expiry
 +        return session_data.get('_session_expiry') or
 self._last_modification() +
 datetime.timedelta(seconds=settings.SESSION_COOKIE_AGE)

      def load(self):
          session_data = {}
 diff --git a/django/core/handlers/wsgi.py b/django/core/handlers/wsgi.py
 --- a/django/core/handlers/wsgi.py
 +++ b/django/core/handlers/wsgi.py
 @@ -66,13 +66,11 @@ class LimitedStream:
  class WSGIRequest(HttpRequest):
      def __init__(self, environ):
          script_name = get_script_name(environ)
 -        path_info = get_path_info(environ)
 -        if not path_info:
 +        path_info = get_path_info(environ) or '/'
              # Sometimes PATH_INFO exists, but is empty (e.g. accessing
              # the SCRIPT_NAME URL without a trailing slash). We really
 need to
              # operate as if they'd requested '/'. Not amazingly nice to
 force
              # the path like this, but should be harmless.
 -            path_info = '/'
          self.environ = environ
          self.path_info = path_info
          # be careful to only replace the first slash in the path because
 of
 diff --git a/django/core/management/commands/makemessages.py
 b/django/core/management/commands/makemessages.py
 --- a/django/core/management/commands/makemessages.py
 +++ b/django/core/management/commands/makemessages.py
 @@ -501,9 +501,7 @@ class Command(BaseCommand):
                              locale_dir = path
                              break
                      if not locale_dir:
 -                        locale_dir = self.default_locale_path
 -                    if not locale_dir:
 -                        locale_dir = NO_LOCALE_DIR
 +                        locale_dir = self.default_locale_path or
 NO_LOCALE_DIR
 all_files.append(self.translatable_file_class(dirpath, filename,
 locale_dir))
          return sorted(all_files)

 diff --git a/django/db/backends/sqlite3/creation.py
 b/django/db/backends/sqlite3/creation.py
 --- a/django/db/backends/sqlite3/creation.py
 +++ b/django/db/backends/sqlite3/creation.py
 @@ -12,9 +12,7 @@ class DatabaseCreation(BaseDatabaseCreation):
          return database_name == ':memory:' or 'mode=memory' in
 database_name

      def _get_test_db_name(self):
 -        test_database_name =
 self.connection.settings_dict['TEST']['NAME']
 -        if not test_database_name:
 -            test_database_name = ':memory:'
 +        test_database_name =
 self.connection.settings_dict['TEST']['NAME'] or ':memory:'
          if test_database_name == ':memory:':
              return 'file:memorydb_%s?mode=memory&cache=shared' %
 self.connection.alias
          return test_database_name
 diff --git a/django/utils/dateparse.py b/django/utils/dateparse.py
 --- a/django/utils/dateparse.py
 +++ b/django/utils/dateparse.py
 @@ -131,9 +131,7 @@ def parse_duration(value):
      Also supports ISO 8601 representation and PostgreSQL's day-time
 interval
      format.
      """
 -    match = standard_duration_re.match(value)
 -    if not match:
 -        match = iso8601_duration_re.match(value) or
 postgres_interval_re.match(value)
 +    match = standard_duration_re.match(value) or
 iso8601_duration_re.match(value) or postgres_interval_re.match(value)
      if match:
          kw = match.groupdict()
          days = datetime.timedelta(float(kw.pop('days', 0) or 0))
 }}}

-- 
Ticket URL: <https://code.djangoproject.com/ticket/28769#comment:2>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/072.c29bb0d585c72b9c5a903e4834deb038%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to