Passed
Push — master ( b096e3...2a1ed3 )
by KAMI
02:36
created

osm_poi_matchmaker.libs.poi_dataset   F

Complexity

Total Complexity 182

Size/Duplication

Total Lines 923
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 739
dl 0
loc 923
rs 1.861
c 0
b 0
f 0
wmc 182

How to fix   Complexity   

Complexity

Complex classes like osm_poi_matchmaker.libs.poi_dataset often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.

Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.

1
# -*- coding: utf-8 -*-
2
__author__ = 'kami911'
3
4
try:
5
    import traceback
6
    import logging
7
    import sys
8
    import pandas as pd
9
    from osm_poi_matchmaker.utils.enums import WeekDaysShort, OpenClose
10
    from osm_poi_matchmaker.libs.opening_hours import OpeningHours
11
    from osm_poi_matchmaker.libs.geo import check_geom
12
    from osm_poi_matchmaker.libs.address import clean_string, clean_url, clean_branch
13
    from osm_poi_matchmaker.dao import poi_array_structure
14
    from osm_poi_matchmaker.utils import config
15
    from osm_poi_matchmaker.dao.poi_base import POIBase
16
    from osm_poi_matchmaker.libs.poi_qc import POIQC
17
except ImportError as err:
18
    logging.error('Error {error} import module: {module}', module=__name__, error=err)
19
    logging.error(traceback.print_exc())
20
    sys.exit(128)
21
22
__program__ = 'poi_dataset'
23
__version__ = '0.0.5'
24
25
POI_COLS = poi_array_structure.POI_COLS
26
27
28
class POIDataset:
29
30
    def __init__(self):
31
        self.insert_data = []
32
        self.__db = POIBase(
33
            '{}://{}:{}@{}:{}/{}'.format(config.get_database_type(), config.get_database_writer_username(),
34
                                         config.get_database_writer_password(),
35
                                         config.get_database_writer_host(),
36
                                         config.get_database_writer_port(),
37
                                         config.get_database_poi_database()))
38
        self.__code = None
39
        self.__postcode = None
40
        self.__city = None
41
        self.__name = None
42
        self.__branch = None
43
        self.__website = None
44
        self.__description = None
45
        self.__fuel_adblue = None
46
        self.__fuel_octane_100 = None
47
        self.__fuel_octane_98 = None
48
        self.__fuel_octane_95 = None
49
        self.__fuel_diesel_gtl = None
50
        self.__fuel_diesel = None
51
        self.__fuel_lpg = None
52
        self.__fuel_e85 = None
53
        self.__rent_lpg_bottles = None
54
        self.__compressed_air = None
55
        self.__restaurant = None
56
        self.__food = None
57
        self.__truck = None
58
        self.__authentication_app = None
59
        self.__authentication_membership_card = None
60
        self.__capacity = None
61
        self.__fee = None
62
        self.__parking_fee = None
63
        self.__motorcar = None
64
        self.__socket_chademo = None
65
        self.__socket_chademo_output = None
66
        self.__socket_type1_combo = None
67
        self.__socket_type1_combo_output = None
68
        self.__socket_type2_cable = None
69
        self.__socket_type2_cable_output = None
70
        self.__manufacturer = None
71
        self.__model = None
72
        self.__original = None
73
        self.__street = None
74
        self.__housenumber = None
75
        self.__conscriptionnumber = None
76
        self.__ref = None
77
        self.__phone = None
78
        self.__email = None
79
        self.__geom = None
80
        self.__lat = None
81
        self.__lon = None
82
        self.__nonstop = None
83
        self.__oh = pd.DataFrame(index=WeekDaysShort, columns=OpenClose)
84
        self.__lunch_break = {'start': None, 'stop': None}
85
        self.__opening_hours = None
86
        self.__public_holiday_open = None
87
        self.__good = []
88
        self.__bad = []
89
90
    def clear_all(self):
91
        self.__code = None
92
        self.__postcode = None
93
        self.__city = None
94
        self.__name = None
95
        self.__branch = None
96
        self.__website = None
97
        self.__description = None
98
        self.__fuel_adblue = None
99
        self.__fuel_octane_100 = None
100
        self.__fuel_octane_98 = None
101
        self.__fuel_octane_95 = None
