diff --git a/sites/scrapy.org/scrapyorg/link/__init__.py b/sites/scrapy.org/scrapyorg/link/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/sites/scrapy.org/scrapyorg/link/models.py b/sites/scrapy.org/scrapyorg/link/models.py
deleted file mode 100644
index ca90da26b..000000000
--- a/sites/scrapy.org/scrapyorg/link/models.py
+++ /dev/null
@@ -1,107 +0,0 @@
-from datetime import datetime
-
-from django.db import models
-from django.template.defaultfilters import slugify
-from django.utils.translation import ugettext_lazy as _
-
-
-class Group(models.Model):
- name = models.CharField(_("name"), max_length=64, core=True, blank=False)
- slug = models.SlugField(_("slug"), editable=False, unique=True,
- prepopulate_from=("name",))
-
- # automatic dates
- created = models.DateTimeField(_("created"), core=True, editable=False)
- updated = models.DateTimeField(_("updated"), core=True, editable=False)
-
- def save(self):
- if not self.id:
- self.created = datetime.now()
- self.updated = datetime.now()
- self.slug = slugify(self.name)
- super(Group, self).save()
-
- def __unicode__(self):
- return self.name
-
- class Meta:
- verbose_name = _("group")
- verbose_name_plural = _("groups")
-
- class Admin:
- list_display = ("name", "slug",)
-
-
-class Link(models.Model):
- text = models.CharField(_("text"), max_length=1024, core=True, blank=False)
- address = models.CharField(_("address"), max_length=1024, core=True,
- blank=False)
-
- # automatic dates
- created = models.DateTimeField(core=True, editable=False)
- updated = models.DateTimeField(core=True, editable=False)
-
- def save(self):
- if not self.id:
- self.created = datetime.now()
- self.updated = datetime.now()
- super(Link, self).save()
-
- def __unicode__(self):
- return self.address
-
- class Meta:
- verbose_name = _("link")
- verbose_name_plural = _("links")
-
- class Admin:
- list_display = ("text", "address",)
-
-
-class GroupLink(models.Model):
- group = models.ForeignKey(Group, core=True, null=False, blank=False)
- link = models.ForeignKey(Link, core=True, null=False, blank=False)
- position = models.IntegerField(_("position"), core=True, default=0)
-
- # automatic dates
- created = models.DateTimeField(core=True, editable=False)
- updated = models.DateTimeField(core=True, editable=False)
-
- @property
- def address(self):
- return self.link.address
-
- @property
- def text(self):
- return self.link.text
-
- def position_up(self):
- self.position += 1
- self.save()
-
- def position_down(self):
- self.position -= 1
- self.save()
-
- def save(self):
- if not self.id:
- self.created = datetime.now()
- self.updated = datetime.now()
- super(GroupLink, self).save()
-
- # ugly, but django-admin isn't very versatile right now
- def position_link(self):
- return _("%(position)s (Up" \
- " | Down)") % \
- { "position": self.position, "id": self.id }
- position_link.short_description = u"order"
- position_link.allow_tags = True
-
- class Admin:
- list_display = ("group", "link", "position_link")
- list_filter = ("group",)
-
- class Meta:
- verbose_name = _("group link")
- verbose_name_plural = _("group links")
- ordering = [ "position", ]
diff --git a/sites/scrapy.org/scrapyorg/link/templatetags/__init__.py b/sites/scrapy.org/scrapyorg/link/templatetags/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/sites/scrapy.org/scrapyorg/link/templatetags/link_tags.py b/sites/scrapy.org/scrapyorg/link/templatetags/link_tags.py
deleted file mode 100644
index 69c26b9d8..000000000
--- a/sites/scrapy.org/scrapyorg/link/templatetags/link_tags.py
+++ /dev/null
@@ -1,31 +0,0 @@
-from django import template
-
-from scrapyorg.lib.templatetags import *
-
-from scrapyorg.link.models import GroupLink
-
-
-register = template.Library()
-
-
-@register.tag(name="load_links")
-def do_load_links(parser, token):
- syntax_msg = 'Template tag syntax: load_links "SLUG_NAME" as "VAR_NAME"'
-
- try:
- tag, slug, _as, var_name = token.split_contents()
- if not is_string(slug) or not is_string(var_name):
- raise_syntax(syntax_msg)
- except:
- raise_syntax(syntax_msg)
- return LoadLinksNode(unquoute(slug), unquoute(var_name))
-
-
-class LoadLinksNode(template.Node):
- def __init__(self, slug, var_name):
- self.slug = slug
- self.var_name = var_name
-
- def render(self, context):
- context[self.var_name] = GroupLink.objects.filter(group__slug=self.slug)
- return ''
diff --git a/sites/scrapy.org/scrapyorg/link/urls.py b/sites/scrapy.org/scrapyorg/link/urls.py
deleted file mode 100644
index 0d57f413b..000000000
--- a/sites/scrapy.org/scrapyorg/link/urls.py
+++ /dev/null
@@ -1,9 +0,0 @@
-from django.conf.urls.defaults import *
-
-from scrapyorg.link.views import *
-
-
-urlpatterns = patterns('',
- (r"^(?P\d+)/position/up/$", position_up),
- (r"^(?P\d+)/position/down/$", position_down),
-)
diff --git a/sites/scrapy.org/scrapyorg/link/views.py b/sites/scrapy.org/scrapyorg/link/views.py
deleted file mode 100644
index e70bf362b..000000000
--- a/sites/scrapy.org/scrapyorg/link/views.py
+++ /dev/null
@@ -1,16 +0,0 @@
-from django.shortcuts import get_object_or_404
-from django.http import HttpResponseRedirect
-
-from scrapyorg.link.models import GroupLink
-
-
-def position_up(request, grouplink_id):
- grouplink = get_object_or_404(GroupLink, pk=grouplink_id)
- grouplink.position_up()
- return HttpResponseRedirect("/admin/link/grouplink/")
-
-
-def position_down(request, grouplink_id):
- grouplink = get_object_or_404(GroupLink, pk=grouplink_id)
- grouplink.position_down()
- return HttpResponseRedirect("/admin/link/grouplink/")
diff --git a/sites/scrapy.org/scrapyorg/settings.py b/sites/scrapy.org/scrapyorg/settings.py
index a65b6a39f..0fbeff3f5 100644
--- a/sites/scrapy.org/scrapyorg/settings.py
+++ b/sites/scrapy.org/scrapyorg/settings.py
@@ -79,7 +79,6 @@ INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.markup',
'django.contrib.flatpages',
- 'scrapyorg.link',
'scrapyorg.article',
'scrapyorg.download',
'scrapyorg.blog',
diff --git a/sites/scrapy.org/scrapyorg/urls.py b/sites/scrapy.org/scrapyorg/urls.py
index 8435792f4..3cfe2d689 100644
--- a/sites/scrapy.org/scrapyorg/urls.py
+++ b/sites/scrapy.org/scrapyorg/urls.py
@@ -7,7 +7,6 @@ urlpatterns = patterns('',
(r"^$", direct_to_template, { "template": "home.html" }),
(r"^article/", include("scrapyorg.article.urls")),
(r"^download/", include("scrapyorg.download.urls")),
- (r"^link/", include("scrapyorg.link.urls")),
(r"^weblog/", include("scrapyorg.blog.urls")),
(r"^admin/", include("django.contrib.admin.urls")),