Projekt

Obecné

Profil

Stáhnout (35.2 KB) Statistiky
| Větev: | Tag: | Revize:
1 99c92c11 Matej Zeman
from datetime import datetime, date
2 aba60b70 Matej Zeman
3 99c92c11 Matej Zeman
from sqlalchemy.orm import Session
4 b6f0e019 Matej Zeman
from sqlalchemy import and_, desc
5 aba60b70 Matej Zeman
from . import models, schemas
6
7
8
def get_device(db: Session, device_id: int):
9 4911f0ea Matej Zeman
    """
10
    returns one specific devices by given id
11
    """
12 aba60b70 Matej Zeman
    return db.query(models.Device).filter(models.Device.id == device_id).first()
13
14
15
def get_devices(db: Session, skip: int = 0, limit: int = 100):
16 4911f0ea Matej Zeman
    """
17
    returns all devices in database
18
    """
19 aba60b70 Matej Zeman
    return db.query(models.Device).offset(skip).limit(limit).all()
20
21
22 35168e5f zemanm98@students.zcu.cz
def find_device(db: Session, device: schemas.DeviceTemp):
23 4911f0ea Matej Zeman
    """
24 35168e5f zemanm98@students.zcu.cz
    finds one device with  serial_number same as in given DeviceBase object
25 4911f0ea Matej Zeman
    """
26 35168e5f zemanm98@students.zcu.cz
    return db.query(models.Device).filter(and_(models.Device.serial_number == device.serial_number)).first()
27 aba60b70 Matej Zeman
28
29 35168e5f zemanm98@students.zcu.cz
def find_device_by_serial(db: Session, ser: str):
30
    """
31
    finds one device with serial_number same as in given DeviceBase object
32
    """
33
    return db.query(models.Device).filter(and_(models.Device.serial_number == ser)).first()
34
35 0fcb708f Matej Zeman
36 35168e5f zemanm98@students.zcu.cz
def get_devices_with_ids(db: Session, ids: []):
37
    """
38
    returns all devices with given ids
39
    """
40
    return db.query(models.Device).filter(models.Device.id.in_(ids)).all()
41
42 0fcb708f Matej Zeman
43
def get_bodydevices_with_ids(db: Session, ids: []):
44
    """
45
    returns all bodydevices with given ids
46
    """
47
    return db.query(models.BodyDevice).filter(models.BodyDevice.id.in_(ids)).all()
48
49
50
def get_headdevices_with_ids(db: Session, ids: []):
51
    """
52
    returns all headdevices with given ids
53
    """
54
    return db.query(models.HeadDevice).filter(models.HeadDevice.id.in_(ids)).all()
55
56
57
def find_headdevices_by_team(db: Session, team_id: int):
58
    """
59
    Returns all head devices in specific team
60
    """
61
    return db.query(models.HeadDevice).filter(models.HeadDevice.team_id == team_id).all()
62
63
64
def find_bodydevices_by_team(db: Session, team_id: int):
65
    """
66
    Returns all body devices in specific team
67
    """
68
    return db.query(models.BodyDevice).filter(models.BodyDevice.team_id == team_id).all()
69
70
71
def find_headdevices_by_license(db: Session, lic_id: int):
72
    """
73
    Returns all head devices with specific license
74
    """
75
    return db.query(models.HeadDevice).filter(models.HeadDevice.license_id == lic_id).all()
76
77
78
def find_bodydevices_by_license(db: Session, lic_id: int):
79
    """
80
    Returns all body devices with specific license
81
    """
82
    return db.query(models.BodyDevice).filter(models.BodyDevice.license_id == lic_id).all()
83
84
85 35168e5f zemanm98@students.zcu.cz
def get_devices_by_team(db: Session, team: int):
86
    """
87
    returns all devices with same team
88
    """
89
    return db.query(models.Device).filter(models.Device.team_id == team).all()
90
91 0fcb708f Matej Zeman
92 35168e5f zemanm98@students.zcu.cz
def create_device(db: Session, device: schemas.DeviceTemp):
93 4911f0ea Matej Zeman
    """
94
    creates new device with data from given DeviceBase object
95
    """
96 aba60b70 Matej Zeman
    db_device = models.Device(vendor_id=device.vendor_id, product_id=device.product_id,
97 35168e5f zemanm98@students.zcu.cz
                              serial_number=device.serial_number, inventory_number="", comment="")
98 aba60b70 Matej Zeman
    db.add(db_device)
99
    db.commit()
100
    db.refresh(db_device)
101
    return db_device
102
103
104 6c1e92e3 Matej Zeman
def get_license(db: Session, license_id: int):
105 4911f0ea Matej Zeman
    """
106
    returns one specific license by given id
107
    """
108 6c1e92e3 Matej Zeman
    return db.query(models.License).filter(models.License.id == license_id).first()
109
110
111
def get_licenses(db: Session, skip: int = 0, limit: int = 100):
112 4911f0ea Matej Zeman
    """
113
    returns all licenses in database
114
    """
115 6c1e92e3 Matej Zeman
    return db.query(models.License).offset(skip).limit(limit).all()
116
117
118 b6f0e019 Matej Zeman
def find_license(db: Session, name: str):
119 4911f0ea Matej Zeman
    """
120
    finds one license by given string name
121
    """
122 35168e5f zemanm98@students.zcu.cz
    return db.query(models.License).filter(models.License.license_id == name).first()
123
124 b6f0e019 Matej Zeman
125 35168e5f zemanm98@students.zcu.cz
def get_licenses_by_name(db: Session, name: str):
126
    return db.query(models.License).filter(models.License.name == name).all()
127 b6f0e019 Matej Zeman
128 35168e5f zemanm98@students.zcu.cz
129
def create_license(db: Session, name: str, lic_id: str, expdate: date):
130 4911f0ea Matej Zeman
    """
131
    creates new license with given name and expiration date
132
    """
