from django.contrib.contenttypes.models import ContentType
from django.urls import reverse
from apis_core.generic.helpers import permission_fullname
[docs]
class GenericModel:
[docs]
@classmethod
def get_listview_url(cls):
ct = ContentType.objects.get_for_model(cls)
return reverse("apis_core:generic:list", args=[ct])
[docs]
@classmethod
def get_createview_url(cls):
ct = ContentType.objects.get_for_model(cls)
return reverse("apis_core:generic:create", args=[ct])
[docs]
def get_edit_url(self):
ct = ContentType.objects.get_for_model(self)
return reverse("apis_core:generic:update", args=[ct, self.id])
[docs]
def get_absolute_url(self):
ct = ContentType.objects.get_for_model(self)
return reverse("apis_core:generic:detail", args=[ct, self.id])
[docs]
def get_delete_url(self):
ct = ContentType.objects.get_for_model(self)
return reverse("apis_core:generic:delete", args=[ct, self.id])
[docs]
def get_create_success_url(self):
return self.get_absolute_url()
[docs]
def get_update_success_url(self):
return self.get_edit_url()
[docs]
def get_api_detail_endpoint(self):
ct = ContentType.objects.get_for_model(self)
return reverse("apis_core:generic:genericmodelapi-detail", args=[ct, self.id])
[docs]
@classmethod
def get_change_permission(self):
return permission_fullname("change", self)
[docs]
@classmethod
def get_add_permission(self):
return permission_fullname("add", self)
[docs]
@classmethod
def get_delete_permission(self):
return permission_fullname("delete", self)