예제 #1
0
파일: views.py 프로젝트: upworka0/SimT
def admin(request):
    """admin
    
    Arguments:
        request {http_request} -- [request with user embedded]
    """
    admin = ""
    update_admin_form_configurations = ""

    if request.method == "GET":
        if Admin.objects.filter(user=request.user).exists():
            admin = Admin.objects.filter(user=request.user).get()
            update_admin_form_configurations = UpdateAdminConfigurations(
                instance=admin)
    else:
        update_admin_form_configurations = UpdateAdminConfigurations(
            request.POST)
        if update_admin_form_configurations.is_valid():
            admin = update_admin_form_configurations.save(commit=False)
            admin.admin_id = Admin.objects.filter(user=request.user).get(
            ).admin_id  # Need to add admin_ID to new admin model
            admin.user = request.user  # Need to add FK user to new admin Model, otherwise it won't update
            admin = ComputeNetwork.admin_compute_reactance_factor(
                admin=admin)  # Compute FQ from FP inputed
            admin.save()

    return render(request,
                  'user_interface/admin.html',
                  context={
                      "admin": admin,
                      "form": update_admin_form_configurations,
                      "username": request.user.username
                  })
예제 #2
0
 def test_compute_fq_electrique_reprise(self):
     admin = Admin.objects.get()
     admin = ComputeNetwork.admin_compute_reactance_factor(admin=admin)
     admin = Admin.objects.get()
     self.assertIsInstance(cls=Admin, obj=admin)
     self.assertAlmostEqual(admin.admin_fq_recovery_electrique_pointe,
                            6.51064950150825)
예제 #3
0
def get_compute_network(request, etude_id):
    """Compute network
    
    Arguments:
        request {HttpRequests} -- Information from front-end
    
    Returns:
        JSON Object -- Computed data from backend that goes back to fron-end so it can display the data
    """
    if request.method == "POST":
        body_unicode = request.body.decode('utf-8')
        json_data = json.loads(body_unicode)
        admin = Admin.objects.all().get()
        etude = Etude.objects.get(etude_id=etude_id)
        compute_network = ComputeNetwork(admin=admin, study=etude) 
        json_converter = JsonToModelConverter(etude=etude)
        model_array = json_converter.convert_json_array_to_model_array(json_array=json_data)
        print(len(model_array))
        for model in model_array:
            if 'C' in model.nom_du_noeud:
                compute_network.compute_loads_node(logement_id=model.nom_du_noeud)
        for model in model_array:
            if 'T' in model.nom_du_noeud:
                compute_network.compute_network(transformateur_id=model.nom_du_noeud)
        return JsonResponse({"status_code": 1, "data": json_converter.create_json_array_with_new_model(model_array=model_array)})
예제 #4
0
 def test_compute_fq_autre_reprise(self):
     admin = Admin.objects.get()
     admin = ComputeNetwork.admin_compute_reactance_factor(admin=admin)
     admin = Admin.objects.get()
     self.assertIsInstance(cls=Admin, obj=admin)
     self.assertEqual(admin.admin_fq_recovery_autre_pointe, 31.224989991992)
예제 #5
0
 def test_compute_fq_electrique(self):
     admin = Admin.objects.get()
     admin = ComputeNetwork.admin_compute_reactance_factor(admin=admin)
     admin = Admin.objects.get()
     self.assertIsInstance(cls=Admin, obj=admin)
     self.assertEqual(admin.admin_fq_electrique_pointe, 9.98749217771907)