102
        self.__fuel_diesel_gtl = None
103
        self.__fuel_diesel = None
104
        self.__fuel_lpg = None
105
        self.__fuel_e85 = None
106
        self.__rent_lpg_bottles = None
107
        self.__compressed_air = None
108
        self.__restaurant = None
109
        self.__food = None
110
        self.__truck = None
111
        self.__authentication_app = None
112
        self.__authentication_membership_card = None
113
        self.__capacity = None
114
        self.__fee = None
115
        self.__parking_fee = None
116
        self.__motorcar = None
117
        self.__socket_chademo = None
118
        self.__socket_chademo_output = None
119
        self.__socket_type1_combo = None
120
        self.__socket_type1_combo_output = None
121
        self.__socket_type2_cable = None
122
        self.__socket_type2_cable_output = None
123
        self.__manufacturer = None
124
        self.__model = None
125
        self.__original = None
126
        self.__street = None
127
        self.__housenumber = None
128
        self.__conscriptionnumber = None
129
        self.__ref = None
130
        self.__phone = None
131
        self.__email = None
132
        self.__geom = None
133
        self.__lat = None
134
        self.__lon = None
135
        self.__nonstop = None
136
        self.__oh = pd.DataFrame(index=WeekDaysShort, columns=OpenClose)
137
        self.__lunch_break = {'start': None, 'stop': None}
138
        self.__opening_hours = None
139
        self.__public_holiday_open = None
140
        self.__good = []
141
        self.__bad = []
142
143
    @property
144
    def code(self):
145
        return self.__code
146
147
    @code.setter
148
    def code(self, data):
149
        self.__code = data
150
151
    @property
152
    def postcode(self):
153
        return self.__postcode
154
155
    @postcode.setter
156
    def postcode(self, data):
157
        self.__postcode = data
158
159
    @property
160
    def city(self):
161
        return self.__city
162
163
    @city.setter
164
    def city(self, data):
165
        self.__city = data
166
167
    @property
168
    def name(self):
169
        return self.__name
170
171
    @name.setter
172
    def name(self, data):
173
        self.__name = data
174
175
    @property
176
    def branch(self):
177
        return self.__branch
178
179
    @branch.setter
180
    def branch(self, data):
181
        self.__branch = clean_branch(data)
182
183
    @property
184
    def website(self):
185
        return self.__website
186
187
    @website.setter
188
    def website(self, data):
189
        self.__website = clean_url(data)
190
191
    @property
192
    def description(self):
193
        return self.__description
194
195
    @description.setter
196
    def description(self, data):
197
        self.__description = data
198
199
    @property
200
    def fuel_adblue(self):
201
        return self.__fuel_adblue
202
203
    @fuel_adblue.setter
204
    def fuel_adblue(self, data):
205
        self.__fuel_adblue = data
206
207
    @property
208
    def fuel_octane_100(self):
209
        return self.__fuel_octane_100
210
211
    @fuel_octane_100.setter
212
    def fuel_octane_100(self, data):
213
        self.__fuel_octane_100 = data
214
215
    @property
216
    def fuel_octane_98(self):
217
        return self.__fuel_octane_98
218
219
    @fuel_octane_98.setter
220
    def fuel_octane_98(self, data):
221
        self.__fuel_octane_98 = data
222
223
    @property
224
    def fuel_octane_95(self):
225
        return self.__fuel_octane_95
226
227
    @fuel_octane_95.setter
228
    def fuel_octane_95(self, data):
229
        self.__fuel_octane_95 = data
230
231
    @property
232
    def fuel_diesel_gtl(self):
233
        return self.__fuel_diesel_gtl
234
235
    @fuel_diesel_gtl.setter
236
    def fuel_diesel_gtl(self, data):
237
        self.__fuel_diesel_gtl = data
238
239
    @property
240
    def fuel_diesel(self):
241
        return self.__fuel_diesel
242
243
    @fuel_diesel.setter
244
    def fuel_diesel(self, data):
245
        self.__fuel_diesel = data
246
247
    @property
248
    def fuel_lpg(self):
249
        return self.__fuel_lpg
250
251
    @fuel_lpg.setter
252
    def fuel_lpg(self, data):
253
        self.__fuel_lpg = data
