コード例 #1
0
ファイル: odm_model_test.py プロジェクト: khamusa/spazi-unimi
    def test_instance_callbacks_are_executed_once(self):

        ODMModel.set_pm(MagicMock())

        dic = {"_id": "2323", "pippo": "pluto"}
        odm = ODMModel(dic)
        odm.pippo = MagicMock()
        odm.pluto = MagicMock()
        sempronio = MagicMock()

        odm.listen_once("before_save", "pippo")
        odm.listen_once("before_save", "pluto")
        odm.listen_once("before_save", sempronio)
        odm.save()

        MagicMock.assert_called_once_with(odm.pippo, odm)
        MagicMock.assert_called_once_with(odm.pluto, odm)
        MagicMock.assert_called_once_with(sempronio, odm)
        self.assertEqual(odm.before_callbacks_single["save"], [])

        odm.pippo.reset_mock()
        odm.pluto.reset_mock()
        sempronio.reset_mock()
        odm.listen_once("after_destroy", "pippo")
        odm.listen_once("after_destroy", sempronio)
        odm.destroy()

        MagicMock.assert_called_once_with(odm.pippo, odm)
        MagicMock.assert_called_once_with(sempronio, odm)
        self.assertEqual(odm.pluto.call_count, 0)
        self.assertEqual(odm.after_callbacks_single["destroy"], [])
コード例 #2
0
ファイル: odm_model_test.py プロジェクト: khamusa/spazi-unimi
 def test_destroy(self):
     pm = MagicMock()
     ODMModel.set_pm(pm)
     dic = {"_id": "2323", "pippo": "pluto"}
     odm = ODMModel(dic)
     odm.destroy()
     pm.destroy_by_id.assert_called_once_with(odm.collection_name(), "2323")
コード例 #3
0
ファイル: odm_model_test.py プロジェクト: khamusa/spazi-unimi
 def test_destroy(self):
    pm = MagicMock()
    ODMModel.set_pm(pm)
    dic = {"_id" : "2323", "pippo" : "pluto"}
    odm = ODMModel(dic)
    odm.destroy()
    pm.destroy_by_id.assert_called_once_with(odm.collection_name(), "2323")
コード例 #4
0
ファイル: odm_model_test.py プロジェクト: khamusa/spazi-unimi
   def test_instance_callbacks_are_executed_once(self):

      ODMModel.set_pm(MagicMock())

      dic            = {"_id" : "2323", "pippo" : "pluto"}
      odm            = ODMModel(dic)
      odm.pippo      = MagicMock()
      odm.pluto      = MagicMock()
      sempronio      = MagicMock()

      odm.listen_once("before_save", "pippo")
      odm.listen_once("before_save", "pluto")
      odm.listen_once("before_save", sempronio)
      odm.save()

      MagicMock.assert_called_once_with(odm.pippo, odm)
      MagicMock.assert_called_once_with(odm.pluto, odm)
      MagicMock.assert_called_once_with(sempronio, odm)
      self.assertEqual(odm.before_callbacks_single["save"], [])

      odm.pippo.reset_mock()
      odm.pluto.reset_mock()
      sempronio.reset_mock()
      odm.listen_once("after_destroy", "pippo")
      odm.listen_once("after_destroy", sempronio)
      odm.destroy()

      MagicMock.assert_called_once_with(odm.pippo, odm)
      MagicMock.assert_called_once_with(sempronio, odm)
      self.assertEqual(odm.pluto.call_count, 0)
      self.assertEqual(odm.after_callbacks_single["destroy"], [])
コード例 #5
0
 def setUp(self):
    self._pm = MongoDBPersistenceManager({
       "db": {
             "url"    : "localhost",
             "port"   : 27017,
             "db_name" : "campus_unimi_test"
          }
    })
    ODMModel.set_pm(self._pm)
    self._pm.clean_collection("building")
コード例 #6
0
 def setUp(self):
     self._pm = MongoDBPersistenceManager({
         "db": {
             "url": "localhost",
             "port": 27017,
             "db_name": "campus_unimi_test"
         }
     })
     ODMModel.set_pm(self._pm)
     self._pm.clean_collection("building")
コード例 #7
0
ファイル: odm_model_test.py プロジェクト: khamusa/spazi-unimi
 def test_clean(self):
    pm = MongoDBPersistenceManager({
       "db": {
             "url"     : "localhost",
             "port"    : 27017,
             "db_name" : "campus_unimi_test"
          }
    })
    ODMModel.set_pm(pm)
    dic = {"_id" : "2323", "pippo" : "pluto"}
    odm = ODMModel(dic)
    odm.save()
    self.assertEqual(ODMModel._pm.get_collection("odmmodel").find_one({"_id" : "2323"}), dic)
    odm.clean()
    self.assertEqual(ODMModel._pm.get_collection("odmmodel").find_one({"_id" : "2323"}), None)