133 35168e5f zemanm98@students.zcu.cz
    db_license = models.License(name=name, license_id=lic_id, expiration_date=expdate)
134 6c1e92e3 Matej Zeman
    db.add(db_license)
135
    db.commit()
136
    db.refresh(db_license)
137
    return db_license
138
139
140 b6f0e019 Matej Zeman
def get_license_devices(db: Session, license_id: int):
141 4911f0ea Matej Zeman
    """
142 7fe7be79 zemanm98@students.zcu.cz
    returns all entries in devices_licenses table with given license_id
143 4911f0ea Matej Zeman
    """
144 b6f0e019 Matej Zeman
    return db.query(models.DeviceLicense).filter(models.DeviceLicense.license_id == license_id).all()
145
146
147 35168e5f zemanm98@students.zcu.cz
def find_devicelicenses_by_licid_array(db: Session, lcs: []):
148
    """
149
    Finds all device_licenses with license_id in given id array
150
    """
151
    return db.query(models.DeviceLicense).filter(models.DeviceLicense.license_id.in_(lcs)).all()
152
153
154 7fe7be79 zemanm98@students.zcu.cz
def get_device_licenses(db: Session, device_id: int):
155
    """
156 35168e5f zemanm98@students.zcu.cz
    returns all entries in devices_licenses table with given device_id
157 7fe7be79 zemanm98@students.zcu.cz
    """
158
    return db.query(models.DeviceLicense).filter(models.DeviceLicense.device_id == device_id).all()
159
160
161
def get_devicelicense_by_devicelicense(db: Session, device_id: int, license_id: int):
162
    """
163
    returns entry in devices_licenses table with given device id and license id
164
    """
165
    return db.query(models.DeviceLicense).filter(and_(models.DeviceLicense.device_id == device_id,
166
                                                      models.DeviceLicense.license_id == license_id)).first()
167
168
169 b6f0e019 Matej Zeman
def create_device_license(db: Session, device: int, license: int, time: datetime):
170 4911f0ea Matej Zeman
    """
171
    creates new entry in devices_licenses table with device id, license id and time.
172
    """
173 b6f0e019 Matej Zeman
    db_device_license = models.DeviceLicense(device_id=device, license_id=license,
174
                                             assigned_datetime=time)
175 6c1e92e3 Matej Zeman
    db.add(db_device_license)
176
    db.commit()
177
    db.refresh(db_device_license)
178
    return db_device_license
179
180
181 7fe7be79 zemanm98@students.zcu.cz
def delete_device_license(db: Session, device: int, license: int):
182
    """
183
    deletes entry in devices_licenses table with device id, license id and time.
184
    """
185
    db_device_license = get_devicelicense_by_devicelicense(db, device, license)
186
    db_lic = db.delete(db_device_license)
187
    db.commit()
188
    return db_lic
189
190
191 b6f0e019 Matej Zeman
def find_pc_by_username(db: Session, name: str):
192 4911f0ea Matej Zeman
    """
193
    Finds one pc by given username
194
    """
195 b6f0e019 Matej Zeman
    return db.query(models.PC).filter(models.PC.username == name).first()
196
197
198 6c1e92e3 Matej Zeman
def get_pc(db: Session, pc_id: int):
199 4911f0ea Matej Zeman
    """
200
    returns one specific pc by given id
201
    """
202 6c1e92e3 Matej Zeman
    return db.query(models.PC).filter(models.PC.id == pc_id).first()
203
204
205 35168e5f zemanm98@students.zcu.cz
def update_device(db: Session, device_id: int, team: str):
206 4911f0ea Matej Zeman
    """
207 7fe7be79 zemanm98@students.zcu.cz
    Updates team of one specific pc
208 4911f0ea Matej Zeman
    """
209 35168e5f zemanm98@students.zcu.cz
    old_dev = get_device(db, device_id)
210 b6f0e019 Matej Zeman
    team = get_team(db, int(team))
211 35168e5f zemanm98@students.zcu.cz
    new = {'id': old_dev.id, 'vendor_id': old_dev.vendor_id, 'product_id': old_dev.product_id,
212
           'serial_number': old_dev.serial_number, 'inventory_number': old_dev.inventory_number,
213
           'comment': old_dev.comment, 'team_id': team.id}
214
    for key, value in new.items():
215
        setattr(old_dev, key, value)
216
    db.commit()
217
    db.refresh(old_dev)
218
    return old_dev
219
220
221
def update_device_inv(db: Session, device_id: int, inv: str):
222
    """
223
    Updates inventory number of one specific pc
224
    """
225
    old_dev = get_device(db, device_id)
226
    if old_dev.team_id != None:
227
        team = get_team(db, int(old_dev.team_id))
228
        teamid = team.id
229
    else:
230
        teamid = None
231
    new = {'id': old_dev.id, 'vendor_id': old_dev.vendor_id, 'product_id': old_dev.product_id,
232
           'serial_number': old_dev.serial_number, 'inventory_number': inv,
233
           'comment': old_dev.comment, 'team_id': teamid}
234
    for key, value in new.items():
235
        setattr(old_dev, key, value)
236
    db.commit()
237
    db.refresh(old_dev)
238
    return old_dev
239
240
241
def update_device_com(db: Session, device_id: int, comm: str):
242
    """
243
    Updates team of one specific pc
244
    """
245
    old_dev = get_device(db, device_id)
246
    if old_dev.team_id != None:
247
        team = get_team(db, int(old_dev.team_id))
248
        teamid = team.id
249
    else:
250
        teamid = None
251
    new = {'id': old_dev.id, 'vendor_id': old_dev.vendor_id, 'product_id': old_dev.product_id,
252
           'serial_number': old_dev.serial_number, 'inventory_number': old_dev.inventory_number,
253
           'comment': comm, 'team_id': teamid}
254 b6f0e019 Matej Zeman
    for key, value in new.items():
