feat: add Usage Limits Panel component with usage tracking and visual indicators for limits
style: implement custom color schemes and gradients for account section, enhancing visual hierarchy
This commit is contained in:
@@ -276,6 +276,55 @@ class Content(SoftDeletableModel, SiteSectorBaseModel):
|
||||
|
||||
def __str__(self):
|
||||
return self.title or f"Content {self.id}"
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
"""Override save to auto-calculate word_count from content_html"""
|
||||
is_new = self.pk is None
|
||||
old_word_count = 0
|
||||
|
||||
# Get old word count if updating
|
||||
if not is_new and self.content_html:
|
||||
try:
|
||||
old_instance = Content.objects.get(pk=self.pk)
|
||||
old_word_count = old_instance.word_count or 0
|
||||
except Content.DoesNotExist:
|
||||
pass
|
||||
|
||||
# Auto-calculate word count if content_html has changed
|
||||
if self.content_html:
|
||||
from igny8_core.utils.word_counter import calculate_word_count
|
||||
calculated_count = calculate_word_count(self.content_html)
|
||||
# Only update if different to avoid unnecessary saves
|
||||
if self.word_count != calculated_count:
|
||||
self.word_count = calculated_count
|
||||
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
# Increment usage for new content or if word count increased
|
||||
if self.content_html and self.word_count:
|
||||
# Only count newly generated words
|
||||
new_words = self.word_count - old_word_count if not is_new else self.word_count
|
||||
|
||||
if new_words > 0:
|
||||
from igny8_core.business.billing.services.limit_service import LimitService
|
||||
try:
|
||||
# Get account from site
|
||||
account = self.site.account if self.site else None
|
||||
if account:
|
||||
LimitService.increment_usage(
|
||||
account=account,
|
||||
limit_type='content_words',
|
||||
amount=new_words,
|
||||
metadata={
|
||||
'content_id': self.id,
|
||||
'content_title': self.title,
|
||||
'site_id': self.site.id if self.site else None,
|
||||
}
|
||||
)
|
||||
except Exception as e:
|
||||
import logging
|
||||
logger = logging.getLogger(__name__)
|
||||
logger.error(f"Error incrementing word usage for content {self.id}: {str(e)}")
|
||||
|
||||
|
||||
class ContentTaxonomy(SiteSectorBaseModel):
|
||||
|
||||
Reference in New Issue
Block a user