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

iplweb / bpp / 45740dd7-cc71-4281-8725-5e2feaa4cfe9

31 Mar 2025 07:40PM UTC coverage: 41.43% (-1.5%) from 42.953%
45740dd7-cc71-4281-8725-5e2feaa4cfe9

push

circleci

mpasternak
Merge branch 'release/v202503.1172'

1 of 3 new or added lines in 3 files covered. (33.33%)

1248 existing lines in 81 files now uncovered.

15182 of 36645 relevant lines covered (41.43%)

0.41 hits per line

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

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

3
from crossref.restful import Works
1✔
4
from django.db import models
1✔
5
from django.db.models import JSONField
1✔
6

7
from django.utils import timezone
1✔
8

9
from bpp.fields import DOIField
1✔
10

11

12
class CrossrefAPICacheManager(models.Manager):
1✔
13

14
    CACHE_DURATION_DAYS = 14
1✔
15
    cache_last_run = None
1✔
16

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

UNCOV
23
        self.filter(ostatnio_zmodyfikowany__lte=cache_duration).delete()
×
UNCOV
24
        self.cache_last_run = timezone.now()
×
25

26
    def api_get_by_doi(self, doi):
1✔
UNCOV
27
        works = Works()
×
UNCOV
28
        return works.doi(doi)
×
29

30
    def get_by_doi(self, doi):
1✔
UNCOV
31
        self.cleanup()
×
32

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

UNCOV
39
            ret = self.create(doi=doi, data=data)
×
40

UNCOV
41
        return ret.data
×
42

43

44
class CrossrefAPICache(models.Model):
1✔
45
    objects = CrossrefAPICacheManager()
1✔
46

47
    doi = DOIField(unique=True)
1✔
48
    data = JSONField()
1✔
49
    ostatnio_zmodyfikowany = models.DateTimeField(auto_now=True)
1✔
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