Coverage for portality / models / shortened_url.py: 94%

32 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-05-04 09:41 +0100

1from portality.dao import DomainObject 

2 

3 

4class ShortenedUrl(DomainObject): 

5 """~~UrlShortener:Model->DomainObject:Model~~""" 

6 __type__ = "shortened_url" 

7 

8 def __init__(self, **kwargs): 

9 super(ShortenedUrl, self).__init__(**kwargs) 

10 

11 @property 

12 def url(self): 

13 return self.data.get("url") 

14 

15 @url.setter 

16 def url(self, val): 

17 self.data["url"] = val 

18 

19 @property 

20 def alias(self): 

21 return self.data.get("alias") 

22 

23 @alias.setter 

24 def alias(self, val): 

25 self.data["alias"] = val 

26 

27 

28class UrlQuery: 

29 def __init__(self, alias: str): 

30 self.alias = alias 

31 

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 } 

43 

44 

45class AliasQuery: 

46 def __init__(self, url: str): 

47 self.url = url 

48 

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 } 

60 

61 

62class CountWithinDaysQuery: 

63 def __init__(self, days: int): 

64 self.days = days 

65 

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 }