myems-api/core/virtualmeter.py

Summary

Maintainability
F
2 mos
Test Coverage

File virtualmeter.py has 1211 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/virtualmeter.py - About 3 days to fix

    Function on_get has a Cognitive Complexity of 63 (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/virtualmeter.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 on_put has a Cognitive Complexity of 59 (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/virtualmeter.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 on_post has a Cognitive Complexity of 51 (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/virtualmeter.py - About 7 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 51 (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/virtualmeter.py - About 7 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 49 (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/virtualmeter.py - About 7 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 47 (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/virtualmeter.py - About 7 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 47 (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/virtualmeter.py - About 7 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 16 (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_VIRTUAL_METER_ID')
    Severity: Minor
    Found in myems-api/core/virtualmeter.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_post has 38 lines of code (exceeds 25 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/virtualmeter.py - About 1 hr to fix

      Function on_post has 37 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/virtualmeter.py - About 1 hr to fix

        Function on_post has 37 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/virtualmeter.py - About 1 hr to fix

          Function on_put has 36 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/virtualmeter.py - About 1 hr to fix

            Function on_delete has 34 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_VIRTUAL_METER_ID')
            Severity: Minor
            Found in myems-api/core/virtualmeter.py - About 1 hr to fix

              Function on_get has 29 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/virtualmeter.py - About 1 hr to fix

                Function on_get has 29 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/virtualmeter.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/virtualmeter.py - About 1 hr to fix

                    Avoid deeply nested control flow statements.
                    Open

                                            if row_meter is not None:
                                                expression['variables'].append({'id': row_variable[0],
                                                                                'name': row_variable[1],
                                                                                'meter_type': row_variable[2],
                                                                                'meter_id': row_variable[3],
                    Severity: Major
                    Found in myems-api/core/virtualmeter.py - About 45 mins to fix

                      Avoid deeply nested control flow statements.
                      Open

                                              if row_meter is not None:
                                                  expression['variables'].append({'id': row_variable[0],
                                                                                  'name': row_variable[1],
                                                                                  'meter_type': row_variable[2],
                                                                                  'meter_id': row_variable[3],
                      Severity: Major
                      Found in myems-api/core/virtualmeter.py - About 45 mins to fix

                        Avoid deeply nested control flow statements.
                        Open

                                                if row_meter is not None:
                                                    expression['variables'].append({'id': row_variable[0],
                                                                                    'name': row_variable[1],
                                                                                    'meter_type': row_variable[2],
                                                                                    'meter_id': row_variable[3],
                        Severity: Major
                        Found in myems-api/core/virtualmeter.py - About 45 mins to fix

                          Avoid deeply nested control flow statements.
                          Open

                                                  if row_meter is not None:
                                                      expression['variables'].append({'id': row_variable[0],
                                                                                      'name': row_variable[1],
                                                                                      'meter_type': row_variable[2],
                                                                                      'meter_id': row_variable[3],
                          Severity: Major
                          Found in myems-api/core/virtualmeter.py - About 45 mins to fix

                            Avoid deeply nested control flow statements.
                            Open

                                                    if row_meter is not None:
                                                        expression['variables'].append({'id': row_variable[0],
                                                                                        'name': row_variable[1],
                                                                                        'meter_type': row_variable[2],
                                                                                        'meter_id': row_variable[3],
                            Severity: Major
                            Found in myems-api/core/virtualmeter.py - About 45 mins to fix

                              Avoid deeply nested control flow statements.
                              Open

                                                      for row_variable in rows_variables:
                                                          if row_variable[2].lower() == 'meter':
                                                              query_meter = (" SELECT m.name "
                                                                             " FROM tbl_meters m "
                                                                             " WHERE m.id = %s ")
                              Severity: Major
                              Found in myems-api/core/virtualmeter.py - About 45 mins to fix

                                Avoid deeply nested control flow statements.
                                Open

                                                        if row_meter is not None:
                                                            expression['variables'].append({'id': row_variable[0],
                                                                                            'name': row_variable[1],
                                                                                            'meter_type': row_variable[2],
                                                                                            'meter_id': row_variable[3],
                                Severity: Major
                                Found in myems-api/core/virtualmeter.py - About 45 mins to fix

                                  Avoid deeply nested control flow statements.
                                  Open

                                                          if row_meter is not None:
                                                              expression['variables'].append({'id': row_variable[0],
                                                                                              'name': row_variable[1],
                                                                                              'meter_type': row_variable[2],
                                                                                              'meter_id': row_variable[3],
                                  Severity: Major
                                  Found in myems-api/core/virtualmeter.py - About 45 mins to fix

                                    Avoid deeply nested control flow statements.
                                    Open

                                                            if row_meter is not None:
                                                                expression['variables'].append({'id': row_variable[0],
                                                                                                'name': row_variable[1],
                                                                                                'meter_type': row_variable[2],
                                                                                                'meter_id': row_variable[3],
                                    Severity: Major
                                    Found in myems-api/core/virtualmeter.py - About 45 mins to fix

                                      Avoid deeply nested control flow statements.
                                      Open

                                                              if row_meter is not None:
                                                                  expression['variables'].append({'id': row_variable[0],
                                                                                                  'name': row_variable[1],
                                                                                                  'meter_type': row_variable[2],
                                                                                                  'meter_id': row_variable[3],
                                      Severity: Major
                                      Found in myems-api/core/virtualmeter.py - About 45 mins 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/virtualmeter.py and 1 other location - About 1 wk to fix
                                        myems-api/core/virtualmeter.py on lines 884..1010

                                        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 1115.

                                        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/virtualmeter.py and 1 other location - About 1 wk to fix
                                        myems-api/core/virtualmeter.py on lines 354..480

                                        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 1115.

                                        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

                                                for variable in new_values['data']['expression']['variables']:
                                                    if variable['meter_type'].lower() == 'meter':
                                                        cursor.execute(" SELECT name "
                                                                       " FROM tbl_meters "
                                                                       " WHERE id = %s ", (variable['meter_id'],))
                                        Severity: Major
                                        Found in myems-api/core/virtualmeter.py and 1 other location - About 2 days to fix
                                        myems-api/core/virtualmeter.py on lines 796..824

                                        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 281.

                                        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

                                                for variable in new_values['data']['expression']['variables']:
                                                    if variable['meter_type'].lower() == 'meter':
                                                        cursor.execute(" SELECT name "
                                                                       " FROM tbl_meters "
                                                                       " WHERE id = %s ", (variable['meter_id'],))
                                        Severity: Major
                                        Found in myems-api/core/virtualmeter.py and 1 other location - About 2 days to fix
                                        myems-api/core/virtualmeter.py on lines 281..309

                                        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 281.

                                        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

                                                for variable in new_values['data']['expression']['variables']:
                                                    if 'name' not in variable.keys() or \
                                                            len(variable['name']) == 0:
                                                        raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
                                                                               description='API.INVALID_VARIABLE_NAME')
                                        Severity: Major
                                        Found in myems-api/core/virtualmeter.py and 1 other location - About 1 day to fix
                                        myems-api/core/virtualmeter.py on lines 215..227

                                        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 203.

                                        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

                                                for variable in new_values['data']['expression']['variables']:
                                                    if 'name' not in variable.keys() or \
                                                            len(variable['name']) == 0:
                                                        raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
                                                                               description='API.INVALID_VARIABLE_NAME')
                                        Severity: Major
                                        Found in myems-api/core/virtualmeter.py and 1 other location - About 1 day to fix
                                        myems-api/core/virtualmeter.py on lines 721..733

                                        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 203.

                                        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/virtualmeter.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/offlinemeter.py on lines 831..846
                                        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/virtualmeter.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/offlinemeter.py on lines 831..846
                                        myems-api/core/virtualmeter.py on lines 263..278
                                        myems-api/core/virtualmeter.py on lines 778..793

                                        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/virtualmeter.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/offlinemeter.py on lines 831..846
                                        myems-api/core/virtualmeter.py on lines 263..278
                                        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 '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/virtualmeter.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/offlinemeter.py on lines 793..801
                                        myems-api/core/virtualmeter.py on lines 183..191
                                        myems-api/core/virtualmeter.py on lines 689..697

                                        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/virtualmeter.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/offlinemeter.py on lines 793..801
                                        myems-api/core/virtualmeter.py on lines 183..191
                                        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/virtualmeter.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/offlinemeter.py on lines 793..801
                                        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 4 locations. Consider refactoring.
                                        Open

                                                if 'variables' not in new_values['data']['expression'].keys() \
                                                        or len(new_values['data']['expression']['variables']) == 0:
                                                    raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
                                        Severity: Major
                                        Found in myems-api/core/virtualmeter.py and 3 other locations - About 4 hrs to fix
                                        myems-api/core/virtualmeter.py on lines 204..206
                                        myems-api/core/virtualmeter.py on lines 210..212
                                        myems-api/core/virtualmeter.py on lines 710..712

                                        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 78.

                                        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 'equation' not in new_values['data']['expression'].keys() \
                                                        or len(new_values['data']['expression']['equation']) == 0:
                                                    raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
                                        Severity: Major
                                        Found in myems-api/core/virtualmeter.py and 3 other locations - About 4 hrs to fix
                                        myems-api/core/virtualmeter.py on lines 210..212
                                        myems-api/core/virtualmeter.py on lines 710..712
                                        myems-api/core/virtualmeter.py on lines 716..718

                                        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 78.

                                        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 'equation' not in new_values['data']['expression'].keys() \
                                                        or len(new_values['data']['expression']['equation']) == 0:
                                                    raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
                                        Severity: Major
                                        Found in myems-api/core/virtualmeter.py and 3 other locations - About 4 hrs to fix
                                        myems-api/core/virtualmeter.py on lines 204..206
                                        myems-api/core/virtualmeter.py on lines 210..212
                                        myems-api/core/virtualmeter.py on lines 716..718

                                        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 78.

                                        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 'variables' not in new_values['data']['expression'].keys() \
                                                        or len(new_values['data']['expression']['variables']) == 0:
                                                    raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
                                        Severity: Major
                                        Found in myems-api/core/virtualmeter.py and 3 other locations - About 4 hrs to fix
                                        myems-api/core/virtualmeter.py on lines 204..206
                                        myems-api/core/virtualmeter.py on lines 710..712
                                        myems-api/core/virtualmeter.py on lines 716..718

                                        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 78.

                                        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 2 locations. Consider refactoring.
                                        Open

                                                for variable in new_values['expression']['variables']:
                                                    add_values = (" INSERT INTO tbl_variables (name, virtual_meter_id, meter_type, meter_id) "
                                                                  " VALUES (%s, %s, %s, %s) ")
                                                    cursor.execute(add_values, (variable['name'].lower(),
                                                                                new_id,
                                        Severity: Major
                                        Found in myems-api/core/virtualmeter.py and 1 other location - About 3 hrs to fix
                                        myems-api/core/virtualmeter.py on lines 1378..1385

                                        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 67.

                                        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 2 locations. Consider refactoring.
                                        Open

                                                for variable in meta_result['expression']['variables']:
                                                    add_values = (" INSERT INTO tbl_variables (name, virtual_meter_id, meter_type, meter_id) "
                                                                  " VALUES (%s, %s, %s, %s) ")
                                                    cursor.execute(add_values, (variable['name'].lower(),
                                                                                new_id,
                                        Severity: Major
                                        Found in myems-api/core/virtualmeter.py and 1 other location - About 3 hrs to fix
                                        myems-api/core/virtualmeter.py on lines 1207..1214

                                        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 67.

                                        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 2 locations. Consider refactoring.
                                        Open

                                                if 'equation' not in new_values['expression'].keys() \
                                                        or len(new_values['expression']['equation']) == 0:
                                                    raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
                                        Severity: Major
                                        Found in myems-api/core/virtualmeter.py and 1 other location - About 3 hrs to fix
                                        myems-api/core/virtualmeter.py on lines 1088..1090

                                        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 66.

                                        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 2 locations. Consider refactoring.
                                        Open

                                                if 'variables' not in new_values['expression'].keys() \
                                                        or len(new_values['expression']['variables']) == 0:
                                                    raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
                                        Severity: Major
                                        Found in myems-api/core/virtualmeter.py and 1 other location - About 3 hrs to fix
                                        myems-api/core/virtualmeter.py on lines 1082..1084

                                        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 66.

                                        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 5 locations. Consider refactoring.
                                        Open

                                                if 'id' not in new_values['energy_category'].keys() or new_values['energy_category']['id'] <= 0:
                                                    raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
                                        Severity: Major
                                        Found in myems-api/core/virtualmeter.py and 4 other locations - About 3 hrs to fix
                                        myems-api/core/energyitem.py on lines 82..84
                                        myems-api/core/energyitem.py on lines 262..263
                                        myems-api/core/virtualmeter.py on lines 165..166
                                        myems-api/core/virtualmeter.py on lines 671..672

                                        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 62.

                                        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 5 locations. Consider refactoring.
                                        Open

                                                if 'energy_category_id' not in new_values['data'].keys() or new_values['data']['energy_category_id'] <= 0:
                                                    raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
                                        Severity: Major
                                        Found in myems-api/core/virtualmeter.py and 4 other locations - About 3 hrs to fix
                                        myems-api/core/energyitem.py on lines 82..84
                                        myems-api/core/energyitem.py on lines 262..263
                                        myems-api/core/virtualmeter.py on lines 671..672
                                        myems-api/core/virtualmeter.py on lines 1043..1044

                                        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 62.

                                        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 5 locations. Consider refactoring.
                                        Open

                                                if 'energy_category_id' not in new_values['data'].keys() or new_values['data']['energy_category_id'] <= 0:
                                                    raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
                                        Severity: Major
                                        Found in myems-api/core/virtualmeter.py and 4 other locations - About 3 hrs to fix
                                        myems-api/core/energyitem.py on lines 82..84
                                        myems-api/core/energyitem.py on lines 262..263
                                        myems-api/core/virtualmeter.py on lines 165..166
                                        myems-api/core/virtualmeter.py on lines 1043..1044

                                        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 62.

                                        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.VIRTUAL_METER_NOT_FOUND')
                                        Severity: Major
                                        Found in myems-api/core/virtualmeter.py and 3 other locations - About 2 hrs to fix
                                        myems-api/core/meter.py on lines 396..402
                                        myems-api/core/offlinemeter.py on lines 341..347
                                        myems-api/core/user.py on lines 288..294

                                        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/virtualmeter.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/offlinemeter.py on lines 765..767
                                        myems-api/core/point.py on lines 1096..1098
                                        myems-api/core/point.py on lines 1102..1104
                                        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

                                        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

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

                                                    if row_variables is not None and len(row_variables) > 0:
                                                        # delete variables
                                                        cursor.execute(" DELETE FROM tbl_variables WHERE virtual_meter_id = %s ", (id_,))
                                                        cnx.commit()
                                        Severity: Major
                                        Found in myems-api/core/virtualmeter.py and 1 other location - About 1 hr to fix
                                        myems-api/core/virtualmeter.py on lines 633..636

                                        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 44.

                                        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

                                                if row_variables is not None and len(row_variables) > 0:
                                                    # delete variables
                                                    cursor.execute(" DELETE FROM tbl_variables WHERE virtual_meter_id = %s ", (id_,))
                                                    cnx.commit()
                                        Severity: Major
                                        Found in myems-api/core/virtualmeter.py and 1 other location - About 1 hr to fix
                                        myems-api/core/virtualmeter.py on lines 849..852

                                        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 44.

                                        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/virtualmeter.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/offlinemeter.py on lines 355..358
                                        myems-api/core/point.py on lines 327..330
                                        myems-api/core/point.py on lines 341..344
                                        myems-api/core/point.py on lines 355..358
                                        myems-api/core/point.py on lines 369..372
                                        myems-api/core/point.py on lines 383..386
                                        myems-api/core/point.py on lines 397..400
                                        myems-api/core/point.py on lines 411..414
                                        myems-api/core/point.py on lines 425..428
                                        myems-api/core/point.py on lines 439..442
                                        myems-api/core/point.py on lines 456..459
                                        myems-api/core/point.py on lines 472..475
                                        myems-api/core/point.py on lines 490..493
                                        myems-api/core/point.py on lines 504..507
                                        myems-api/core/point.py on lines 518..521
                                        myems-api/core/point.py on lines 532..535
                                        myems-api/core/point.py on lines 546..549
                                        myems-api/core/point.py on lines 560..563
                                        myems-api/core/point.py on lines 574..577
                                        myems-api/core/point.py on lines 588..591
                                        myems-api/core/point.py on lines 603..606
                                        myems-api/core/point.py on lines 617..620
                                        myems-api/core/point.py on lines 631..634
                                        myems-api/core/point.py on lines 649..652
                                        myems-api/core/user.py on lines 1102..1105

                                        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

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

                                                if 'expression' not in new_values['data'].keys():
                                                    raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
                                        Severity: Major
                                        Found in myems-api/core/virtualmeter.py and 1 other location - About 1 hr to fix
                                        myems-api/core/virtualmeter.py on lines 200..201

                                        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 39.

                                        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

                                                if 'expression' not in new_values['data'].keys():
                                                    raise falcon.HTTPError(status=falcon.HTTP_400, title='API.BAD_REQUEST',
                                        Severity: Major
                                        Found in myems-api/core/virtualmeter.py and 1 other location - About 1 hr to fix
                                        myems-api/core/virtualmeter.py on lines 706..707

                                        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 39.

                                        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