From 0c94f68819ad68e8dc001e3013ebe9782bd4215c Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Wed, 20 Aug 2014 14:06:17 +0100 Subject: [PATCH] Install OSQA from git instead of svn --- cookbooks/osqa/attributes/default.rb | 1 - .../osqa/files/default/osmauth/__init__.py | 0 .../files/default/osmauth/authentication.py | 21 ------ cookbooks/osqa/files/default/osmauth/forms.py | 72 ------------------- cookbooks/osqa/files/default/osmauth/osm.py | 19 ----- .../default/osmauth/templates/loginform.html | 31 -------- cookbooks/osqa/files/default/osmauth/urls.py | 8 --- cookbooks/osqa/recipes/default.rb | 25 +++---- 8 files changed, 11 insertions(+), 166 deletions(-) delete mode 100644 cookbooks/osqa/files/default/osmauth/__init__.py delete mode 100644 cookbooks/osqa/files/default/osmauth/authentication.py delete mode 100644 cookbooks/osqa/files/default/osmauth/forms.py delete mode 100644 cookbooks/osqa/files/default/osmauth/osm.py delete mode 100644 cookbooks/osqa/files/default/osmauth/templates/loginform.html delete mode 100644 cookbooks/osqa/files/default/osmauth/urls.py diff --git a/cookbooks/osqa/attributes/default.rb b/cookbooks/osqa/attributes/default.rb index fb20a4d47..610f68605 100644 --- a/cookbooks/osqa/attributes/default.rb +++ b/cookbooks/osqa/attributes/default.rb @@ -1,4 +1,3 @@ -default[:osqa][:revision] = "1284" default[:osqa][:user] = "osqa" default[:osqa][:group] = nil default[:osqa][:database_name] = "osqa" diff --git a/cookbooks/osqa/files/default/osmauth/__init__.py b/cookbooks/osqa/files/default/osmauth/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/cookbooks/osqa/files/default/osmauth/authentication.py b/cookbooks/osqa/files/default/osmauth/authentication.py deleted file mode 100644 index 7c8e70279..000000000 --- a/cookbooks/osqa/files/default/osmauth/authentication.py +++ /dev/null @@ -1,21 +0,0 @@ -from forum.authentication.base import AuthenticationConsumer, ConsumerTemplateContext, InvalidAuthentication -from forms import OpenStreetMapLoginForm - -class OpenStreetMapAuthConsumer(AuthenticationConsumer): - def process_authentication_request(self, request): - form_auth = OpenStreetMapLoginForm(request.POST) - - if form_auth.is_valid(): - request.session["auth_consumer_data"] = form_auth.get_user_data() - return form_auth.get_user() - else: - raise InvalidAuthentication(" ".join(form_auth.errors.values()[0])) - - def get_user_data(self, key): - return {} - -class OpenStreetMapAuthContext(ConsumerTemplateContext): - mode = 'TOP_STACK_ITEM' - weight = 0 - human_name = 'OpenStreetMap Login' - stack_item_template = 'modules/osmauth/loginform.html' diff --git a/cookbooks/osqa/files/default/osmauth/forms.py b/cookbooks/osqa/files/default/osmauth/forms.py deleted file mode 100644 index c59475e9a..000000000 --- a/cookbooks/osqa/files/default/osmauth/forms.py +++ /dev/null @@ -1,72 +0,0 @@ -from osm import OpenStreetMapAPI -from forum.forms import NextUrlField, UserNameField, SetPasswordForm -from django.utils.translation import ugettext as _ -from django import forms - -class OpenStreetMapLoginForm(forms.Form): - """ osm account signin form """ - next = NextUrlField() - username = UserNameField(required=False, skip_clean=True) - password = forms.CharField(max_length=128, - widget=forms.widgets.PasswordInput(attrs={'class':'required login'}), - required=False) - - def __init__(self, data=None, files=None, auto_id='id_%s', - prefix=None, initial=None): - super(OpenStreetMapLoginForm, self).__init__(data, files, auto_id, - prefix, initial) - self.user_details = None - - def _clean_nonempty_field(self, field): - value = None - if field in self.cleaned_data: - value = self.cleaned_data[field].strip() - if value == '': - value = None - self.cleaned_data[field] = value - return value - - def clean_username(self): - return self._clean_nonempty_field('username') - - def clean_password(self): - return self._clean_nonempty_field('password') - - def clean(self): - error_list = [] - username = self.cleaned_data['username'] - password = self.cleaned_data['password'] - - self.user_details = None - if username and password: - api = OpenStreetMapAPI(username, password) - - try: - self.user_details = api.user_details() - except: - del self.cleaned_data['username'] - del self.cleaned_data['password'] - error_list.insert(0, (_("Please enter valid username and password " - "(both are case-sensitive)."))) - error_list.insert(0, _('Login failed.')) - - elif password == None and username == None: - error_list.append(_('Please enter username and password')) - elif password == None: - error_list.append(_('Please enter your password')) - elif username == None: - error_list.append(_('Please enter user name')) - if len(error_list) > 0: - self._errors['__all__'] = forms.util.ErrorList(error_list) - - return self.cleaned_data - - def get_user(self): - """ get authenticated user """ - return "http://www.openstreetmap.org/user/%s" % self.user_details["id"] - - def get_user_data(self): - """ get user data for authenticated user """ - return { - "username": self.user_details["display_name"] - } diff --git a/cookbooks/osqa/files/default/osmauth/osm.py b/cookbooks/osqa/files/default/osmauth/osm.py deleted file mode 100644 index 94dcd13bf..000000000 --- a/cookbooks/osqa/files/default/osmauth/osm.py +++ /dev/null @@ -1,19 +0,0 @@ -from xml.etree.ElementTree import ElementTree -import urllib2 - -class OpenStreetMapAPI: - def __init__(self, username, password): - passman = urllib2.HTTPPasswordMgr() - passman.add_password("Web Password", "https://api.openstreetmap.org/api/0.6", username, password) - authhandler = urllib2.HTTPBasicAuthHandler(passman) - self.opener = urllib2.build_opener(authhandler) - - def user_details(self): - response = self.opener.open("https://api.openstreetmap.org/api/0.6/user/details") - tree = ElementTree() - root = tree.parse(response) - user = root.find("user") - return { - "id": user.attrib["id"], - "display_name": user.attrib["display_name"] - } diff --git a/cookbooks/osqa/files/default/osmauth/templates/loginform.html b/cookbooks/osqa/files/default/osmauth/templates/loginform.html deleted file mode 100644 index 5091dfa38..000000000 --- a/cookbooks/osqa/files/default/osmauth/templates/loginform.html +++ /dev/null @@ -1,31 +0,0 @@ -{% load i18n %} - -
-