예제 #6
0
class computeNetworkTest(TestCase):
    TEST_EMAIL = "*****@*****.**"
    compute_network = ""
    fixtures = ['courbe_diversites.json', 'chauffage.json', 'conducteur.json',
                'mat_client.json', 'xfo_data.json', 'logement_code_saison.json',
                'type_logement.json']
    __NETWORK_ARRAY = []
    __NETWORK_ARRAY_2 = []
    __NETWORK_ARRAY_3 = []


    def setUp(self):
        user = User.objects.create_user(username="******", email=self.TEST_EMAIL, password="******")
        admin_user = User.objects.create_user(username="******", email="*****@*****.**", password="******")
        user.save()
        admin_user.save()
        admin = Admin(admin_id=uuid.uuid1(),user=admin_user)
        admin.save()
        ComputeNetwork.admin_compute_reactance_factor(admin=admin)
        client = Client(client_id=uuid.uuid1() ,user=user, client_nom_projeteur="Test Name")
        client.save()
        etude = Etude(etude_nom="Etude Test",
                      etude_temperature_ambiante_pointe_sout=client.client_temperature_ambiante_pointe_sout_defaut,
                      etude_temperature_ambiante_pointe_aerien=client.client_temperature_ambiante_pointe_aerien_defaut,
                      etude_conducteur_pointe_sout=client.client_temperature_conducteur_pointe_sout_defaut,
                      etude_conducteur_pointe_aerien=client.client_temperature_conducteur_pointe_aerien_defaut)
        etude.save()
        self.compute_network = ComputeNetwork(admin=admin, study=etude)
        client_db = Client.objects.get(user=user)
        etude.clients_etudes.add(client_db)
        etude.save()
        type_de_tranformateur = TypeDeTransformateur.objects.get(type_transformateur_type="10a")
        transformateur = Transformateur.objects.create(type_de_transformateur=type_de_tranformateur,
                                        etude_id=etude, nom_du_noeud="T1", position_x=0,
                                        position_y=0, successeur="A1", predecesseur="")
        transformateur.save()
        self.__NETWORK_ARRAY.append(transformateur)

        type_conducteur = TypeDeConducteur.objects.get(type_conducteur_type="Tx4/0")
        conducteur = Conducteur.objects.create(etude_id=etude, type_conducteur_id=type_conducteur,
                                nom_du_noeud="A1", predecesseur="T1", successeur="N1",
                                position_x=0, position_y=0, longueur=10)
        conducteur.save()
        self.__NETWORK_ARRAY.append(conducteur)

        noeud = Noeud.objects.create(etude_id=etude, nom_du_noeud="N1", predecesseur="A1", successeur="A2",
                     position_x=0, position_y=0)
        noeud.save()
        self.__NETWORK_ARRAY.append(noeud)

        type_conducteur = TypeDeConducteur.objects.get(type_conducteur_type="Tx4/0")
        conducteur_A2 = Conducteur.objects.create(conducteur_id=uuid.uuid1(),etude_id=etude,type_conducteur_id=type_conducteur,
                                nom_du_noeud="A2", predecesseur="N1", successeur="N2",
                                position_x=0, position_y=0, longueur=10)
        conducteur_A2.save()
        self.__NETWORK_ARRAY.append(conducteur_A2)


        noeud_2 = Noeud.objects.create(noeud_id=uuid.uuid1(),etude_id=etude, nom_du_noeud="N2", predecesseur="A2", successeur="A3",
                     position_x=0, position_y=0)
        noeud_2.save()
        self.__NETWORK_ARRAY.append(noeud_2)

        type_conducteur = TypeDeConducteur.objects.get(type_conducteur_type="Tx4/0")
        conducteur_A3 = Conducteur.objects.create(conducteur_id=uuid.uuid1(),etude_id=etude,type_conducteur_id=type_conducteur,
                                nom_du_noeud="A3", predecesseur="N2", successeur="C1",
                                position_x=0, position_y=0, longueur=10)
        conducteur_A3.save()
        self.__NETWORK_ARRAY.append(conducteur_A3)

        type_chauffage = TypeDeChauffage.objects.get(type_chauffage_type="ec20")
        type_logement = TypeDeLogement.objects.get(type_logement_type="U1")
        code_saison = LogementCodeSaison.objects.get(logement_code_saison_type="U1ec20")
        logement = Logement(etude_id=etude, type_de_logement=type_logement, type_de_chauffage=type_chauffage,
                            logement_code_saison=code_saison, nom_du_noeud="C1",
                            surface_habitable=288, nombre_etage=1, position_x=0,
                            position_y=0, predecesseur="A3", successeur="", nombre_de_logement=1)
        logement.save()
        self.__NETWORK_ARRAY.append(logement)