コード例 #8
0
ファイル: odm_model_test.py プロジェクト: khamusa/spazi-unimi
 def test_clean(self):
     pm = MongoDBPersistenceManager({
         "db": {
             "url": "localhost",
             "port": 27017,
             "db_name": "campus_unimi_test"
         }
     })
     ODMModel.set_pm(pm)
     dic = {"_id": "2323", "pippo": "pluto"}
     odm = ODMModel(dic)
     odm.save()
     self.assertEqual(
         ODMModel._pm.get_collection("odmmodel").find_one({"_id": "2323"}),
         dic)
     odm.clean()
     self.assertEqual(
         ODMModel._pm.get_collection("odmmodel").find_one({"_id": "2323"}),
         None)
コード例 #9
0
ファイル: odm_model_test.py プロジェクト: khamusa/spazi-unimi
    def test_destroy_callbacks_are_called(self):
        ODMModel.set_pm(MagicMock())

        dic = {"_id": "2323", "pippo": "pluto"}
        odm = ODMModel(dic)
        pippo = MagicMock()
        pluto = MagicMock()
        sempronio = MagicMock()

        ODMModel.listen("before_destroy", pippo)
        ODMModel.listen("before_destroy", sempronio)
        ODMModel.listen("after_destroy", sempronio)
        ODMModel.listen("after_destroy", pluto)

        odm.destroy()

        MagicMock.assert_called_once_with(pippo, odm)
        MagicMock.assert_called_once_with(pluto, odm)
        MagicMock.assert_any_call(sempronio, odm)
コード例 #10
0
ファイル: main.py プロジェクト: khamusa/spazi-unimi
   def run_csv(self, files):
      """
      Process csv files.

      Arguments:
      - files: files we want process.

      Returns: None

      Instantiates a MongoDBPersistenceManager and a CSVTask to process the csv
      files whit the apposite procedure.
      """
      persistence       = MongoDBPersistenceManager(self._config)
      ODMModel.set_pm( persistence )

      task              = CSVTask(self._config)
      task.perform_updates_on_files(files)

      self.run_lookup()
コード例 #11
0
    def run_svg(self, b_ids):
        """
      Create svg files representing maps of buildings.

      Arguments:
      - b_ids: a list of string representing the building ids of the buildings
      we want create/update svg files.

      Returns: None

      Instantiates a MongoDBPersistenceManager and a SVGTask to create the svg
      files whit the apposite procedure.
      If b_ids is None the CSVTask create svg files of every building in the DB.
      """
        persistence = MongoDBPersistenceManager(self._config)
        ODMModel.set_pm(persistence)

        task = SVGTask(self._config)
        task.perform_svg_update(b_ids)
コード例 #12
0
ファイル: main.py プロジェクト: khamusa/spazi-unimi
   def run_svg(self, b_ids):
      """
      Create svg files representing maps of buildings.

      Arguments:
      - b_ids: a list of string representing the building ids of the buildings
      we want create/update svg files.

      Returns: None

      Instantiates a MongoDBPersistenceManager and a SVGTask to create the svg
      files whit the apposite procedure.
      If b_ids is None the CSVTask create svg files of every building in the DB.
      """
      persistence       = MongoDBPersistenceManager(self._config)
      ODMModel.set_pm( persistence )

      task              = SVGTask(self._config)
      task.perform_svg_update(b_ids)
コード例 #13
0
ファイル: odm_model_test.py プロジェクト: khamusa/spazi-unimi
   def test_destroy_callbacks_are_called(self):
      ODMModel.set_pm(MagicMock())

      dic            = {"_id" : "2323", "pippo" : "pluto"}
      odm            = ODMModel(dic)
      pippo          = MagicMock()
      pluto          = MagicMock()
      sempronio      = MagicMock()

      ODMModel.listen("before_destroy", pippo)
      ODMModel.listen("before_destroy", sempronio)
      ODMModel.listen("after_destroy", sempronio)
      ODMModel.listen("after_destroy", pluto)

      odm.destroy()

      MagicMock.assert_called_once_with(pippo, odm)
      MagicMock.assert_called_once_with(pluto, odm)
      MagicMock.assert_any_call(sempronio, odm)
コード例 #14
0
    def run_csv(self, files):
        """
      Process csv files.

      Arguments:
      - files: files we want process.

      Returns: None

      Instantiates a MongoDBPersistenceManager and a CSVTask to process the csv
      files whit the apposite procedure.
      """
        persistence = MongoDBPersistenceManager(self._config)
        ODMModel.set_pm(persistence)

        task = CSVTask(self._config)
        task.perform_updates_on_files(files)

        self.run_lookup()
