Browse Source

Refactoring comments in db wrapper

Yann Weber 9 years ago
parent
commit
07209417a7
3 changed files with 90 additions and 136 deletions
  1. 1
    0
      .gitignore
  2. 88
    135
      Database/sqlwrapper.py
  3. 1
    1
      Doxyfile

+ 1
- 0
.gitignore View File

@@ -2,3 +2,4 @@
2 2
 .venv
3 3
 .git
4 4
 .idea
5
+Lodel/settings/locale.py

+ 88
- 135
Database/sqlwrapper.py View File

@@ -13,13 +13,10 @@ class SqlWrapper(object):
13 13
         self.write_engine = self.get_engine(sqlsettings.DB_WRITE_CONNECTION_NAME)
14 14
 
15 15
     def get_engine(self, connection_name):
16
-        """Crée un moteur logique sur une base de données
16
+        """ Crée un moteur logique sur une base de données
17 17
 
18
-        Args:
19
-            connection_name (str): Nom de la connexion telle que définie dans les settings django
20
-
21
-        Returns:
22
-            Engine.
18
+            @param connection_name str: Connection name as defined is django settings
19
+            @return Engine
23 20
         """
24 21
 
25 22
         connection_params = settings.DATABASES[connection_name]
@@ -49,14 +46,11 @@ class SqlWrapper(object):
49 46
         return self.write_engine
50 47
 
51 48
     def execute(self, queries, action_type):
52
-        """Exécute une série de requêtes en base
49
+        """ Exécute une série de requêtes en base
53 50
 
54
-        Args:
55
-            queries (list): une liste de requêtes
56
-            action_type (str): le type d'action ('read'|'write')
57
-
58
-        Returns:
59
-            List. Tableau de résultats sous forme de tuples (requête, résultat)
51
+            @param queries list: une liste de requêtes
52
+            @param action_type str: le type d'action ( 'read'|'write' )
53
+            @return List. Tableau de résultats sous forme de tuples (requête, résultat)
60 54
         """
61 55
 
62 56
         db = self.get_write_engine() if action_type==sqlsettings.ACTION_TYPE_WRITE else self.get_read_engine()
@@ -81,12 +75,11 @@ class SqlWrapper(object):
81 75
         return result
82 76
 
83 77
     def create_foreign_key_constraint_object(self, localcol, remotecol, constraint_name=None):
84
-        """Génère une contrainte Clé étrangère
78
+        """ Génère une contrainte Clé étrangère
85 79
 
86
-        Args:
87
-            localcol (str) : Colonne locale
88
-            remotecol (str) : Colonne distante (syntaxe : Table.col)
89
-            constraint_name (str) : Nom de la contrainte (par défaut : fk_localcol_remotecol)
80
+            @param localcol str: Colonne locale
81
+            @param remotecol str: Colonne distante (syntaxe : Table.col)
82
+            @param constraint_name str: Nom de la contrainte (par défaut : fk_localcol_remotecol)
90 83
 
91 84
         Returns:
92 85
             ForeignKeyConstraint.
@@ -96,22 +89,15 @@ class SqlWrapper(object):
96 89
         return foreignkeyobj
97 90
 
98 91
     def create_column_object(self, column_name, column_type, column_extra=None):
99
-        """Génère un objet colonne
92
+        """ Génère un objet colonne
100 93
 
101
-        Args:
102
-            column_name (str): Nom de la colonne
103
-            column_name (str): Type de la colonne
104
-            column_extra (objet) : Objet json contenant les paramètres optionnels comme PRIMARY KEY, NOT NULL, etc ...
94
+            Exemple de dictionnaire pour column_extra : { "primarykey":True, "nullable":False, "default":"test" ... }
95
+            @param column_name str: Nom de la colonne
96
+            @param column_type str: Type de la colonne
97
+            @param column_extra dict : Objet json contenant les paramètres optionnels comme PRIMARY KEY, NOT NULL, etc ...
98
+
99
+            @return Column. La méthode renvoie "None" si l'opération échoue
105 100
 
