README.md 4.99 KB
Newer Older
Renfred Harper's avatar
Renfred Harper committed
1
2
What's Open
===
Tyler Hallada's avatar
Tyler Hallada committed
3

Tyler Hallada's avatar
Tyler Hallada committed
4
5
Simple Django site displaying which dining locations are currently open on 
George Mason University's campus.
Tyler Hallada's avatar
Tyler Hallada committed
6

Renfred Harper's avatar
Renfred Harper committed
7
8
Contributing
---
Tyler Hallada's avatar
Tyler Hallada committed
9

10
What's Open is still in its very early stages and needs all the help it can
Tyler Hallada's avatar
Tyler Hallada committed
11
12
13
get. Even if you don't feel like you can be helpful with the heavily technical
aspects, we definitely need designers and technical writers.

14
15
16
There are many things that can be done with this project (see the "To Do" 
section), but sometimes it's the small things that count, so don't be afraid of 
contributing just for a spelling mistake.
Tyler Hallada's avatar
Tyler Hallada committed
17

18
19
If you need help at all please contact any SRCT member. We want people to
contribute, so if you are struggling, or just want to learn, then we are willing
Tyler Hallada's avatar
Tyler Hallada committed
20
21
to help.

Renfred Harper's avatar
Renfred Harper committed
22
23
Set Up
---
Tyler Hallada's avatar
Tyler Hallada committed
24

Tyler Hallada's avatar
Tyler Hallada committed
25
To get started, you'll need the following installed:
Tyler Hallada's avatar
Tyler Hallada committed
26

Tyler Hallada's avatar
Tyler Hallada committed
27
28
29
* [Python 2.7](http://www.python.org/download/)
* [Django 1.4 or later](https://www.djangoproject.com/download/)
* [Git](http://git-scm.com/book/en/Getting-Started-Installing-Git)
Tyler Hallada's avatar
Tyler Hallada committed
30
31
* [virtualenv](http://www.virtualenv.org/en/latest/index.html#installation) 
  (to install you will need either 
32
33
  [pip](http://www.pip-installer.org/en/latest/installing.html) or
  [easy_install](http://pythonhosted.org/distribute/easy_install.html))
Tyler Hallada's avatar
Tyler Hallada committed
34

35
36
37
Then type the following commands in your terminal (if you're on Windows, 
[Cygwin](http://www.cygwin.com/) is recommended).

Tyler Hallada's avatar
Tyler Hallada committed
38
```bash
39
git clone http://git.gmu.edu/srct/whats-open.git
Tyler Hallada's avatar
Tyler Hallada committed
40
41
42
43
44
cd whats-open/
virtualenv venv --distribute
source venv/bin/activate
pip install -r requirements.txt
python manage.py syncdb
45
python manage.py migrate website
Tyler Hallada's avatar
Tyler Hallada committed
46
47
```

Renfred Harper's avatar
Renfred Harper committed
48
49
Running the Site Locally
---
Tyler Hallada's avatar
Tyler Hallada committed
50

Tyler Hallada's avatar
Tyler Hallada committed
51
52
53
Now that everything is set-up you can run the server on your computer.

```bash
54
python manage.py runserver
Tyler Hallada's avatar
Tyler Hallada committed
55
56
```

57
Go to http://127.0.0.1:8000/ in your browser and you should see the website. 
Tyler Hallada's avatar
Tyler Hallada committed
58
Though, there won't be any restaurants showing. You will need to add them to 
59
60
61
the database. Go to http://127.0.0.1:8000/admin/ to add new Restaurant and Schedule 
objects to your database (the login would be the same username and password you 
entered when creating a superuser during the `python manage.py syncdb` command).
Tyler Hallada's avatar
Tyler Hallada committed
62

Renfred Harper's avatar
Renfred Harper committed
63
64
Modifying and Deploying Code
---
Tyler Hallada's avatar
Tyler Hallada committed
65
66
67
68
69
70
71
72

With the means of testing the website, you can really start contributing.

If you're new to Django and don't know where to start, I highly recommend
giving the [tutorial](https://docs.djangoproject.com/en/dev/intro/tutorial01/)
a try. However, it leaves out a lot of important things, so remember, Google is
your friend. If you can't figure it out there, ask me.

73
74
75
76
For the JavaScript, I will be using jQuery whenever possible because I prefer
it to straight up JavaScript. jQuery has [great
documentation](http://docs.jquery.com/) and I've found [Mozilla's documentation
on JavaScript](https://developer.mozilla.org/en-US/docs/JavaScript) to be
77
useful as well. But if your Google-fu is sharp, that should suffice.
78

79
80
81
82
<!--If you followed the steps in "Set Up" above, once you actually make changes it-->
<!--should be easy to push them to the git repository.-->

Once you actually make your changes and have fully tested them you can push the 
83
84
code to the git repository. The best way to do this is to fork the project, make
the changes in your local repository, push to gitlab, and submit a pull request.
Tyler Hallada's avatar
Tyler Hallada committed
85
86
87
88
89
90
91

There are many ways to use git, and this is one example:

```
git commit -a
git push origin master
```
Tyler Hallada's avatar
Tyler Hallada committed
92

Tyler Hallada's avatar
Tyler Hallada committed
93
Some more helpful links on how to use Git:
Tyler Hallada's avatar
Tyler Hallada committed
94

Tyler Hallada's avatar
Tyler Hallada committed
95
96
97
98
99
100
101
* [Git Reference](http://gitref.org/)
* [OpenHatch's Training Mission](https://openhatch.org/missions/git)
* [Visual Git
  Reference](http://marklodato.github.com/visual-git-guide/index-en.html)
* [Git For Ages 4 And
  Up](http://blip.tv/open-source-developers-conference/git-for-ages-4-and-up-4460524)

102
103
We currently don't have What's Open running on a dedicated server yet, but when
we do I will have instructions on how to deploy the code here.
Tyler Hallada's avatar
Tyler Hallada committed
104

105
106
107
108
109
110
<!--No longer relevant as there is no postgres database set up at the moment-->
<!--###Running Site Locally with Production Database###-->
<!--It is possible to run the site locally using the PostgresSQL database that-->
<!--whatsopen.gmu.edu uses. The way settings.py is configured requires that you set-->
<!--an environmental variable to the database's url before you run the site. Talk -->
<!--to me if you would like to know the url to accomplish this.-->
111

Renfred Harper's avatar
Renfred Harper committed
112
113
To Do
---
Tyler Hallada's avatar
Tyler Hallada committed
114

Tyler Hallada's avatar
Tyler Hallada committed
115
116
117
118
119
* Get all restaurants displaying correct open times on the page. AKA. make
  extensive tests.
* Sort by location view
* Add times until opening/closing for restaurants that are close, and exact
  times for those that aren't.
Tyler Hallada's avatar
Tyler Hallada committed
120
121
122
123
124
125
126
127
128
129
* Make page refresh, or more preferably have the data refresh. For
  example, with AJAX calls.
* Create more useful API calls. Document them.
* Allow switching between campuses. In the database, mark which campus each
  restauraunt is on, include this information in the JSON object returned at
  `ajax/schedule` and store the campus choice in the user's cookies
  so that when they come back the page will already be set to their campus.
  Default would be Fairfax of course.
  [jquery-cookie](https://github.com/carhartl/jquery-cookie) would be useful
  for this.