59 lines
1.9 KiB
Python
59 lines
1.9 KiB
Python
from django.db import models
|
|
from main.models import Tag, Activity
|
|
from django.db.models.signals import post_save, post_delete
|
|
|
|
class Language(models.Model):
|
|
name = models.CharField(max_length=100)
|
|
|
|
def __unicode__(self):
|
|
return self.name
|
|
|
|
class Screenshot(models.Model):
|
|
url = models.URLField(max_length=255)
|
|
description = models.CharField(max_length=300)
|
|
|
|
def __unicode__(self):
|
|
return self.description
|
|
|
|
class Project(models.Model):
|
|
STATUS_CHOICES = (
|
|
('active', "Active"),
|
|
('onhold', "On Hold"),
|
|
('dropped', "Dropped"),
|
|
)
|
|
|
|
slug = models.SlugField(max_length=255, primary_key=True)
|
|
name = models.CharField(max_length=300)
|
|
status = models.CharField(max_length=8, choices=STATUS_CHOICES)
|
|
tagline = models.CharField(max_length=140, null=True, blank=True)
|
|
languages = models.ManyToManyField(Language, null=True, blank=True)
|
|
source_url = models.URLField(max_length=255, null=True, blank=True)
|
|
bugtracker_url = models.URLField(max_length=255, null=True, blank=True)
|
|
wiki_url = models.URLField(max_length=255, null=True, blank=True)
|
|
description = models.TextField()
|
|
screenshots = models.ForeignKey(Screenshot, null=True, blank=True)
|
|
# tags = models.ManyToManyField(Tag, null=True, blank=True)
|
|
|
|
def __unicode__(self):
|
|
return self.name
|
|
|
|
def project_saved_callback(sender, **kwargs):
|
|
if kwargs['created']:
|
|
acttype = 'add'
|
|
else:
|
|
acttype = 'edit'
|
|
|
|
a = Activity(actcategory='project',
|
|
actdescription=kwargs["instance"].name,
|
|
acttype = acttype,
|
|
objpk = kwargs["instance"].pk)
|
|
a.save()
|
|
|
|
def project_deleted_callback(sender, **kwargs):
|
|
a = Activity(actcategory='project',
|
|
actdescription=kwargs["instance"].name,
|
|
acttype = 'delete')
|
|
a.save()
|
|
|
|
post_save.connect(project_saved_callback, sender=Project)
|
|
post_delete.connect(project_deleted_callback, sender=Project)
|