mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 12:11:13 -05:00
here we go
This commit is contained in:
@@ -7,10 +7,10 @@ from django.apps import apps
|
||||
|
||||
class EditSubmission(models.Model):
|
||||
STATUS_CHOICES = [
|
||||
('PENDING', 'Pending'),
|
||||
('NEW', 'New'),
|
||||
('APPROVED', 'Approved'),
|
||||
('REJECTED', 'Rejected'),
|
||||
('AUTO_APPROVED', 'Auto Approved'),
|
||||
('ESCALATED', 'Escalated'),
|
||||
]
|
||||
|
||||
SUBMISSION_TYPE_CHOICES = [
|
||||
@@ -53,26 +53,26 @@ class EditSubmission(models.Model):
|
||||
status = models.CharField(
|
||||
max_length=20,
|
||||
choices=STATUS_CHOICES,
|
||||
default='PENDING'
|
||||
default='NEW'
|
||||
)
|
||||
submitted_at = models.DateTimeField(auto_now_add=True)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
|
||||
# Review details
|
||||
reviewed_by = models.ForeignKey(
|
||||
handled_by = models.ForeignKey(
|
||||
settings.AUTH_USER_MODEL,
|
||||
on_delete=models.SET_NULL,
|
||||
null=True,
|
||||
blank=True,
|
||||
related_name='reviewed_submissions'
|
||||
related_name='handled_submissions'
|
||||
)
|
||||
reviewed_at = models.DateTimeField(null=True, blank=True)
|
||||
review_notes = models.TextField(
|
||||
handled_at = models.DateTimeField(null=True, blank=True)
|
||||
notes = models.TextField(
|
||||
blank=True,
|
||||
help_text='Notes from the moderator about this submission'
|
||||
)
|
||||
|
||||
class Meta:
|
||||
ordering = ['-submitted_at']
|
||||
ordering = ['-created_at']
|
||||
indexes = [
|
||||
models.Index(fields=['content_type', 'object_id']),
|
||||
models.Index(fields=['status']),
|
||||
@@ -96,12 +96,11 @@ class EditSubmission(models.Model):
|
||||
|
||||
return resolved_data
|
||||
|
||||
def approve(self, moderator, notes=''):
|
||||
def approve(self, user):
|
||||
"""Approve the submission and apply the changes"""
|
||||
self.status = 'APPROVED'
|
||||
self.reviewed_by = moderator
|
||||
self.reviewed_at = timezone.now()
|
||||
self.review_notes = notes
|
||||
self.handled_by = user
|
||||
self.handled_at = timezone.now()
|
||||
|
||||
model_class = self.content_type.model_class()
|
||||
resolved_data = self._resolve_foreign_keys(self.changes)
|
||||
@@ -122,42 +121,23 @@ class EditSubmission(models.Model):
|
||||
self.save()
|
||||
return obj
|
||||
|
||||
def reject(self, moderator, notes):
|
||||
def reject(self, user):
|
||||
"""Reject the submission"""
|
||||
self.status = 'REJECTED'
|
||||
self.reviewed_by = moderator
|
||||
self.reviewed_at = timezone.now()
|
||||
self.review_notes = notes
|
||||
self.handled_by = user
|
||||
self.handled_at = timezone.now()
|
||||
self.save()
|
||||
|
||||
def auto_approve(self):
|
||||
"""Auto-approve the submission (for moderators/admins)"""
|
||||
self.status = 'AUTO_APPROVED'
|
||||
self.reviewed_by = self.user
|
||||
self.reviewed_at = timezone.now()
|
||||
|
||||
model_class = self.content_type.model_class()
|
||||
resolved_data = self._resolve_foreign_keys(self.changes)
|
||||
|
||||
if self.submission_type == 'CREATE':
|
||||
# Create new object
|
||||
obj = model_class(**resolved_data)
|
||||
obj.save()
|
||||
# Update object_id after creation
|
||||
self.object_id = obj.id
|
||||
else:
|
||||
# Apply changes to existing object
|
||||
obj = self.content_object
|
||||
for field, value in resolved_data.items():
|
||||
setattr(obj, field, value)
|
||||
obj.save()
|
||||
|
||||
def escalate(self, user):
|
||||
"""Escalate the submission to admin"""
|
||||
self.status = 'ESCALATED'
|
||||
self.handled_by = user
|
||||
self.handled_at = timezone.now()
|
||||
self.save()
|
||||
return obj
|
||||
|
||||
class PhotoSubmission(models.Model):
|
||||
STATUS_CHOICES = [
|
||||
('PENDING', 'Pending'),
|
||||
('NEW', 'New'),
|
||||
('APPROVED', 'Approved'),
|
||||
('REJECTED', 'Rejected'),
|
||||
('AUTO_APPROVED', 'Auto Approved'),
|
||||
@@ -184,26 +164,26 @@ class PhotoSubmission(models.Model):
|
||||
status = models.CharField(
|
||||
max_length=20,
|
||||
choices=STATUS_CHOICES,
|
||||
default='PENDING'
|
||||
default='NEW'
|
||||
)
|
||||
submitted_at = models.DateTimeField(auto_now_add=True)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
|
||||
# Review details
|
||||
reviewed_by = models.ForeignKey(
|
||||
handled_by = models.ForeignKey(
|
||||
settings.AUTH_USER_MODEL,
|
||||
on_delete=models.SET_NULL,
|
||||
null=True,
|
||||
blank=True,
|
||||
related_name='reviewed_photos'
|
||||
related_name='handled_photos'
|
||||
)
|
||||
reviewed_at = models.DateTimeField(null=True, blank=True)
|
||||
review_notes = models.TextField(
|
||||
handled_at = models.DateTimeField(null=True, blank=True)
|
||||
notes = models.TextField(
|
||||
blank=True,
|
||||
help_text='Notes from the moderator about this photo submission'
|
||||
)
|
||||
|
||||
class Meta:
|
||||
ordering = ['-submitted_at']
|
||||
ordering = ['-created_at']
|
||||
indexes = [
|
||||
models.Index(fields=['content_type', 'object_id']),
|
||||
models.Index(fields=['status']),
|
||||
@@ -217,9 +197,9 @@ class PhotoSubmission(models.Model):
|
||||
from media.models import Photo
|
||||
|
||||
self.status = 'APPROVED'
|
||||
self.reviewed_by = moderator
|
||||
self.reviewed_at = timezone.now()
|
||||
self.review_notes = notes
|
||||
self.handled_by = moderator
|
||||
self.handled_at = timezone.now()
|
||||
self.notes = notes
|
||||
|
||||
# Create the approved photo
|
||||
Photo.objects.create(
|
||||
@@ -236,9 +216,9 @@ class PhotoSubmission(models.Model):
|
||||
def reject(self, moderator, notes):
|
||||
"""Reject the photo submission"""
|
||||
self.status = 'REJECTED'
|
||||
self.reviewed_by = moderator
|
||||
self.reviewed_at = timezone.now()
|
||||
self.review_notes = notes
|
||||
self.handled_by = moderator
|
||||
self.handled_at = timezone.now()
|
||||
self.notes = notes
|
||||
self.save()
|
||||
|
||||
def auto_approve(self):
|
||||
@@ -246,8 +226,8 @@ class PhotoSubmission(models.Model):
|
||||
from media.models import Photo
|
||||
|
||||
self.status = 'AUTO_APPROVED'
|
||||
self.reviewed_by = self.user
|
||||
self.reviewed_at = timezone.now()
|
||||
self.handled_by = self.user
|
||||
self.handled_at = timezone.now()
|
||||
|
||||
# Create the approved photo
|
||||
Photo.objects.create(
|
||||
|
||||
Reference in New Issue
Block a user