-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathviews.py
More file actions
75 lines (64 loc) · 2.13 KB
/
views.py
File metadata and controls
75 lines (64 loc) · 2.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
"""
EZID plugin views module (currently placeholder)
"""
from django.contrib.auth.decorators import user_passes_test
from django.shortcuts import render, redirect
from django.utils import timezone
from django_q.tasks import async_task
from journal.models import Issue
from utils.logger import get_logger
from .models import IssueDoiRefreshHistory, ArticleDoiRefreshHistory
from .plugin_settings import PLUGIN_NAME
from .tasks import refresh_issue_doi
superuser_required = user_passes_test(
lambda u: u.is_superuser,
login_url=None # returning 403 for non-superusers
)
logger = get_logger(__name__)
@superuser_required
def ezid_manager(request):
template = 'ezid/manager.html'
if request.journal:
issues = Issue.objects.filter(journal=request.journal)
else:
logger.error("NO JOURNAL IN REQ")
issues = Issue.objects.all()
issueshist = IssueDoiRefreshHistory.objects.filter(issue__in=issues)
context = {
'plugin_name': PLUGIN_NAME,
'issues': issues,
'issueshist': issueshist
}
return render(request, template, context)
@superuser_required
def trigger_issue_refresh(request, issue_id):
x = IssueDoiRefreshHistory.objects.create(
issue_id=issue_id,
date_refresh=timezone.now()
)
async_task(refresh_issue_doi, x.id)
return redirect("ezid_manager")
def issue_history(request, issuehist_id):
template = 'ezid/issuehist_details.html'
articlehist = ArticleDoiRefreshHistory.objects.filter(issue_hist_id=issuehist_id)
context = {
'plugin_name': PLUGIN_NAME,
'ahistory': articlehist
}
return render(request, template, context)
@superuser_required
def trigger_all_refresh(request):
logger.info("In TRIGGER All")
issues = []
if request.journal:
issues = Issue.objects.filter(journal=request.journal)
else:
logger.error("NO JOURNAL IN REQ")
# create task for all the issues
for i in issues:
x = IssueDoiRefreshHistory.objects.create(
issue=i,
date_refresh=timezone.now()
)
async_task(refresh_issue_doi, x.id)
return redirect("ezid_manager")