255 35168e5f zemanm98@students.zcu.cz
        setattr(old_dev, key, value)
256 b6f0e019 Matej Zeman
    db.commit()
257 35168e5f zemanm98@students.zcu.cz
    db.refresh(old_dev)
258
    return old_dev
259
260 b6f0e019 Matej Zeman
261 cbd239c6 Matej Zeman
def change_role(db: Session, usr_id: int, role: str):
262
    """
263
    Updates team of one specific pc
264
    """
265
    old_usr = find_user_byid(db, usr_id)
266
    new = {'id': old_usr.id, 'username': old_usr.username, 'password': old_usr.password, 'role': role}
267
    for key, value in new.items():
268
        setattr(old_usr, key, value)
269
    db.commit()
270
    db.refresh(old_usr)
271
    return old_usr
272
273 b6f0e019 Matej Zeman
274 6c1e92e3 Matej Zeman
def get_pcs(db: Session, skip: int = 0, limit: int = 100):
275 4911f0ea Matej Zeman
    """
276
    returns all pcs in database
277
    """
278 6c1e92e3 Matej Zeman
    return db.query(models.PC).offset(skip).limit(limit).all()
279
280
281
def find_pc(db: Session, username: str, hostname: str):
282 4911f0ea Matej Zeman
    """
283
    Finds one pc with given username and hostname
284
    """
285 99c92c11 Matej Zeman
    return db.query(models.PC).filter(and_(models.PC.username == username,
286 b6f0e019 Matej Zeman
                                           models.PC.hostname == hostname)).first()
287
288
289
def find_pc_by_name(db: Session, username: str):
290 4911f0ea Matej Zeman
    """
291
    Finds one pc by its username
292
    """
293 b6f0e019 Matej Zeman
    return db.query(models.PC).filter(models.PC.username == username).first()
294
295
296
def find_pc_by_name_all(db: Session, username: str):
297 4911f0ea Matej Zeman
    """
298
    Finds all pcs with same username
299
    """
300 b6f0e019 Matej Zeman
    return db.query(models.PC).filter(models.PC.username == username).offset(0).limit(100).all()
301 99c92c11 Matej Zeman
302
303
def find_pcs(db: Session, pcs: []):
304 4911f0ea Matej Zeman
    """
305
    Finds all pcs with ids in given id array
306
    """
307 99c92c11 Matej Zeman
    return db.query(models.PC).filter(models.PC.id.in_(pcs)).all()
308 6c1e92e3 Matej Zeman
309
310
def create_pc(db: Session, user: str, host: str):
311 4911f0ea Matej Zeman
    """
312
    creates new pc with given username and hostname
313
    """
314 35168e5f zemanm98@students.zcu.cz
    db_pc = models.PC(username=user, hostname=host)
315 6c1e92e3 Matej Zeman
    db.add(db_pc)
316
    db.commit()
317
    db.refresh(db_pc)
318
    return db_pc
319
320
321 99c92c11 Matej Zeman
def get_team(db: Session, team_id: int):
322 4911f0ea Matej Zeman
    """
323
    returns one specific team wit given id
324
    """
325 99c92c11 Matej Zeman
    return db.query(models.Team).filter(models.Team.id == team_id).first()
326
327
328
def get_teams(db: Session, skip: int = 0, limit: int = 100):
329 4911f0ea Matej Zeman
    """
330
    returns all teams currently saved in database
331
    """
332 99c92c11 Matej Zeman
    return db.query(models.Team).offset(skip).limit(limit).all()
333
334
335 b6f0e019 Matej Zeman
def find_team(db: Session, name: str):
336 4911f0ea Matej Zeman
    """
337
    Finds one specific team by its name
338
    """
339 b6f0e019 Matej Zeman
    return db.query(models.Team).filter(models.Team.name == name).first()
340
341
342 99c92c11 Matej Zeman
def create_team(db: Session, name: str):
343 4911f0ea Matej Zeman
    """
344
    Creates new team with given name
345
    """
346 b6f0e019 Matej Zeman
    db_team = models.Team(name=name)
347 99c92c11 Matej Zeman
    db.add(db_team)
348
    db.commit()
349
    db.refresh(db_team)
350
    return db_team
351
352
353 35168e5f zemanm98@students.zcu.cz
def change_team(db: Session, team_id: int, name: str):
354
    """
355
    Updates name of one specific team
356
    """
357
    old_team = get_team(db, team_id)
358
    new = {'id': old_team.id, 'name': name}
359
    for key, value in new.items():
360
        setattr(old_team, key, value)
361
    db.commit()
362
    db.refresh(old_team)
363
    return old_team
364
365
366 eaf8ace4 Matej Zeman
def get_head_device(db: Session, head_id: int):
367 4911f0ea Matej Zeman
    """
368
    Returns one specific head device by given id
369
    """
370 eaf8ace4 Matej Zeman
    return db.query(models.HeadDevice).filter(models.HeadDevice.id == head_id).first()
371
372
373
def get_head_devices(db: Session, skip: int = 0, limit: int = 100):
374 4911f0ea Matej Zeman
    """
375
    Returns all head devices saved in database
376
    """
377 eaf8ace4 Matej Zeman
    return db.query(models.HeadDevice).offset(skip).limit(limit).all()
378
379
380 6ad54e2e zemanm98@students.zcu.cz
def find_head_device(db: Session, serial: schemas.HeadDeviceTemp):
381 4911f0ea Matej Zeman
    """
382
    Finds one head device by its serial number
383
    """
384 eaf8ace4 Matej Zeman
    return db.query(models.HeadDevice).filter(models.HeadDevice.serial_number == serial.serial_number).first()
385
386
387 6ad54e2e zemanm98@students.zcu.cz
def create_head_device(db: Session, log: schemas.HeadDeviceTemp):
388 4911f0ea Matej Zeman
    """
389
    Creates new head device
390
    """