106
-        Returns:
107
-            Column. La méthode renvoie "None" si l'opération échoue
108
-
109
-        Ex d'objet json "extra" :
110
-        {
111
-            "primarykey":True,
112
-            "nullable":False,
113
-            "default":"test" ...
114
-        }
115 101
         """
116 102
 
117 103
         # Traitement du type (mapping avec les types SQLAlchemy)
@@ -144,29 +130,19 @@ class SqlWrapper(object):
144 130
         return column
145 131
 
146 132
     def create_table(self, tableparams):
147
-        """Crée une nouvelle table
148
-        Args:
149
-            tableparams (object): Objet Json contenant les paramétrages de la table
133
+        """ Crée une nouvelle table
134
+
135
+            Les paramètres de la tables sont passés via un dictionnaire dont voici la description :
136
+            { 'name':'<nom_table>', 'columns': [ <col1>, <col2>, <coln> ], 'constraints': dict(...) }
137
+            Avec <colX> : { 'name': '<name_colX>', 'type': '<type_colX>', 'extra': dict(...) }
138
+            A noter que les types de col (<type_colX>) sont des chaines representant un type SQL (ex: "VARCHAR(50)")
139
+            Les deux champs "name" et "columns" seulement sont obligatoires.
140
+            Le champ "extra" de la définition des colonnes est facultatif.
141
+
142
+            @args tableparams dict: Dictionnaire avec les paramétrages de la table
143
+
144
+            @return bool. True si le process est allé au bout, False si on a rencontré une erreur.
150 145
 
151
-        Returns:
152
-            bool. True si le process est allé au bout, False si on a rencontré une erreur.
153
-
154
-        Le json de paramètres de table est construit suivant le modèle :
155
-        {
156
-            'name':'<nom de la table>',
157
-            'columns':[
158
-                {
159
-                    'name':"<nom de la colonne 1>",
160
-                    'type':"<type de la colonne 1, ex: VARCHAR(50)>",
161
-                    'extra': "indications supplémentaires sous forme d'objet JSON"
162
-                }
163
-            ],
164
-            'constraints':{},
165
-            ...
166
-        }
167
-
168
-        Les deux champs "name" et "columns" seulement sont obligatoires.
169
-        Le champ "extra" de la définition des colonnes est facultatif.
170 146
         """
171 147
 
172 148
         metadata = MetaData()
@@ -185,13 +161,11 @@ class SqlWrapper(object):
185 161
 
186 162
 
187 163
     def get_table(self, table_name, action_type=sqlsettings.ACTION_TYPE_WRITE):
188
-        """Récupère une table dans un objet Table
189
-
190
-        Args:
191
-            table_name (str): Nom de la table
192
-            action_type (str): Type d'action (read|write) (par défaut : "write")
193
-        Returns:
194
-            Table.
164
+        """ Récupère une table dans un objet Table
165
+            
166
+            @param table_name str: Nom de la table
167
+            @param action_type str: Type d'action (read|write) (par défaut : "write")
168
+            @return Table.
195 169
         """
196 170
         db = self.get_write_engine() if action_type == sqlsettings.ACTION_TYPE_WRITE else self.get_read_engine()
197 171
         metadata = MetaData()
@@ -200,13 +174,9 @@ class SqlWrapper(object):
200 174
 
201 175
 
202 176
     def drop_table(self, table_name):
203
-        """Supprime une table
204
-
205
-        Args:
206
-            table_name (str): Nom de la table
207
-
208
-        Returns:
209
-            bool. True si le process est allé au bout. False si on a rencontré une erreur
177
+        """ Supprime une table
178
+            @param table_name str: Nom de la table
179
+            @return bool. True si le process est allé au bout. False si on a rencontré une erreur
210 180
         """
211 181
 
212 182
         try:
@@ -228,14 +198,12 @@ class SqlWrapper(object):
228 198
         return querystring
229 199
 
230 200
     def add_column(self, table_name, column):
231
-        """Ajoute une colonne à une table existante
201
+        """ Ajoute une colonne à une table existante
232 202
 
233
-        Args:
234
-            table_name (str): nom de la table
235
-            column (object): colonne à rajouter sous forme d'objet python - {"name":"<nom de la colonne>", "type":"<type de la colonne>"}
203
+            @param table_name str: nom de la table
204
+            @param column dict: la colonne - {"name":"<nom de la colonne>", "type":"<type de la colonne>"}
236 205
 
