rankmodel.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. from django.db import models
  2. from django.utils.translation import ugettext_lazy as _
  3. from django.utils.translation import ugettext_lazy as _
  4. from misago.admin import site
  5. from misago.core.utils import slugify
  6. class Rank(models.Model):
  7. name = models.CharField(max_length=255)
  8. slug = models.CharField(max_length=255, null=True, blank=True)
  9. description = models.TextField(null=True, blank=True)
  10. style = models.CharField(max_length=255, null=True, blank=True)
  11. title = models.CharField(max_length=255, null=True, blank=True)
  12. is_special = models.BooleanField(default=False)
  13. is_tab = models.BooleanField(default=False)
  14. is_on_index = models.BooleanField(default=False)
  15. order = models.IntegerField(default=0)
  16. #roles = models.ManyToManyField('Role')
  17. class Meta:
  18. app_label = 'users'
  19. get_latest_by = 'order'
  20. def __unicode__(self):
  21. return unicode(_(self.name))
  22. def save(self, *args, **kwargs):
  23. if not self.pk:
  24. self.set_order()
  25. return super(Rank, self).save(*args, **kwargs)
  26. def set_name(self, name):
  27. self.name = name
  28. self.slug = slugify(name)
  29. def set_order(self):
  30. try:
  31. self.order = Rank.objects.latest('order').order + 1
  32. except Rank.DoesNotExist:
  33. self.order = 0
  34. def next(self):
  35. try:
  36. return Rank.objects.filter(order__gt=self.order).earliest('order')
  37. except Rank.DoesNotExist:
  38. return None
  39. def prev(self):
  40. try:
  41. return Rank.objects.filter(order__lt=self.order).latest('order')
  42. except Rank.DoesNotExist:
  43. return None
  44. """register model in misago admin"""
  45. site.add_node(
  46. parent='misago:admin:users',
  47. namespace='misago:admin:users:ranks',
  48. link='misago:admin:users:ranks:index',
  49. name=_("Ranks"),
  50. icon='fa fa-graduation-cap')