Files @ 2465f2645e2e
Branch filter:

Location: symposion_app/vendor/symposion/schedule/helpers.py

James Polley
urlize abstracts

I've looked through the database and I can't find any accepted
proposals that actually contain anything to linkify - but I've had
several requests from people that I think are reasonable, things like
being able to link to their project (we ask them to provide a project
url but we don't use that link)

This seems like a reasonably fast way to let those people add a
link. We still have to manually accept changes to their proposal so we
have a chance to look at the content of the url if we want.

The urlize filter adds rel=nofollow to the link automatically.
"""
This file contains functions that are useful to humans at the shell for
manipulating the database in more natural ways.
"""
from django.db import transaction

from .models import Schedule, Day, Room, Slot, SlotKind, SlotRoom


@transaction.commit_on_success
def create_slot(section_slug, date, kind, start, end, rooms):
    schedule = Schedule.objects.get(section__slug=section_slug)
    slot = Slot()
    slot.day = Day.objects.get(schedule=schedule, date=date)
    slot.kind = SlotKind.objects.get(schedule=schedule, label=kind)
    slot.start = start
    slot.end = end
    slot.save(force_insert=True)
    if rooms == "all":
        rooms_qs = Room.objects.filter(schedule=schedule).order_by("order")
    else:
        rooms_qs = Room.objects.filter(schedule=schedule, name__in=rooms).order_by("order")
        if rooms_qs.count() != len(rooms):
            raise Exception("input rooms do not match queried rooms; typo?")
    for room in rooms_qs:
        slot_room = SlotRoom()
        slot_room.slot = slot
        slot_room.room = room
        slot_room.save(force_insert=True)
    print("created {} [start={}; end={}]".format(slot.kind.label, slot.start, slot.end))