rankmodel.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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)
  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_tab = models.BooleanField(default=False)
  13. is_on_index = models.BooleanField(default=False)
  14. order = models.IntegerField(default=0)
  15. #roles = models.ManyToManyField('Role')
  16. class Meta:
  17. app_label = 'users'
  18. get_latest_by = 'order'
  19. def __unicode__(self):
  20. return unicode(_(self.name))
  21. def save(self, *args, **kwargs):
  22. if not self.pk:
  23. self.set_order()
  24. return super(Rank, self).save(*args, **kwargs)
  25. def set_name(self, name):
  26. self.name = name
  27. self.slug = slugify(name)
  28. def set_order(self):
  29. try:
  30. self.order = Rank.objects.latest('order').order + 1
  31. except Rank.DoesNotExist:
  32. self.order = 0
  33. def next(self):
  34. try:
  35. return Rank.objects.filter(order__gt=self.order).earliest('order')
  36. except Rank.DoesNotExist:
  37. return None
  38. def prev(self):
  39. try:
  40. return Rank.objects.filter(order__lt=self.order).latest('order')
  41. except Rank.DoesNotExist:
  42. return None
  43. """register model in misago admin"""
  44. site.add_node(
  45. parent='misago:admin:users',
  46. namespace='misago:admin:users:ranks',
  47. link='misago:admin:users:ranks:index',
  48. name=_("Ranks"),
  49. icon='fa fa-graduation-cap')