mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-18 05:51:26 +02:00
I've finally started to rethink the database structure. The goal I'm trying to reach: only use User objects to manage permissions and accesses to the webui and associate other objects to them if needed (like mailboxes). see #105
59 lines
1.5 KiB
Python
59 lines
1.5 KiB
Python
# coding: utf-8
|
|
|
|
from django.db import models
|
|
from django.contrib.contenttypes.models import ContentType
|
|
from django.contrib.contenttypes import generic
|
|
from django.contrib.auth.models import User
|
|
from django.utils.translation import ugettext as _, ugettext_noop
|
|
|
|
reseller_limits_tpl = [
|
|
"domains_limit",
|
|
"domain_aliases_limit",
|
|
"mailboxes_limit",
|
|
"mailbox_aliases_limit",
|
|
]
|
|
|
|
class LimitsPool(models.Model):
|
|
user = models.OneToOneField(User)
|
|
|
|
def getcurvalue(self, lname):
|
|
l = self.limit_set.get(name=lname)
|
|
return l.curvalue
|
|
|
|
def getmaxvalue(self, lname):
|
|
l = self.limit_set.get(name=lname)
|
|
return l.maxvalue
|
|
|
|
def inc_curvalue(self, lname, nb=1):
|
|
l = self.limit_set.get(name=lname)
|
|
l.curvalue += nb
|
|
l.save()
|
|
|
|
def dec_curvalue(self, lname, nb=1):
|
|
l = self.limit_set.get(name=lname)
|
|
if not l.curvalue:
|
|
return
|
|
l.curvalue -= nb
|
|
l.save()
|
|
|
|
def will_be_reached(self, lname, nb=1):
|
|
l = self.limit_set.get(name=lname)
|
|
if l.maxvalue <= -1:
|
|
return False
|
|
if l.curvalue + nb > l.maxvalue:
|
|
return True
|
|
return False
|
|
|
|
def get_limit(self, lname):
|
|
try:
|
|
return self.limit_set.get(name=lname)
|
|
except Limit.DoesNotExist:
|
|
return None
|
|
|
|
class Limit(models.Model):
|
|
name = models.CharField(max_length=255)
|
|
curvalue = models.IntegerField(default=0)
|
|
maxvalue = models.IntegerField(default=-2)
|
|
pool = models.ForeignKey(LimitsPool)
|
|
|