254
255
    @property
256
    def fuel_e85(self):
257
        return self.__fuel_e85
258
259
    @fuel_e85.setter
260
    def fuel_e85(self, data):
261
        self.__fuel_e85 = data
262
263
    @property
264
    def rent_lpg_bottles(self):
265
        return self.__rent_lpg_bottles
266
267
    @rent_lpg_bottles.setter
268
    def rent_lpg_bottles(self, data):
269
        self.__rent_lpg_bottles = data
270
271
    @property
272
    def compressed_air(self):
273
        return self.__compressed_air
274
275
    @compressed_air.setter
276
    def compressed_air(self, data):
277
        self.__compressed_air = data
278
279
    @property
280
    def restaurant(self):
281
        return self.__restaurant
282
283
    @restaurant.setter
284
    def restaurant(self, data):
285
        self.__restaurant = data
286
287
    @property
288
    def food(self):
289
        return self.__food
290
291
    @food.setter
292
    def food(self, data):
293
        self.__food = data
294
295
    @property
296
    def truck(self):
297
        return self.__truck
298
299
    @truck.setter
300
    def truck(self, data):
301
        self.__truck = data
302
303
    @property
304
    def authentication_app(self):
305
        return self.__authentication_app
306
307
    @authentication_app.setter
308
    def authentication_app(self, data):
309
        self.__authentication_app = data
310
311
    @property
312
    def authentication_membership_card(self):
313
        return self.__authentication_membership_card
314
315
    @authentication_membership_card.setter
316
    def authentication_membership_card(self, data):
317
        self.__authentication_membership_card = data
318
319
    @property
320
    def capacity(self):
321
        return self.__capacity
322
323
    @capacity.setter
324
    def capacity(self, data):
325
        self.__capacity = data
326
327
    @property
328
    def fee(self):
329
        return self.__fee
330
331
    @fee.setter
332
    def fee(self, data):
333
        self.__fee = data
334
335
    @property
336
    def parking_fee(self):
337
        return self.__parking_fee
338
339
    @parking_fee.setter
340
    def parking_fee(self, data):
341
        self.__parking_fee = data
342
343
    @property
344
    def motorcar(self):
345
        return self.__motorcar
346
347
    @motorcar.setter
348
    def motorcar(self, data):
349
        self.__motorcar = data
350
351
    @property
352
    def socket_chademo(self):
353
        return self.__socket_chademo
354
355
    @socket_chademo.setter
356
    def socket_chademo(self, data):
357
        self.__socket_chademo = data
358
359
    @property
360
    def socket_chademo_output(self):
361
        return self.__socket_chademo_output
362
363
    @socket_chademo_output.setter
364
    def socket_chademo_output(self, data):
365
        self.__socket_chademo_output = data
366
367
    @property
368
    def socket_type1_combo(self):
369
        return self.__socket_type1_combo
370
371
    @socket_type1_combo.setter
372
    def socket_type1_combo(self, data):
373
        self.__socket_type1_combo = data
374
375
    @property
376
    def socket_type1_combo_output(self):
377
        return self.__socket_type1_combo_output
378
379
    @socket_type1_combo_output.setter
380
    def socket_type1_combo_output(self, data):
381
        self.__socket_type1_combo_output = data
382
383
    @property
384
    def socket_type2_cable(self):
385
        return self.__socket_type2_cable
386
387
    @socket_type2_cable.setter
388
    def socket_type2_cable(self, data):
389
        self.__socket_type2_cable = data
390
391
    @property
392
    def socket_type2_cable_output(self):
393
        return self.__socket_type2_cable_output
394
395
    @socket_type2_cable_output.setter
396
    def socket_type2_cable_output(self, data):
397
        self.__socket_type2_cable_output = data
398
399
    @property
400
    def manufacturer(self):
401
        return self.__manufacturer
402
403
    @manufacturer.setter
404
    def manufacturer(self, data):
405
        self.__manufacturer = data
406
407
    @property
408
    def model(self):
409
        return self.__model
410
411
    @model.setter
412
    def model(self, data):
413
        self.__model = data
414
415
    @property
416
    def original(self):
417
        return self.__original
418
419
    @original.setter
420
    def original(self, data):
421
        self.__original = data
