summaryrefslogtreecommitdiff
path: root/coip/apps/link
diff options
context:
space:
mode:
Diffstat (limited to 'coip/apps/link')
-rw-r--r--coip/apps/link/__init__.py0
-rw-r--r--coip/apps/link/admin.py4
-rw-r--r--coip/apps/link/forms.py12
-rw-r--r--coip/apps/link/models.py18
-rw-r--r--coip/apps/link/views.py40
5 files changed, 74 insertions, 0 deletions
diff --git a/coip/apps/link/__init__.py b/coip/apps/link/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/coip/apps/link/__init__.py
diff --git a/coip/apps/link/admin.py b/coip/apps/link/admin.py
new file mode 100644
index 0000000..0d6e1fb
--- /dev/null
+++ b/coip/apps/link/admin.py
@@ -0,0 +1,4 @@
+from django.contrib import admin
+from coip.apps.link.models import Link
+
+admin.site.register(Link) \ No newline at end of file
diff --git a/coip/apps/link/forms.py b/coip/apps/link/forms.py
new file mode 100644
index 0000000..cc4a995
--- /dev/null
+++ b/coip/apps/link/forms.py
@@ -0,0 +1,12 @@
+'''
+Created on Aug 4, 2010
+
+@author: leifj
+'''
+from django import forms
+from coip.apps.link.models import Link
+
+class AddRelatedLinkForm(forms.ModelForm):
+ class Meta:
+ model = Link
+ fields = ['url','text'] \ No newline at end of file
diff --git a/coip/apps/link/models.py b/coip/apps/link/models.py
new file mode 100644
index 0000000..25c26b4
--- /dev/null
+++ b/coip/apps/link/models.py
@@ -0,0 +1,18 @@
+'''
+Created on Aug 4, 2010
+
+@author: leifj
+'''
+from django.db import models
+from coip.apps.name.models import Name
+
+class Link(models.Model):
+ name = models.ForeignKey(Name,related_name='links')
+ url = models.URLField()
+ tag = models.CharField(max_length=255)
+ text = models.CharField(max_length=255)
+ timecreated = models.DateTimeField(auto_now_add=True)
+ lastupdated = models.DateTimeField(auto_now=True)
+
+ def __unicode__(self):
+ return "%s:%s (%s) on %s" % (self.tag,self.url,self.text,self.name) \ No newline at end of file
diff --git a/coip/apps/link/views.py b/coip/apps/link/views.py
new file mode 100644
index 0000000..484d129
--- /dev/null
+++ b/coip/apps/link/views.py
@@ -0,0 +1,40 @@
+'''
+Created on Aug 4, 2010
+
+@author: leifj
+'''
+from django.contrib.auth.decorators import login_required
+from django.shortcuts import get_object_or_404
+from coip.apps.name.models import Name
+from coip.multiresponse import render403, respond_to
+from coip.apps.link.models import Link
+from coip.apps.link.forms import AddRelatedLinkForm
+from django.http import HttpResponseRedirect
+
+@login_required
+def add(request,id):
+ name = get_object_or_404(Name,pk=id)
+ if not name.has_permission(request.user,'w'):
+ return render403("You do not have permission to add a link on %s" % (name))
+
+ if request.method == 'POST':
+ link = Link(tag='related',name=name)
+ form = AddRelatedLinkForm(request.POST,instance=link)
+ if form.is_valid():
+ link = form.save()
+ return HttpResponseRedirect("/name/id/%d" % name.id)
+ else:
+ form = AddRelatedLinkForm()
+
+ return respond_to(request,{'text/html': 'apps/link/edit.html'},{'form': form,'name': name,'formtitle': 'Add link','submitname': 'Add link'})
+
+@login_required
+def remove(request,id):
+ link = get_object_or_404(Link,pk=id)
+ name = link.name
+ if not name.has_permission(request.user,'w'):
+ return render403("You do not have permission to remove a link on %s" % (name))
+
+ link.delete()
+
+ return HttpResponseRedirect("/name/id/%d" % name.id) \ No newline at end of file