{% trans 'Enter your OpenStreetMap username and password' %}
({% trans 'or select your external provider below' %})

- - - - - - - - - - - - - -
- - - -
- - - -
- - - {% trans 'Create account' %} | {% trans 'Forgot your password?' %} -
-
diff --git a/cookbooks/osqa/files/default/osmauth/urls.py b/cookbooks/osqa/files/default/osmauth/urls.py deleted file mode 100644 index 62581f005..000000000 --- a/cookbooks/osqa/files/default/osmauth/urls.py +++ /dev/null @@ -1,8 +0,0 @@ -from django.conf.urls.defaults import * -from django.views.generic.simple import direct_to_template -from django.utils.translation import ugettext as _ -import views as app - -urlpatterns = patterns('', - url(r'^%s%s%s$' % (_('account/'), _('openstreetmap/'), _('register/')), app.register, name='auth_openstreetmap_register'), -) diff --git a/cookbooks/osqa/recipes/default.rb b/cookbooks/osqa/recipes/default.rb index 98707f9ba..d4ed159c8 100644 --- a/cookbooks/osqa/recipes/default.rb +++ b/cookbooks/osqa/recipes/default.rb @@ -39,7 +39,7 @@ apache_module "wsgi" node[:osqa][:sites].each do |site| name = site[:name] - directory = site[:directory] || "/var/www/#{name}" + directory = site[:directory] || "/srv/#{name}" osqa_revision = site[:revision] || node[:osqa][:revision] site_user = site[:user] || node[:osqa][:user] site_user = Etc.getpwuid(site_user).name if site_user.is_a?(Integer) @@ -55,6 +55,12 @@ node[:osqa][:sites].each do |site| variables :user => site_user, :group => site_group end + directory directory do + owner site_user + group site_group + mode 0755 + end + execute "osqa-migrate" do action :nothing command "python manage.py migrate forum" @@ -64,25 +70,15 @@ node[:osqa][:sites].each do |site| notifies :reload, "service[apache2]" end - subversion "#{directory}/osqa" do + git "#{directory}/osqa" do action :sync - repository "http://svn.osqa.net/svnroot/osqa/trunk" - revision osqa_revision + repository "git://git.openstreetmap.org/osqa.git" + revision "live" user site_user group site_group notifies :run, "execute[osqa-migrate]" end - remote_directory "#{directory}/osqa/forum_modules/osmauth" do - source "osmauth" - owner site_user - group site_group - mode 0755 - files_owner site_user - files_group site_group - files_mode 0644 - end - template "#{directory}/osqa/osqa.wsgi" do source "osqa.wsgi.erb" owner site_user @@ -97,6 +93,7 @@ node[:osqa][:sites].each do |site| line.gsub!(/^( *)'NAME': '.*',/, "\\1'NAME': '#{database_name}',") line.gsub!(/^( *)'USER': '.*',/, "\\1'USER': '#{database_user}',") line.gsub!(/^( *)'PASSWORD': '.*',/, "\\1'PASSWORD': '#{database_password}',") + line.gsub!(/^ALLOWED_HOSTS = .*/, "ALLOWED_HOSTS = ('help.openstreetmap.org',)") line.gsub!(/^CACHE_BACKEND = .*/, "CACHE_BACKEND = 'memcached://127.0.0.1:11211/'") line.gsub!(/^APP_URL = 'http:\/\/'/, "APP_URL = 'http://#{name}'") line.gsub!(/^TIME_ZONE = 'America\/New_York'/, "TIME_ZONE = 'Europe/London'") -- 2.43.2