blob: f0e014f8a8762ed2b8021042591ad6143e636f66 [file] [log] [blame]
Anna Arhipovaa00ddf92023-10-06 14:07:40 +02001import datetime
2
Oleksii Petrenko24f1f8f2020-06-26 18:09:43 +03003from django.core.files.storage import FileSystemStorage
4from django.db import models
Anna Arhipovae9258f32023-11-04 12:31:19 +01005
6
7class IntegerListField(models.Field):
8 def __init__(self, *args, **kwargs):
9 kwargs['editable'] = False
10 super(IntegerListField, self).__init__(*args, **kwargs)
11
12 def db_type(self, connection):
13 return 'text'
14
15 def from_db_value(self, value, expression, connection):
16 if not value:
17 return []
18 return [int(x) for x in value.split(',')]
19
20 def to_python(self, value):
21 if isinstance(value, list):
22 return value
23 if not value:
24 return []
25 return [int(x) for x in value.split(',')]
26
27 def get_prep_value(self, value):
28 if not value:
29 return ''
30 return ','.join(str(int(x)) for x in value)
Oleksii Petrenko24f1f8f2020-06-26 18:09:43 +030031
32
Oleksii Petrenko68268172020-09-28 16:58:13 +030033class TestRailTestRun(models.Model):
Anna Arhipovae9258f32023-11-04 12:31:19 +010034 project_name = models.CharField(max_length=300,
35 default="Mirantis Cloud Platform")
Sofiia Andriichenko4b440da2023-02-10 12:29:46 +010036 plan_name = models.CharField(max_length=300, default="[MCP2.0]OSCORE")
37 run_name = models.CharField(max_length=300, blank=True)
Sofiia Andriichenko56458e52023-09-28 15:07:19 +020038 test_pattern = models.CharField(max_length=300, blank=True)
Sofiia Andriichenko4b440da2023-02-10 12:29:46 +010039 run_id = models.CharField(max_length=300)
Anna Arhipovae9258f32023-11-04 12:31:19 +010040 checked_tests = IntegerListField(default=list())
Sofiia Andriichenko4b440da2023-02-10 12:29:46 +010041 created_by_id = models.IntegerField(default='109')
Oleksii Petrenko24f1f8f2020-06-26 18:09:43 +030042 filter_func = models.TextField(null=True, blank=True)
Sofiia Andriichenko4b440da2023-02-10 12:29:46 +010043 ip_filter = models.BooleanField(default=True)
44 uuid_filter = models.BooleanField(default=True)
Oleksii Petrenko24f1f8f2020-06-26 18:09:43 +030045 filter_last_traceback = models.BooleanField(default=False)
Anna Arhipovaa00ddf92023-10-06 14:07:40 +020046 timestamp = models.DateField(default=datetime.date.today())
Oleksii Petrenko24f1f8f2020-06-26 18:09:43 +030047
Anna Arhipovae9258f32023-11-04 12:31:19 +010048 @property
49 def text_filters(self):
50 return {
51 "filter_last_traceback": self.filter_last_traceback,
52 "uuid_filter": self.uuid_filter,
53 "ip_filter": self.ip_filter,
54 "filter_func": self.filter_func,
55 }
56
57 @property
58 def testrail_filters(self):
59 return {
60 "created_by_id": self.created_by_id,
61 "created_before": self.timestamp,
62 "run_name": self.run_name,
63 "plan_name": self.plan_name,
64 "test_pattern": self.test_pattern,
65 }
66
Oleksii Petrenko24f1f8f2020-06-26 18:09:43 +030067
68fs = FileSystemStorage()
69
70
Oleksii Petrenko68268172020-09-28 16:58:13 +030071class TestRailReport(models.Model):
Oleksii Petrenko1de4bab2020-07-21 15:49:04 +030072 path = models.FileField(storage=fs, null=True, blank=True, max_length=500)
Oleksii Petrenko24f1f8f2020-06-26 18:09:43 +030073 report_name = models.CharField(max_length=300)
74 finished = models.BooleanField(default=False)
Oleksii Petrenko7118f8c2020-07-17 12:45:09 +030075 created_at = models.DateTimeField(auto_now_add=True)
Oleksii Petrenko68268172020-09-28 16:58:13 +030076
77
78class ActionLog(models.Model):
79 name = models.CharField(max_length=500)
80 date = models.DateTimeField(null=True)