コード例 #15
0
ファイル: odm_model_test.py プロジェクト: khamusa/spazi-unimi
   def test_class_callbacks_are_called(self):
      ODMModel.set_pm(MagicMock())

      dic            = {"_id" : "2323", "pippo" : "pluto"}
      odm            = ODMModel(dic)
      odm.pippo      = MagicMock()
      odm.pluto      = MagicMock()
      odm.sempronio  = MagicMock()

      ODMModel.listen("before_save", "sempronio")
      ODMModel.listen("before_save", "pippo")

      ODMModel.listen("after_save", "pluto")
      ODMModel.listen("after_save", "sempronio")

      odm.save()

      MagicMock.assert_called_once_with(odm.pippo, odm)
      MagicMock.assert_called_once_with(odm.pluto, odm)
      self.assertEqual(odm.sempronio.call_count, 2)
コード例 #16
0
ファイル: odm_model_test.py プロジェクト: khamusa/spazi-unimi
    def test_class_callbacks_are_called(self):
        ODMModel.set_pm(MagicMock())

        dic = {"_id": "2323", "pippo": "pluto"}
        odm = ODMModel(dic)
        odm.pippo = MagicMock()
        odm.pluto = MagicMock()
        odm.sempronio = MagicMock()

        ODMModel.listen("before_save", "sempronio")
        ODMModel.listen("before_save", "pippo")

        ODMModel.listen("after_save", "pluto")
        ODMModel.listen("after_save", "sempronio")

        odm.save()

        MagicMock.assert_called_once_with(odm.pippo, odm)
        MagicMock.assert_called_once_with(odm.pluto, odm)
        self.assertEqual(odm.sempronio.call_count, 2)
コード例 #17
0
ファイル: odm_model_test.py プロジェクト: khamusa/spazi-unimi
    def test_instance_callbacks_are_saved(self):

        ODMModel.set_pm(MagicMock())

        dic = {"_id": "2323", "pippo": "pluto"}
        odm = ODMModel(dic)
        pippo = MagicMock()
        pluto = MagicMock()
        sempronio = MagicMock()

        odm.listen_once("before_save", "pippo")
        odm.listen_once("before_save", "pluto")
        odm.listen_once("before_save", "sempronio")
        self.assertEqual(odm.before_callbacks_single["save"],
                         ["pippo", "pluto", "sempronio"])

        odm.listen_once("after_save", "pippo")
        odm.listen_once("after_save", "sempronio")
        self.assertEqual(odm.after_callbacks_single["save"],
                         ["pippo", "sempronio"])
コード例 #18
0
ファイル: odm_model_test.py プロジェクト: khamusa/spazi-unimi
   def test_instance_callbacks_are_saved(self):

      ODMModel.set_pm(MagicMock())

      dic            = {"_id" : "2323", "pippo" : "pluto"}
      odm            = ODMModel(dic)
      pippo          = MagicMock()
      pluto          = MagicMock()
      sempronio      = MagicMock()

      odm.listen_once("before_save", "pippo")
      odm.listen_once("before_save", "pluto")
      odm.listen_once("before_save", "sempronio")
      self.assertEqual(
                        odm.before_callbacks_single["save"],
                        ["pippo", "pluto", "sempronio"]
                        )

      odm.listen_once("after_save", "pippo")
      odm.listen_once("after_save", "sempronio")
      self.assertEqual(
                        odm.after_callbacks_single["save"],
                        ["pippo", "sempronio"]
                        )
コード例 #19
0
   def setUp(self):
      pm = MongoDBPersistenceManager({
         "db": {
               "url"     : "localhost",
               "port"    : 27017,
               "db_name" : "campus_unimi_test"
            }
      })
      self.old_pm = getattr(ODMModel, "_pm", None)
      ODMModel.set_pm(pm)

      self.db_building  = {
          "_id" : "21030",
          "dxf" : {
            "l_b_id" : "5703",
            "floors" : [
               { "f_id" : "-05", "rooms": {}, "unidentified_rooms": [] },
            ]
          },
          "edilizia" : {
              "l_b_id"     : "5703",
              "b_id"       : "21030",
              "lat"        : "",
              "lon"        : "",
              "address"    : ""
          },
          "easyroom" : {
              "b_id"       : "21030",
              "address"    : "Via Celoria"
          }
      }

      pm.clean_collection("building")
      self.edil_up      = EdiliziaDataUpdater()
      self.easy_up      = EasyroomDataUpdater()
      self.dxf_updater  = DXFDataUpdater()