391 eaf8ace4 Matej Zeman
    db_head = models.HeadDevice(serial_number=log.serial_number)
392
    db.add(db_head)
393
    db.commit()
394
    db.refresh(db_head)
395
    return db_head
396
397
398
def get_body_device(db: Session, body_id: int):
399 4911f0ea Matej Zeman
    """
400
    Returns one specific body device by given id
401
    """
402 eaf8ace4 Matej Zeman
    return db.query(models.BodyDevice).filter(models.BodyDevice.id == body_id).first()
403
404
405
def get_body_devices(db: Session, skip: int = 0, limit: int = 100):
406 4911f0ea Matej Zeman
    """
407
    Returns all body devices saved in database
408
    """
409 eaf8ace4 Matej Zeman
    return db.query(models.BodyDevice).offset(skip).limit(limit).all()
410
411
412 6ad54e2e zemanm98@students.zcu.cz
def find_body_device(db: Session, serial: schemas.BodyDeviceTemp):
413 4911f0ea Matej Zeman
    """
414
    Finds one body device by its serial number
415
    """
416 eaf8ace4 Matej Zeman
    return db.query(models.BodyDevice).filter(models.BodyDevice.serial_number == serial.serial_number).first()
417
418
419 0fcb708f Matej Zeman
def find_bodydevice_by_serial(db: Session, serial: str):
420
    """
421
    Finds one specific body device by given serial number
422
    """
423
    return db.query(models.BodyDevice).filter(models.BodyDevice.serial_number == serial).first()
424
425
426
def find_headdevice_by_serial(db: Session, serial: str):
427
    """
428
    Finds one specific head device by given serial number
429
    """
430
    return db.query(models.HeadDevice).filter(models.HeadDevice.serial_number == serial).first()
431
432
433 6ad54e2e zemanm98@students.zcu.cz
def create_body_device(db: Session, log: schemas.BodyDeviceTemp):
434 4911f0ea Matej Zeman
    """
435
    Creates new Body device
436
    """
437 0fcb708f Matej Zeman
    db_body = models.BodyDevice(serial_number=log.serial_number, inventory_number="", comment="")
438 eaf8ace4 Matej Zeman
    db.add(db_body)
439
    db.commit()
440
    db.refresh(db_body)
441
    return db_body
442
443
444 0fcb708f Matej Zeman
def update_bodydevice_license(db: Session, device_id: int, lic_id: int):
445
    """
446
    Updates body devices license with one given by user
447
    """
448
    old_dev = get_body_device(db, device_id)
449
    lic = get_license(db, lic_id)
450
    new = {'id': old_dev.id, 'serial_number': old_dev.serial_number, 'inventory_number': old_dev.inventory_number,
451
           'comment': old_dev.comment, 'team_id': old_dev.team_id, 'license_id': lic.id}
452
    for key, value in new.items():
453
        setattr(old_dev, key, value)
454
    db.commit()
455
    db.refresh(old_dev)
456
    return old_dev
457
458
459
def update_bodydevice_team(db: Session, device_id: int, team_id: int):
460
    """
461
    Updates body devices team with one given by user
462
    """
463
    old_dev = get_body_device(db, device_id)
464
    team = get_team(db, team_id)
465
    new = {'id': old_dev.id, 'serial_number': old_dev.serial_number, 'inventory_number': old_dev.inventory_number,
466
           'comment': old_dev.comment, 'team_id': team.id, 'license_id': old_dev.license_id}
467
    for key, value in new.items():
468
        setattr(old_dev, key, value)
469
    db.commit()
470
    db.refresh(old_dev)
471
    return old_dev
472
473
474
def update_bodydevice_inv(db: Session, device_id: int, dev_inv: str):
475
    """
476
    Updates body devices inventory number with new one given by user
477
    """
478
    old_dev = get_body_device(db, device_id)
479
    new = {'id': old_dev.id, 'serial_number': old_dev.serial_number, 'inventory_number': dev_inv,
480
           'comment': old_dev.comment, 'team_id': old_dev.team_id, 'license_id': old_dev.license_id}
481
    for key, value in new.items():
482
        setattr(old_dev, key, value)
483
    db.commit()
484
    db.refresh(old_dev)
485
    return old_dev
486
487
488
def update_bodydevice_comm(db: Session, device_id: int, comm: str):
489
    """
490
    Updates body devices comment with new one given by user
491
    """
492
    old_dev = get_body_device(db, device_id)
493
    new = {'id': old_dev.id, 'serial_number': old_dev.serial_number, 'inventory_number': old_dev.inventory_number,
494
           'comment': comm, 'team_id': old_dev.team_id, 'license_id': old_dev.license_id}
495
    for key, value in new.items():
496
        setattr(old_dev, key, value)
497
    db.commit()
498
    db.refresh(old_dev)
499
    return old_dev
500
501
502
def update_headdevice_license(db: Session, device_id: int, lic_id: int):
503
    """
504
    Updates head devices license with one given by user
505
    """
506
    old_dev = get_head_device(db, device_id)
507
    lic = get_license(db, lic_id)
508
    new = {'id': old_dev.id, 'serial_number': old_dev.serial_number, 'inventory_number': old_dev.inventory_number,
509
           'comment': old_dev.comment, 'team_id': old_dev.team_id, 'license_id': lic.id}
510
    for key, value in new.items():
511
        setattr(old_dev, key, value)
512
    db.commit()
513
    db.refresh(old_dev)
514
    return old_dev
515
516
517
def update_headdevice_team(db: Session, device_id: int, team_id: int):
518
    """
519
    Updates head devices team with one given by user
520
    """
521
    old_dev = get_head_device(db, device_id)
522
    team = get_team(db, team_id)
523
    new = {'id': old_dev.id, 'serial_number': old_dev.serial_number, 'inventory_number': old_dev.inventory_number,
524
           'comment': old_dev.comment, 'team_id': team.id, 'license_id': old_dev.license_id}