422
423
    @property
424
    def street(self):
425
        return self.__street
426
427
    @street.setter
428
    def street(self, data):
429
        # Try to find street name around
430
        try:
431
            if self.lat is not None and self.lon is not None:
432
                query = self.__db.query_name_road_around(self.lon, self.lat, data, True, 'name')
433
                if query is None or query.empty:
434
                    query = self.__db.query_name_road_around(self.lon, self.lat, data, True, 'metaphone')
435
                    if query is None or query.empty:
436
                        logging.warning('There is no street around named or metaphone named: {}'.format(data))
437
                        self.__street = data
438
                    else:
439
                        new_data = query.at[0, 'name']
440
                        logging.info('There is a metaphone street around named: {}, original was: {}.'
441
                            .format(new_data,data))
442
                        self.__street = new_data
443
                else:
444
                    logging.info('There is a street around named: {}.'.format(data))
445
                    self.__street = data
446
            else:
447
                self.__street = data
448
        except Exception as e:
449
            logging.error(e)
450
            logging.error(traceback.print_exc())
451
452
    @property
453
    def housenumber(self):
454
        return self.__housenumber
455
456
    @housenumber.setter
457
    def housenumber(self, data):
458
        self.__housenumber = data
459
460
    @property
461
    def conscriptionnumber(self):
462
        return self.__conscriptionnumber
463
464
    @conscriptionnumber.setter
465
    def conscriptionnumber(self, data):
466
        self.__conscriptionnumber = data
467
468
    @property
469
    def ref(self):
470
        return self.__ref
471
472
    @ref.setter
473
    def ref(self, data):
474
        self.__ref = data
475
476
    @property
477
    def phone(self):
478
        return self.__phone
479
480
    @phone.setter
481
    def phone(self, data):
482
        if data == 'NULL':
483
            self.__phone = None
484
        else:
485
            self.__phone = data
486
487
    @property
488
    def email(self):
489
        return self.__email
490
491
    @email.setter
492
    def email(self, data):
493
        if data == 'NULL':
494
            self.__email = None
495
        else:
496
            self.__email = data
497
498
    @property
499
    def geom(self):
500
        return self.__geom
501
502
    @geom.setter
503
    def geom(self, data):
504
        self.__geom = data
505
506
    @property
507
    def lat(self):
508
        return self.__lat
509
510
    @lat.setter
511
    def lat(self, lat):
512
        self.__lat = lat
513
514
    @property
515
    def lon(self):
516
        return self.__lon
517
518
    @lon.setter
519
    def lon(self, lon):
520
        self.__lon = lon
521
522
    def process_geom(self):
523
        self.geom = check_geom(self.__lat, self.__lon)
524
525
    @property
526
    def opening_hours_table(self):
527
        return self.__oh
528
529
    @opening_hours_table.setter
530
    def opening_hours_table(self, data):
531
        self.__oh = pd.DataFrame(data, index=WeekDaysShort, columns=OpenClose)
532
533
    @property
534
    def nonstop(self):
535
        return self.__nonstop
536
537
    @nonstop.setter
538
    def nonstop(self, data):
539
        self.__nonstop = data
540
541
    @property
542
    def mo_o(self):
543
        return self.__oh.at[WeekDaysShort.mo, OpenClose.open]
544
545
    @mo_o.setter
546
    def mo_o(self, data):
547
        self.__oh.at[WeekDaysShort.mo, OpenClose.open] = data
548
549
    @property
550
    def tu_o(self):
551
        return self.__oh.at[WeekDaysShort.tu, OpenClose.open]
552
553
    @tu_o.setter
554
    def tu_o(self, data):
555
        self.__oh.at[WeekDaysShort.tu, OpenClose.open] = data
556
557
    @property
558
    def we_o(self):
559
        return self.__oh.at[WeekDaysShort.we, OpenClose.open]
560
561
    @we_o.setter
562
    def we_o(self, data):
563
        self.__oh.at[WeekDaysShort.we, OpenClose.open] = data
564
565
    @property
566
    def th_o(self):
567
        return self.__oh.at[WeekDaysShort.th, OpenClose.open]
568
569
    @th_o.setter
570
    def th_o(self, data):
