Coverage for portality / models / shortened_url.py: 94%
32 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-05-05 00:09 +0100
« prev ^ index » next coverage.py v7.13.5, created at 2026-05-05 00:09 +0100
1from portality.dao import DomainObject
4class ShortenedUrl(DomainObject):
5 """~~UrlShortener:Model->DomainObject:Model~~"""
6 __type__ = "shortened_url"
8 def __init__(self, **kwargs):
9 super(ShortenedUrl, self).__init__(**kwargs)
11 @property
12 def url(self):
13 return self.data.get("url")
15 @url.setter
16 def url(self, val):
17 self.data["url"] = val
19 @property
20 def alias(self):
21 return self.data.get("alias")
23 @alias.setter
24 def alias(self, val):
25 self.data["alias"] = val
28class UrlQuery:
29 def __init__(self, alias: str):
30 self.alias = alias
32 def query(self):
33 return {
34 'query': {
35 'bool': {
36 'must': [
37 {'term': {'alias.exact': self.alias}}
38 ]
39 }
40 },
41 '_source': ['url'],
42 }
45class AliasQuery:
46 def __init__(self, url: str):
47 self.url = url
49 def query(self):
50 return {
51 'query': {
52 'bool': {
53 'must': [
54 {'term': {'url.exact': self.url}}
55 ]
56 }
57 },
58 '_source': ['alias'],
59 }
62class CountWithinDaysQuery:
63 def __init__(self, days: int):
64 self.days = days
66 def query(self):
67 return {
68 "size": 0,
69 "query": {
70 "range": {
71 "created_date": {
72 "gte": f"now-{self.days}d",
73 }
74 }
75 }
76 }