#        self.__NETWORK_ARRAY_2 = self.__NETWORK_ARRAY
#
#        type_conducteur = TypeDeConducteur.objects.get(type_conducteur_type="Tx4/0")
#        conducteur_A4 = Conducteur.objects.create(conducteur_id=uuid.uuid1(), etude_id=etude, type_conducteur_id=type_conducteur,
#                                                  nom_du_noeud="A4", predecesseur="N2", successeur="C2",
#                                                 position_x=0, position_y=0, longueur=10)
#
#        conducteur_A4.save()
#        self.__NETWORK_ARRAY_2.append(conducteur_A4)
#
#        type_chauffage = TypeDeChauffage.objects.get(type_chauffage_type="ec20")
#        type_logement = TypeDeLogement.objects.get(type_logement_type="U1")
#        code_saison = LogementCodeSaison.objects.get(logement_code_saison_type="U1ec20")
#        logement = Logement.objects.create(logement_id=uuid.uuid1(),etude_id=etude, type_de_logement=type_logement, type_de_chauffage=type_chauffage,
#                            logement_code_saison=code_saison, nom_du_noeud="C2",
#                            surface_habitable=120, nombre_etage=1, position_x=0,
#                            position_y=0, predecesseur="A4", successeur="", nombre_de_logement=1)
#
#        logement.save()
#        self.__NETWORK_ARRAY_2.append(logement)
#        self.__NETWORK_ARRAY_3 = self.__NETWORK_ARRAY_2
#
#        type_conducteur = TypeDeConducteur.objects.get(type_conducteur_type="Tx4/0")
#        conducteur_A5 = Conducteur.objects.create(conducteur_id=uuid.uuid1(), etude_id=etude, type_conducteur_id=type_conducteur,
#                                                  nom_du_noeud="A5", predecesseur="N1", successeur="C3",
#                                                 position_x=0, position_y=0, longueur=10)
#
#        conducteur_A4.save()
#        self.__NETWORK_ARRAY_3.append(conducteur_A4)
#
#        type_chauffage = TypeDeChauffage.objects.get(type_chauffage_type="ec20")
#        type_logement = TypeDeLogement.objects.get(type_logement_type="U1")
#        code_saison = LogementCodeSaison.objects.get(logement_code_saison_type="U1ec20")
#        logement = Logement.objects.create(logement_id=uuid.uuid1(),etude_id=etude, type_de_logement=type_logement, type_de_chauffage=type_chauffage,
#                            logement_code_saison=code_saison, nom_du_noeud="C3",
#                            surface_habitable=400, nombre_etage=1, position_x=0,
#                            position_y=0, predecesseur="A5", successeur="", nombre_de_logement=1)
#
#        logement.save()
#        self.__NETWORK_ARRAY_3.append(logement)
#
    def test_database_up(self):
        """
            Test to make sure the test database
            has all the rows it needs
        """
        client = Client.objects.get(client_nom_projeteur="Test Name")
        etude = Etude.objects.get(etude_nom="Etude Test")
        self.assertIsInstance(obj=client, cls=Client)
        self.assertIsInstance(obj=etude, cls=Etude)

#    def test_compute_recovery_capacity_summer(self):
#        """
#            Test to computing of recovery capacity in summer.
#
#            Computed using the XFO capacity
#        """
#        transformer = Transformateur.objects.get(nom_du_noeud="T1")
#        result = self.compute_network.compute_xfo_capacity(
#                                                              capacity=transformer.type_de_transformateur.type_transformateur_capacite,
#                                                              is_winter=False
#                                                             )
#        self.assertEqual(first=result, second=10)
#
#    def test_compute_recovery_capacity_winter(self):
#        """
#            Test to computing of recovery capacity in winter.
#
#            Computed using the XFO capacity
#        """
#        tranformer = Transformateur.objects.get(nom_du_noeud="T1")
#        result = self.compute_network.compute_xfo_capacity(
#                                                               capacity=tranformer.type_de_transformateur.type_transformateur_capacite,
#                                                               is_winter=True
#                                                              )
#        self.assertEqual(first=result, second=22)