571
        self.__oh.at[WeekDaysShort.th, OpenClose.open] = data
572
573
    @property
574
    def fr_o(self):
575
        return self.__oh.at[WeekDaysShort.fr, OpenClose.open]
576
577
    @fr_o.setter
578
    def fr_o(self, data):
579
        self.__oh.at[WeekDaysShort.fr, OpenClose.open] = data
580
581
    @property
582
    def sa_o(self):
583
        return self.__oh.at[WeekDaysShort.sa, OpenClose.open]
584
585
    @sa_o.setter
586
    def sa_o(self, data):
587
        self.__oh.at[WeekDaysShort.sa, OpenClose.open] = data
588
589
    @property
590
    def su_o(self):
591
        return self.__oh.at[WeekDaysShort.su, OpenClose.open]
592
593
    @su_o.setter
594
    def su_o(self, data):
595
        self.__oh.at[WeekDaysShort.su, OpenClose.open] = data
596
597
    @property
598
    def mo_c(self):
599
        return self.__oh.at[WeekDaysShort.mo, OpenClose.close]
600
601
    @mo_c.setter
602
    def mo_c(self, data):
603
        self.__oh.at[WeekDaysShort.mo, OpenClose.close] = data
604
605
    @property
606
    def tu_c(self):
607
        return self.__oh.at[WeekDaysShort.tu, OpenClose.close]
608
609
    @tu_c.setter
610
    def tu_c(self, data):
611
        self.__oh.at[WeekDaysShort.tu, OpenClose.close] = data
612
613
    @property
614
    def we_c(self):
615
        return self.__oh.at[WeekDaysShort.we, OpenClose.close]
616
617
    @we_c.setter
618
    def we_c(self, data):
619
        self.__oh.at[WeekDaysShort.we, OpenClose.close] = data
620
621
    @property
622
    def th_c(self):
623
        return self.__oh.at[WeekDaysShort.th, OpenClose.close]
624
625
    @th_c.setter
626
    def th_c(self, data):
627
        self.__oh.at[WeekDaysShort.th, OpenClose.close] = data
628
629
    @property
630
    def fr_c(self):
631
        return self.__oh.at[WeekDaysShort.fr, OpenClose.close]
632
633
    @fr_c.setter
634
    def fr_c(self, data):
635
        self.__oh.at[WeekDaysShort.fr, OpenClose.close] = data
636
637
    @property
638
    def sa_c(self):
639
        return self.__oh.at[WeekDaysShort.sa, OpenClose.close]
640
641
    @sa_c.setter
642
    def sa_c(self, data):
643
        self.__oh.at[WeekDaysShort.sa, OpenClose.close] = data
644
645
    @property
646
    def su_c(self):
647
        return self.__oh.at[WeekDaysShort.su, OpenClose.close]
648
649
    @su_c.setter
650
    def su_c(self, data):
651
        self.__oh.at[WeekDaysShort.su, OpenClose.close] = data
652
653
    @property
654
    def summer_mo_o(self):
655
        return self.__oh.at[WeekDaysShort.mo, OpenClose.summer_open]
656
657
    @summer_mo_o.setter
658
    def summer_mo_o(self, data):
659
        self.__oh.at[WeekDaysShort.mo, OpenClose.summer_open] = data
660
661
    @property
662
    def summer_tu_o(self):
663
        return self.__oh.at[WeekDaysShort.tu, OpenClose.summer_open]
664
665
    @summer_tu_o.setter
666
    def summer_tu_o(self, data):
667
        self.__oh.at[WeekDaysShort.tu, OpenClose.summer_open] = data
668
669
    @property
670
    def summer_we_o(self):
671
        return self.__oh.at[WeekDaysShort.we, OpenClose.summer_open]
672
673
    @summer_we_o.setter
674
    def summer_we_o(self, data):
675
        self.__oh.at[WeekDaysShort.we, OpenClose.summer_open] = data
676
677
    @property
678
    def summer_th_o(self):
679
        return self.__oh.at[WeekDaysShort.th, OpenClose.summer_open]
680
681
    @summer_th_o.setter
682
    def summer_th_o(self, data):
683
        self.__oh.at[WeekDaysShort.th, OpenClose.summer_open] = data
684
685
    @property
686
    def summer_fr_o(self):
