aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAsk Solem <askh@modwheel.net>2009-03-20 12:36:52 +0100
committerAsk Solem Hoel <askh@opera.com>2009-03-20 12:36:52 +0100
commit80173599753b20097246db80e217e707e1d6a033 (patch)
tree44ea056c068b1a84059d965e89556c7a8ae39da0
parent2560e5cbc586ea9a4c99270aaf0aef2964b7f524 (diff)
downloadchishop-80173599753b20097246db80e217e707e1d6a033.tar.bz2
chishop-80173599753b20097246db80e217e707e1d6a033.tar.xz
chishop-80173599753b20097246db80e217e707e1d6a033.zip
Remove HTTP basic auth for now
-rw-r--r--djangopypi/forms.py3
-rw-r--r--djangopypi/models.py6
-rw-r--r--djangopypi/views.py30
3 files changed, 7 insertions, 32 deletions
diff --git a/djangopypi/forms.py b/djangopypi/forms.py
index 7865723..1cf9a9d 100644
--- a/djangopypi/forms.py
+++ b/djangopypi/forms.py
@@ -47,12 +47,11 @@ class ProjectRegisterForm(forms.Form):
47 version = forms.CharField() 47 version = forms.CharField()
48 platform = forms.CharField(required=False) 48 platform = forms.CharField(required=False)
49 49
50 def save(self, classifiers, user, file=None): 50 def save(self, classifiers, file=None):
51 values = dict(self.cleaned_data) 51 values = dict(self.cleaned_data)
52 name = values.pop("name") 52 name = values.pop("name")
53 version = values.pop("version") 53 version = values.pop("version")
54 platform = values.pop("platform") 54 platform = values.pop("platform")
55 values["owner"] = user
56 project, c = Project.objects.get_or_create(name=name, defaults=values) 55 project, c = Project.objects.get_or_create(name=name, defaults=values)
57 for classifier in classifiers: 56 for classifier in classifiers:
58 project.classifiers.add( 57 project.classifiers.add(
diff --git a/djangopypi/models.py b/djangopypi/models.py
index 9cc655c..d66f5c8 100644
--- a/djangopypi/models.py
+++ b/djangopypi/models.py
@@ -32,7 +32,6 @@ POSSIBILITY OF SUCH DAMAGE.
32 32
33import os 33import os
34from django.db import models 34from django.db import models
35from django.contrib.auth.models import User
36from django.utils.translation import ugettext_lazy as _ 35from django.utils.translation import ugettext_lazy as _
37 36
38OS_NAMES = ( 37OS_NAMES = (
@@ -86,7 +85,6 @@ class Project(models.Model):
86 description = models.TextField(blank=True) 85 description = models.TextField(blank=True)
87 author_email = models.CharField(max_length=255, blank=True) 86 author_email = models.CharField(max_length=255, blank=True)
88 classifiers = models.ManyToManyField(Classifier) 87 classifiers = models.ManyToManyField(Classifier)
89 owner = models.ForeignKey(User, related_name="projects")
90 88
91 class Meta: 89 class Meta:
92 verbose_name = _(u"project") 90 verbose_name = _(u"project")
@@ -105,12 +103,12 @@ class Release(models.Model):
105 project = models.ForeignKey(Project, related_name="releases") 103 project = models.ForeignKey(Project, related_name="releases")
106 104
107 class Meta: 105 class Meta:
106 unique_together = ('version', 'platform')
108 verbose_name = _(u"release") 107 verbose_name = _(u"release")
109 verbose_name_plural = _(u"releases") 108 verbose_name_plural = _(u"releases")
110 109
111 def __unicode__(self): 110 def __unicode__(self):
112 return u"%s %s (%s)" % ( 111 return self.version
113 self.project.name, self.version, self.distribution.name)
114 112
115 @property 113 @property
116 def filename(self): 114 def filename(self):
diff --git a/djangopypi/views.py b/djangopypi/views.py
index bcba5ae..b1323fb 100644
--- a/djangopypi/views.py
+++ b/djangopypi/views.py
@@ -31,9 +31,8 @@ POSSIBILITY OF SUCH DAMAGE.
31""" 31"""
32 32
33from django.http import Http404, HttpResponse, HttpResponseBadRequest 33from django.http import Http404, HttpResponse, HttpResponseBadRequest
34from django.http import QueryDict, HttpResponseForbidden 34from django.http import QueryDict
35from django.shortcuts import render_to_response 35from django.shortcuts import render_to_response
36from django.contrib.auth import authenticate, login
37from djangopypi.models import Project 36from djangopypi.models import Project
38from djangopypi.forms import ProjectRegisterForm 37from djangopypi.forms import ProjectRegisterForm
39from django.template import RequestContext 38from django.template import RequestContext
@@ -72,37 +71,16 @@ def parse_weird_post_data(data):
72 return MultiValueDict(post_data), files 71 return MultiValueDict(post_data), files
73 72
74 73
75def login_basic_auth(request):
76 authentication = request.META.get("HTTP_AUTHORIZATION")
77 if not authentication:
78 return
79 (authmeth, auth) = authentication.split(' ', 1)
80 if authmeth.lower() != "basic":
81 return
82 auth = auth.strip().decode("base64")
83 username, password = auth.split(":", 1)
84 return authenticate(username=username, password=password)
85
86
87def simple(request, template_name="djangopypi/simple.html"): 74def simple(request, template_name="djangopypi/simple.html"):
88 if request.method == "POST": 75 if request.method == "POST":
89 user = login_basic_auth(request)
90 if not user:
91 return HttpResponseForbidden("Must give credentials.")
92 login(request, user)
93 if not request.user.is_authenticated():
94 return HttpResponseForbidden(
95 "Not logged in, or invalid user/password")
96 post_data, files = parse_weird_post_data(request.raw_post_data) 76 post_data, files = parse_weird_post_data(request.raw_post_data)
97 action = post_data.get(":action") 77 action = post_data.get(":action")
98 classifiers = post_data.getlist("classifiers") 78 classifiers = post_data.getlist("classifiers")
99 register_form = ProjectRegisterForm(post_data.copy()) 79 register_form = ProjectRegisterForm(post_data.copy())
100 if register_form.is_valid(): 80 if register_form.is_valid():
101 registered = register_form.save(classifiers, request.user, 81 return HttpResponse(register_form.save(classifiers,
102 file=files.get("content")) 82 file=files.get("content")))
103 if registered: 83 return HttpResponse("Successfully registered.")
104 return HttpResponse("Successfully registered.")
105 return HttpResponseForbidden("That's not your project!")
106 return HttpResponse("ERRORS: %s" % register_form.errors) 84 return HttpResponse("ERRORS: %s" % register_form.errors)
107 85
108 dists = Project.objects.all() 86 dists = Project.objects.all()