• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

iplweb / bpp / 58b9a630-8512-44e6-b730-daac96d1c4d7

29 Aug 2025 07:21AM UTC coverage: 47.493% (+2.5%) from 45.008%
58b9a630-8512-44e6-b730-daac96d1c4d7

push

circleci

mpasternak
Fix tests

6 of 27 new or added lines in 2 files covered. (22.22%)

1342 existing lines in 64 files now uncovered.

19323 of 40686 relevant lines covered (47.49%)

1.51 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

96.97
src/crossref_bpp/models.py
1
from datetime import timedelta
4✔
2

3
from django.db import models
4✔
4
from django.db.models import JSONField
4✔
5

6
from crossref_bpp.monkey_patches import PatchedWorks
4✔
7

8
from django.utils import timezone
4✔
9

10
from bpp.fields import DOIField
4✔
11

12

13
class CrossrefAPICacheManager(models.Manager):
4✔
14

15
    CACHE_DURATION_DAYS = 14
4✔
16
    cache_last_run = None
4✔
17

18
    def cleanup(self):
4✔
UNCOV
19
        cache_duration = timezone.now() - timedelta(days=self.CACHE_DURATION_DAYS)
1✔
UNCOV
20
        if self.cache_last_run is not None:
1✔
UNCOV
21
            if self.cache_last_run > cache_duration:
1✔
UNCOV
22
                return
1✔
23

UNCOV
24
        self.filter(ostatnio_zmodyfikowany__lte=cache_duration).delete()
1✔
UNCOV
25
        self.cache_last_run = timezone.now()
1✔
26

27
    def api_get_by_doi(self, doi):
4✔
UNCOV
28
        works = PatchedWorks()
1✔
UNCOV
29
        return works.doi(doi)
1✔
30

31
    def get_by_doi(self, doi):
4✔
UNCOV
32
        self.cleanup()
1✔
33

UNCOV
34
        ret = self.filter(doi=doi).first()
1✔
UNCOV
35
        if ret is None:
1✔
UNCOV
36
            data = self.api_get_by_doi(doi)
1✔
UNCOV
37
            if data is None:
1✔
38
                return
×
39

UNCOV
40
            ret = self.create(doi=doi, data=data)
1✔
41

UNCOV
42
        return ret.data
1✔
43

44

45
class CrossrefAPICache(models.Model):
4✔
46
    objects = CrossrefAPICacheManager()
4✔
47

48
    doi = DOIField(unique=True)
4✔
49
    data = JSONField()
4✔
50
    ostatnio_zmodyfikowany = models.DateTimeField(auto_now=True)
4✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc