示例#1
0
def insert_reference(request):
    request_dict = get_request_dict(request)

    date = get_object_or_404(FixedDate, id=request_dict.get('date_id'))
    manuscript = get_object_or_404(Manuscript,
                                   id=request_dict.get('manuscript_id'))
    insert_after_lection = get_object_or_404(
        Lection, id=request_dict.get('insert_after_lection_id'))

    system = manuscript.system

    reference_text_en = request_dict.get('reference_text_en')
    #occasion_text = request_dict.get('occasion_text');
    #occasion_text_en = request_dict.get('occasion_text_en');

    reference_membership_id = request_dict.get('reference_membership')
    reference_membership = get_object_or_404(
        LectionInSystem,
        id=reference_membership_id) if reference_membership_id else None

    if system is None:
        return Http404(
            "The manuscript '%s' does not have a lectionary system." %
            manuscript)

    membership = system.create_reference(
        date=date,
        insert_after=insert_after_lection,
        reference_text_en=reference_text_en,
        reference_membership=reference_membership)

    return JsonResponse({
        'first_verse_id': membership.lection.first_verse_id,
    })
示例#2
0
def set_attestation(request):
    request_dict = get_request_dict(request)

    reading_code = request_dict.get('code')
    corrector = request_dict.get('corrector')

    sublocation_id = request_dict.get('sublocation_id')
    sublocation = get_object_or_404(SubLocation, id=sublocation_id)

    witness_id = request_dict.get('witness_id')
    witness = get_object_or_404(Witness, id=witness_id)

    parallel = None
    parallel_id = request_dict.get('parallel_id')
    parallel_code = request_dict.get('parallel_code')
    if parallel_id:
        parallel = get_object_or_404(Parallel, id=parallel_id)
    elif parallel_code:
        parallel = get_object_or_404(Parallel, code=parallel_code)

    logger = logging.getLogger(__name__)

    logger.error("Parallel in view")
    logger.error(parallel)

    response = witness.set_attestation(sublocation=sublocation,
                                       code=reading_code,
                                       parallel=parallel,
                                       corrector=corrector)
    return HttpResponse("OK" if response else "FAIL")
示例#3
0
def insert_lection(request):
    request_dict = get_request_dict(request)

    date = get_object_or_404(FixedDate, id=request_dict.get('date_id'))
    lection = get_object_or_404(Lection, id=request_dict.get('lection_id'))
    manuscript = get_object_or_404(Manuscript,
                                   id=request_dict.get('manuscript_id'))
    insert_after_lection = get_object_or_404(
        Lection, id=request_dict.get('insert_after_lection_id'))

    system = manuscript.system

    if system is None:
        return Http404(
            "The manuscript '%s' does not have a lectionary system." %
            manuscript)

    membership = system.insert_lection(date,
                                       lection,
                                       insert_after=insert_after_lection)
    system.maintenance()

    return JsonResponse({
        'first_verse_id': lection.first_verse_id,
    })
示例#4
0
def set_text(request):
    request_dict = get_request_dict(request)

    corrector = request_dict.get('corrector')

    sublocation_id = request_dict.get('sublocation_id')
    sublocation = get_object_or_404(SubLocation, id=sublocation_id)

    witness_id = request_dict.get('witness_id')
    witness = get_object_or_404(Witness, id=witness_id)

    parallel = None
    parallel_id = request_dict.get('parallel_id')
    parallel_code = request_dict.get('parallel_code')
    if parallel_id:
        parallel = get_object_or_404(Parallel, id=parallel_id)
    elif parallel_code:
        parallel = get_object_or_404(Parallel, code=parallel_code)

    logger = logging.getLogger(__name__)

    logger.error("Parallel in view")
    logger.error(parallel)

    attestation = witness.get_attestation(sublocation=sublocation,
                                          parallel=parallel,
                                          corrector=corrector)
    if attestation:
        attestation.text = request_dict.get('text')
        attestation.save()
        return HttpResponse("OK")

    return HttpResponse("FAIL")
示例#5
0
def verse_id(request):
    request_dict = get_request_dict(request)
    manuscript = get_manuscript(request)
    verse = manuscript.verse_from_dict(request_dict)
    if verse:
        return HttpResponse(verse.id)
    return HttpResponse("No verse found")
示例#6
0
def create_lection(request):
    request_dict = get_request_dict(request)

    date = get_object_or_404(FixedDate, id=request_dict.get('date_id'))
    manuscript = get_object_or_404(Manuscript,
                                   id=request_dict.get('manuscript_id'))
    insert_after_lection = get_object_or_404(
        Lection, id=request_dict.get('insert_after_lection_id'))

    lection_description = request_dict.get('lection_description')
    overlapping_lection_IDs = json.loads(
        request_dict.get('overlapping_lection_IDs'))
    overlapping_lections = [
        Lection.objects.get(id=id) for id in overlapping_lection_IDs
    ]
    lection = Lection.create_from_passages_string(
        lection_description,
        overlapping_lections=overlapping_lections,
        create_verses=True)

    system = manuscript.system

    if system is None:
        return Http404(
            "The manuscript '%s' does not have a lectionary system." %
            manuscript)

    membership = system.insert_lection(date,
                                       lection,
                                       insert_after=insert_after_lection)
    system.maintenance()

    return JsonResponse({
        'first_verse_id': lection.first_verse_id,
    })
示例#7
0
def lection_suggestions(request):
    request_dict = get_request_dict(request)

    date = get_object_or_404(FixedDate, id=request_dict.get('date_id'))
    memberships = LectionInSystem.objects.filter(fixed_date=date).all()

    return render(request, 'dcodex_lectionary/lection_suggestions.html',
                  {'memberships': memberships})