237
-        Returns:
238
-            bool. True si le process est allé au bout, False si on a rencontré une erreur
206
+            @return bool. True si le process est allé au bout, False si on a rencontré une erreur
239 207
         """
240 208
 
241 209
         sqlquery = self.get_querystring('add_column', self.get_write_engine().dialect) % (table_name, column['name'], column['type'])
@@ -243,14 +211,12 @@ class SqlWrapper(object):
243 211
         return True if sqlresult else False
244 212
 
245 213
     def alter_column(self, table_name, column):
246
-        """Modifie le type d'une colonne
214
+        """ Modifie le type d'une colonne
247 215
 
248
-        Args:
249
-            table_name (str): nom de la table
250
-            column_name (object): colonne passée sous forme d'objet python - {"name":"<nom de la colonne>","type":"<nouveau type de la colonne>"}
216
+            @param table_name str: nom de la table
217
+            @param column_name dict: la colonne - {"name":"<nom de la colonne>","type":"<nouveau type de la colonne>"}
251 218
 
252
-        Returns:
253
-            bool. True si le process est allé au bout. False si on a rencontré une erreur
219
+            @return bool. True si le process est allé au bout. False si on a rencontré une erreur
254 220
         """
255 221
 
256 222
         sqlquery = self.get_querystring('alter_column', self.get_write_engine().dialect) % (table_name, column['name'], column['type'])
@@ -258,27 +224,23 @@ class SqlWrapper(object):
258 224
         return True if sqlresult else False
259 225
 
260 226
     def insert(self, table_name, newrecord):
261
-        """Insère un nouvel enregistrement
227
+        """ Insère un nouvel enregistrement
262 228
 
263
-        Args:
264
-            table_name (str): nom de la table
265
-            newrecord (dict): objet python contenant le nouvel enregistrement à insérer - {"column1":"value1", "column2":"value2", etc ...)
229
+            @param table_name str: nom de la table
230
+            @param newrecord dict: dictionnaire contenant les informations sur le nouvel enregistrement à insérer - {"column1":"value1", "column2":"value2", etc ...)
266 231
 
267
-        Returns:
268
-            int. Nombre de lignes insérées
232
+            @return int. Nombre de lignes insérées
269 233
         """
270 234
         sqlresult = self.execute(self.get_table(table_name).insert().values(newrecord), sqlsettings.ACTION_TYPE_WRITE)
271 235
         return sqlresult.rowcount
272 236
 
273 237
     def delete(self, table_name, whereclauses):
274
-        """Supprime un enregistrement
238
+        """ Supprime un enregistrement
275 239
 
276
-        Args:
277
-            table_name (str): nom de la table
278
-            whereclauses (list): liste des conditions sur les enregistrements (sous forme de textes SQL)
240
+            @param table_name str: nom de la table
241
+            @param whereclauses list: liste des conditions sur les enregistrements (sous forme de textes SQL)
279 242
 
280
-        Returns:
281
-            int. Nombre de lignes supprimées
243
+            @return int. Nombre de lignes supprimées
282 244
         """
283 245
 
284 246
         deleteobject = self.get_table(table_name).delete()
@@ -290,18 +252,15 @@ class SqlWrapper(object):
290 252
         return sqlresult.rowcount
291 253
 
292 254
     def update(self, table_name, whereclauses, newvalues):
293
-        """Met à jour des enregistrements
255
+        """ Met à jour des enregistrements
294 256
 
295
-        Args:
296
-            table_name (str): nom de la table
297
-            whereclauses (list): liste des conditions sur les enregistrements (sous forme de textes SQL)
298
-            newvalues (dict): objet python contenant les nouvelles valeurs à insérer - {"colonne1":"valeur1", "colonne2":"valeur2", etc ...}
257
+            @param table_name str: nom de la table
258
+            @param whereclauses list: liste des conditions sur les enregistrements (sous forme de textes SQL)
259
+            @param newvalues dict: dictionnaire contenant les nouvelles valeurs à insérer - {"colonne1":"valeur1", "colonne2":"valeur2", etc ...}
299 260
 
300
-        Returns:
301
-            int. Nombre de lignes modifiées
261
+            @return int. Nombre de lignes modifiées
302 262
 