#    def test_compute_conductor_attributes(self):
#        """
#            Test computing of conductor attributes
#            with its length
#        """
#        conducteur = Conducteur.objects.get(nom_du_noeud="A1")
#        computed_conducteur = self.compute_network.compute_conductor_parameters(conductor_object=conducteur)
#        self.assertAlmostEqual(first=computed_conducteur.type_conducteur_id.type_conducteur_resistance_par_km, second=2.76)
#        self.assertAlmostEqual(first=computed_conducteur.type_conducteur_id.type_conducteur_variation_resistance_par_celcius, second=10.9)
#        self.assertAlmostEqual(first=computed_conducteur.type_conducteur_id.type_conducteur_resistance_par_km_avec_temperature, second=2.21)
#        self.assertAlmostEqual(first=computed_conducteur.type_conducteur_id.type_conducteur_courant_admissible, second=3717)
#        self.assertAlmostEqual(first=computed_conducteur.type_conducteur_id.type_conducteur_variation_temp_celon_courant, second=0.00470)
#        self.assertAlmostEqual(first=computed_conducteur.type_conducteur_id.type_conducteur_variation_resistance_celon_courant, second=0.0051)
#        self.assertAlmostEqual(first=computed_conducteur.type_conducteur_id.type_conducteur_reactance, second=0.94)
#        self.assertAlmostEqual(first=computed_conducteur.type_conducteur_id.type_conducteur_capacite_repr_hiver, second=1128)
#        self.assertAlmostEqual(first=computed_conducteur.type_conducteur_id.type_conducteur_capacite_planif_ete, second=758.0)
#        self.assertAlmostEqual(first=computed_conducteur.type_conducteur_id.type_conducteur_mat_client.mat_client_resistance, second=3.18)
#        self.assertAlmostEqual(first=computed_conducteur.type_conducteur_id.type_conducteur_mat_client.mat_client_reactance, second=4.01)

    def test_allocation_des_charges(self):
        """test_allocation_des_charges"""
        for component in self.__NETWORK_ARRAY:
            if "C" in component.nom_du_noeud:
                self.compute_network.compute_loads_node(logement_id=component.nom_du_noeud)
       # for component in self.__NETWORK_ARRAY_2:
       #     if "C" in component.nom_du_noeud:
       #         self.compute_network.compute_loads_node(logement_id=component.nom_du_noeud)
       # for component in self.__NETWORK_ARRAY_3:
       #     if "C" in component.nom_du_noeud:
       #         self.compute_network.compute_loads_node(logement_id=component.nom_du_noeud)
        for component in self.__NETWORK_ARRAY:
            if "T" in component.nom_du_noeud:
                self.compute_network.compute_network(transformateur_id=component.nom_du_noeud)

        for component in self.__NETWORK_ARRAY:
            if "N" not in component.nom_du_noeud:
                if 'A' in component.nom_du_noeud:
                    conducteur = Conducteur.objects.filter(nom_du_noeud=component.nom_du_noeud).get()
                    logger.info("Final result of {} \n {}".format(component.nom_du_noeud, conducteur))
                elif 'C' in component.nom_du_noeud:
                    logement = Logement.objects.filter(nom_du_noeud=component.nom_du_noeud).get()
                    logger.info("Final result of {} \n {}".format(component.nom_du_noeud, logement))
                elif 'T' in component.nom_du_noeud:
                    transformateur = Transformateur.objects.filter(nom_du_noeud=component.nom_du_noeud).get()
                    logger.info("Final result of {} \n {}".format(component.nom_du_noeud, transformateur))