687
        return self.__oh.at[WeekDaysShort.fr, OpenClose.summer_open]
688
689
    @summer_fr_o.setter
690
    def summer_fr_o(self, data):
691
        self.__oh.at[WeekDaysShort.fr, OpenClose.summer_open] = data
692
693
    @property
694
    def summer_sa_o(self):
695
        return self.__oh.at[WeekDaysShort.sa, OpenClose.summer_open]
696
697
    @summer_sa_o.setter
698
    def summer_sa_o(self, data):
699
        self.__oh.at[WeekDaysShort.sa, OpenClose.summer_open] = data
700
701
    @property
702
    def summer_su_o(self):
703
        return self.__oh.at[WeekDaysShort.su, OpenClose.summer_open]
704
705
    @summer_su_o.setter
706
    def summer_su_o(self, data):
707
        self.__oh.at[WeekDaysShort.su, OpenClose.summer_open] = data
708
709
    @property
710
    def summer_mo_c(self):
711
        return self.__oh.at[WeekDaysShort.mo, OpenClose.summer_close]
712
713
    @summer_mo_c.setter
714
    def summer_mo_c(self, data):
715
        self.__oh.at[WeekDaysShort.mo, OpenClose.summer_close] = data
716
717
    @property
718
    def summer_tu_c(self):
719
        return self.__oh.at[WeekDaysShort.tu, OpenClose.summer_close]
720
721
    @summer_tu_c.setter
722
    def summer_tu_c(self, data):
723
        self.__oh.at[WeekDaysShort.tu, OpenClose.summer_close] = data
724
725
    @property
726
    def summer_we_c(self):
727
        return self.__oh.at[WeekDaysShort.we, OpenClose.summer_close]
728
729
    @summer_we_c.setter
730
    def summer_we_c(self, data):
731
        self.__oh.at[WeekDaysShort.we, OpenClose.summer_close] = data
732
733
    @property
734
    def summer_th_c(self):
735
        return self.__oh.at[WeekDaysShort.th, OpenClose.summer_close]
736
737
    @summer_th_c.setter
738
    def summer_th_c(self, data):
739
        self.__oh.at[WeekDaysShort.th, OpenClose.summer_close] = data
740
741
    @property
742
    def summer_fr_c(self):
743
        return self.__oh.at[WeekDaysShort.fr, OpenClose.summer_close]
744
745
    @summer_fr_c.setter
746
    def summer_fr_c(self, data):
747
        self.__oh.at[WeekDaysShort.fr, OpenClose.summer_close] = data
748
749
    @property
750
    def summer_sa_c(self):
751
        return self.__oh.at[WeekDaysShort.sa, OpenClose.summer_close]
752
753
    @summer_sa_c.setter
754
    def summer_sa_c(self, data):
755
        self.__oh.at[WeekDaysShort.sa, OpenClose.summer_close] = data
756
757
    @property
758
    def summer_su_c(self):
759
        return self.__oh.at[WeekDaysShort.su, OpenClose.summer_close]
760
761
    @summer_su_c.setter
762
    def summer_su_c(self, data):
763
        self.__oh.at[WeekDaysShort.su, OpenClose.summer_close] = data
764
765
    @property
766
    def lunch_break(self):
767
        return self.__lunch_break['start'], self.__lunch_break['stop']
768
769
    @lunch_break.setter
770
    def lunch_break(self, lunch_break_start, lunch_break_stop):
771
        self.__lunch_break = {'start': lunch_break_start, 'stop': lunch_break_stop}
772
773
    @property
774
    def lunch_break_start(self):
775
        return self.__lunch_break['start']
776
777
    @lunch_break_start.setter
778
    def lunch_break_start(self, data):
779
        self.__lunch_break['start'] = data
780
781
    @property
782
    def lunch_break_stop(self):
783
        return self.__lunch_break['stop']
784
785
    @lunch_break_stop.setter
786
    def lunch_break_stop(self, data):
787
        self.__lunch_break['stop'] = data
788
789
    def day_open(self, day, data):
790
        self.__oh.at[WeekDaysShort(day), OpenClose.open] = data
791
792
    def day_close(self, day, data):
793
        self.__oh.at[WeekDaysShort(day), OpenClose.close] = data
