def linked_form_field_label_url(model_form, field): model_class = model_form._meta.model model_field = model_class._meta.fields_by_name[field.name] related_model = model_field.related_model from fedoralink.views import ModelViewRegistry title_view = ModelViewRegistry.get_view(related_model, 'link_title') if field.value(): try: return reverse(title_view, kwargs={'pk': id_from_path(field.value())}) except AttributeError: # url not in repository, use default value pass return reverse(title_view, kwargs={'pk': '0'})[:-1]
def linked_form_field_model(model_form, field): model_class = model_form._meta.model model_field = model_class._meta.fields_by_name[field.name] related_model = model_field.related_model # 'related_app' : related_model._meta.app_label, # 'related_class' : related_model._meta.object_name, data_url = [{ 'referencing_app' : model_class._meta.app_label, 'referencing_class' : model_class._meta.object_name, 'referencing_field' : field.name, 'referencing_instance' : model_form.instance.pk, 'current_value' : field.value() }] from fedoralink.views import ModelViewRegistry link_view = ModelViewRegistry.get_view(related_model, 'link') data_url = base64.b64encode(zlib.compress(json.dumps(data_url).encode('utf-8'))) signer = TimestampSigner(salt='linked_form_field_model') data_url = signer.sign(data_url) return reverse(link_view, kwargs={'parametry': ''}) + '?linking=' + data_url
def detail_view_url(obj): from fedoralink.views import ModelViewRegistry return reverse(ModelViewRegistry.get_view(type(obj), 'detail'), kwargs={'pk': id_from_path(obj.pk)})
def get_fedora_object_page_link(linked_object, view_type): from fedoralink.views import ModelViewRegistry return reverse(ModelViewRegistry.get_view(type(linked_object), view_type), kwargs={'pk': id_from_path(linked_object.pk)})