psono/psono-server

View on GitHub

Showing 423 of 423 total issues

File various.py has 1048 lines of code (exceeds 250 allowed). Consider refactoring.
Open

from django.conf import settings
from django.contrib.auth.hashers import check_password, make_password
from django.core.cache import cache
from django.db import connection
from urllib.parse import urlparse
Severity: Major
Found in psono/restapi/utils/various.py - About 2 days to fix

    File models.py has 954 lines of code (exceeds 250 allowed). Consider refactoring.
    Open

    from django.db.models.signals import post_save, post_delete
    from django.db import models
    from django.dispatch import receiver
    from django.core.cache import cache
    from django.conf import settings
    Severity: Major
    Found in psono/restapi/models.py - About 2 days to fix

      File app_settings.py has 773 lines of code (exceeds 250 allowed). Consider refactoring.
      Open

      from django.conf import settings
      
      from importlib import import_module
      
      from .serializers import (
      Severity: Major
      Found in psono/restapi/app_settings.py - About 1 day to fix

        File settings.py has 571 lines of code (exceeds 250 allowed). Consider refactoring.
        Open

        """
        Django settings for psono project.
        
        Generated by 'django-admin startproject' using Django 1.8.3.
        
        
        Severity: Major
        Found in psono/psono/settings.py - About 1 day to fix

          Function put has a Cognitive Complexity of 57 (exceeds 5 allowed). Consider refactoring.
          Open

              def put(self, request, *args, **kwargs):
                  """
                  Create Share_Right
          
                  Necessary Rights:
          Severity: Minor
          Found in psono/restapi/views/share_right.py - About 1 day to fix

          Cognitive Complexity

          Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

          A method's cognitive complexity is based on a few simple rules:

          • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
          • Code is considered more complex for each "break in the linear flow of the code"
          • Code is considered more complex when "flow breaking structures are nested"

          Further reading

          Function validate has a Cognitive Complexity of 57 (exceeds 5 allowed). Consider refactoring.
          Open

              def validate(self, attrs: dict) -> dict:
          
                  file_repository_id = attrs.get('file_repository_id')
                  title = attrs.get('title', '').strip()
                  type = attrs.get('type', '').lower().strip()
          Severity: Minor
          Found in psono/restapi/serializers/update_file_repository.py - About 1 day to fix

          Cognitive Complexity

          Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

          A method's cognitive complexity is based on a few simple rules:

          • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
          • Code is considered more complex for each "break in the linear flow of the code"
          • Code is considered more complex when "flow breaking structures are nested"

          Further reading

          Function validate has a Cognitive Complexity of 56 (exceeds 5 allowed). Consider refactoring.
          Open

              def validate(self, attrs: dict) -> dict:
          
                  title = attrs.get('title', '').strip()
                  type = attrs.get('type', '').lower().strip()
                  gcp_cloud_storage_bucket = attrs.get('gcp_cloud_storage_bucket', '').strip()
          Severity: Minor
          Found in psono/restapi/serializers/create_file_repository.py - About 1 day to fix

          Cognitive Complexity

          Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

          A method's cognitive complexity is based on a few simple rules:

          • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
          • Code is considered more complex for each "break in the linear flow of the code"
          • Code is considered more complex when "flow breaking structures are nested"

          Further reading

          Function user_has_rights_on_secret has a Cognitive Complexity of 55 (exceeds 5 allowed). Consider refactoring.
          Open

          def user_has_rights_on_secret(user_id: str, secret_id: Union[str, List[str]], read: bool = None, write: bool = None) -> Union[bool, List[bool]]:  #nosec B105, B107
              """
              Checks if the given user has the requested rights for the given secret
          
              :param user_id:
          Severity: Minor
          Found in psono/restapi/utils/various.py - About 1 day to fix

          Cognitive Complexity

          Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

          A method's cognitive complexity is based on a few simple rules:

          • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
          • Code is considered more complex for each "break in the linear flow of the code"
          • Code is considered more complex when "flow breaking structures are nested"

          Further reading

          File authorize_upload.py has 463 lines of code (exceeds 250 allowed). Consider refactoring.
          Open

          from django.urls import reverse
          from django.conf import settings
          from django.utils import timezone
          from datetime import timedelta
          from rest_framework import status
          Severity: Minor
          Found in psono/fileserver/tests/authorize_upload.py - About 7 hrs to fix

            Cyclomatic complexity is too high in class UpdateFileRepositorySerializer. (34)
            Open

            class UpdateFileRepositorySerializer(serializers.Serializer):
            
                file_repository_id = UUIDField(required=True)
                title = serializers.CharField(max_length=256, required=True)
                type = serializers.CharField(max_length=32, required=True)

            Cyclomatic Complexity

            Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

            Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

            Construct Effect on CC Reasoning
            if +1 An if statement is a single decision.
            elif +1 The elif statement adds another decision.
            else +0 The else statement does not cause a new decision. The decision is at the if.
            for +1 There is a decision at the start of the loop.
            while +1 There is a decision at the while statement.
            except +1 Each except branch adds a new conditional path of execution.
            finally +0 The finally block is unconditionally executed.
            with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
            assert +1 The assert statement internally roughly equals a conditional statement.
            Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
            Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

            Source: http://radon.readthedocs.org/en/latest/intro.html

            Cyclomatic complexity is too high in method validate. (34)
            Open

                def validate(self, attrs: dict) -> dict:
            
                    file_repository_id = attrs.get('file_repository_id')
                    title = attrs.get('title', '').strip()
                    type = attrs.get('type', '').lower().strip()

            Cyclomatic Complexity

            Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

            Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

            Construct Effect on CC Reasoning
            if +1 An if statement is a single decision.
            elif +1 The elif statement adds another decision.
            else +0 The else statement does not cause a new decision. The decision is at the if.
            for +1 There is a decision at the start of the loop.
            while +1 There is a decision at the while statement.
            except +1 Each except branch adds a new conditional path of execution.
            finally +0 The finally block is unconditionally executed.
            with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
            assert +1 The assert statement internally roughly equals a conditional statement.
            Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
            Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

            Source: http://radon.readthedocs.org/en/latest/intro.html

            Cyclomatic complexity is too high in method validate. (33)
            Open

                def validate(self, attrs: dict) -> dict:
            
                    title = attrs.get('title', '').strip()
                    type = attrs.get('type', '').lower().strip()
                    gcp_cloud_storage_bucket = attrs.get('gcp_cloud_storage_bucket', '').strip()

            Cyclomatic Complexity

            Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

            Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

            Construct Effect on CC Reasoning
            if +1 An if statement is a single decision.
            elif +1 The elif statement adds another decision.
            else +0 The else statement does not cause a new decision. The decision is at the if.
            for +1 There is a decision at the start of the loop.
            while +1 There is a decision at the while statement.
            except +1 Each except branch adds a new conditional path of execution.
            finally +0 The finally block is unconditionally executed.
            with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
            assert +1 The assert statement internally roughly equals a conditional statement.
            Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
            Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

            Source: http://radon.readthedocs.org/en/latest/intro.html

            Cyclomatic complexity is too high in class CreateFileRepositorySerializer. (33)
            Open

            class CreateFileRepositorySerializer(serializers.Serializer):
            
                title = serializers.CharField(max_length=256, required=True)
                type = serializers.CharField(max_length=32, required=True)
                gcp_cloud_storage_bucket = serializers.CharField(required=False)

            Cyclomatic Complexity

            Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

            Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

            Construct Effect on CC Reasoning
            if +1 An if statement is a single decision.
            elif +1 The elif statement adds another decision.
            else +0 The else statement does not cause a new decision. The decision is at the if.
            for +1 There is a decision at the start of the loop.
            while +1 There is a decision at the while statement.
            except +1 Each except branch adds a new conditional path of execution.
            finally +0 The finally block is unconditionally executed.
            with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
            assert +1 The assert statement internally roughly equals a conditional statement.
            Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
            Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

            Source: http://radon.readthedocs.org/en/latest/intro.html

            Cyclomatic complexity is too high in function calculate_user_rights_on_share. (32)
            Open

            def calculate_user_rights_on_share(user_id: str, share_id: Union[str, List[str]]) -> Union[dict, List[dict], None]:
                """
                Calculates the user's rights on a share
            
                :param user_id:
            Severity: Minor
            Found in psono/restapi/utils/various.py by radon

            Cyclomatic Complexity

            Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

            Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

            Construct Effect on CC Reasoning
            if +1 An if statement is a single decision.
            elif +1 The elif statement adds another decision.
            else +0 The else statement does not cause a new decision. The decision is at the if.
            for +1 There is a decision at the start of the loop.
            while +1 There is a decision at the while statement.
            except +1 Each except branch adds a new conditional path of execution.
            finally +0 The finally block is unconditionally executed.
            with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
            assert +1 The assert statement internally roughly equals a conditional statement.
            Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
            Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

            Source: http://radon.readthedocs.org/en/latest/intro.html

            Function calculate_user_rights_on_share has a Cognitive Complexity of 38 (exceeds 5 allowed). Consider refactoring.
            Open

            def calculate_user_rights_on_share(user_id: str, share_id: Union[str, List[str]]) -> Union[dict, List[dict], None]:
                """
                Calculates the user's rights on a share
            
                :param user_id:
            Severity: Minor
            Found in psono/restapi/utils/various.py - About 5 hrs to fix

            Cognitive Complexity

            Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

            A method's cognitive complexity is based on a few simple rules:

            • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
            • Code is considered more complex for each "break in the linear flow of the code"
            • Code is considered more complex when "flow breaking structures are nested"

            Further reading

            Function validate has a Cognitive Complexity of 37 (exceeds 5 allowed). Consider refactoring.
            Open

                def validate(self, attrs: dict) -> dict:
            
                    link_share_id = attrs.get('link_share_id')
                    passphrase = attrs.get('passphrase', '')
            
            
            Severity: Minor
            Found in psono/restapi/serializers/update_link_share_access.py - About 5 hrs to fix

            Cognitive Complexity

            Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

            A method's cognitive complexity is based on a few simple rules:

            • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
            • Code is considered more complex for each "break in the linear flow of the code"
            • Code is considered more complex when "flow breaking structures are nested"

            Further reading

            Cyclomatic complexity is too high in method validate. (28)
            Open

                def validate(self, attrs: dict) -> dict:
            
                    link_share_id = attrs.get('link_share_id')
                    passphrase = attrs.get('passphrase', '')
            
            

            Cyclomatic Complexity

            Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

            Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

            Construct Effect on CC Reasoning
            if +1 An if statement is a single decision.
            elif +1 The elif statement adds another decision.
            else +0 The else statement does not cause a new decision. The decision is at the if.
            for +1 There is a decision at the start of the loop.
            while +1 There is a decision at the while statement.
            except +1 Each except branch adds a new conditional path of execution.
            finally +0 The finally block is unconditionally executed.
            with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
            assert +1 The assert statement internally roughly equals a conditional statement.
            Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
            Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

            Source: http://radon.readthedocs.org/en/latest/intro.html

            Cyclomatic complexity is too high in class UpdateLinkShareAccessSerializer. (28)
            Open

            class UpdateLinkShareAccessSerializer(serializers.Serializer):
            
                link_share_id = UUIDField(required=True)
                secret_data = serializers.CharField(required=True)
                secret_data_nonce = serializers.CharField(required=True, max_length=64)

            Cyclomatic Complexity

            Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

            Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

            Construct Effect on CC Reasoning
            if +1 An if statement is a single decision.
            elif +1 The elif statement adds another decision.
            else +0 The else statement does not cause a new decision. The decision is at the if.
            for +1 There is a decision at the start of the loop.
            while +1 There is a decision at the while statement.
            except +1 Each except branch adds a new conditional path of execution.
            finally +0 The finally block is unconditionally executed.
            with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
            assert +1 The assert statement internally roughly equals a conditional statement.
            Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
            Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

            Source: http://radon.readthedocs.org/en/latest/intro.html

            File create_secret_in_share.py has 393 lines of code (exceeds 250 allowed). Consider refactoring.
            Open

            """
            A small demo script that shows how to create a secret in a shared folder (unrestricted API key)
            """
            import uuid
            import requests
            Severity: Minor
            Found in examples/create_secret_in_share.py - About 5 hrs to fix

              Function validate has a Cognitive Complexity of 36 (exceeds 5 allowed). Consider refactoring.
              Open

                  def validate(self, attrs: dict) -> dict:
              
                      link_share_id = attrs.get('link_share_id')
                      passphrase = attrs.get('passphrase', '')
              
              
              Severity: Minor
              Found in psono/restapi/serializers/read_link_share_access.py - About 5 hrs to fix

              Cognitive Complexity

              Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

              A method's cognitive complexity is based on a few simple rules:

              • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
              • Code is considered more complex for each "break in the linear flow of the code"
              • Code is considered more complex when "flow breaking structures are nested"

              Further reading

              Severity
              Category
              Status
              Source
              Language