525
    for key, value in new.items():
526
        setattr(old_dev, key, value)
527
    db.commit()
528
    db.refresh(old_dev)
529
    return old_dev
530
531
532
def update_headdevice_inv(db: Session, device_id: int, dev_inv: str):
533
    """
534
    Updates head devices inventory number with new one given by user
535
    """
536
    old_dev = get_head_device(db, device_id)
537
    new = {'id': old_dev.id, 'serial_number': old_dev.serial_number, 'inventory_number': dev_inv,
538
           'comment': old_dev.comment, 'team_id': old_dev.team_id, 'license_id': old_dev.license_id}
539
    for key, value in new.items():
540
        setattr(old_dev, key, value)
541
    db.commit()
542
    db.refresh(old_dev)
543
    return old_dev
544
545
546
def update_headdevice_comm(db: Session, device_id: int, comm: str):
547
    """
548
    Updates head devices comment with new one given by user
549
    """
550
    old_dev = get_head_device(db, device_id)
551
    new = {'id': old_dev.id, 'serial_number': old_dev.serial_number, 'inventory_number': old_dev.inventory_number,
552
           'comment': comm, 'team_id': old_dev.team_id, 'license_id': old_dev.license_id}
553
    for key, value in new.items():
554
        setattr(old_dev, key, value)
555
    db.commit()
556
    db.refresh(old_dev)
557
    return old_dev
558
559
560 eaf8ace4 Matej Zeman
def get_ld_logs(db: Session, skip: int = 0, limit: int = 100):
561 4911f0ea Matej Zeman
    """
562
    Returns all ld debugger logs in database
563
    """
564 7fe7be79 zemanm98@students.zcu.cz
    return db.query(models.LDLog).order_by(desc(models.LDLog.timestamp)).offset(skip).limit(limit).all()
565 eaf8ace4 Matej Zeman
566
567
def create_ld_logs(db: Session, item: schemas.LDTempBase, head_id: int, body_id: int, pc_id: int, date: datetime):
568 4911f0ea Matej Zeman
    """
569
    Creates new ld log for ld_logs database table
570
    """
571 eaf8ace4 Matej Zeman
    db_ld = models.LDLog(pc_id=pc_id, timestamp=date, status=item.status, head_id=head_id, body_id=body_id)
572
    db.add(db_ld)
573
    db.commit()
574
    db.refresh(db_ld)
575
    return db_ld
576
577
578 aba60b70 Matej Zeman
def get_logs(db: Session, skip: int = 0, limit: int = 100):
579 4911f0ea Matej Zeman
    """
580
    Returns all usb logs in database ordered by timestamp
581
    """
582 b6f0e019 Matej Zeman
    return db.query(models.USBLog).order_by(desc(models.USBLog.timestamp)).offset(skip).limit(limit).all()
583 aba60b70 Matej Zeman
584
585
def get_log(db: Session, device_id: int, skip: int = 0, limit: int = 100):
586 4911f0ea Matej Zeman
    """
587
    Returns all usb logs in database sorted by id
588
    """
589 aba60b70 Matej Zeman
    return db.query(models.USBLog).filter(models.USBLog.device_id == device_id).offset(skip).limit(limit).all()
590
591
592 b6f0e019 Matej Zeman
def find_filtered_logs(db: Session, logs: []):
593 4911f0ea Matej Zeman
    """
594
    Returns all usb logs with ids in given id array.
595
    """
596 b6f0e019 Matej Zeman
    return db.query(models.USBLog).filter(models.USBLog.id.in_(logs)).order_by(desc(models.USBLog.timestamp)).all()
597
598
599 7fe7be79 zemanm98@students.zcu.cz
def find_filtered_ldlogs(db: Session, logs: []):
600
    """
601
    Returns all ld logs with ids in given id array.
602
    """
603
    return db.query(models.LDLog).filter(models.LDLog.id.in_(logs)).order_by(desc(models.LDLog.timestamp)).all()
604
605
606
def get_filtered_ldlogs(db: Session, pc: str, tema: str, lic: str):
607
    """
608
    Function creates query string used for filtering by pc username, team name and license name.
609
    Depending on selected filters assembles query string for database
610
    """
611 0fcb708f Matej Zeman
    execute_string = "SELECT * FROM ld_logs AS logs WHERE"
612
    before_me = False
613
    all_all = True
614 7fe7be79 zemanm98@students.zcu.cz
    if pc != "all":
615 0fcb708f Matej Zeman
        all_all = False
616
        pc = find_pc_by_username(db, pc)
617
        if pc != None:
618
            if before_me:
619
                execute_string += " AND logs.pc_id = " + str(pc.id)
620
            else:
621
                before_me = True
622
                execute_string += " logs.pc_id = " + str(pc.id)
623
        else:
624
            if before_me:
625
                execute_string += " AND logs.pc_id = -1"
626
            else:
627
                before_me = True
628
                execute_string += " logs.pc_id = -1"
629 7fe7be79 zemanm98@students.zcu.cz
    if tema != "all":
630 0fcb708f Matej Zeman
        all_all = False
631 7fe7be79 zemanm98@students.zcu.cz
        team = find_team(db, tema)
632 0fcb708f Matej Zeman
        if team != None:
633
            head_devices = find_headdevices_by_team(db, team.id)
634
            body_devices = find_bodydevices_by_team(db, team.id)
635
            if len(head_devices) > 0 and len(body_devices) > 0:
636
                h_ids = "("
637
                for h in head_devices:
638
                    h_ids += str(h.id) + ", "
639
                def_h_ids = h_ids[:-2] + ")"
640
                b_ids = "("
641
                for b in body_devices:
642
                    b_ids += str(b.id) + ", "
643
                def_b_ids = b_ids[:-2] + ")"
644
                if before_me:
