Utilize Django 1.3 'on_delete' feature on several foreign keys
The most important one here is PROTECT to keep people from making bone-headed plays and deleting an Arch or Repo and every package along with it. We can use this in a few other places, as well as some carefully placed SET_NULL indicators. Note that nothing here pushes deletion responsibilities down to the database, although that will probably happen in a future commit. Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
parent
ac550af4c9
commit
6fe08cd689
@ -104,8 +104,10 @@ class Meta:
|
||||
verbose_name_plural = 'repos'
|
||||
|
||||
class Package(models.Model):
|
||||
repo = models.ForeignKey(Repo, related_name="packages")
|
||||
arch = models.ForeignKey(Arch, related_name="packages")
|
||||
repo = models.ForeignKey(Repo, related_name="packages",
|
||||
on_delete=models.PROTECT)
|
||||
arch = models.ForeignKey(Arch, related_name="packages",
|
||||
on_delete=models.PROTECT)
|
||||
pkgname = models.CharField(max_length=255, db_index=True)
|
||||
pkgbase = models.CharField(max_length=255, db_index=True)
|
||||
pkgver = models.CharField(max_length=255)
|
||||
@ -121,7 +123,8 @@ class Package(models.Model):
|
||||
last_update = models.DateTimeField(null=True, blank=True)
|
||||
files_last_update = models.DateTimeField(null=True, blank=True)
|
||||
packager_str = models.CharField(max_length=255)
|
||||
packager = models.ForeignKey(User, null=True)
|
||||
packager = models.ForeignKey(User, null=True,
|
||||
on_delete=models.SET_NULL)
|
||||
flag_date = models.DateTimeField(null=True)
|
||||
|
||||
objects = PackageManager()
|
||||
@ -348,7 +351,7 @@ class Meta:
|
||||
db_table = 'package_depends'
|
||||
|
||||
class Todolist(models.Model):
|
||||
creator = models.ForeignKey(User)
|
||||
creator = models.ForeignKey(User, on_delete=models.PROTECT)
|
||||
name = models.CharField(max_length=255)
|
||||
description = models.TextField()
|
||||
date_added = models.DateTimeField(db_index=True)
|
||||
|
@ -14,7 +14,7 @@
|
||||
class Mirror(models.Model):
|
||||
name = models.CharField(max_length=255, unique=True)
|
||||
tier = models.SmallIntegerField(default=2, choices=TIER_CHOICES)
|
||||
upstream = models.ForeignKey('self', null=True)
|
||||
upstream = models.ForeignKey('self', null=True, on_delete=models.SET_NULL)
|
||||
country = models.CharField(max_length=255, db_index=True)
|
||||
admin_email = models.EmailField(max_length=255, blank=True)
|
||||
public = models.BooleanField(default=True)
|
||||
@ -56,7 +56,7 @@ class Meta:
|
||||
class MirrorUrl(models.Model):
|
||||
url = models.CharField(max_length=255, unique=True)
|
||||
protocol = models.ForeignKey(MirrorProtocol, related_name="urls",
|
||||
editable=False)
|
||||
editable=False, on_delete=models.PROTECT)
|
||||
mirror = models.ForeignKey(Mirror, related_name="urls")
|
||||
has_ipv4 = models.BooleanField("IPv4 capable", default=True,
|
||||
editable=False)
|
||||
|
@ -6,7 +6,8 @@
|
||||
|
||||
class News(models.Model):
|
||||
slug = models.SlugField(max_length=255, unique=True)
|
||||
author = models.ForeignKey(User, related_name='news_author')
|
||||
author = models.ForeignKey(User, related_name='news_author',
|
||||
on_delete=models.PROTECT)
|
||||
postdate = models.DateTimeField("post date", db_index=True)
|
||||
last_modified = models.DateTimeField(editable=False, db_index=True)
|
||||
title = models.CharField(max_length=255)
|
||||
|
Loading…
Reference in New Issue
Block a user