nucleus/rna/utils.py (33 lines of code) (raw):
import json
from django.core.exceptions import ObjectDoesNotExist
from django.http import HttpResponse
from .models import Note, Release
def get_last_modified_date(*args, **kwargs):
"""Returns the date of the last modified Note or Release.
For use with Django's last_modified decorator.
"""
try:
latest_note = Note.objects.latest()
latest_release = Release.objects.latest()
except ObjectDoesNotExist:
return None
return max(latest_note.modified, latest_release.modified)
def migrate_versions():
for r in Release.objects.filter(version__endswith=".0.0").only("channel", "version"):
if r.channel == "Release":
Release.objects.filter(id=r.id).update(version=r.version[:-2])
elif r.channel == "Beta":
Release.objects.filter(id=r.id).update(version=r.version[:-2] + "beta")
def get_duplicate_product_versions():
version_ids = {}
duplicates = {}
for product in Release.PRODUCTS:
version_ids[product] = {}
for r in Release.objects.filter(product=product):
version_ids[product].setdefault(r.version, [])
version_ids[product][r.version].append(r.id)
if len(version_ids[product][r.version]) > 1:
duplicates[(product, r.version)] = version_ids[product][r.version]
return duplicates
class HttpResponseJSON(HttpResponse):
def __init__(self, data, status=None, cors=False):
super().__init__(content=json.dumps(data), content_type="application/json", status=status)
if cors:
self["Access-Control-Allow-Origin"] = "*"