Merge Request #83

Merged
softwarepublico/colab!83
Created by Sergio Oliveira

Changing colab settings and auto settings for DB

Closes #68 Closes #75 Closes #76 Closes #87

Milestone: None

Merged by Sergio Oliveira

Source branch has been removed
Commits (24)
2 participants
.gitignore
... ... @@ -23,6 +23,7 @@ coverage_report/
23 23  
24 24 # Whoosh Index
25 25 tests/whoosh_index/
  26 +colab/whoosh_index/
26 27  
27 28 # Open Build System
28 29 .obs/
... ...
.travis.yml
... ... @@ -19,3 +19,11 @@ script:
19 19  
20 20 after_success:
21 21 - coveralls
  22 +
  23 +notifications:
  24 + irc:
  25 + channels:
  26 + - "chat.freenode.net#colab"
  27 + on_success: change
  28 + on_failure: always
  29 + use_notice: true
... ...
Vagrantfile
... ... @@ -6,10 +6,10 @@
6 6 # - trusty64
7 7 # - chef/centos-7.0
8 8  
9   -default_box = "precise64"
  9 +default_box = "trusty64"
10 10 if $stdin.isatty
11 11 if Dir.glob(File.join(File.dirname("__FILE__"), '.vagrant/**/id')).empty?
12   - options = ["precise64", "trusty64", "chef/centos-7.0"]
  12 + options = ["trusty64", "chef/centos-7.0"]
13 13  
14 14 puts "Bases boxes available locally:"
15 15 puts '------------------------------'
... ...
colab/accounts/templates/accounts/user_detail.html
1 1 {% extends "base.html" %}
2 2  
3   -{% load i18n gravatar i18n_model %}
  3 +{% load i18n gravatar %}