645
                    execute_string += " AND (logs.head_id IN " + def_h_ids + " OR logs.body_id IN " + def_b_ids + ")"
646
                else:
647
                    before_me = True
648
                    execute_string += " (logs.head_id IN " + def_h_ids + " OR logs.body_id IN " + def_b_ids + ")"
649
            elif len(head_devices) == 0 and len(body_devices) > 0:
650
                b_ids = "("
651
                for b in body_devices:
652
                    b_ids += str(b.id) + ", "
653
                def_b_ids = b_ids[:-2] + ")"
654
                if before_me:
655
                    execute_string += " AND logs.body_id IN " + def_b_ids
656
                else:
657
                    before_me = True
658
                    execute_string += " logs.body_id IN " + def_b_ids
659
            elif len(head_devices) > 0 and len(body_devices) == 0:
660
                h_ids = "("
661
                for h in head_devices:
662
                    h_ids += str(h.id) + ", "
663
                def_h_ids = h_ids[:-2] + ")"
664
                if before_me:
665
                    execute_string += " AND logs.head_id IN " + def_h_ids
666
                else:
667
                    before_me = True
668
                    execute_string += " logs.head_id IN " + def_h_ids
669 7fe7be79 zemanm98@students.zcu.cz
            else:
670 0fcb708f Matej Zeman
                if before_me:
671
                    execute_string += " AND (logs.head_id = -1 OR logs.body_id = -1)"
672
                else:
673
                    before_me = True
674
                    execute_string += " (logs.head_id = -1 OR logs.body_id = -1)"
675
        else:
676
            if before_me:
677
                execute_string += " AND logs.pc_id = -1"
678
            else:
679
                before_me = True
680
                execute_string += " logs.pc_id = -1"
681 7fe7be79 zemanm98@students.zcu.cz
    if lic != "all":
682 0fcb708f Matej Zeman
        all_all = False
683
        license = find_license(db, lic)
684
        if license != None:
685
            head_devices = find_headdevices_by_license(db, license.id)
686
            body_devices = find_bodydevices_by_license(db, license.id)
687
            if len(head_devices) > 0 and len(body_devices) > 0:
688
                h_ids = "("
689
                for h in head_devices:
690
                    h_ids += str(h.id) + ", "
691
                def_h_ids = h_ids[:-2] + ")"
692
                b_ids = "("
693
                for b in body_devices:
694
                    b_ids += str(b.id) + ", "
695
                def_b_ids = b_ids[:-2] + ")"
696
                if before_me:
697
                    execute_string += " AND (logs.head_id IN " + def_h_ids + " OR logs.body_id IN " + def_b_ids + ")"
698
                else:
699
                    before_me = True
700
                    execute_string += " (logs.head_id IN " + def_h_ids + " OR logs.body_id IN " + def_b_ids + ")"
701
            elif len(head_devices) == 0 and len(body_devices) > 0:
702
                b_ids = "("
703
                for b in body_devices:
704
                    b_ids += str(b.id) + ", "
705
                def_b_ids = b_ids[:-2] + ")"
706
                if before_me:
707
                    execute_string += " AND logs.body_id IN " + def_b_ids
708
                else:
709
                    before_me = True
710
                    execute_string += " logs.body_id IN " + def_b_ids
711
            elif len(head_devices) > 0 and len(body_devices) == 0:
712
                h_ids = "("
713
                for h in head_devices:
714
                    h_ids += str(h.id) + ", "
715
                def_h_ids = h_ids[:-2] + ")"
716
                if before_me:
717
                    execute_string += " AND logs.head_id IN " + def_h_ids
718
                else:
719
                    before_me = True
720
                    execute_string += " logs.head_id IN " + def_h_ids
721 7fe7be79 zemanm98@students.zcu.cz
            else:
722 0fcb708f Matej Zeman
                if before_me:
723
                    execute_string += " AND (logs.head_id = -1 OR logs.body_id = -1)"
724
                else:
725
                    before_me = True
726
                    execute_string += " (logs.head_id = -1 OR logs.body_id = -1)"
727
        else:
728
            if before_me:
729
                execute_string += " AND logs.pc_id = -1"
730
            else:
731
                before_me = True
732
                execute_string += " logs.pc_id = -1"
733
    if all_all:
734
        before_me = True
735
        execute_string = "SELECT * FROM ld_logs AS logs"
736 7fe7be79 zemanm98@students.zcu.cz
737 0fcb708f Matej Zeman
    if not before_me:
738
        execute_string = "SELECT * FROM ld_logs AS logs WHERE logs.id = -1"
739 7fe7be79 zemanm98@students.zcu.cz
    result = db.execute(execute_string)
740
    return result
741
742
743 b6f0e019 Matej Zeman
def get_filtered_logs(db: Session, pc: str, tema: str, lic: str):
744 4911f0ea Matej Zeman
    """
745
    Function creates query string used for filtering by pc username, team name and license name.
746
    Depending on selected filters assembles query string for database
747
    """
748 b6f0e019 Matej Zeman
    execute_string = "SELECT * FROM usb_logs AS logs"
749 7fe7be79 zemanm98@students.zcu.cz
    pcs = find_pc_by_username(db, pc)
750 b6f0e019 Matej Zeman
    if pc != "all":
751 7fe7be79 zemanm98@students.zcu.cz
        if pcs is not None:
752
            execute_string += "  WHERE logs.pc_id = " + str(pcs.id)
753 0fcb708f Matej Zeman
        else:
754
            execute_string += "  WHERE logs.pc_id = -1"
755 b6f0e019 Matej Zeman
    if tema != "all":
756
        team = find_team(db, tema)
757 7fe7be79 zemanm98@students.zcu.cz
        if team is not None:
758 35168e5f zemanm98@students.zcu.cz
            devs = get_devices_by_team(db, team.id)
759
            d_ids = "("
760
            for p in devs:
761
                d_ids += str(p.id) + ", "
