mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 22:13:26 +00:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
aeb6a5df7c | ||
|
|
94c35d8fb0 | ||
|
|
1d40b2291c | ||
|
|
d6a41b4fe3 | ||
|
|
5bf6f05f60 |
86
README.md
86
README.md
@@ -17,16 +17,19 @@ Once that's done, simply change to your zulip directory and run
|
|||||||
server inside a Vagrant guest.
|
server inside a Vagrant guest.
|
||||||
|
|
||||||
Once that finishes, you can run the development server as follows:
|
Once that finishes, you can run the development server as follows:
|
||||||
vagrant ssh -- -L9991:localhost:9991
|
|
||||||
# Now inside the container
|
```
|
||||||
cd /srv/zulip
|
vagrant ssh -- -L9991:localhost:9991
|
||||||
source /srv/zulip-venv/bin/activate
|
# Now inside the container
|
||||||
./tools/run-dev.py --interface=''
|
cd /srv/zulip
|
||||||
|
source /srv/zulip-venv/bin/activate
|
||||||
|
./tools/run-dev.py --interface=''
|
||||||
|
```
|
||||||
|
|
||||||
You can now visit <http://localhost:9991/> in your browser. To get
|
You can now visit <http://localhost:9991/> in your browser. To get
|
||||||
shell access to the virtual machine running the server, use `vagrant ssh`.
|
shell access to the virtual machine running the server, use `vagrant ssh`.
|
||||||
|
|
||||||
(A small note on tools/run-dev.py: the --interface='' option will make
|
(A small note on tools/run-dev.py: the `--interface=''` option will make
|
||||||
the development server listen on all network interfaces. While this
|
the development server listen on all network interfaces. While this
|
||||||
is correct for the Vagrant guest sitting behind a NAT, you probably
|
is correct for the Vagrant guest sitting behind a NAT, you probably
|
||||||
don't want to use that option when using run-dev.py in other environments).
|
don't want to use that option when using run-dev.py in other environments).
|
||||||
@@ -51,32 +54,38 @@ Install the following non-Python dependencies:
|
|||||||
* tsearch-extras — better text search
|
* tsearch-extras — better text search
|
||||||
|
|
||||||
On Debian or Ubuntu systems:
|
On Debian or Ubuntu systems:
|
||||||
sudo apt-get install libffi-dev memcached rabbitmq-server libldap2-dev redis-server postgresql-server-dev-all libmemcached-dev
|
|
||||||
|
|
||||||
# If on 12.04 or wheezy:
|
```
|
||||||
sudo apt-get install postgresql-9.1
|
sudo apt-get install libffi-dev memcached rabbitmq-server libldap2-dev redis-server postgresql-server-dev-all libmemcached-dev
|
||||||
wget https://dl.dropboxusercontent.com/u/283158365/zuliposs/postgresql-9.1-tsearch-extras_0.1.2_amd64.deb
|
|
||||||
sudo dpkg -i postgresql-9.1-tsearch-extras_0.1.2_amd64.deb
|
|
||||||
|
|
||||||
# If on 14.04:
|
# If on 12.04 or wheezy:
|
||||||
sudo apt-get install postgresql-9.3
|
sudo apt-get install postgresql-9.1
|
||||||
wget https://dl.dropboxusercontent.com/u/283158365/zuliposs/postgresql-9.3-tsearch-extras_0.1.2_amd64.deb
|
wget https://dl.dropboxusercontent.com/u/283158365/zuliposs/postgresql-9.1-tsearch-extras_0.1.2_amd64.deb
|
||||||
sudo dpkg -i postgresql-9.3-tsearch-extras_0.1.2_amd64.deb
|
sudo dpkg -i postgresql-9.1-tsearch-extras_0.1.2_amd64.deb
|
||||||
|
|
||||||
# If on 15.04 or jessie:
|
# If on 14.04:
|
||||||
sudo apt-get install postgresql-9.4
|
sudo apt-get install postgresql-9.3
|
||||||
wget https://dl.dropboxusercontent.com/u/283158365/zuliposs/postgresql-9.4-tsearch-extras_0.1_amd64.deb
|
wget https://dl.dropboxusercontent.com/u/283158365/zuliposs/postgresql-9.3-tsearch-extras_0.1.2_amd64.deb
|
||||||
sudo dpkg -i postgresql-9.4-tsearch-extras_0.1_amd64.deb
|
sudo dpkg -i postgresql-9.3-tsearch-extras_0.1.2_amd64.deb
|
||||||
|
|
||||||
# Then, all versions:
|
# If on 15.04 or jessie:
|
||||||
pip install -r requirements.txt
|
sudo apt-get install postgresql-9.4
|
||||||
./scripts/setup/configure-rabbitmq
|
wget https://dl.dropboxusercontent.com/u/283158365/zuliposs/postgresql-9.4-tsearch-extras_0.1_amd64.deb
|
||||||
./tools/postgres-init-db
|
sudo dpkg -i postgresql-9.4-tsearch-extras_0.1_amd64.deb
|
||||||
./tools/do-destroy-rebuild-database
|
|
||||||
./tools/emoji_dump/build_emoji
|
# Then, all versions:
|
||||||
|
pip install -r requirements.txt
|
||||||
|
./scripts/setup/configure-rabbitmq
|
||||||
|
./tools/postgres-init-db
|
||||||
|
./tools/do-destroy-rebuild-database
|
||||||
|
./tools/emoji_dump/build_emoji
|
||||||
|
```
|
||||||
|
|
||||||
To start the development server:
|
To start the development server:
|
||||||
./tools/run-dev.py
|
|
||||||
|
```
|
||||||
|
./tools/run-dev.py
|
||||||
|
```
|
||||||
|
|
||||||
… and hit http://localhost:9991/.
|
… and hit http://localhost:9991/.
|
||||||
|
|
||||||
@@ -85,17 +94,26 @@ Running the test suite
|
|||||||
======================
|
======================
|
||||||
|
|
||||||
One-time setup of test databases:
|
One-time setup of test databases:
|
||||||
./tools/postgres-init-test-db
|
|
||||||
./tools/do-destroy-rebuild-test-database
|
```
|
||||||
|
./tools/postgres-init-test-db
|
||||||
|
./tools/do-destroy-rebuild-test-database
|
||||||
|
```
|
||||||
|
|
||||||
Run all tests:
|
Run all tests:
|
||||||
./tools/test-all
|
|
||||||
|
```
|
||||||
|
./tools/test-all
|
||||||
|
```
|
||||||
|
|
||||||
This runs the linter plus all of our test suites; they can all be run
|
This runs the linter plus all of our test suites; they can all be run
|
||||||
separately (just read `tools/test-all` to see them). You can also run
|
separately (just read `tools/test-all` to see them). You can also run
|
||||||
individual tests, e.g.:
|
individual tests, e.g.:
|
||||||
./tools/test-backend zerver.test_bugdown.BugdownTest.test_inline_youtube
|
|
||||||
./tools/test-js-with-casper 10-navigation.js
|
```
|
||||||
|
./tools/test-backend zerver.test_bugdown.BugdownTest.test_inline_youtube
|
||||||
|
./tools/test-js-with-casper 10-navigation.js
|
||||||
|
```
|
||||||
|
|
||||||
Possible issues
|
Possible issues
|
||||||
===============
|
===============
|
||||||
@@ -105,10 +123,14 @@ to some performance-sensitive races). Until this issue is debugged,
|
|||||||
you may need to rerun them to get them to pass.
|
you may need to rerun them to get them to pass.
|
||||||
|
|
||||||
When running the test suite, if you get an error like this:
|
When running the test suite, if you get an error like this:
|
||||||
|
|
||||||
|
```
|
||||||
sqlalchemy.exc.ProgrammingError: (ProgrammingError) function ts_match_locs_array(unknown, text, tsquery) does not exist
|
sqlalchemy.exc.ProgrammingError: (ProgrammingError) function ts_match_locs_array(unknown, text, tsquery) does not exist
|
||||||
LINE 2: ...ECT message_id, flags, subject, rendered_content, ts_match_l...
|
LINE 2: ...ECT message_id, flags, subject, rendered_content, ts_match_l...
|
||||||
^
|
^
|
||||||
… then you need to install tsearch-extras, described above. Afterwards, re-run the init*-db and the do-destroy-rebuild*-database scripts.
|
```
|
||||||
|
|
||||||
|
… then you need to install tsearch-extras, described above. Afterwards, re-run the `init*-db` and the `do-destroy-rebuild*-database` scripts.
|
||||||
|
|
||||||
Contributing to Zulip
|
Contributing to Zulip
|
||||||
=====================
|
=====================
|
||||||
|
|||||||
1
docs/requirements.readthedocs.txt
Normal file
1
docs/requirements.readthedocs.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
# Empty requirements.txt to avoid readthedocs installing all our dependencies.
|
||||||
@@ -18,7 +18,7 @@ cp -a /root/zulip/puppet/zulip/files/puppet.conf /etc/puppet/
|
|||||||
# Hack to get required python-django-guardian while the PPA build of django-guardian isn't working :(
|
# Hack to get required python-django-guardian while the PPA build of django-guardian isn't working :(
|
||||||
apt-get -y install python-django
|
apt-get -y install python-django
|
||||||
wget https://zulip.com/dist/packages/python-django-guardian_1.3-1~zulip4_all.deb
|
wget https://zulip.com/dist/packages/python-django-guardian_1.3-1~zulip4_all.deb
|
||||||
dpkg -i /root/python-django-guardian_1.3-1~zulip4_all.deb
|
dpkg -i ./python-django-guardian_1.3-1~zulip4_all.deb
|
||||||
|
|
||||||
mkdir -p /etc/zulip
|
mkdir -p /etc/zulip
|
||||||
echo -e "[machine]\npuppet_classes = zulip::voyager\ndeploy_type = voyager" > /etc/zulip/zulip.conf
|
echo -e "[machine]\npuppet_classes = zulip::voyager\ndeploy_type = voyager" > /etc/zulip/zulip.conf
|
||||||
|
|||||||
BIN
static/images/logo/zballoon.png
Normal file
BIN
static/images/logo/zballoon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 20 KiB |
@@ -261,6 +261,11 @@ input.text-error {
|
|||||||
padding: 6px 0px 6px 0px;
|
padding: 6px 0px 6px 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.header-main .portico-simple-logo {
|
||||||
|
height: 40px;
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
|
||||||
.app {
|
.app {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
z-index: 99;
|
z-index: 99;
|
||||||
@@ -697,12 +702,50 @@ a.bottom-signup-button {
|
|||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.main-headline-container {
|
.main-headline-container,
|
||||||
|
.os-headline-container {
|
||||||
position: relative;
|
position: relative;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
padding-top: 40px !important;
|
padding-top: 40px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.os-headline-container {
|
||||||
|
padding: 20px;
|
||||||
|
background: #1e5799;
|
||||||
|
background: linear-gradient(to bottom, #1e5799 0%,#2989d8 52%,#7db9e8 100%);
|
||||||
|
padding-bottom: 40px !important;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.os-tagline,
|
||||||
|
.os-footnote {
|
||||||
|
color: #eeeeee !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.os-footnote a:link,
|
||||||
|
.os-footnote a:visited,
|
||||||
|
.os-footnote a:active {
|
||||||
|
color: #eeeeee;
|
||||||
|
text-decoration: none;
|
||||||
|
border-bottom: 1px solid #dddddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.os-footnote a:hover {
|
||||||
|
color: #ffffff;
|
||||||
|
text-decoration: none;
|
||||||
|
border-bottom: 1px solid #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.os-illustration {
|
||||||
|
height: 200px;
|
||||||
|
width: auto;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.portico-os-announcement {
|
||||||
|
padding-top: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
.main-headline-logo {
|
.main-headline-logo {
|
||||||
display: block;
|
display: block;
|
||||||
width: 200px;
|
width: 200px;
|
||||||
@@ -759,7 +802,7 @@ a.bottom-signup-button {
|
|||||||
.hello-main {
|
.hello-main {
|
||||||
max-width: none;
|
max-width: none;
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
padding: 0;
|
padding: 0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer-padder {
|
.footer-padder {
|
||||||
|
|||||||
@@ -1,6 +1,22 @@
|
|||||||
{% extends "zerver/portico.html" %}
|
{% extends "zerver/portico.html" %}
|
||||||
{% block hello_page_container %} hello-main{% endblock %}
|
{% block hello_page_container %} hello-main{% endblock %}
|
||||||
{% block hello_page_footer %} hello-footer{% endblock %}
|
{% block hello_page_footer %} hello-footer{% endblock %}
|
||||||
|
{% block os_announcement %}
|
||||||
|
{% if zulip_com %}
|
||||||
|
<div class="os-headline-container">
|
||||||
|
<img src="/static/images/logo/zballoon.png" class="os-illustration" alt="Zulip balloon" />
|
||||||
|
<div class="main-headline-text">
|
||||||
|
<span class="tagline os-tagline">
|
||||||
|
Zulip has been released as open source software!
|
||||||
|
</span>
|
||||||
|
<span class="footnote os-footnote">
|
||||||
|
Read the <a href="https://blogs.dropbox.com/tech/2015/09/open-sourcing-zulip-a-dropbox-hack-week-project" target="_blank">announcement</a> or go to <a href="https://www.zulip.org" target="_blank">the Zulip open source project website</a>.
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
{% block portico_content %}
|
{% block portico_content %}
|
||||||
<div class="app main-headline">
|
<div class="app main-headline">
|
||||||
<div class="app-main main-headline-container">
|
<div class="app-main main-headline-container">
|
||||||
|
|||||||
@@ -2,6 +2,22 @@
|
|||||||
|
|
||||||
{# API information page #}
|
{# API information page #}
|
||||||
|
|
||||||
|
{% block os_announcement %}
|
||||||
|
{% if zulip_com %}
|
||||||
|
<div class="os-headline-container">
|
||||||
|
<img src="/static/images/logo/zballoon.png" class="os-illustration" alt="Zulip balloon" />
|
||||||
|
<div class="main-headline-text">
|
||||||
|
<span class="tagline os-tagline">
|
||||||
|
Zulip has been released as open source software!
|
||||||
|
</span>
|
||||||
|
<span class="footnote os-footnote">
|
||||||
|
Read the <a href="https://blogs.dropbox.com/tech/2015/09/open-sourcing-zulip-a-dropbox-hack-week-project" target="_blank">announcement</a> or go to <a href="https://www.zulip.org" target="_blank">the Zulip open source project website</a>.
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
{% block portico_content %}
|
{% block portico_content %}
|
||||||
|
|
||||||
<div class="portico-page-header"><a href="#"><i class="icon-vector-gears portico-page-header-icon"></i>Integrations</a></div>
|
<div class="portico-page-header"><a href="#"><i class="icon-vector-gears portico-page-header-icon"></i>Integrations</a></div>
|
||||||
|
|||||||
@@ -9,6 +9,22 @@
|
|||||||
{% minified_js 'signup' %}
|
{% minified_js 'signup' %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block os_announcement %}
|
||||||
|
{% if zulip_com %}
|
||||||
|
<div class="os-headline-container">
|
||||||
|
<img src="/static/images/logo/zballoon.png" class="os-illustration" alt="Zulip balloon" />
|
||||||
|
<div class="main-headline-text">
|
||||||
|
<span class="tagline os-tagline">
|
||||||
|
Zulip has been released as open source software!
|
||||||
|
</span>
|
||||||
|
<span class="footnote os-footnote">
|
||||||
|
Read the <a href="https://blogs.dropbox.com/tech/2015/09/open-sourcing-zulip-a-dropbox-hack-week-project" target="_blank">announcement</a> or go to <a href="https://www.zulip.org" target="_blank">the Zulip open source project website</a>.
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
{% block portico_content %}
|
{% block portico_content %}
|
||||||
|
|
||||||
{% if password_auth_enabled %}
|
{% if password_auth_enabled %}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ hence the name.
|
|||||||
{% if zulip_com %}
|
{% if zulip_com %}
|
||||||
<a class="brand logo" href="/"><img src="/static/images/logo/zulip-dropbox.png" class="portico-logo" alt="Zulip" content="Zulip" /></a>
|
<a class="brand logo" href="/"><img src="/static/images/logo/zulip-dropbox.png" class="portico-logo" alt="Zulip" content="Zulip" /></a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="brand logo" href="/"><img src="/static/images/logo/zulipwlogo@2x.png" class="portico-logo" alt="Zulip" content="Zulip" /></a>
|
<a class="brand logo" href="/"><img src="/static/images/logo/zulipcornerlogo@2x.png" class="portico-simple-logo" alt="Zulip" content="Zulip" /></a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -41,6 +41,10 @@ hence the name.
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="app portico-page">
|
<div class="app portico-page">
|
||||||
|
<div class="portico-os-announcement">
|
||||||
|
{% block os_announcement %}
|
||||||
|
{% endblock %}
|
||||||
|
</div>
|
||||||
<div class="app-main portico-page-container{% block hello_page_container %}{% endblock %}">
|
<div class="app-main portico-page-container{% block hello_page_container %}{% endblock %}">
|
||||||
{% block portico_content %}
|
{% block portico_content %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
Reference in New Issue
Block a user