794
795
    def day_summer_open(self, day, data):
796
        self.__oh.at[WeekDaysShort(day), OpenClose.summer_open] = data
797
798
    def day_summer_close(self, day, data):
799
        self.__oh.at[WeekDaysShort(day), OpenClose.summer_close] = data
800
801
    def day_open_close(self, day, opening, closing):
802
        self.__oh.at[WeekDaysShort(day), OpenClose.open] = opening
803
        self.__oh.at[WeekDaysShort(day), OpenClose.close] = closing
804
805
    def day_summer_open_close(self, day, opening, closing):
806
        self.__oh.at[WeekDaysShort(day), OpenClose.summer_open] = opening
807
        self.__oh.at[WeekDaysShort(day), OpenClose.summer_close] = closing
808
809
    @property
810
    def opening_hours(self):
811
        return self.__opening_hours
812
813
    @opening_hours.setter
814
    def opening_hours(self, data):
815
        self.__opening_hours = data
816
817
    @property
818
    def public_holiday_open(self):
819
        return self.__public_holiday_open
820
821
    @public_holiday_open.setter
822
    def public_holiday_open(self, data):
823
        self.__public_holiday_open = data
824
825
    def process_opening_hours(self):
826
        self.__oh = self.__oh.where((pd.notnull(self.__oh)), None)
827
        t = OpeningHours(self.__nonstop, self.__oh.at[WeekDaysShort.mo, OpenClose.open],
828
                         self.__oh.at[WeekDaysShort.tu, OpenClose.open],
829
                         self.__oh.at[WeekDaysShort.we, OpenClose.open],
830
                         self.__oh.at[WeekDaysShort.th, OpenClose.open],
831
                         self.__oh.at[WeekDaysShort.fr, OpenClose.open],
832
                         self.__oh.at[WeekDaysShort.sa, OpenClose.open],
833
                         self.__oh.at[WeekDaysShort.su, OpenClose.open],
834
                         self.__oh.at[WeekDaysShort.mo, OpenClose.close],
835
                         self.__oh.at[WeekDaysShort.tu, OpenClose.close],
836
                         self.__oh.at[WeekDaysShort.we, OpenClose.close],
837
                         self.__oh.at[WeekDaysShort.th, OpenClose.close],
838
                         self.__oh.at[WeekDaysShort.fr, OpenClose.close],
839
                         self.__oh.at[WeekDaysShort.sa, OpenClose.close],
840
                         self.__oh.at[WeekDaysShort.su, OpenClose.close],
841
                         self.__oh.at[WeekDaysShort.mo, OpenClose.summer_open],
842
                         self.__oh.at[WeekDaysShort.tu, OpenClose.summer_open],
843
                         self.__oh.at[WeekDaysShort.we, OpenClose.summer_open],
844
                         self.__oh.at[WeekDaysShort.th, OpenClose.summer_open],
845
                         self.__oh.at[WeekDaysShort.fr, OpenClose.summer_open],
846
                         self.__oh.at[WeekDaysShort.sa, OpenClose.summer_open],
847
                         self.__oh.at[WeekDaysShort.su, OpenClose.summer_open],
848
                         self.__oh.at[WeekDaysShort.mo, OpenClose.summer_close],
849
                         self.__oh.at[WeekDaysShort.tu, OpenClose.summer_close],
850
                         self.__oh.at[WeekDaysShort.we, OpenClose.summer_close],
851
                         self.__oh.at[WeekDaysShort.th, OpenClose.summer_close],
852
                         self.__oh.at[WeekDaysShort.fr, OpenClose.summer_close],
853
                         self.__oh.at[WeekDaysShort.sa, OpenClose.summer_close],
854
                         self.__oh.at[WeekDaysShort.su, OpenClose.summer_close],
855
                         self.__lunch_break['start'], self.__lunch_break['stop'],
856
                         self.__public_holiday_open)
857
        self.__opening_hours = t.process()
858
859
    def dump_opening_hours(self):
860
        print(self.__opening_hours)
861
862
    def add(self):
863
        try:
864
            self.process_opening_hours()
865
            self.process_geom()
866
            pqc = POIQC(self.__db, self.__lon, self.__lat, self.__opening_hours, self.__street)