예제 #7
0
    def setUp(self):
        user = User.objects.create_user(username="******", email=self.TEST_EMAIL, password="******")
        admin_user = User.objects.create_user(username="******", email="*****@*****.**", password="******")
        user.save()
        admin_user.save()
        admin = Admin(admin_id=uuid.uuid1(),user=admin_user)
        admin.save()
        ComputeNetwork.admin_compute_reactance_factor(admin=admin)
        client = Client(client_id=uuid.uuid1() ,user=user, client_nom_projeteur="Test Name")
        client.save()
        etude = Etude(etude_nom="Etude Test",
                      etude_temperature_ambiante_pointe_sout=client.client_temperature_ambiante_pointe_sout_defaut,
                      etude_temperature_ambiante_pointe_aerien=client.client_temperature_ambiante_pointe_aerien_defaut,
                      etude_conducteur_pointe_sout=client.client_temperature_conducteur_pointe_sout_defaut,
                      etude_conducteur_pointe_aerien=client.client_temperature_conducteur_pointe_aerien_defaut)
        etude.save()
        self.compute_network = ComputeNetwork(admin=admin, study=etude)
        client_db = Client.objects.get(user=user)
        etude.clients_etudes.add(client_db)
        etude.save()
        type_de_tranformateur = TypeDeTransformateur.objects.get(type_transformateur_type="10a")
        transformateur = Transformateur.objects.create(type_de_transformateur=type_de_tranformateur,
                                        etude_id=etude, nom_du_noeud="T1", position_x=0,
                                        position_y=0, successeur="A1", predecesseur="")
        transformateur.save()
        self.__NETWORK_ARRAY.append(transformateur)

        type_conducteur = TypeDeConducteur.objects.get(type_conducteur_type="Tx4/0")
        conducteur = Conducteur.objects.create(etude_id=etude, type_conducteur_id=type_conducteur,
                                nom_du_noeud="A1", predecesseur="T1", successeur="N1",
                                position_x=0, position_y=0, longueur=10)
        conducteur.save()
        self.__NETWORK_ARRAY.append(conducteur)

        noeud = Noeud.objects.create(etude_id=etude, nom_du_noeud="N1", predecesseur="A1", successeur="A2",
                     position_x=0, position_y=0)
        noeud.save()
        self.__NETWORK_ARRAY.append(noeud)

        type_conducteur = TypeDeConducteur.objects.get(type_conducteur_type="Tx4/0")
        conducteur_A2 = Conducteur.objects.create(conducteur_id=uuid.uuid1(),etude_id=etude,type_conducteur_id=type_conducteur,
                                nom_du_noeud="A2", predecesseur="N1", successeur="N2",
                                position_x=0, position_y=0, longueur=10)
        conducteur_A2.save()
        self.__NETWORK_ARRAY.append(conducteur_A2)


        noeud_2 = Noeud.objects.create(noeud_id=uuid.uuid1(),etude_id=etude, nom_du_noeud="N2", predecesseur="A2", successeur="A3",
                     position_x=0, position_y=0)
        noeud_2.save()
        self.__NETWORK_ARRAY.append(noeud_2)

        type_conducteur = TypeDeConducteur.objects.get(type_conducteur_type="Tx4/0")
        conducteur_A3 = Conducteur.objects.create(conducteur_id=uuid.uuid1(),etude_id=etude,type_conducteur_id=type_conducteur,
                                nom_du_noeud="A3", predecesseur="N2", successeur="C1",
                                position_x=0, position_y=0, longueur=10)
        conducteur_A3.save()
        self.__NETWORK_ARRAY.append(conducteur_A3)

        type_chauffage = TypeDeChauffage.objects.get(type_chauffage_type="ec20")
        type_logement = TypeDeLogement.objects.get(type_logement_type="U1")
        code_saison = LogementCodeSaison.objects.get(logement_code_saison_type="U1ec20")
        logement = Logement(etude_id=etude, type_de_logement=type_logement, type_de_chauffage=type_chauffage,
                            logement_code_saison=code_saison, nom_du_noeud="C1",
                            surface_habitable=288, nombre_etage=1, position_x=0,
                            position_y=0, predecesseur="A3", successeur="", nombre_de_logement=1)
        logement.save()
        self.__NETWORK_ARRAY.append(logement)