示例#8
0
def verse_ref_at_position(request):
    request_dict = get_request_dict(request)
    manuscript = get_manuscript(request)
    deck_membership = get_deck_membership(request)
    x = float(request_dict.get("x"))
    y = float(request_dict.get("y"))

    verse = manuscript.approximate_verse_at_position(deck_membership, x, y)
    return render(request, "dcodex/approx_verse.html", {"verse": verse})
示例#9
0
def save_transcription(request):
    request_dict = get_request_dict(request)
    manuscript, verse = get_manuscript_and_verse(request, change=True)

    text = request_dict.get("transcription")
    transcription = manuscript.save_transcription(verse, text)
    next_verse = manuscript.next_verse(verse)
    next_verse_id_string = "%d" % (next_verse.id if next_verse else verse.id)

    return HttpResponse(next_verse_id_string)
示例#10
0
def save_location(request):
    manuscript, verse = get_manuscript_and_verse(request, change=True)
    deck_membership = get_deck_membership(request)

    request_dict = get_request_dict(request)
    x = request_dict.get("x")
    y = request_dict.get("y")

    location = manuscript.save_location(verse, deck_membership, x, y)

    return HttpResponse(json.dumps(location.values_dict()))
示例#11
0
def toggle_affiliation_lection(request):
    request_dict = get_request_dict(request)

    affiliation = get_object_or_404(AffiliationLections,
                                    id=request_dict.get('affiliation_id'))
    lection = get_object_or_404(Lection, id=request_dict.get('lection_id'))

    if lection in affiliation.lections.all():
        affiliation.lections.remove(lection)
    else:
        affiliation.lections.add(lection)
    return HttpResponse("OK")
示例#12
0
def lection_verses(request):
    request_dict = get_request_dict(request)

    lection = get_object_or_404(Lection, id=request_dict.get('lection_id'))
    verse = LectionaryVerse.objects.filter(
        id=request_dict.get('verse_id')).first()
    field_id = request_dict.get('field_id')
    field_class = request_dict.get('field_class')

    return render(
        request, 'dcodex_lectionary/lection_verses.html', {
            'lection': lection,
            'verse': verse,
            'field_id': field_id,
            'field_class': field_class
        })
示例#13
0
def attestations(request):
    request_dict = get_request_dict(request)

    reading_code = request_dict.get('code')
    sublocation_id = request_dict.get('sublocation_id')
    sublocation = get_object_or_404(SubLocation, id=sublocation_id)

    parallels = sublocation.get_parallels()
    html = ""
    for parallel in parallels:
        parallel_switch = ""
        if parallel:
            parallel_switch = "/%s " % parallel.code
        html += "<div>" + str(
            parallel_switch) + sublocation.code_attestations_string(
                reading_code, parallel) + "</div>"

    return HttpResponse(html)
示例#14
0
def add_lection_box(request):
    request_dict = get_request_dict(request)

    manuscript = get_object_or_404(Manuscript,
                                   id=request_dict.get('manuscript_id'))
    movable_days = DayOfYear.objects.all()
    fixed_days = FixedDate.objects.all()
    lections = Lection.objects.all()

    lection_in_system = get_object_or_404(
        LectionInSystem, id=request_dict.get('lection_in_system_id'))

    return render(
        request, 'dcodex_lectionary/add_lection_box.html', {
            'manuscript': manuscript,
            'lection_in_system': lection_in_system,
            'movable_days': movable_days,
            'fixed_days': fixed_days,
            'lections': lections
        })
示例#15
0
def get_manuscript(request, request_siglum=None, change=False):
    """
    Returns a manuscript sought after.

    If the 'change' flag is True, then it checks if the permissions allow for changing the manuscript.
    """
    if request_siglum:
        lookup = (dict(id=request_siglum)
                  if request_siglum.isdigit() else dict(siglum=request_siglum))
    else:
        request_dict = get_request_dict(request)
        lookup = dict(id=request_dict.get("manuscript_id"))

    manuscript = get_object_or_404(Manuscript, **lookup)

    if not manuscript.has_view_permission(request.user):
        raise PermissionDenied()

    if change and not manuscript.has_change_permission(request.user):
        raise PermissionDenied()

    return manuscript
示例#16
0
def save_folio_ref(request):
    request_dict = get_request_dict(request)

    deck_membership = get_deck_membership(request)

    # Check permissions
    has_change_permission = False
    for manuscript in deck_membership.deck.manuscript_set.all():
        if manuscript.has_change_permission(request.user):
            has_change_permission = True
    if not has_change_permission:
        raise PermissionDenied()

    folio = request_dict.get("folio")
    side = request_dict.get("side")

    folio_ref, created = FolioRef.objects.update_or_create(
        deck_membership=deck_membership,
        defaults={
            "folio": folio,
            "side": side
        })
    return HttpResponse(created)
示例#17
0
def get_verse(request, manuscript):
    request_dict = get_request_dict(request)
    verse_id = request_dict.get("verse_id")
    logging.error(f"in get_verse. {verse_id =}")
    return manuscript.verse_from_id(verse_id)
示例#18
0
def get_deck_membership(request):
    request_dict = get_request_dict(request)
    deckmembershipid = request_dict["deckmembershipid"]
    return get_object_or_404(DeckMembership, id=deckmembershipid)
示例#19
0
def page_number(request):
    request_dict = get_request_dict(request)
    manuscript = get_manuscript(request)
    folio_ref = request_dict["folio_ref"]

    return HttpResponse(manuscript.page_number(folio_ref))