README.md 6.31 KB
Newer Older
Tyler Hallada's avatar
Tyler Hallada committed
1
2
#What's Open#

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

##Contributing##

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

12
13
14
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
15
16
17
18
19
20
21

If you need help at all please contact me (Tyler). I want people to
contribute, so if you are struggling, or just want to learn, then I am willing
to help.

###Set Up###

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

Tyler Hallada's avatar
Tyler Hallada committed
24
25
26
* [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
27
28
* [virtualenv](http://www.virtualenv.org/en/latest/index.html#installation) 
  (to install you will need either 
29
  [pip](http://www.pip-installer.org/en/latest/installing.html)
Tyler Hallada's avatar
Tyler Hallada committed
30

31
32
33
34
35
36
37
<!--This section is redundant as git.gmu.edu is no longer operational -->
<!--You don't need to do anything with [git.gmu.edu](https://git.gmu.edu/) to -->
<!--preform a `git clone`, but you should log in if you plan on actually modifying -->
<!--code. Logging into git.gmu.edu with your George Mason credentials will create -->
<!--an account. Ask a SRCT member to add you to the SRCT group on the site and you -->
<!--will be added to the list of people allowed to `git push` to the repository at -->
<!--git.gmu.edu. -->
38

39
40
41
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
42
```bash
43
git clone https://github.com/thallada/whats-open.git
Tyler Hallada's avatar
Tyler Hallada committed
44
45
46
47
48
cd whats-open/
virtualenv venv --distribute
source venv/bin/activate
pip install -r requirements.txt
python manage.py syncdb
49
python manage.py migrate website
Tyler Hallada's avatar
Tyler Hallada committed
50
51
```

52
53
54
55
56
57
<!--This section is redundant as git.gmu.edu is no longer operational -->
<!--If git.gmu.edu is not loading correctly the alternative url is: -->
<!--https://github.com/thallada/whats-open.git-->
Note, I will have to add you as a collaborator to the github repo for you to be 
able to push code. Please email me, Facebook message, or Humbug message me so I 
can add you.
58

59
###Running the Site Locally###
Tyler Hallada's avatar
Tyler Hallada committed
60

Tyler Hallada's avatar
Tyler Hallada committed
61
62
63
Now that everything is set-up you can run the server on your computer.

```bash
64
python manage.py runserver
Tyler Hallada's avatar
Tyler Hallada committed
65
66
```

67
Go to http://127.0.0.1:8000/ in your browser and you should see the website. 
Tyler Hallada's avatar
Tyler Hallada committed
68
Though, there won't be any restaurants showing. You will need to add them to 
69
70
71
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
72
73
74
75
76
77
78
79
80
81

###Modifying and Deploying Code###

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.

82
83
84
85
86
87
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
useful as well. But if you're Google-fu is sharp, that should suffice.

88
89
90
91
92
93
94
95
<!--This section is incorrect as git.gmu.edu is no longer operational -->
<!--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 
code to the git repository. Note, I will have to add you to my github repo in 
order for you to be allowed to push code to the repo. Please email, Facebook 
message, Humbug message me so I can add you.
Tyler Hallada's avatar
Tyler Hallada committed
96
97
98
99
100
101
102

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
103

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

Tyler Hallada's avatar
Tyler Hallada committed
106
107
108
109
110
111
112
* [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)

113
114
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
115

116
117
118
119
120
121
<!--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.-->
Tyler Hallada's avatar
Tyler Hallada committed
122
###To Do###
Tyler Hallada's avatar
Tyler Hallada committed
123

Tyler Hallada's avatar
Tyler Hallada committed
124
125
126
* Get all restaurants displaying correct open times on the page. AKA. make
  extensive tests.
* Sort by location view
Tyler Hallada's avatar
Tyler Hallada committed
127
* Get a decent UI (make sure everything is pretty and usable)
Tyler Hallada's avatar
Tyler Hallada committed
128
129
130
* Add times until opening/closing for restaurants that are close, and exact
  times for those that aren't.
* Add yellow close-to-closing condition.
Tyler Hallada's avatar
Tyler Hallada committed
131
132
133
134
135
136
137
138
139
140
141
142
143
144
* 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
  fo[jquery-cookie](https://github.com/carhartl/jquery-cookie) would be useful
  for this.
* Create a more user-friendly way of creating restaurants and updating
  schedules on the admin site. This could be done by modifying the admin site
  or creating our own Django forms and doing it outside the admin site.