867
            self.__good, self.__bad = pqc.process()
868
            self.insert_data.append(
869
                [self.__code, self.__postcode, self.__city, self.__name, clean_string(self.__branch), self.__website,
870
                 self.__description, self.__fuel_adblue, self.__fuel_octane_100, self.__fuel_octane_98,
871
                 self.__fuel_octane_95, self.__fuel_diesel_gtl, self.__fuel_diesel, self.__fuel_lpg,
872
                 self.__fuel_e85, self.__rent_lpg_bottles, self.__compressed_air, self.__restaurant, self.__food,
873
                 self.__truck,
874
                 self.__authentication_app, self.__authentication_membership_card, self.__capacity, self.__fee,
875
                 self.__parking_fee, self.__motorcar, self.__socket_chademo, self.__socket_chademo_output,
876
                 self.__socket_type1_combo, self.__socket_type1_combo_output,
877
                 self.__socket_type2_cable, self.__socket_type2_cable_output, self.__manufacturer, self.__model,
878
                 self.__original, self.__street, self.__housenumber, self.__conscriptionnumber,
879
                 self.__ref, self.__phone, self.__email, self.__geom, self.__nonstop,
880
                 self.__oh.at[WeekDaysShort.mo, OpenClose.open],
881
                 self.__oh.at[WeekDaysShort.tu, OpenClose.open],
882
                 self.__oh.at[WeekDaysShort.we, OpenClose.open],
883
                 self.__oh.at[WeekDaysShort.th, OpenClose.open],
884
                 self.__oh.at[WeekDaysShort.fr, OpenClose.open],
885
                 self.__oh.at[WeekDaysShort.sa, OpenClose.open],
886
                 self.__oh.at[WeekDaysShort.su, OpenClose.open],
887
                 self.__oh.at[WeekDaysShort.mo, OpenClose.close],
888
                 self.__oh.at[WeekDaysShort.tu, OpenClose.close],
889
                 self.__oh.at[WeekDaysShort.we, OpenClose.close],
890
                 self.__oh.at[WeekDaysShort.th, OpenClose.close],
891
                 self.__oh.at[WeekDaysShort.fr, OpenClose.close],
892
                 self.__oh.at[WeekDaysShort.sa, OpenClose.close],
893
                 self.__oh.at[WeekDaysShort.su, OpenClose.close],
894
                 self.__oh.at[WeekDaysShort.mo, OpenClose.summer_open],
895
                 self.__oh.at[WeekDaysShort.tu, OpenClose.summer_open],
896
                 self.__oh.at[WeekDaysShort.we, OpenClose.summer_open],
897
                 self.__oh.at[WeekDaysShort.th, OpenClose.summer_open],
898
                 self.__oh.at[WeekDaysShort.fr, OpenClose.summer_open],
899
                 self.__oh.at[WeekDaysShort.sa, OpenClose.summer_open],
900
                 self.__oh.at[WeekDaysShort.su, OpenClose.summer_open],
901
                 self.__oh.at[WeekDaysShort.mo, OpenClose.summer_close],
902
                 self.__oh.at[WeekDaysShort.tu, OpenClose.summer_close],
903
                 self.__oh.at[WeekDaysShort.we, OpenClose.summer_close],
904
                 self.__oh.at[WeekDaysShort.th, OpenClose.summer_close],
905
                 self.__oh.at[WeekDaysShort.fr, OpenClose.summer_close],
906
                 self.__oh.at[WeekDaysShort.sa, OpenClose.summer_close],
907
                 self.__oh.at[WeekDaysShort.su, OpenClose.summer_close], self.__lunch_break['start'],
908
                 self.__lunch_break['stop'],
909
                 self.__public_holiday_open, self.__opening_hours, self.__good, self.__bad])
910
            self.clear_all()
911
        except Exception as err:
912
            logging.error(err)
913
            logging.error(traceback.print_exc())
914
915
    def process(self):
916
        df = pd.DataFrame(self.insert_data)
917
        df.columns = POI_COLS
918
        return df.where((pd.notnull(df)), None
919
920
    def lenght(self):
0 ignored issues
show
introduced by
invalid syntax (<unknown>, line 920)
Loading history...
921
        return len(self.insert_data)
922