コード例 #20
0
ファイル: app.py プロジェクト: khamusa/spazi-unimi
from persistence           import MongoDBPersistenceManager
from model                 import RoomCategory,Building,BuildingView,AvailableService
from tasks                 import LookupTableTask
from model.odm             import ODMModel
from bson.json_util        import dumps
from flask                 import Flask, jsonify,abort,request,send_from_directory,render_template,Markup
from datetime              import datetime
from api.model             import RoomTimeTable


app                     = Flask(__name__,static_url_path='')
app.app_config          = ConfigManager('config/general.json')
app.persistence         = MongoDBPersistenceManager(app.app_config)
app.api_namespace       = '/api'
app.api_version         = 'v1.0'
ODMModel.set_pm( app.persistence )
BuildingView.setup_collection()
# radius used with GeoSpatial Query (meters)
app.radius              = 2000
app.maps_folder         = 'static-maps'
app.lookup_table_folder = 'static-table'

###########
# HELPERS #
###########

def url_for_endpoint(url_endpoint):
   return '/'.join( [app.api_namespace,app.api_version,url_endpoint] )+'/'

def filter_buildings_by_service(buildings,service,remove_floor_details=False):
  return [ b for b in buildings if len([ f for f in b['floors'] if service in f['available_services'] ])>0  ]
コード例 #21
0
ファイル: db_analysis.py プロジェクト: khamusa/spazi-unimi
from utils.config_manager import ConfigManager
from persistence.db import MongoDBPersistenceManager
from model.odm      import ODMModel
from model          import Building
from utils.logger   import Logger
from analysis       import DXFAnalysis
from analysis       import FloorMergeAnalysis
from analysis       import BuildingIdAnalysis

persistence = MongoDBPersistenceManager(ConfigManager("config/general.json"))
ODMModel.set_pm( persistence )


def data_and_percent(value, total, num_padding = 3,):
   if(total > 0):
      return ("{:0>"+str(num_padding)+"} ({:>0.1f}%)").format(value, value/total*100.0)
   else:
      return ("{:0>"+str(num_padding)+"} ").format(value)

class GeneralReport:

   merge_tuples = [
            ("edilizia", "dxf"),
            ("edilizia", "easyroom"),
            ("easyroom", "dxf"),
            ("easyroom", "edilizia")
         ]

   @classmethod
   def report_building(klass, building):
      BuildingIdAnalysis.analyse_building_id(building)
コード例 #22
0
 def __init__(self):
     self._config = ConfigManager("config/general.json")
     self._data_persistence = MongoDBPersistenceManager(self._config)
     ODMModel.set_pm(self._data_persistence)
     BuildingView.setup_collection()
コード例 #23
0
 def __init__(self):
    self._config            = ConfigManager("config/general.json")
    self._data_persistence  = MongoDBPersistenceManager(self._config)
    ODMModel.set_pm( self._data_persistence )
    BuildingView.setup_collection()
コード例 #24
0
 def tearDown(self):
    ODMModel.set_pm(self.old_pm)
コード例 #25
0
   def setUp(self):
      pm = MongoDBPersistenceManager({
         "db": {
               "url"     : "localhost",
               "port"    : 27017,
               "db_name" : "campus_unimi_test"
            }
      })

      ODMModel.set_pm(pm)

      self.edil_rooms = [
         {
            'room_name' : 'Aula Seminari',
            'cat_name'  : 'Aula',
            'r_id'      : 'T-065',
            'b_id'      : '21030',
            'capacity'  : '52',
            'l_floor'   : 'T'
         },
         {
            'room_name' : 'Aula Pippo',
            'cat_name'  : 'Aula',
            'r_id'      : 'T066',
            'b_id'      : '21030',
            'capacity'  : '52',
            'l_floor'   : 'T'
         },
         {
            'room_name' : 'Aula Pippo Sdentato',
            'cat_name'  : 'Aula',
            'r_id'      : '1066',
            'b_id'      : '21030',
            'capacity'  : '52',
            'l_floor'   : '1'
         }
      ]

      self.easy_rooms = [
         {
            'room_name' : 'Aula Seminari',
            'cat_name'  : 'Aula',
            'r_id'      : '21030#T-065',
            'b_id'      : '21030',
            'capacity'  : '52',
            'l_floor'   : '0'
         },
         {
            'room_name' : 'Aula Pippo',
            'cat_name'  : 'Aula',
            'r_id'      : '21030#T066',
            'b_id'      : '21030',
            'capacity'  : '52',
            'l_floor'   : '0'
         },
         {
            'room_name' : 'Aula Pippo Sdentato',
            'cat_name'  : 'Aula',
            'r_id'      : '21030#1066',
            'b_id'      : '21030',
            'capacity'  : '52',
            'l_floor'   : '10'
         }
      ]

      pm.clean_collection("building")
      self.edil_up      = EdiliziaDataUpdater()
      self.easy_up      = EasyroomDataUpdater()
      Building.__str__  = lambda x: ""