myems-api/core/offlinemeter.py

Summary

Maintainability
F
1 mo
Test Coverage

File offlinemeter.py has 853 lines of code (exceeds 250 allowed). Consider refactoring.
Open

import uuid
from datetime import datetime, timedelta
import falcon
import mysql.connector
import simplejson as json
Severity: Major
Found in myems-api/core/offlinemeter.py - About 2 days to fix

    Function on_put has a Cognitive Complexity of 31 (exceeds 5 allowed). Consider refactoring.
    Open

        def on_put(req, resp, id_):
            """Handles PUT requests"""
            admin_control(req)
            try:
                raw_json = req.stream.read().decode('utf-8')
    Severity: Minor
    Found in myems-api/core/offlinemeter.py - About 4 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 on_post has a Cognitive Complexity of 29 (exceeds 5 allowed). Consider refactoring.
    Open

        def on_post(req, resp):
            """Handles POST requests"""
            admin_control(req)
            try:
                raw_json = req.stream.read().decode('utf-8')
    Severity: Minor
    Found in myems-api/core/offlinemeter.py - About 4 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 on_post has a Cognitive Complexity of 29 (exceeds 5 allowed). Consider refactoring.
    Open

        def on_post(req, resp):
            """Handles POST requests"""
            admin_control(req)
            try:
                raw_json = req.stream.read().decode('utf-8')
    Severity: Minor
    Found in myems-api/core/offlinemeter.py - About 4 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 on_post has a Cognitive Complexity of 22 (exceeds 5 allowed). Consider refactoring.
    Open

        def on_post(req, resp, id_):
            if 'API-KEY' not in req.headers or \
                    not isinstance(req.headers['API-KEY'], str) or \
                    len(str.strip(req.headers['API-KEY'])) == 0:
                access_control(req)
    Severity: Minor
    Found in myems-api/core/offlinemeter.py - About 3 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 on_get has a Cognitive Complexity of 22 (exceeds 5 allowed). Consider refactoring.
    Open

        def on_get(req, resp):
            if 'API-KEY' not in req.headers or \
                    not isinstance(req.headers['API-KEY'], str) or \
                    len(str.strip(req.headers['API-KEY'])) == 0:
                access_control(req)
    Severity: Minor
    Found in myems-api/core/offlinemeter.py - About 3 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 on_get has a Cognitive Complexity of 20 (exceeds 5 allowed). Consider refactoring.
    Open

        def on_get(req, resp, id_):
            if 'API-KEY' not in req.headers or \
                    not isinstance(req.headers['API-KEY'], str) or \
                    len(str.strip(req.headers['API-KEY'])) == 0:
                access_control(req)
    Severity: Minor
    Found in myems-api/core/offlinemeter.py - About 2 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 on_get has a Cognitive Complexity of 20 (exceeds 5 allowed). Consider refactoring.
    Open

        def on_get(req, resp, id_):
            if 'API-KEY' not in req.headers or \
                    not isinstance(req.headers['API-KEY'], str) or \
                    len(str.strip(req.headers['API-KEY'])) == 0:
                access_control(req)
    Severity: Minor
    Found in myems-api/core/offlinemeter.py - About 2 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 on_delete has a Cognitive Complexity of 15 (exceeds 5 allowed). Consider refactoring.
    Open

        def on_delete(req, resp, id_):
            admin_control(req)
            if not id_.isdigit() or int(id_) <= 0:
                raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
                                       description='API.INVALID_OFFLINE_METER_ID')
    Severity: Minor
    Found in myems-api/core/offlinemeter.py - About 1 hr 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 on_put has 37 lines of code (exceeds 25 allowed). Consider refactoring.
    Open

        def on_put(req, resp, id_):
            """Handles PUT requests"""
            admin_control(req)
            try:
                raw_json = req.stream.read().decode('utf-8')
    Severity: Minor
    Found in myems-api/core/offlinemeter.py - About 1 hr to fix

      Function on_post has 36 lines of code (exceeds 25 allowed). Consider refactoring.
      Open

          def on_post(req, resp):
              """Handles POST requests"""
              admin_control(req)
              try:
                  raw_json = req.stream.read().decode('utf-8')
      Severity: Minor
      Found in myems-api/core/offlinemeter.py - About 1 hr to fix

        Function on_post has 36 lines of code (exceeds 25 allowed). Consider refactoring.
        Open

            def on_post(req, resp):
                """Handles POST requests"""
                admin_control(req)
                try:
                    raw_json = req.stream.read().decode('utf-8')
        Severity: Minor
        Found in myems-api/core/offlinemeter.py - About 1 hr to fix

          Function on_delete has 32 lines of code (exceeds 25 allowed). Consider refactoring.
          Open

              def on_delete(req, resp, id_):
                  admin_control(req)
                  if not id_.isdigit() or int(id_) <= 0:
                      raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
                                             description='API.INVALID_OFFLINE_METER_ID')
          Severity: Minor
          Found in myems-api/core/offlinemeter.py - About 1 hr to fix

            Function on_get has 26 lines of code (exceeds 25 allowed). Consider refactoring.
            Open

                def on_get(req, resp, id_):
                    if 'API-KEY' not in req.headers or \
                            not isinstance(req.headers['API-KEY'], str) or \
                            len(str.strip(req.headers['API-KEY'])) == 0:
                        access_control(req)
            Severity: Minor
            Found in myems-api/core/offlinemeter.py - About 1 hr to fix

              Function on_get has 26 lines of code (exceeds 25 allowed). Consider refactoring.
              Open

                  def on_get(req, resp, id_):
                      if 'API-KEY' not in req.headers or \
                              not isinstance(req.headers['API-KEY'], str) or \
                              len(str.strip(req.headers['API-KEY'])) == 0:
                          access_control(req)
              Severity: Minor
              Found in myems-api/core/offlinemeter.py - About 1 hr to fix

                Function on_get has 26 lines of code (exceeds 25 allowed). Consider refactoring.
                Open

                    def on_get(req, resp):
                        if 'API-KEY' not in req.headers or \
                                not isinstance(req.headers['API-KEY'], str) or \
                                len(str.strip(req.headers['API-KEY'])) == 0:
                            access_control(req)
                Severity: Minor
                Found in myems-api/core/offlinemeter.py - About 1 hr to fix

                  Identical blocks of code found in 2 locations. Consider refactoring.
                  Open

                      @staticmethod
                      def on_get(req, resp, id_):
                          if 'API-KEY' not in req.headers or \
                                  not isinstance(req.headers['API-KEY'], str) or \
                                  len(str.strip(req.headers['API-KEY'])) == 0:
                  Severity: Major
                  Found in myems-api/core/offlinemeter.py and 1 other location - About 6 days to fix
                  myems-api/core/offlinemeter.py on lines 248..324

                  Duplicated Code

                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                  Tuning

                  This issue has a mass of 663.

                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                  Refactorings

                  Further Reading

                  Identical blocks of code found in 2 locations. Consider refactoring.
                  Open

                      @staticmethod
                      def on_get(req, resp, id_):
                          if 'API-KEY' not in req.headers or \
                                  not isinstance(req.headers['API-KEY'], str) or \
                                  len(str.strip(req.headers['API-KEY'])) == 0:
                  Severity: Major
                  Found in myems-api/core/offlinemeter.py and 1 other location - About 6 days to fix
                  myems-api/core/offlinemeter.py on lines 649..725

                  Duplicated Code

                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                  Tuning

                  This issue has a mass of 663.

                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                  Refactorings

                  Further Reading

                  Similar blocks of code found in 10 locations. Consider refactoring.
                  Open

                          if energy_item_id is not None:
                              cursor.execute(" SELECT name, energy_category_id "
                                             " FROM tbl_energy_items "
                                             " WHERE id = %s ",
                                             (new_values['data']['energy_item_id'],))
                  Severity: Major
                  Found in myems-api/core/offlinemeter.py and 9 other locations - About 1 day to fix
                  myems-api/core/meter.py on lines 221..236
                  myems-api/core/meter.py on lines 239..254
                  myems-api/core/meter.py on lines 783..798
                  myems-api/core/meter.py on lines 801..816
                  myems-api/core/offlinemeter.py on lines 600..615
                  myems-api/core/offlinemeter.py on lines 831..846
                  myems-api/core/virtualmeter.py on lines 263..278
                  myems-api/core/virtualmeter.py on lines 778..793
                  myems-api/core/virtualmeter.py on lines 1141..1156

                  Duplicated Code

                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                  Tuning

                  This issue has a mass of 136.

                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                  Refactorings

                  Further Reading

                  Similar blocks of code found in 10 locations. Consider refactoring.
                  Open

                          if energy_item_id is not None:
                              cursor.execute(" SELECT name, energy_category_id "
                                             " FROM tbl_energy_items "
                                             " WHERE id = %s ",
                                             (new_values['data']['energy_item_id'],))
                  Severity: Major
                  Found in myems-api/core/offlinemeter.py and 9 other locations - About 1 day to fix
                  myems-api/core/meter.py on lines 221..236
                  myems-api/core/meter.py on lines 239..254
                  myems-api/core/meter.py on lines 783..798
                  myems-api/core/meter.py on lines 801..816
                  myems-api/core/offlinemeter.py on lines 187..202
                  myems-api/core/offlinemeter.py on lines 831..846
                  myems-api/core/virtualmeter.py on lines 263..278
                  myems-api/core/virtualmeter.py on lines 778..793
                  myems-api/core/virtualmeter.py on lines 1141..1156

                  Duplicated Code

                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                  Tuning

                  This issue has a mass of 136.

                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                  Refactorings

                  Further Reading

                  Similar blocks of code found in 10 locations. Consider refactoring.
                  Open

                          if energy_item_id is not None:
                              cursor.execute(" SELECT name, energy_category_id "
                                             " FROM tbl_energy_items "
                                             " WHERE id = %s ",
                                             (new_values['energy_item']['id'],))
                  Severity: Major
                  Found in myems-api/core/offlinemeter.py and 9 other locations - About 1 day to fix
                  myems-api/core/meter.py on lines 221..236
                  myems-api/core/meter.py on lines 239..254
                  myems-api/core/meter.py on lines 783..798
                  myems-api/core/meter.py on lines 801..816
                  myems-api/core/offlinemeter.py on lines 187..202
                  myems-api/core/offlinemeter.py on lines 600..615
                  myems-api/core/virtualmeter.py on lines 263..278
                  myems-api/core/virtualmeter.py on lines 778..793
                  myems-api/core/virtualmeter.py on lines 1141..1156

                  Duplicated Code

                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                  Tuning

                  This issue has a mass of 136.

                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                  Refactorings

                  Further Reading

                  Similar blocks of code found in 8 locations. Consider refactoring.
                  Open

                          if 'energy_item_id' in new_values['data'].keys() and \
                                  new_values['data']['energy_item_id'] is not None:
                              if not isinstance(new_values['data']['energy_item_id'], int) or \
                                      new_values['data']['energy_item_id'] <= 0:
                                  raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
                  Severity: Major
                  Found in myems-api/core/offlinemeter.py and 7 other locations - About 1 day to fix
                  myems-api/core/meter.py on lines 162..170
                  myems-api/core/meter.py on lines 714..722
                  myems-api/core/offlinemeter.py on lines 149..157
                  myems-api/core/offlinemeter.py on lines 793..801
                  myems-api/core/virtualmeter.py on lines 183..191
                  myems-api/core/virtualmeter.py on lines 689..697
                  myems-api/core/virtualmeter.py on lines 1061..1069

                  Duplicated Code

                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                  Tuning

                  This issue has a mass of 133.

                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                  Refactorings

                  Further Reading

                  Similar blocks of code found in 8 locations. Consider refactoring.
                  Open

                          if 'id' in new_values['energy_item'].keys() and \
                                  new_values['energy_item']['id'] is not None:
                              if not isinstance(new_values['energy_item']['id'], int) or \
                                      new_values['energy_item']['id'] <= 0:
                                  raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
                  Severity: Major
                  Found in myems-api/core/offlinemeter.py and 7 other locations - About 1 day to fix
                  myems-api/core/meter.py on lines 162..170
                  myems-api/core/meter.py on lines 714..722
                  myems-api/core/offlinemeter.py on lines 149..157
                  myems-api/core/offlinemeter.py on lines 541..549
                  myems-api/core/virtualmeter.py on lines 183..191
                  myems-api/core/virtualmeter.py on lines 689..697
                  myems-api/core/virtualmeter.py on lines 1061..1069

                  Duplicated Code

                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                  Tuning

                  This issue has a mass of 133.

                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                  Refactorings

                  Further Reading

                  Similar blocks of code found in 8 locations. Consider refactoring.
                  Open

                          if 'energy_item_id' in new_values['data'].keys() and \
                                  new_values['data']['energy_item_id'] is not None:
                              if not isinstance(new_values['data']['energy_item_id'], int) or \
                                      new_values['data']['energy_item_id'] <= 0:
                                  raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
                  Severity: Major
                  Found in myems-api/core/offlinemeter.py and 7 other locations - About 1 day to fix
                  myems-api/core/meter.py on lines 162..170
                  myems-api/core/meter.py on lines 714..722
                  myems-api/core/offlinemeter.py on lines 541..549
                  myems-api/core/offlinemeter.py on lines 793..801
                  myems-api/core/virtualmeter.py on lines 183..191
                  myems-api/core/virtualmeter.py on lines 689..697
                  myems-api/core/virtualmeter.py on lines 1061..1069

                  Duplicated Code

                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                  Tuning

                  This issue has a mass of 133.

                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                  Refactorings

                  Further Reading

                  Similar blocks of code found in 7 locations. Consider refactoring.
                  Open

                          if 'hourly_low_limit' not in new_values.keys() or \
                                  not (isinstance(new_values['hourly_low_limit'], float) or
                                       isinstance(new_values['hourly_low_limit'], int)):
                              raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
                  Severity: Major
                  Found in myems-api/core/offlinemeter.py and 6 other locations - About 3 hrs to fix
                  myems-api/core/meter.py on lines 1481..1484
                  myems-api/core/meter.py on lines 1488..1491
                  myems-api/core/offlinemeter.py on lines 778..781
                  myems-api/core/point.py on lines 1025..1028
                  myems-api/core/point.py on lines 1032..1035
                  myems-api/core/point.py on lines 1061..1064

                  Duplicated Code

                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                  Tuning

                  This issue has a mass of 69.

                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                  Refactorings

                  Further Reading

                  Similar blocks of code found in 7 locations. Consider refactoring.
                  Open

                          if 'hourly_high_limit' not in new_values.keys() or \
                                  not (isinstance(new_values['hourly_high_limit'], float) or
                                       isinstance(new_values['hourly_high_limit'], int)):
                              raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
                  Severity: Major
                  Found in myems-api/core/offlinemeter.py and 6 other locations - About 3 hrs to fix
                  myems-api/core/meter.py on lines 1481..1484
                  myems-api/core/meter.py on lines 1488..1491
                  myems-api/core/offlinemeter.py on lines 771..774
                  myems-api/core/point.py on lines 1025..1028
                  myems-api/core/point.py on lines 1032..1035
                  myems-api/core/point.py on lines 1061..1064

                  Duplicated Code

                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                  Tuning

                  This issue has a mass of 69.

                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                  Refactorings

                  Further Reading

                  Similar blocks of code found in 4 locations. Consider refactoring.
                  Open

                          if row is None:
                              cursor.close()
                              cnx.close()
                              raise falcon.HTTPError(status=falcon.HTTP_404, title='API.NOT_FOUND',
                                                     description='API.OFFLINE_METER_NOT_FOUND')
                  Severity: Major
                  Found in myems-api/core/offlinemeter.py and 3 other locations - About 2 hrs to fix
                  myems-api/core/meter.py on lines 396..402
                  myems-api/core/user.py on lines 288..294
                  myems-api/core/virtualmeter.py on lines 497..503

                  Duplicated Code

                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                  Tuning

                  This issue has a mass of 55.

                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                  Refactorings

                  Further Reading

                  Similar blocks of code found in 20 locations. Consider refactoring.
                  Open

                          if 'is_counted' not in new_values.keys() or \
                                  not isinstance(new_values['is_counted'], bool):
                              raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
                  Severity: Major
                  Found in myems-api/core/offlinemeter.py and 19 other locations - About 2 hrs to fix
                  myems-api/core/advancedreport.py on lines 516..518
                  myems-api/core/advancedreport.py on lines 540..542
                  myems-api/core/combinedequipment.py on lines 2597..2599
                  myems-api/core/combinedequipment.py on lines 2603..2605
                  myems-api/core/equipment.py on lines 2380..2382
                  myems-api/core/equipment.py on lines 2386..2388
                  myems-api/core/meter.py on lines 1475..1477
                  myems-api/core/point.py on lines 1068..1070
                  myems-api/core/point.py on lines 1074..1076
                  myems-api/core/rule.py on lines 637..639
                  myems-api/core/rule.py on lines 643..645
                  myems-api/core/shopfloor.py on lines 2198..2200
                  myems-api/core/space.py on lines 3993..3995
                  myems-api/core/space.py on lines 3999..4001
                  myems-api/core/store.py on lines 2168..2170
                  myems-api/core/tenant.py on lines 2292..2294
                  myems-api/core/tenant.py on lines 2298..2300
                  myems-api/core/tenant.py on lines 2311..2313
                  myems-api/core/virtualmeter.py on lines 1048..1049

                  Duplicated Code

                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                  Tuning

                  This issue has a mass of 53.

                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                  Refactorings

                  Further Reading

                  Similar blocks of code found in 41 locations. Consider refactoring.
                  Open

                          if row_virtual_meter is not None:
                              cursor.close()
                              cnx.close()
                              raise falcon.HTTPError(status=falcon.HTTP_400,
                  Severity: Major
                  Found in myems-api/core/offlinemeter.py and 40 other locations - About 1 hr to fix
                  myems-api/core/combinedequipment.py on lines 1384..1387
                  myems-api/core/energyflowdiagram.py on lines 559..562
                  myems-api/core/energyflowdiagram.py on lines 871..874
                  myems-api/core/energyflowdiagram.py on lines 1214..1217
                  myems-api/core/energyflowdiagram.py on lines 1476..1479
                  myems-api/core/equipment.py on lines 1215..1218
                  myems-api/core/meter.py on lines 410..413
                  myems-api/core/meter.py on lines 546..549
                  myems-api/core/meter.py on lines 560..563
                  myems-api/core/meter.py on lines 574..577
                  myems-api/core/meter.py on lines 589..592
                  myems-api/core/meter.py on lines 605..608
                  myems-api/core/meter.py on lines 619..622
                  myems-api/core/meter.py on lines 633..636
                  myems-api/core/meter.py on lines 826..829
                  myems-api/core/point.py on lines 316..319
                  myems-api/core/point.py on lines 330..333
                  myems-api/core/point.py on lines 344..347
                  myems-api/core/point.py on lines 358..361
                  myems-api/core/point.py on lines 372..375
                  myems-api/core/point.py on lines 386..389
                  myems-api/core/point.py on lines 400..403
                  myems-api/core/point.py on lines 414..417
                  myems-api/core/point.py on lines 428..431
                  myems-api/core/point.py on lines 445..448
                  myems-api/core/point.py on lines 461..464
                  myems-api/core/point.py on lines 479..482
                  myems-api/core/point.py on lines 493..496
                  myems-api/core/point.py on lines 507..510
                  myems-api/core/point.py on lines 521..524
                  myems-api/core/point.py on lines 535..538
                  myems-api/core/point.py on lines 549..552
                  myems-api/core/point.py on lines 563..566
                  myems-api/core/point.py on lines 577..580
                  myems-api/core/point.py on lines 592..595
                  myems-api/core/point.py on lines 606..609
                  myems-api/core/point.py on lines 620..623
                  myems-api/core/point.py on lines 638..641
                  myems-api/core/user.py on lines 1102..1105
                  myems-api/core/virtualmeter.py on lines 511..514

                  Duplicated Code

                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                  Tuning

                  This issue has a mass of 43.

                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                  Refactorings

                  Further Reading

                  There are no issues that match your filters.

                  Category
                  Status