762
            def_d_ids = d_ids[:-2] + ")"
763 0fcb708f Matej Zeman
            if pc != "all":
764 35168e5f zemanm98@students.zcu.cz
                if len(def_d_ids) > 1:
765
                    execute_string += " AND logs.device_id IN " + def_d_ids
766 0fcb708f Matej Zeman
                else:
767
                    execute_string += " AND logs.device_id IN (-1)"
768 7fe7be79 zemanm98@students.zcu.cz
            else:
769 35168e5f zemanm98@students.zcu.cz
                if len(def_d_ids) > 1:
770
                    execute_string += " WHERE logs.device_id IN " + def_d_ids
771 0fcb708f Matej Zeman
                else:
772
                    execute_string += " WHERE logs.device_id IN (-1)"
773
        else:
774
            if pc != "all":
775
                execute_string += " AND logs.device_id IN (-1)"
776
            else:
777
                execute_string += " WHERE logs.device_id IN (-1)"
778 b6f0e019 Matej Zeman
    if lic != "all":
779 35168e5f zemanm98@students.zcu.cz
        license = get_licenses_by_name(db, lic)
780 0fcb708f Matej Zeman
        if len(license) > 0:
781
            ids = []
782
            for l in license:
783
                ids.append(l.id)
784
            device_licenses = find_devicelicenses_by_licid_array(db, ids)
785 7fe7be79 zemanm98@students.zcu.cz
            dev_ids = "("
786
            for dev in device_licenses:
787
                dev_ids += str(dev.device_id) + ", "
788
            defin_ids = dev_ids[:-2] + ")"
789
            if pc != "all" or tema != "all":
790
                if len(defin_ids) > 1:
791
                    execute_string += " AND logs.device_id IN " + defin_ids
792 0fcb708f Matej Zeman
                else:
793
                    execute_string += " AND logs.device_id IN (-1)"
794 7fe7be79 zemanm98@students.zcu.cz
            else:
795
                if len(defin_ids) > 1:
796
                    execute_string += " WHERE logs.device_id IN " + defin_ids
797 0fcb708f Matej Zeman
                else:
798
                    execute_string += " WHERE logs.device_id IN (-1)"
799
        else:
800
            if pc != "all" or tema != "all":
801
                execute_string += " AND logs.device_id IN (-1)"
802
            else:
803
                execute_string += " WHERE logs.device_id IN (-1)"
804 b6f0e019 Matej Zeman
805 4911f0ea Matej Zeman
    # executing assembled query string
806 b6f0e019 Matej Zeman
    result = db.execute(execute_string)
807
    return result
808
809
810 0fcb708f Matej Zeman
def get_filtered_bodydevices(db: Session, body_id: str, license_id: str, team: str):
811
    """
812
    returns filtered body devices based on given attributes
813
    """
814
    execute_string = "SELECT * FROM body_devices AS device WHERE"
815
    before_me = False
816
    all_all = True
817
    if body_id != "all":
818
        all_all = False
819
        body_dev = find_bodydevice_by_serial(db, body_id)
820
        if body_dev != None:
821
            if before_me:
822
                execute_string += " AND device.id = " + str(body_dev.id)
823
            else:
824
                before_me = True
825
                execute_string += " device.id = " + str(body_dev.id)
826
        else:
827
            if before_me:
828
                execute_string += " AND device.id = -1"
829
            else:
830
                before_me = True
831
                execute_string += " device.id = -1"
832
    if license_id != "all":
833
        all_all = False
834
        license = find_license(db, license_id)
835
        if license != None:
836
            if before_me:
837
                execute_string += " AND device.license_id = " + str(license.id)
838
            else:
839
                before_me = True
840
                execute_string += " device.license_id = " + str(license.id)
841
        else:
842
            if before_me:
843
                execute_string += " AND device.id = -1"
844
            else:
845
                before_me = True
846
                execute_string += " device.id = -1"
847
    if team != "all":
848
        all_all = False
849
        tem = find_team(db, team)
850
        if tem != None:
851
            if before_me:
852
                execute_string += " AND device.team_id = " + str(tem.id)
853
            else:
854
                before_me = True
855
                execute_string += " device.team_id = " + str(tem.id)
856
        else:
857
            if before_me:
858
                execute_string += " AND device.id = -1"
859
            else:
860
                before_me = True
861
                execute_string += " device.id = -1"
862
    if all_all:
863
        before_me = True
864
        execute_string = "SELECT * FROM body_devices AS devices"
865
866
    if not before_me:
867
        execute_string = "SELECT * FROM body_devices AS devices WHERE devices.id = -1"
868
    result = db.execute(execute_string)
869
    return result
870
871
872
def get_filtered_headdevices(db: Session, body_id: str, license_id: str, team: str):
873
    """
874
    returns filtered head devices based on given attributes
875
    """
876
    execute_string = "SELECT * FROM head_devices AS device WHERE"
877
    before_me = False
878
    all_all = True
879
    if body_id != "all":
880
        all_all = False
881
        head_dev = find_headdevice_by_serial(db, body_id)
882
        if head_dev != None:
883
            if before_me:
884
                execute_string += " AND device.id = " + str(head_dev.id)
885
            else:
886
                before_me = True
887
                execute_string += " device.id = " + str(head_dev.id)
888
        else:
889
            if before_me:
890
                execute_string += " AND device.id = -1"
891
            else:
892
                before_me = True
893
                execute_string += " device.id = -1"
894
    if license_id != "all":
895
        all_all = False
896
        license = find_license(db, license_id)
897
        if license != None:
898
            if before_me:
899
                execute_string += " AND device.license_id = " + str(license.id)
900
            else:
901
                before_me = True
902
                execute_string += " device.license_id = " + str(license.id)
903
        else:
904
            if before_me:
905
                execute_string += " AND device.id = -1"
906
            else:
907
                before_me = True
908
                execute_string += " device.id = -1"