303
-        Raises:
304
-            DataError. Incompatibilité entre la valeur insérée et le type de colonne dans la table
263
+            @throw DataError. Incompatibilité entre la valeur insérée et le type de colonne dans la table
305 264
         """
306 265
 
307 266
         table = self.get_table(table_name)
@@ -325,25 +284,23 @@ class SqlWrapper(object):
325 284
         return updated_lines_count
326 285
 
327 286
     def select(self, select_params):
328
-        """Récupère un jeu d'enregistrements
329
-
330
-        Args:
331
-            select_params (list): liste d'objets permettant de caractériser la requête.
332
-                                    {
333
-                                        "what":"<liste des colonnes>",
334
-                                        "from":"<liste des tables>",
335
-                                        "where":"<liste des conditions>",
336
-                                        "distinct":True|False,
337
-                                        "join":{"left":"table_de_gauche.champ","right":"table_de_droite.champ", "options":{"outer":True|False}}
338
-                                        ...
339
-                                    }
340
-
341
-                                    Les listes sont supportées sous deux formats :
342
-                                        - texte SQL : "colonne1, colonne2, ..."
343
-                                        - liste Python : ["colonne1", "colonne2", ...]
287
+        """ Récupère un jeu d'enregistrements
344 288
 
345
-        Returns:
346
-            list. Liste des dictionnaires représentant les différents enregistrements.
289
+            Champs de select_params :
290
+            - "what":"<liste des colonnes>",
291
+            - "from":"<liste des tables>",
292
+            - "where":"<liste des conditions>",
293
+            - "distinct":True|False,
294
+            - "join":{"left":"table_de_gauche.champ","right":"table_de_droite.champ", "options":{"outer":True|False}}
295
+            - ...
296
+
297
+            Les listes sont supportées sous deux formats :
298
+            - texte SQL : "colonne1, colonne2, ..."
299
+            - liste Python : ["colonne1", "colonne2", ...]
300
+
301
+            @param select_params list: liste de dictionnaire permettant de caractériser la requête.
302
+
303
+            @return list. Liste des dictionnaires représentant les différents enregistrements.
347 304
         """
348 305
 
349 306
         if not 'what' in select_params or not 'from' in select_params:
@@ -431,22 +388,18 @@ class SqlWrapper(object):
431 388
     def create_join_object(self, join_params):
432 389
         """Génère un objet "Jointure" pour le greffer dans une requête
433 390
 
434
-        Args:
435
-            join_params (dict) : dictionnaire de données sur la jointure.
436
-                                 On peut avoir les deux formats suivants :
437
-                                 {
438
-                                    "left":"table.champ",
439
-                                    "right":"table.champ",
440
-                                    "options":{"outer":True|False}
441
-                                 }
442
-                                 ou
443
-                                 {
444
-                                    "left":{"table":"nom de la table","field":"nom du champ"},
445
-                                    "right":{"table":"nom de la table","field":"nom du champ"},
446
-                                    "options":{"outer":True|False}
447
-                                 }
448
-        Returns:
449
-             join.
391
+            Format des dictionnaires de description des jointures :
392
+            - Format1 liste de champs
393
+             - "left":"table.champ",
394
+             - "right":"table.champ",
395
+             - "options":{"outer":True|False}
396
+            - Format2 liste de champs
397
+             - "left":{"table":"nom de la table","field":"nom du champ"},
398
+             - "right":{"table":"nom de la table","field":"nom du champ"},
399
+             - "options":{"outer":True|False}
400
+    
401
+            @param join_params (dict) : dictionnaire de données sur la jointure.
402
+            @return join.
450 403
         """
451 404
 
452 405
         join_object = None

+ 1
- 1
Doxyfile View File

@@ -909,7 +909,7 @@ IMAGE_PATH             =
909 909
 # code is scanned, but not when the output code is generated. If lines are added
910 910
 # or removed, the anchors will not be placed correctly.
911 911
 
912
-INPUT_FILTER           = "python /usr/bin/doxypy"
912
+INPUT_FILTER           = "doxypy"
913 913
 
914 914
 # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
915 915
 # basis. Doxygen will compare the file name with each pattern and apply the

Loading…
Cancel
Save