rankmodel.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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 RankManager(models.Manager):
  7. def default(self):
  8. return self.get(is_default=True)
  9. class Rank(models.Model):
  10. name = models.CharField(max_length=255)
  11. slug = models.CharField(max_length=255)
  12. description = models.TextField(null=True, blank=True)
  13. style = models.CharField(max_length=255, null=True, blank=True)
  14. title = models.CharField(max_length=255, null=True, blank=True)
  15. is_default = models.BooleanField(default=False)
  16. is_tab = models.BooleanField(default=False)
  17. is_on_index = models.BooleanField(default=False)
  18. order = models.IntegerField(default=0)
  19. #roles = models.ManyToManyField('Role')
  20. objects = RankManager()
  21. class Meta:
  22. app_label = 'users'
  23. get_latest_by = 'order'
  24. def __unicode__(self):
  25. return unicode(_(self.name))
  26. def save(self, *args, **kwargs):
  27. if not self.pk:
  28. self.set_order()
  29. return super(Rank, self).save(*args, **kwargs)
  30. def set_name(self, name):
  31. self.name = name
  32. self.slug = slugify(name)
  33. def set_order(self):
  34. try:
  35. self.order = Rank.objects.latest('order').order + 1
  36. except Rank.DoesNotExist:
  37. self.order = 0
  38. def next(self):
  39. try:
  40. return Rank.objects.filter(order__gt=self.order).earliest('order')
  41. except Rank.DoesNotExist:
  42. return None
  43. def prev(self):
  44. try:
  45. return Rank.objects.filter(order__lt=self.order).latest('order')
  46. except Rank.DoesNotExist:
  47. return None
  48. """register model in misago admin"""
  49. site.add_node(
  50. parent='misago:admin:users',
  51. namespace='misago:admin:users:ranks',
  52. link='misago:admin:users:ranks:index',
  53. name=_("Ranks"),
  54. after='misago:admin:users:accounts:index',
  55. icon='fa fa-graduation-cap')