4 4  
5 5 {% block title %}Perfil{% endblock %}
6 6  
... ... @@ -126,25 +126,6 @@
126 126 </div>
127 127 </div>
128 128  
129   -
130   - {% if user_.badge_set.exists %}
131   - <div class="col-lg-8 col-md-12 col-sm-7">
132   - <div class="panel panel-default">
133   - <div class="panel-heading">
134   - <h3 class="panel-title">{% trans "Badges" %}</h3>
135   - </div>
136   - <div class="panel-body">
137   - <div>
138   - {% for badge in user_.badge_set.all %}
139   - {% translate badge as badge_trans %}
140   - <img src="data:image/png;base64,{{ badge.image_base64 }}" title="({{ badge_trans.title }}) {{ badge_trans.description }}" />
141   - {% endfor %}
142   - </div>
143   - </div>
144   - </div>
145   - </div>
146   - {% endif %}
147   -
148 129 </div> <!-- End of user-profile row -->
149 130  
150 131 <div class="row">
... ...
colab/management/initconfig.py
... ... @@ -32,12 +32,17 @@ ALLOWED_HOSTS = [
32 32 # SOCIAL_NETWORK_ENABLED = True
33 33  
34 34 ## Database settings
35   -DATABASES = {{
36   - 'default': {{
37   - 'ENGINE': 'django.db.backends.sqlite3',
38   - 'NAME': 'colab.sqlite3',
39   - }}
40   -}}
  35 +##
  36 +## When DEBUG is True colab will create the DB on
  37 +## the repository root. In case of production settings
  38 +## (DEBUG False) the DB settings must be set.
  39 +##
  40 +# DATABASES = {{
  41 +# 'default': {{
  42 +# 'ENGINE': 'django.db.backends.sqlite3',
  43 +# 'NAME': '/path/to/colab.sqlite3',
  44 +# }}
  45 +# }}
41 46  
42 47 ## Disable indexing
43 48 ROBOTS_NOINDEX = False
... ...
colab/settings.py
... ... @@ -9,6 +9,7 @@ https://docs.djangoproject.com/en/1.7/ref/settings/
9 9 """
10 10  
11 11 BROKER_URL = 'amqp://guest:guest@localhost:5672/'
  12 +
12 13 # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
13 14 import os
14 15 BASE_DIR = os.path.dirname(__file__)
... ... @@ -43,10 +44,8 @@ INSTALLED_APPS = (
43 44 'colab.accounts',
44 45  
45 46 # Not standard apps
46   - 'django_mobile',
47 47 'haystack',
48 48 'hitcounter',
49   - 'i18n_model',
50 49 'taggit',
51 50 'djcelery',
52 51  
... ... @@ -54,10 +53,10 @@ INSTALLED_APPS = (
54 53 'colab.home',
55 54 'colab.plugins',
56 55 'colab.super_archives',
57   - 'colab.api',
58 56 'colab.rss',
59 57 'colab.search',
60 58 'colab.tz',
  59 + 'colab.utils',
61 60 )
62 61  
63 62 ROOT_URLCONF = 'colab.urls'
... ... @@ -168,7 +167,15 @@ HAYSTACK_CUSTOM_HIGHLIGHTER = &#39;colab.utils.highlighting.ColabHighlighter&#39;
168 167 HAYSTACK_CONNECTIONS = {
169 168 'default': {
170 169 'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine',
171   - 'PATH': os.path.join(os.path.dirname(__file__), 'whoosh_index'),
  170 + 'PATH': os.path.join(BASE_DIR, 'whoosh_index'),
  171 + }
  172 +}
  173 +
  174 +DEFAULT_DATABASE = os.path.join(BASE_DIR, 'colab.sqlite3')
  175 +DATABASES = {
  176 + 'default': {
  177 + 'ENGINE': 'django.db.backends.sqlite3',
  178 + 'NAME': DEFAULT_DATABASE,
172 179 }
173 180 }
174 181  
... ... @@ -183,7 +190,6 @@ TEMPLATE_CONTEXT_PROCESSORS = (
183 190 'django.core.context_processors.tz',
184 191 'django.contrib.messages.context_processors.messages',
185 192 'django.core.context_processors.request',
186   - 'django_mobile.context_processors.is_mobile',
187 193 'colab.super_archives.context_processors.mailarchive',
188 194 'colab.plugins.context_processors.colab_apps',
189 195 'colab.home.context_processors.robots',
... ... @@ -200,8 +206,6 @@ MIDDLEWARE_CLASSES = (
200 206 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
201 207 'django.contrib.messages.middleware.MessageMiddleware',
202 208 'django.middleware.clickjacking.XFrameOptionsMiddleware',
203   - 'django_mobile.middleware.MobileDetectionMiddleware',
204   - 'django_mobile.middleware.SetFlavourMiddleware',
205 209 'colab.tz.middleware.TimezoneMiddleware',
206 210 )
207 211  
... ... @@ -245,12 +249,12 @@ REVPROXY_ADD_REMOTE_USER = True
245 249 # Tastypie settings
246 250 TASTYPIE_DEFAULT_FORMATS = ['json', ]
247 251  
248   -from .utils.conf import load_colab_apps, load_py_settings
  252 +from .utils import conf
249 253  
250 254 SOCIAL_NETWORK_ENABLED = locals().get('SOCIAL_NETWORK_ENABLED') or False
251 255  
252   -locals().update(load_colab_apps())
253   -locals().update(load_py_settings())
  256 +locals().update(conf.load_colab_apps())
  257 +locals().update(conf.load_py_settings())
254 258  
255 259 COLAB_APPS = locals().get('COLAB_APPS') or {}
256 260 PROXIED_APPS = {}
... ... @@ -290,3 +294,5 @@ STATICFILES_DIRS += [
290 294 TEMPLATE_DIRS += (
291 295 os.path.join(BASE_DIR, 'templates'),
292 296 )
  297 +
  298 +conf.validate_database(DATABASES, DEFAULT_DATABASE, DEBUG)
... ...
colab/static/css/screen.css
... ... @@ -275,88 +275,6 @@ ul.unstyled-list .glyphicon-chevron-right {
275 275 border-color: #999;
276 276 }
277 277  
278   -/* Converse JS */
279   -
280   -#chatpanel form#converse-login {
281   - padding: 0;
282   -}
283   -
284   -#chatpanel form#converse-login input,
285   -#chatpanel form#converse-login label {
286   - margin: 2px 10px;
287   -}
288   -
289   -#chatpanel form#converse-login .login-submit{
290   - margin-top: 10px;
291   -}
292   -
293   -#chatpanel a.configure-chatroom-button,
294   -#chatpanel a.close-chatbox-button {
295   - background-color: #F6F6F6;
296   - margin-right: 0.6em;
297   -}
298   -
299   -#chatpanel .chat-head #controlbox-tabs li {
300   - width:32%;
301   -}
302   -
303   -#chatpanel .oc-chat-head {
304   - height: 37px;
305   -}
306   -
307   -#chatpanel .chatbox dl.dropdown {
308   - margin-top: 0;
309   -}
310   -
311   -#chatpanel #converse-roster {
312   - height: 207px;
313   -}
314   -
315   -#chatpanel #toggle-controlbox {
316   - font-size: 100% !important;
317   - padding: 0 4px 26px !important;
318   -}
319   -
320   -#chatpanel {
321   - height: 342px !important;
322   -}
323   -
324   -#chatpanel div#controlbox-panes {
325   - width: auto;
326   -}
327   -
328   -#chatpanel .chat-head-chatbox, #chatpanel .chat-head-chatroom {
329   - height: 40.5px;
330   -}
331   -
332   -#chatpanel form.sendXMPPMessage {
333   - height: 76px;
334   - border: none;
335   -}
336   -
337   -#chatpanel form.sendXMPPMessage textarea {
338   - width: 189px;
339   - max-width: 285px;
340   - max-height: 66px;
341   -}
342   -
343   -#chatpanel .chatbox form.sendXMPPMessage textarea {
344   - max-width: 189px;
345   -}
346   -
347   -#chatpanel .chat-content,
348   -#chatpanel .chatroom .participants{
349   - width: auto;
350   -}
351   -
352   -#chatpanel div#chatrooms {
353   - overflow-y: visible;
354   -}
355   -
356   -
357   -/* End of Converse JS*/
358   -
359   -
360 278 /* user profile update */
361 279  
362 280 .btn.delete-email:not(:hover) {
... ...
colab/super_archives/templates/message-thread.html
... ... @@ -59,7 +59,7 @@
59 59 console.debug('trying to vote');
60 60 $btn.button('loading');
61 61 $ajax = $.ajax({
62   - url: "/api/message/" + msg_id + "/vote",
  62 + url: "/archives/message/" + msg_id + "/vote",
63 63 type: method,
64 64 context: $btn.get(0),
65 65 beforeSend: function(xhr, settings) {
... ...
colab/super_archives/urls.py
1 1 from django.conf.urls import patterns, url
2 2  
3   -from .views import EmailView, EmailValidationView, ThreadView
4   -from .views import ThreadDashboardView
  3 +from .views import (EmailView, EmailValidationView, ThreadView,
  4 + ThreadDashboardView, VoteView)
5 5  
6 6  
7 7 urlpatterns = patterns(
... ... @@ -13,4 +13,5 @@ urlpatterns = patterns(
13 13 name="archive_email_validation_view"),
14 14 url(r'manage/email/(?P<key>[0-9a-z]{32})?', EmailView.as_view(),
15 15 name="archive_email_view"),
  16 + url(r'message/(?P<msg_id>\d+)/vote$', VoteView.as_view()),
16 17 )
... ...
colab/super_archives/views.py
... ... @@ -32,6 +32,8 @@ class ThreadView(View):
32 32 thread = get_object_or_404(Thread, subject_token=thread_token,
33 33 mailinglist__name=mailinglist)
34 34  
  35 + # TODO: Refactor this code
  36 + # Use local flag is_private instead of always check the API!!
35 37 all_privates = dict(mailman.all_lists(private=True))
36 38 if all_privates[thread.mailinglist.name]:
37 39 if not request.user.is_authenticated():
... ... @@ -294,3 +296,40 @@ class EmailValidationView(View):
294 296 return http.HttpResponseServerError()
295 297  
296 298 return http.HttpResponse(status=204)
  299 +
  300 +
  301 +class VoteView(View):
  302 +
  303 + http_method_names = [u'get', u'put', u'delete', u'head']
  304 +
  305 + def put(self, request, msg_id):
  306 + if not request.user.is_authenticated():
  307 + return http.HttpResponseForbidden()
  308 +
  309 + try:
  310 + Message.objects.get(id=msg_id).vote(request.user)
  311 + except IntegrityError:
  312 + # 409 Conflict
  313 + # used for duplicated entries
  314 + return http.HttpResponse(status=409)
  315 +
  316 + # 201 Created
  317 + return http.HttpResponse(status=201)
  318 +
  319 + def get(self, request, msg_id):
  320 + votes = Message.objects.get(id=msg_id).votes_count()
  321 + return http.HttpResponse(votes, content_type='application/json')
  322 +
  323 + def delete(self, request, msg_id):
  324 + if not request.user.is_authenticated():
  325 + return http.HttpResponseForbidden()
  326 +
  327 + try:
  328 + Message.objects.get(id=msg_id).unvote(request.user)
  329 + except ObjectDoesNotExist:
  330 + return http.HttpResponseGone()
  331 +
  332 + # 204 No Content
  333 + # empty body, as per RFC2616.
  334 + # object deleted
  335 + return http.HttpResponse(status=204)
... ...
colab/templates/footer.html
... ... @@ -6,7 +6,6 @@
6 6 <p class="col-lg-12 text-center">{% trans "Last email imported at" %} {{ last_imported_message.received_time|date:'DATETIME_FORMAT' }}</p>
7 7 {% endif %}
8 8 <p class="col-lg-12 text-center">
9   - <a href="{% url 'opendata' %}"><img src="{% static 'img/opendata3.png' %}"/></a>
10 9 <a href="http://creativecommons.org/licenses/by-sa/4.0/deed.pt_BR"><img src="{% static 'img/cc_by_sa.png' %}"/></a>
11 10 </p>
12 11 <p class="col-lg-12 text-center">
... ...
colab/urls.py
... ... @@ -8,31 +8,19 @@ from django.views.generic import RedirectView
8 8 admin.autodiscover()
9 9  
10 10 urlpatterns = patterns('',
  11 + url(r'^$', RedirectView.as_view(url=settings.COLAB_HOME_URL), name='home'),
11 12 url(r'^robots.txt$', 'colab.home.views.robots', name='robots'),
12 13 url(r'^dashboard$', 'colab.home.views.dashboard', name='dashboard'),
13   - url(r'^$', RedirectView.as_view(url=settings.COLAB_HOME_URL), name='home'),
14   -
15   - url(r'^open-data/$', TemplateView.as_view(template_name='open-data.html'),
16   - name='opendata'),
17   -
18 14 url(r'^search/', include('colab.search.urls')),
19   - url(r'^archives/', include('colab.super_archives.urls')),
20   - url(r'^api/', include('colab.api.urls')),
21 15 url(r'^rss/', include('colab.rss.urls')),
22 16  
23   - # Kept for backwards compatibility
24   - url(r'^user/', include('colab.accounts.urls')),
25   - # Kept for backwards compatibility
26   - url(r'^user/', include('colab.accounts.urls')),
27   - # (same here) TODO: move to nginx
28   - url(r'^signup/', include('colab.accounts.urls')),
29 17 url(r'^account/', include('colab.accounts.urls')),
30 18 url(r'^myaccount/(?P<route>.*)$',
31 19 'colab.accounts.views.myaccount_redirect', name='myaccount'),
32 20  
33   - # Uncomment the next line to enable the admin:
34 21 url(r'^colab/admin/', include(admin.site.urls)),
35 22  
  23 + url(r'^archives/', include('colab.super_archives.urls')),
36 24 url(r'^gitlab/', include('colab.plugins.gitlab.urls')),
37 25 url(r'^mezuro/', include('colab.plugins.mezuro.urls')),
38 26 url(r'^social/', include('colab.plugins.noosfero.urls')),
... ...
colab/utils/conf.py
... ... @@ -13,6 +13,14 @@ class InaccessibleSettings(ImproperlyConfigured):
13 13 Check if the file exists and if you have read permissions."""
14 14  
15 15  
  16 +class DatabaseUndefined(ImproperlyConfigured):
  17 + """Default database is not set.
  18 +
  19 + When DEBUG is set to True a local sqlite database can be used for
  20 + developement porposes but otherwise the `default` database must
  21 + be set."""
  22 +
  23 +
16 24 def _load_py_file(py_path, path):
17 25 original_path = sys.path
18 26  
... ... @@ -94,3 +102,11 @@ def load_colab_apps():
94 102 COLAB_APPS[app_name][key] = value
95 103  
96 104 return {'COLAB_APPS': COLAB_APPS}
  105 +
  106 +
  107 +def validate_database(database_dict, default_db, debug):
  108 + db_name = database_dict.get('default', {}).get('NAME')
  109 + if not debug and db_name == default_db:
  110 + msg = ('Since DEBUG is set to False DATABASE must be set on '
  111 + 'Colab settings')
  112 + raise DatabaseUndefined(msg)
... ...
colab/utils/tests/__init__.py 0 → 100644
colab/utils/tests/test_conf.py 0 → 100644
... ... @@ -0,0 +1,18 @@
  1 +
  2 +from django.test import TestCase, override_settings
  3 +from django.conf import settings
  4 +
  5 +from ..conf import DatabaseUndefined, validate_database
  6 +
  7 +
  8 +class TestConf(TestCase):
  9 +
  10 + @override_settings(DEBUG=False, DATABASES={
  11 + 'default': {
  12 + 'NAME': settings.DEFAULT_DATABASE,
  13 + },
  14 + })
  15 + def test_database_undefined(self):
  16 + with self.assertRaises(DatabaseUndefined):
  17 + validate_database(settings.DATABASES, settings.DEFAULT_DATABASE,
  18 + settings.DEBUG)
... ...
misc/etc/cron.d/colab
... ... @@ -2,14 +2,8 @@
2 2  
3 3 34 2 * * * colab colab-admin rebuild_index --noinput &> /dev/null
4 4  
5   -0 * * * * colab colab-admin cleanup_snippets &> /dev/null
6   -
7   -*/5 * * * * colab colab-admin update_badges &> /dev/null
8   -
9 5 * * * * * colab colab-admin import_proxy_data &> /dev/null
10 6  
11 7 27 3 * * * colab colab-admin clearsessions &> /dev/null
12 8  
13   -10 * * * * colab colab-admin update_planet &> /dev/null
14   -
15 9 * * * * * colab colab-admin import_emails &> /dev/null
... ...
setup.py
... ... @@ -3,26 +3,23 @@ from setuptools import setup, find_packages
3 3  
4 4  
5 5 REQUIREMENTS = [
6   - 'Django>=1.7.8,<1.8',
  6 + 'Django>=1.7.9,<1.8',
7 7 'pytz>=2011n',
8 8 'django-hitcounter>=0.1.1',
9   - 'django-tastypie>=0.12.1',
10   - 'django-revproxy>=0.9.3',
  9 +
  10 + # Search
11 11 'django-haystack>=2.2',
12 12 'Whoosh>=2.7.0',
13 13  
14   - # Diazo
  14 + # revproxy
  15 + 'django-revproxy>=0.9.3',
15 16 'diazo>=1.0.5',
16 17  
17   - # Celery
  18 + # Async Signals
18 19 'django-celery==3.1.16',
19 20  
20 21 ### Move out of colab (as plugins):
21 22  
22   - # Deps for badger
23   - 'Pillow==2.8.1',
24   - 'django-i18n-model>=0.0.7',
25   -
26 23 # Deps for super_archives
27 24 'etiquetando==0.1',
28 25 'django-taggit>=0.12.1',
... ... @@ -32,10 +29,6 @@ REQUIREMENTS = [
32 29 # Deps for gitlab plugin
33 30 'python-dateutil>=1.5',
34 31 'requests',
35   -
36   - # Converse.js (XMPP client)
37   - 'django-conversejs>=0.3.4',
38   - 'django-mobile>=0.3.0',
39 32 ]
40 33  
41 34 TEST_REQUIREMENTS = [
... ...
tests/colab_settings.py
1 1  
2 2 ## Set to false in production
3   -DEBUG = False
  3 +DEBUG = True
4 4 TEMPLATE_DEBUG = False
5 5  
6 6 ## System admins
... ... @@ -25,15 +25,7 @@ ALLOWED_HOSTS = [
25 25 ]
26 26  
27 27 ### Uncomment to enable social networks fields profile
28   -# SOCIAL_NETWORK_ENABLED = True
29   -
30   -## Database settings
31   -DATABASES = {
32   - 'default': {
33   - 'ENGINE': 'django.db.backends.sqlite3',
34   - 'NAME': 'colab.sqlite3',
35   - }
36   -}
  28 +SOCIAL_NETWORK_ENABLED = True
37 29  
38 30 ## Disable indexing
39 31 ROBOTS_NOINDEX = True
... ... @@ -59,3 +51,5 @@ LOGGING = {
59 51 },
60 52 },
61 53 }
  54 +
  55 +STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'
... ...
tests/run.py
... ... @@ -3,7 +3,7 @@
3 3 import os
4 4 import sys
5 5  
6   -os.environ['DJANGO_SETTINGS_MODULE'] = 'tests.settings'
  6 +os.environ['DJANGO_SETTINGS_MODULE'] = 'colab.settings'
7 7 os.environ['COLAB_SETTINGS'] = 'tests/colab_settings.py'
8 8 os.environ['COLAB_PLUGINS'] = 'tests/plugins.d'
9 9 os.environ['COVERAGE_PROCESS_START'] = '.coveragerc'
... ...
vagrant/centos.sh
... ... @@ -15,53 +15,16 @@ if [ -n &quot;$http_proxy&quot; ]; then
15 15 fi
16 16 fi
17 17  
18   -### Install dependencies
19   -
20   -yum -y groupinstall "Development tools"
21   -
22   -yum install -y git unzip mercurial libev-devel gettext libxml2-devel libxslt-devel openssl-devel libffi-devel libjpeg-turbo-devel zlib-devel freetype-devel postgresql-devel python-devel postgresql-server java epel-release
23 18  
24   -### Install Rabbitmq
25   -yum install -y rabbitmq-server
26   -systemctl start rabbitmq-server
27   -
28   -### Install Virtualenvwrapper
29   -which pip2.7 > /dev/null ||
30   - curl -s -L https://raw.githubusercontent.com/pypa/pip/1.5.6/contrib/get-pip.py |
31   - python2.7
32   -
33   -if [ ! -f /etc/profile.d/virtualenvwrapper.sh ]
34   -then
35   - pip install virtualenvwrapper
36   - cat > "/etc/profile.d/virtualenvwrapper.sh" <<EOF
37   -export VIRTUALENVWRAPPER_PYTHON="/usr/bin/python2.7"
38   -source /usr/bin/virtualenvwrapper.sh
39   -EOF
40   -fi
41   -
42   -### Create conf directory
43   -mkdir -p /etc/colab
44   -chown vagrant:vagrant /etc/colab
45   -
46   -
47   -## Configuring postgres
48   -if [ ! -f /var/lib/pgsql/data/pg_hba.conf.bkp ]; then
49   - service postgresql initdb
50   - cp /var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/data/pg_hba.conf.bkp
51   - echo "local all all ident" > /var/lib/pgsql/data/pg_hba.conf
52   - echo "host all all 127.0.0.1/32 md5" >> /var/lib/pgsql/data/pg_hba.conf
53   - echo "host all all ::1/128 md5" >> /var/lib/pgsql/data/pg_hba.conf
54   - service postgresql restart
55   -fi
  19 +### Install dependencies
56 20  
  21 +yum install -y epel-release
57 22  
58   -### Create colab user in PostgreSQL
59   -echo "CREATE USER colab WITH PASSWORD 'colab';" | sudo -u postgres -i psql 2> /dev/null || echo
60   -echo "ALTER USER colab CREATEDB;" | sudo -u postgres -i psql 2> /dev/null
  23 +yum -y groupinstall "Development tools"
61 24  
62   -### Create colab DB in PostgreSQL
63   -sudo -u postgres -i createdb --owner=colab colab 2> /dev/null | echo
  25 +yum install -y git unzip gettext libxml2-devel libxslt-devel openssl-devel libffi-devel python-devel python-pip python-virtualenvwrapper rabbitmq-server
64 26  
65   -### Forcing postgresql to start at boot
66   -sudo chkconfig postgresql on
67 27  
  28 +### Init Rabbitmq
  29 +chkconfig rabbitmq-server on
  30 +systemctl start rabbitmq-server
... ...
vagrant/provision.sh
... ... @@ -31,6 +31,10 @@ for dir in /vagrant/colab /vagrant; do
31 31 done
32 32 pip install -e $basedir
33 33  
  34 +### Create conf directory
  35 +sudo mkdir -p /etc/colab
  36 +sudo chown vagrant:vagrant /etc/colab
  37 +
34 38 if [ ! -s /etc/colab/settings.py ]; then
35 39 colab-init-config > /etc/colab/settings.py
36 40 fi
... ... @@ -41,4 +45,4 @@ colab-admin loaddata /vagrant/tests/test_data.json
41 45 # Init.d Celery files
42 46 sudo cp $basedir/vagrant/misc/etc/init.d/celeryd /etc/init.d/
43 47 sudo cp $basedir/vagrant/misc/etc/default/celeryd /etc/default/
44   -sudo systemctl start celeryd
  48 +sudo service celeryd start
... ...
vagrant/ubuntu.sh
... ... @@ -5,16 +5,4 @@ set -ex
5 5 ### Install dependencies
6 6 apt-get update
7 7  
8   -apt-get install curl git unzip mercurial build-essential libev-dev gettext libxml2-dev libxslt1-dev libssl-dev libffi-dev libjpeg-dev zlib1g-dev libfreetype6-dev libpq-dev python-dev postgresql virtualenvwrapper python-pip java-common -y
9   -
10   -
11   -### Create conf directory
12   -mkdir -p /etc/colab
13   -chown vagrant:vagrant /etc/colab
14   -
15   -### Create colab user in PostgreSQL
16   -echo "CREATE USER colab WITH PASSWORD 'colab';" | sudo -u postgres -i psql 2> /dev/null || echo
17   -echo "ALTER USER colab CREATEDB;" | sudo -u postgres -i psql 2> /dev/null
18   -
19   -#i## Create colab DB in PostgreSQL
20   -sudo -u postgres -i createdb --owner=colab colab 2> /dev/null | echo
  8 +apt-get install curl git unzip build-essential gettext libxml2-dev libxslt1-dev libssl-dev libffi-dev python-dev virtualenvwrapper python-pip rabbitmq-server -y
... ...
  • 9fe63c7bd60deeb55e409a1d7dd173f5?s=40&d=identicon
    Sergio Oliveira @seocam

    Added 19 new commits:

    Choose File ...   File name...
    Cancel
  • 9fe63c7bd60deeb55e409a1d7dd173f5?s=40&d=identicon
    Sergio Oliveira @seocam

    Added 2 new commits:

    • d1bc4536 - Removed precise64 support
    • cb01d435 - Added travis notifications on IRC
    Choose File ...   File name...
    Cancel