909
    if team != "all":
910
        all_all = False
911
        tem = find_team(db, team)
912
        if tem != None:
913
            if before_me:
914
                execute_string += " AND device.team_id = " + str(tem.id)
915
            else:
916
                before_me = True
917
                execute_string += " device.team_id = " + str(tem.id)
918
        else:
919
            if before_me:
920
                execute_string += " AND device.id = -1"
921
            else:
922
                before_me = True
923
                execute_string += " device.id = -1"
924
    if all_all:
925
        before_me = True
926
        execute_string = "SELECT * FROM body_devices AS devices"
927
928
    if not before_me:
929
        execute_string = "SELECT * FROM body_devices AS devices WHERE devices.id = -1"
930
    result = db.execute(execute_string)
931
    return result
932
933
934 35168e5f zemanm98@students.zcu.cz
def get_filtered_devices(db: Session, keyman_id: str, license_name: str, license_id: str, team: str):
935
    """
936 0fcb708f Matej Zeman
    returns filtered keyman devices based on given attributes
937 35168e5f zemanm98@students.zcu.cz
    """
938
    execute_string = "SELECT * FROM devices AS device WHERE"
939
    before_me = False
940
    all_all = True
941
    if keyman_id != "all":
942
        all_all = False
943
        keyman_dev = find_device_by_serial(db, keyman_id)
944
        if keyman_dev != None:
945
            if before_me:
946
                execute_string += " AND device.id = " + str(keyman_dev.id)
947
            else:
948
                before_me = True
949
                execute_string += " device.id = " + str(keyman_dev.id)
950 0fcb708f Matej Zeman
        else:
951
            if before_me:
952
                execute_string += " AND device.id = -1"
953
            else:
954
                before_me = True
955
                execute_string += " device.id = -1"
956 35168e5f zemanm98@students.zcu.cz
    if license_name != "all":
957
        all_all = False
958
        license = get_licenses_by_name(db, license_name)
959
        if len(license) > 0:
960
            lic_ids = []
961
            for l in license:
962
                lic_ids.append(l.id)
963
            dev_lics = find_devicelicenses_by_licid_array(db, lic_ids)
964
            lic_ids = "("
965
            for l in dev_lics:
966
                lic_ids += str(l.device_id) + ", "
967
            def_lic_ids = lic_ids[:-2] + ")"
968 3c22106e Matej Zeman
            if len(def_lic_ids) <= 1:
969 0fcb708f Matej Zeman
                def_lic_ids = "(-1)"
970 35168e5f zemanm98@students.zcu.cz
            if before_me:
971
                execute_string += " AND device.id IN " + def_lic_ids
972
            else:
973
                before_me = True
974
                execute_string += " device.id IN " + def_lic_ids
975 0fcb708f Matej Zeman
        else:
976
            if before_me:
977
                execute_string += " AND device.id = -1"
978
            else:
979
                before_me = True
980
                execute_string += " device.id = -1"
981 35168e5f zemanm98@students.zcu.cz
    if license_id != "all":
982
        all_all = False
983
        license = find_license(db, license_id)
984
        if license != None:
985 0fcb708f Matej Zeman
            licen_devs = get_license_devices(db, license.id)
986
            ids = "("
987
            for lic in licen_devs:
988
                ids += str(lic.device_id) + ", "
989
            def_ids = ids[:-2] + ")"
990 3c22106e Matej Zeman
            if len(def_ids) <= 1:
991 0fcb708f Matej Zeman
                def_ids = "(-1)"
992 35168e5f zemanm98@students.zcu.cz
            if before_me:
993
                execute_string += " AND device.id IN " + def_ids
994
            else:
995
                before_me = True
996
                execute_string += " device.id IN " + def_ids
997
    if team != "all":
998
        all_all = False
999
        tem = find_team(db, team)
1000
        if tem != None:
1001
            if before_me:
1002
                execute_string += " AND device.team_id = " + str(tem.id)
1003
            else:
1004
                before_me = True
1005
                execute_string += " device.team_id = " + str(tem.id)
1006
    if all_all:
1007
        before_me = True
1008
        execute_string = "SELECT * FROM devices AS devices"
1009
1010
    if not before_me:
1011
        execute_string = "SELECT * FROM devices AS devices WHERE devices.id = -1"
1012
    result = db.execute(execute_string)
1013
    return result
1014
1015
1016 99c92c11 Matej Zeman
def create_device_logs(db: Session, item: schemas.USBTempBase, dev_id: int, pc_id: int, date: datetime):
1017 4911f0ea Matej Zeman
    """
1018
    Creates new USB log for usb_logs database table
1019
    """
1020 99c92c11 Matej Zeman
    db_log = models.USBLog(pc_id=pc_id, timestamp=date, status=item.status, device_id=dev_id)
1021 aba60b70 Matej Zeman
    db.add(db_log)
1022
    db.commit()
1023
    db.refresh(db_log)
1024
    return db_log
1025 cbd239c6 Matej Zeman
1026
1027
def get_users(db: Session, skip: int = 0, limit: int = 100):
1028
    """
1029
    Returns all users saved in database
1030
    """
1031
    return db.query(models.User).offset(skip).limit(limit).all()
1032
1033
1034
def find_user(db: Session, name: str):
1035
    """
1036
    Finds one user by given username
1037
    """
1038
    return db.query(models.User).filter(models.User.username == name).first()
1039
1040
1041
def find_user_byid(db: Session, id: int):
1042
    """
1043
    Finds one user by given id
1044
    """
1045
    return db.query(models.User).filter(models.User.id == id).first()
1046
1047
1048
def create_user(db: Session, name: str, passw: str, rol: str):
1049
    """
1050
    Creates new user
1051
    """
1052
    db_user = models.User(username=name, password=passw, role=rol)
1053
    db.add(db_user)
1054
    db.commit()
1055
    db.refresh(db_user)
1056
    return db_user