diff options
author | Ask Solem <askh@modwheel.net> | 2009-03-20 12:36:52 +0100 |
---|---|---|
committer | Ask Solem Hoel <askh@opera.com> | 2009-03-20 12:36:52 +0100 |
commit | 80173599753b20097246db80e217e707e1d6a033 (patch) | |
tree | 44ea056c068b1a84059d965e89556c7a8ae39da0 | |
parent | 2560e5cbc586ea9a4c99270aaf0aef2964b7f524 (diff) | |
download | chishop-80173599753b20097246db80e217e707e1d6a033.tar.bz2 chishop-80173599753b20097246db80e217e707e1d6a033.tar.xz chishop-80173599753b20097246db80e217e707e1d6a033.zip |
Remove HTTP basic auth for now
-rw-r--r-- | djangopypi/forms.py | 3 | ||||
-rw-r--r-- | djangopypi/models.py | 6 | ||||
-rw-r--r-- | djangopypi/views.py | 30 |
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 | ||
33 | import os | 33 | import os |
34 | from django.db import models | 34 | from django.db import models |
35 | from django.contrib.auth.models import User | ||
36 | from django.utils.translation import ugettext_lazy as _ | 35 | from django.utils.translation import ugettext_lazy as _ |
37 | 36 | ||
38 | OS_NAMES = ( | 37 | OS_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 | ||
33 | from django.http import Http404, HttpResponse, HttpResponseBadRequest | 33 | from django.http import Http404, HttpResponse, HttpResponseBadRequest |
34 | from django.http import QueryDict, HttpResponseForbidden | 34 | from django.http import QueryDict |
35 | from django.shortcuts import render_to_response | 35 | from django.shortcuts import render_to_response |
36 | from django.contrib.auth import authenticate, login | ||
37 | from djangopypi.models import Project | 36 | from djangopypi.models import Project |
38 | from djangopypi.forms import ProjectRegisterForm | 37 | from djangopypi.forms import ProjectRegisterForm |
39 | from django.template import RequestContext | 38 | from 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 | ||
75 | def 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 | |||
87 | def simple(request, template_name="djangopypi/simple.html"): | 74 | def 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() |