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, })
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")
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, })
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")
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")
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, })
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})
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})
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)
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()))
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")
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 })
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)
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 })
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
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)
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)
def get_deck_membership(request): request_dict = get_request_dict(request) deckmembershipid = request_dict["deckmembershipid"] return get_object_or_404(DeckMembership, id=deckmembershipid)
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))