Skip to content

Instantly share code, notes, and snippets.

@prologic
Created June 4, 2015 13:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save prologic/7df15bb03d96fadb4873 to your computer and use it in GitHub Desktop.
Save prologic/7df15bb03d96fadb4873 to your computer and use it in GitHub Desktop.
circuits AddressBookMVC Demo with AngularJS
#!/usr/bin/env python
from os import environ, path
from json import dumps, loads
from circuits.web import Server, JSONController, Static
class AddressAPI(JSONController):
channel = "/addresses"
def _load(self):
return (
loads(open("addresses.json", "r").read())
if path.exists("addresses.json")
else []
)
def _save(self, data):
with open("addresses.json", "w") as f:
f.write(dumps(data))
def add(self, *args, **kwargs):
data = self._load()
data.append(kwargs) # Just add the entire form :)
self._save(data)
return {"success": True}
def delete(self, *args, **kwargs):
data = self._load()
for i, entry in enumerate(data):
if entry["id"] == kwargs["id"]:
del data[i]
break
self._save(data)
return {"success": True}
def list(self, *args, **kwargs):
return self._load()
def search(self, *args, **kwargs):
data = self._load()
for i, entry in enumerate(data):
if entry["id"] == kwargs["id"]:
return {"success": True, "contact": entry}
return {"success": False}
app = Server(("0.0.0.0", int(environ.get("PORT", 3000))))
AddressAPI().register(app)
Static(docroot="app").register(app)
app.run()
@prologic
Copy link
Author

prologic commented Jun 4, 2015

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment