text:
The Salvation Army Midland Division's communications department recently visited Graham Correctional Center in Hillsboro, Ill., in an effort to learn more about the Army's services offered to prisoners. This is the second post in a two-part series about what they learned from their experience. This post is written by Ashley Kuenstler, Content Specialist for The Salvation Army and Cardinals fan extraordinaire. Part One can be found here.
Nathaniel knew his wife was cheating on him. He had been slamming drink after drink at a local bar when a friend called to tell him there was a man at his house who shouldn't be there.
"We were technically separated, but I still had keys to the house. In my eyes, the only choice I had was to go to that house and take care of the situation," he said. "The devil had me in his grips and I had no idea."
Nathaniel arrived at the house to find neither his wife or a mysterious man. But after listening to her voicemails and confirming his friend's allegations, Nathaniel was filled with a rage that sequestered any kind of normal thought process. He lit a piece of paper on fire, threw it on her bed, and left the house.
"I had no idea that my stepson was asleep inside," Nathaniel said. "He died in that fire, and it's my fault. It was the worst day of my life. I've spent 11 years in prison with that on my mind all day, every day."
He paused for a moment and looked down to his folded hands. My mind could not physically grapple with what Nathaniel must endure to his mind and his spirit on a daily basis. I wanted to say something comforting to ease the pain I saw in his face, but the only thing my body could manage was a single tear that raced down my left cheek. My heart broke for him and it broke for the loss of his stepson. But for Nathaniel, this is what it took for him to change his life.
"Thanks to God, I'm not the same person anymore," he said. "I've been surrounded by good people and I've been introduced to the word of God. I learned how to be a man and I'm blessed to be able to turn this situation into a chance to help others, to the be the kind of man others can look up to."
Major Jack Holloway – The Salvation Army's Correctional Services Secretary – said seeing this kind of transformation is what continually inspires him while working in the Army's prison ministry.
"It's an often forgotten population that I don't want us to forget," Major Holloway said. "I continually meet men who have no sense of value or future and I'm able to tell them, 'Yes, you do have great value and purpose.' And then I get to prove it to them through the word of God."
Major Holloway has spent the last three years travelling to prisons throughout Missouri and Illinois, finding placement for inmates upon their release, helping them find employment, ministering to them, and getting to know them on a personal level.
"I meet with them on a one-on-one basis as often as I can to just talk," Major Holloway said. "We talk about how their day is going, what's weighing on their heart, and how God can help to fix it. They know what they did was wrong, and they realize there is a penalty for that action. They dream of a better life and a chance to start over, to make their lives worth something, and we are there to help them realize that dream."
For Ollie – a former gang member imprisoned for murdering a man and trying to kill a woman – his faith and trust in The Salvation Army and its message was solidified when he realized Major Holloway knew his name.
"One day, I covered up my nametag to see if he would know my name. He knew it without missing a beat," Ollie said. "And then it just hit me: I didn't need the gang life or anything associated with it to be memorable. I just had to be a good and righteous man and lead by example."
For Major Hollway – seeing the transformation firsthand is something that never fails to strike a chord.
"One of my most memorable experiences in the prison ministry was several months ago while I was giving a sermon on Sunday morning," he said. "I was reading scripture and compared the men to clay and God to a potter. I said, 'A potter's clay is often marred and scarred and full of imperfections, but the potter will never throw his clay away. And as I looked out over the men in the congregation, I could just see it hit 20 of them right between the eyes. I saw it in their faces and I could see that transformation take place instantaneously. It struck such a chord with me and it's something I'll never forget."
The Salvation Army offers volunteer opportunities in the prison system for people interested in working with inmates and furthering their transformation. In order to keep in accordance with prison regulations, the approval process can be long and complicated, but definitely rewarding. Volunteers can assist in fatherhood classes, general education, spiritual guidance, and more.
"There are people who volunteer their time and work with us on a regular basis," Ollie said. "I'd never seen a man do anything for free – and they are doing that for me of all people? That changed my heart.
"To so many people, we are scum. We are not worth a second glance, we're not worth anything at all," Nathaniel said. "But The Salvation Army and Major Holloway realize that's not true. God knows that's not true.
"I am forever changed from this experience and have given my life to God. And when He allows me to leave this place, he will have me until it's time for me to come home to Him."
To learn more about The Salvation Army's prison ministry or how you can volunteer, please visit http://www.stlsalvationarmy.org.


text:
WikiClone wiki
django-piston / Documentation
Piston Documentation
- Piston Documentation
- Getting Started
- Resources
- Emitters
- Mapping URLs
- Working with Models
- Configuring Handlers
- Authentication
- Form Validation
- Helpers, utils & @decorators
- Throttling
- Generating Documentation
- Tests
- Receiving data
- Streaming
- Configuration variables
Getting Started
Getting started with Piston is easy. Your API code will look and behave just like any other Django application. It will have an URL mapping and handlers defining resources.
To get started, it is recommended that you place your API code in a separate folder, e.g. 'api'.
Your application layout could look like this:
urls.py settings.py myapp/ __init__.py views.py models.py api/ __init__.py urls.py handlers.py
Then, define a "namespace" where your API will live in your top-level urls.py, like so:
urlpatterns = patterns('',
# all my other url mappings
(r'^api/', include('mysite.api.urls')),
This will include the API's urls.py for anything beginning with 'api/'.
Next up we'll look at how we can create resources and how to map URLs to them.
A "Resource" is an entity mapping some kind of resource in code. This could be a blog post, a forum or even something completely arbitrary.
Let's start out by creating a simple handler in handlers.py:
from piston.handler import BaseHandler
from myapp.models import Blogpost
class BlogpostHandler(BaseHandler):
allowed_methods = ('GET',)
model = Blogpost
def read(self, request, post_slug):
Piston lets you map resource to models, and by doing so, it will do a lot of the heavy lifting for you.
A resource can be just a class, but usually you would want to define at least 1 of 4 methods:
read is called on GET requests, and should never modify data (idempotent.)
create is called on POST, and creates new objects, and should return them (or rc.CREATED.)
update is called on PUT, and should update an existing product and return them (or rc.ALL_OK.)
delete is called on DELETE, and should delete an existing object. Should not return anything, just rc.DELETED.
In addition to these, you may define any other methods you want. You can use these by including their names in the
fields directive, and by doing so, the function will be called with a single argument: The instance of the
model. It can then return anything, and the return value will be used as the value for that key.
NB: These "resource methods" should be decorated with the
@classmethod decorator, as they will not always receive an instance of itself. For example, if you have a UserHandler defined, and you return a User from another handler, you will not receive an instance of that handler, but rather the UserHandler.
Since a single handler can be responsible for both single- and multiple-object data sets, you can differentiate between them in the read() method like so:
from piston.handler import BaseHandler
from myapp.models import Blogpost
class BlogpostHandler(BaseHandler):
allowed_methods = ('GET',)
model = Blogpost
def read(self, request, blogpost_id=None):
Returns a single post if `blogpost_id` is given,
otherwise a subset.
base = Blogpost.objects
if blogpost_id:
return base.get(pk=blogpost_id)
return base.all() # Or base.filter(...)
Emitters are what spews out the data, and are the things responsible for speaking YAML, JSON, XML, Pickle and Django. They currently reside in
emitters.py as
PickleEmitter and
Writing your own emitters is easy, all you have to do is create a class that subclasses
Emitter and has a
render method. The render method will receive 1 argument, 'request', which is a copy of the request object, which is useful if you need to look at request.GET (like defining callbacks, like the JSON emitter does.)
To get the data to serialize/render, you can call
self.construct() which always returns a dictionary. From there, you can do whatever you want with the data and return it (as a unicode string.)
NB: New in 23ebc37c78e8
: Emitters can now be registered with the
Emitter.register function, and can be removed (in case you want to remove a built-in emitter) via the
Emitter.unregister function.
The built-in emitters are registered like so:
class JSONEmitter(Emitter):
Emitter.register('json', JSONEmitter, 'application/json; charset=utf-8')
If you write your own emitters, you can import Emitter and call 'register' on it to put your emitter into action. You can also overwrite built-in, or existing emitters, by using the same name (the first argument.)
This makes it very easy to add support for extended formats, like protocol buffers or CSV.
Emitters are accessed via the ?format GET argument, e.g. '/api/blogposts/?format=yaml', but since 23ebc37c78e8 , it is now possible to access them via a special keyword argument in your URL mapping. This keyword is called 'emitter_format' (to not clash with your own 'format' keyword), and can be used like so:
urlpatterns = patterns('',
url(r'^blogposts(\.(?P<emitter_format>.+))$', ...),
Now a request for /blogposts.json will use the JSON emitter, etc.
Additionally, you may specify the format in your URL mapping, via the keyword arguments shortcut:
urlpatterns = patterns('',
url(r'^blogposts$', resource_here, { 'emitter_format': 'json' }),
Mapping URLs
URL mappings in Piston work just like they do in Django. Lets map our BlogpostHandler:
In urls.py:
from django.conf.urls.defaults import *
from piston.resource import Resource
from mysite.myapp.api.handlers import BlogpostHandler
blogpost_handler = Resource(BlogpostHandler)
urlpatterns = patterns('',
url(r'^blogpost/(?P<post_slug>[^/]+)/', blogpost_handler),
url(r'^blogposts/', blogpost_handler),
Now any request coming in to /api/blogpost/some-slug-here/ or /api/blogposts/ will map to BlogpostHandler, with the two different data sets being differentiated in the handler itself. Note that a single handler can be used both for single-object and multiple-object resources.
Anonymous Resources
Resources can also be "anonymous". What does this mean? This is a special type of resource you can instantiate, and it will be used for requests that aren't authorized (via OAuth, Basic or any authentication handler.)
For example, if we look at our BlogpostHandler from earlier, it might be interesting to offer anonymous access to posts, although we don't want to allow anonymous users to create/update/delete posts. Also, we don't want to expose all the fields authorized users see.
This can be done by creating another handler, inheriting AnonymousBaseHandler (instead of BaseHandler.) This also takes care of the heavy lifting for you.
Like so:
from piston.handler import AnonymousBaseHandler, BaseHandler
class AnonymousBlogpostHandler(AnonymousBaseHandler):
model = Blogpost
fields = ('title', 'content')
class BlogpostHandler(BaseHandler):
anonymous = AnonymousBlogpostHandler
# same stuff as before
You don't need a "proxy handler" subclassing BaseHandler to use anonymous handlers, you can just point directly at an anonymous resource as well.
Working with Models
Piston allows you to tie to a model, but does not require it. The benefit you get from doing so, will become obvious when you work with it:
- If you don't override read/create/update/delete it provides sensible defaults (if the method is allowed by
allowed_methodsof course.)
- You don't have to specify
exclude(but you still can, they aren't mutually exclusive!)
- By using a model in a handler, Piston will remember your
excludedirectives and use them in other handlers who return objects of that type (unless overridden.)
As we've seen earlier, tying to a model is as simple as setting the
model class variable on a handler.
Also see: Why does Piston use fields from previous handlers
Configuring Handlers
Handlers can be configured with 4 different variables.
The model to tie to. See Working with Models.
A list of fields to include or exclude. Accepts nested listing, and follows foreign keys and manytomany fields. Also accepts compiled regular expressions. E.g.:
import re
class FooHandler(BaseHandler):
fields = ('title', 'content', ('author', ('username', 'first_name')))
exclude = ('id', re.compile('^private_'))
If User can access posts via a Many2many/ForeignKey fields then:
class UserHandler(BaseHandler): model = User fields = ('name', ('posts', ('title', 'date')))
will show the title and date from a users posts.
To use the default handler for a nested resource specify an empty list of fields:
class PostHandler(BaseHandler): model = Post exclude = ('date',) class UserHandler(BaseHandler): model = User fields = ('name', ('posts', ()))
This UserHandler shows all fields for all posts for a user excluding the date.
fields, nor
exclude are required, and either one can be used by itself.
A pointer to an alternate anonymous resource. See Anonymous Resources
Piston supports pluggable authentication through a simple interface. Resources can be initialized to use any authentication handler that implements the interface. The default is to use the NoAuthentication handler. Adding to the Blogpost example, you could require Basic Authentication as follows:
from django.conf.urls.defaults import *
from piston.resource import Resource
from piston.authentication import HttpBasicAuthentication
from mysite.myapp.api.handlers import BlogpostHandler
auth = HttpBasicAuthentication(realm="Django Piston Example")
blogpost_handler = Resource(BlogpostHandler, authentication=auth)
urlpatterns = patterns('',
url(r'^blogpost/(?P<post_slug>[^/]+)/', blogpost_handler),
url(r'^blogposts/', blogpost_handler),
Piston comes with 2 built-in authentication mechanisms, namely
piston.authentication.HttpBasicAuthentication and
piston.authentication.OAuthAuthentication. The Basic auth handler is very simple, and you should use this for reference if you want to roll your own.
Note: that using
piston.authentication.HttpBasicAuthentication with apache and mod_wsgi requires you to add the
WSGIPassAuthorization On directive to the server or vhost config, otherwise django-piston cannot read the authentication data from
HTTP_AUTHORIZATION in
request.META. See: http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIPassAuthorization.
An authentication handler is a class, which must have 2 methods:
is_authenticated and
is_authenticated will receive exactly 1 argument, a copy of the
request object Django receives. This object will hold all the information you will need to authenticate a user, e.g.
Upon successful authentication, this function must set
request.user to the correct
django.contrib.auth.models.User object. This allows for subsequent handlers to identify who is logged in.
It must return either True or False, indicating whether the user was logged in.
For cases where authentication fails, is where
challenge comes in.
challenge will receive no arguments, and must return a
HttpResponse containing the proper challenge instructions. For Basic auth, it will return an empty response, with the header
WWW-Authenticate set, and status code 401. This will tell the receiving end that they need to supply us with authentication.
For anonymous handlers, there is a special class,
NoAuthentication in
piston.authentication that always returns True for
OAuth is the preferred means of authorization, because it distinguishes between "consumers", i.e. the approved application on your end which is using the API. Piston knows and respects this, and makes good use of it, for example when you use the @throttle decorator, it will limit on a per-consumer basis, keeping services operational even if one service has been throttled.
Form Validation
Django has an excellent built-in form validation facility, and Piston can make good use of this.
You can decorate your actions with a @validate decorator, which receives 1 required argument, and one optional. The first argument is the form it will use for validation, and the second argument is the place to look for data. For the
create action, this is 'POST' (default), and for
update, it's 'PUT'.
For example:
from django import forms
from piston.utils import validate
from mysite.myapp.models import Blogpost
class BlogpostForm(forms.ModelForm):
class Meta:
model = Blogpost
def create(...
Or with a normal form:
from django import forms
from piston.utils import validate
class DataForm(forms.Form):
data = forms.CharField(max_length=128)
is_private = forms.BooleanField(default=True, required=False)
@validate(DataForm, 'PUT')
def update(....
If data sent to an action that is decorated with a @validate action does not pass the forms
is_clean method, Piston will return an error to the client, and will not execute the action. If the validation passes, then the form object is attached to the request object. Thus you can get to the form (and thus the cleaned_data) via
request.form as in this example:
@validate(EchoForm, 'GET')
def read(self, request):
return {'msg': request.form.cleaned_data['msg']}
Helpers, utils & @decorators
For your convenience, there's a set of helpers and utilities you can use. One of those is
rc from
piston.utils. It contains a set of standard returns that you can return from your actions to indicate a certain situation to the client.
Since 26293e3884f4 , these return a fresh instance of HttpResponse, so you can use something like this:
resp = rc.CREATED
resp.write("Everything went fine!")
return resp
resp = rc.CREATED
resp.write("This will not have the previous 'fine' text in it.")
return resp
This change is backwards compatible, as it overrides
__getattr__ to return a new instance rather than a singleton.
|Everything went well.
|201 Created
|Object was created.
|204 (Empty body, as per RFC2616)
|Object was deleted.
|400 Bad Request
|Request was malformed/not understood.
|401 Forbidden
|Permission denied.
|404 Not Found
|Resource not found.
|409 Conflict/Duplicate
|Object already exists.
|410 Gone
|Object does not exist.
|501 Not Implemented
|Action not available.
|503 Throttled
|Request was throttled.
Sometimes you may not want people to call a certain action many times in a short period of time. Piston allows you to throttle requests on a global basis, effectively denying them access until the throttle has expired.
Piston will respect OAuth (if used) and limit on a per-consumer basis. If OAuth is not used, Piston will resort to the logged in user, and for anonymous requests, it will fall back to the clients IP address.
Throttling can be enabled via the special @throttle decorator. It takes 2 required arguments, and an optional third argument.
The first argument is the number of requests allowed to be made within a certain amount of seconds. The second argument is the number of seconds. The third argument is optional, and should be a string, which will be appended to the cache key, effectively allowing you to do special throttling for a single action, or group several actions together. If omitted, the throttle will be global.
For example:
@throttle(5, 10*60)
def create(...
This will throttle if the client calls 'create' more than 5 times within 10 minutes.
You can do grouping like so:
@throttle(5, 10*60, 'user_writes')
def create(...
@throttle(5, 10*60, 'user_writes')
def update(...
Generating Documentation
Chances are, if you intend to publicly expose your API, that you want to supply documentation. Writing documentation is a tedious process, and even more so if you change things in your code.
Luckily, Piston can do a lot of the heavy lifting for you here as well.
piston.doc there is a set of methods, allowing you to easily generate documentation using standard Django views and templates.
The function
generate_doc returns a
HandlerDocumentation instance, which has a few methods:
- .model (get_model) returns the name of the handler,
- .doc (get_doc) returns the docstring for the given handler.
- .get_methods returns a list of methods available. The optional keyword argument
include_defaults(False by default) will also include the fallback methods, if you haven't overloaded them. This may be useful if you want to use these, and still include them in your documentation.
get_methods yields a set of
HandlerMethod's which are more interesting:
- .signature (get_signature) will return the methods signature, stripping the first two arguments, which are always 'self' and 'request'. The client will not specify these two, so they are not interesting. Takes an optional argument,
parse_optional(default True), which turns keyword arguments defaulting to None into "<optional>".
- .doc (get_doc) returns the docstring for an action, so you should keep your handler/action specific documentation there.
- .iter_args() will yield a 2-tuple with the argument name, and the default argument (or None.) If the default argument is None, the default argument will be 'None' (string). This will allow you to distinguish whether there is a default argument (even if it's None), or if it's empty.
For example:
from piston.handler import BaseHandler
from piston.doc import generate_doc
class BlogpostHandler(BaseHandler):
model = Blogpost
def read(self, request, post_slug=None):
Reads all blogposts, or a specific blogpost if
`post_slug` is supplied.
def resource_uri():
return ('api_blogpost_handler', ['id'])
doc = generate_doc(BlogpostHandler)
print doc.name # -> 'BlogpostHandler'
print doc.model # -> <class 'Blogpost'>
print doc.resource_uri_template # -> '/api/post/{id}'
methods = doc.get_methods()
for method in methods:
print method.name # -> 'read'
print method.signature # -> 'read(post_slug=<optional>)'
sig = ''
for argn, argdef in method.iter_args():
sig += argn
if argdef:
sig += "=%s" % argdef
sig += ', '
sig = sig.rstrip(",")
print sig # -> 'read(repo_slug=None)'
Resource URIs
Each resource can have an URI. They can be accessed in the Handler via his .resource_uri() method.
Also read FAQ: What is a URI Template.
zerok wrote an initial testsuite for Piston, located in tests/. It uses zc.buildout to run the tests, and isolates an environment with Django, etc. The suite comes with two testrunners: tests/bin/test-1.0 and tests/bin/test-1.1 which run the tests against the respective version of Django and are made available after you're finished with the first two steps as described below.
Running the tests is very easy:
$ python bootstrap.py Creating directory './bin'. [snip] Generated script './bin/buildout'. $ ./bin/buildout -v Develop: 'tests/..' Getting distribution for 'djangorecipe'. Got djangorecipe 0.17.3. Getting distribution for 'zc.recipe.egg'. Got zc.recipe.egg 1.2.2. Uninstalling django-1.0. Installing django-1.0. django: Downloading Django from: http://www.djangoproject.com/download/1.0.2/tarball/ Generated script './bin/django-1.0'. Generated script './bin/test-1.0'. $ ./bin/test-1.0 Creating test database... [snip] ... ---------------------------------------------------------------------- Ran 6 tests in 0.283s OK Destroying test database...
When running buildout make sure to pass it the -v option. There is currently a small problem with djangorecipe, which is used to create the testscripts etc., that causes the script to hang unless you use the "-v" option.
If you'd like to contribute, more tests are always welcome. There is coverage for many of the basic operations, but not 100%.
Receiving data
Piston, being layered on HTTP, works well with post-data (form data), but also works well with more expressive formats such as JSON and YAML.
This allows you to receive structured data easily, rather than just key-value pairs. Piston will attempt to deserialize incoming non-form data via a set of "loaders", depending on the Content-type specified by the client.
For example, if we send JSON to a handler giving the content-type "application/json", Piston will do 2 things:
- Place the deserialized data in
request.data, and
- Set
application/json. For form data, this will always be None.
You can use it like so (from testapp/handlers.py):
def create(self, request):
if request.content_type:
data = request.data
em = self.model(title=data['title'], content=data['content'])
for comment in data['comments']:
Comment(parent=em, content=comment['content']).save()
return rc.CREATED
super(ExpressiveTestModel, self).create(request)
If we send the following JSON structure into that, it will handle it appropriately:
{"content": "test", "comments": [{"content": "test1"}, {"content": "test2"}], "title": "test"}
It should be noted that sending anything that deserializes to this handler will also work, so you can send equally formatted YAML or XML, and the handler won't care.
If your handler doesn't accept post data (maybe it requires more verbose data), there's an easy way to require a specific type of data, via the
utils.require_mime decorator.
This decorator takes a list of types it requires, and you can use the shorthand too, like 'yaml', 'json', etc.
There's also a shortcut for requiring 'json', 'yaml', 'xml' and 'pickle' all in one, called 'require_extended'.
class SomeHandler(BaseHandler):
@require_mime('json', 'yaml')
def create(...
def update(...
Since b0a1571ff61a , Piston supports streaming its output to the client. This is disabled per default, for one reason:
- Django's support for streaming breaks with
To get around this, Piston ships with two "proxy middleware classes" that won't execute during a streaming scenario, and hence won't look at (and exhaust) the data before sending it to the client. Without these, Django will look at the contents (to figure out E-Tags and Content-Length), and by doing so, the next peek it takes, will result in nothing.
piston.middleware there are two classes you can effectively replace these with.
In settings.py:
# ...
# ...
Remove any mentions of
ConditionalGetMiddleware and
CommonMiddleware, or it won't work. If you have any other middleware that looks at the content prior to streaming, you can wrap those in the conditional middleware proxy too:
from piston.middleware import compat_middleware_factory
class MyMiddleware(...):
MyMiddlewareCompatProxy = compat_middleware_factory(MyMiddleware)
And then install
MyMiddlewareCompatProxy instead.
Configuration variables
Piston is configurable in a couple of ways, which allows more granular control of some areas without editing the code.
|If (when) Piston crashes, it will email the administrators a backtrace (like the Django one you see during DEBUG = True)
|Upon crashing, will display a small backtrace to the client, including the method signature expected.
|When enabled, Piston will instruct Django to stream the output to the client, but please read streaming before enabling it.

subset: commoncrawl


text:
Serviços Personalizados
Links relacionados
- Citado por Google
- Similares em Google
SAMJ: South African Medical Journal
versão On-line ISSN 2078-5135
versão impressa ISSN 0256-9574
SAMJ, S. Afr. med. j. vol.101 no.1 Cape Town Jan. 2011
Vaginal deliveries - is there a need for documented consent?
A Dhai; J Gardner; Y Guidozzi; G Howarth; M Vorster
A pregnant woman nearing delivery, with an uncomplicated pregnancy and no immediate indication for caesarean section (CS), can either deliver vaginally or by CS. Historically CS has been viewed as more dangerous than vaginal delivery. However, CSs are far safer today and the complications of unmonitored labour are increasing, especially in the public sector.
Delivery should be discussed during the antenatal period. The decision to have a CS is usually followed by signing an authorisation form - incorrectly referred to as the consent form. Women who decide to deliver vaginally are not asked to sign a similar form, possibly because consent is procedure specific and a vaginal delivery is not seen as a procedure. However, natural birth, a normal physiological process, and modern medical vaginal childbirth are not synonymous and each intervention in the latter requires consent, albeit often tacit.
The merits of antenatal care and monitored childbirth are obvious. However, it is not clear to most people that when a woman seeks medical attention and is admitted into an antenatal programme for her pregnancy and subsequent childbirth (including a 'normal' vaginal delivery), there is a transition to medicalised care. Hence the ethical and legal tenets must apply to management in this context. Therefore, does the modern medical vaginal birth process itself require an authorisation form? This is because the process includes medical interventions and unique risks, and there is a clear alternative. When well informed the woman has probably passed the threshold for consent from an ethical point of view, but is there an additional legal threshold that must be crossed, given the increasing tendency to litigation?
While presenting current scientific opinions on the risks and benefits associated with vaginal and abdominal delivery, we do not argue for either mode of delivery. We recognise women's right to choice in respect of mode of delivery. We argue that even when a normal vaginal delivery is anticipated, the practitioner is obliged to discuss the alternative of CS with the woman. We argue that the context and environment of the delivery ward are important components of the communication. These are informed by the doctrine of informed consent, which we examine from the legal perspective. We aim to stimulate discussion and debate on the current and future status of vaginal deliveries.
Vaginal delivery or caesarean section - the facts
Despite being more costly and associated with maternal and neonatal complications, morbidity and mortality more often than vaginal delivery,1-4 CS is an increasingly common procedure in the public and private sectors in South Africa.5
South Africa's CS rate is much higher than the ideal rate of 10 -15% in low-risk obstetric populations recommended by the World Health Organization in 1985.6 According to the Health Systems Trust the public sector rate was about 17% in 2005, and rates of about 30% were reported by regional and tertiary public hospitals in Durban.5 High CS rates have been reported in the private health sector in South Africa,7 with a rate of 60.4% in Durban.5 Comparing CS deliveries in the private sector with teaching and public hospitals in Gauteng, a study between 1998 and 2000 found, on average, a CS rate of 57% (11 572 CSs in 20 151 deliveries) at six private hospitals compared with 28% and 19% in one teaching hospital and 20 public hospitals, respectively.8
Reasons for high CS rates
Several factors contribute to the high CS rates. Beyond HIV status, planned CS at maternal request contributes significantly.5 CSs requested by women are commonly done electively. Reasons for requesting CS include fears of labour and delivery (tocophobia), convenience, control, and the preservation of pelvic floor function. Advantages of elective CS include controlling the specific date and time of childbirth, maximising maternity leave, and anecdotal evidence that women think a CS is safer for the mother and/or the baby, which is not necessarily true.
Surveys indicate that fear of litigation and the desire for safer deliveries are the primary reasons for conducting non-essential CSs.9,10 The threat of malpractice is real in health care practice. In general, undertaking any procedure without evidence-based indications and informed consent from the patient constitutes an assault on the patient, for which doctors can be and have been held liable. It is therefore not surprising that some doctors believe that performing a CS reduces the risk of being sued, even if a vaginal birth may be the optimal care.
Despite many factors contributing to high CS rates, internationally there is insufficient evidence for a full evaluation of the benefits and risks of non-medically indicated CS compared with planned vaginal delivery. Expert opinion is that until substantive evidence is available, the mode of delivery should be based on sound ethical principles.11 We believe that the mode of delivery should also be based on sound legal principles, which include discussing the option of CS with a woman in whom a normal vaginal delivery is anticipated. Distinct qualitative differences in morbidity between the two modes of delivery must be brought to the patient's attention. Morbidity and mortality are three times higher when CSs are unplanned and performed as emergency procedures.12
Ethical issues
Worldwide, the medical profession supports a woman's right to make health care decisions for herself and her unborn child. Doctors are obliged to disclose the risks and benefits of any recommended treatment, test or procedure to their patients, who can then make an informed decision and exercise their right to choose between or refuse available options. When a planned vaginal delivery is decided on, the significant questions are how the doctor should counsel patients who will deliver vaginally, and how much information they should receive. Should the woman receive information in respect of the labour ward, e.g. that due to human resource constraints a midwife may not be available at her bedside throughout the labour? Will tacit consent suffice today, or is there now a need for documented and authorised consent?
Respect for patient autonomy is an ethical and legal imperative and obliges doctors to disclose appropriate information to patients so that they can make an informed decision about their health care. Competent patients may accept or refuse any recommended treatment, and the doctor's role, grounded in beneficence-based obligations, is to identify medically reasonable alternatives, i.e. those reliably expected to result in a greater balance of clinical good over clinical harm for the patient. This has been seen as the first step of the informed consent process.11 In subsequent steps the patient reaches a decision about whether to accept or to reject one of these medically reasonable alternatives.13 We propose that more than medical information is necessary. Information should include the context of the labour ward environment and whether or not the facilities are able to provide continuous care and monitoring by qualified nursing staff. It follows, therefore, that non-medical risks with the potential for medical complications must be included in the information. We stress, however, that counselling should be non-directive.
The patient's role in the informed consent process involves the exercise of a negative right, i.e. the right not to be interfered with in her making of decisions and her own behaviour.13 However, these rights must be considered together with positive rights, which involve claims on the resources of others to achieve one's intentions and goals. Because positive rights involve sacrifice by others, they come with limits; the issue in such situations concerns the scope of such limits. Respect for patient autonomy can justifiably be limited by a doctor's beneficence-based obligations.14-16 We believe that the doctor's beneficence-based obligations when informing the woman of the benefits and risks of a planned vaginal delivery include information on labour ward resources.
Informed consent for vaginal deliveries - a summary of South African law
The doctrine of informed consent and whether a doctor's failure to inform the patient amounts to negligence or assault is legally controversial.17 English and Australian legal systems favour consent to medical treatment, viewing it as related to the doctor's duty of care to a patient and classifying its breach as negligence. However, South African law supports the stance that lack of consent amounts to assault (violation of physical integrity) and not medical negligence. Our common law recognises that an unlawful infliction of bodily harm amounts to the offence of injuria.18,19 As early as 1908 this included an offence to dignity, privacy, reputation and ultimately bodily integrity, which confirmed the importance of a person's autonomy and right to self-determination in law. The Bill of Rights in the Constitution of South Africa finally cast this in stone.20
The Constitution provides that everyone has the right to dignity and bodily integrity. The realisation of these rights is brought about by the National Health Act (NHA),21 which provides for these rights to be protected. It states that the patient has a right to have 'full knowledge' through the health provider informing the patient, in a language she understands, of her health status (except where it is not in the patient's best interests to do so) and the range of diagnostic procedures and treatment options available, including the benefits, risks, costs and consequences associated with them. By bringing in costs, the Act recognises that non-medical information is part of disclosure. This could include the context of the delivery room environment. The South African courts have determined how much information to give a patient about the risks. Patients must be told about all 'material risks' related to a procedure or treatment, i.e. risks to which a reasonable person in the patient's position would attach importance, and that a health practitioner would reasonably be aware would be considered significant by a patient warned about them.22,23 This could apply to the environment in the labour ward. Patients must also be informed that they may refuse health services and the implications of such refusal. However, with the advent of the NHA, the Consumer Protection Act No. 68 of 2008, the Patient's Rights Charter24 and the HPCSA Guidelines on Informed Consent,23 stricter criteria are currently employed and we are seeing a shift from the reasonable person to individual patient requirements.
The Consumer Protection Act 68 of 2008, to be promulgated, affirms in s54 (1) (b) that a consumer has the right to the performance of services in a manner and quality that persons are generally entitled to expect, and taking into account any specific conditions agreed between the supplier and consumer before or during the performance of the services. If a doctor does not provide management in a manner and of the quality that a patient would generally be entitled to expect, the patient may therefore require that the doctor remedy the defect or refund that portion of the price paid, depending on the extent of the failure. The court may also declare the provision or notice or the whole agreement to have no force or effect (s52).
A patient therefore has a right to participate in the decision-making process. The doctrine of informed consent, a cornerstone of the doctor/patient relationship, could lead to possible litigation if compromised.17
Consequently, in light of the NHA, the doctor will only be protected where a patient expressly provides informed consent. To argue that tacit consent was given by conduct will be insufficient. Consent could be written or verbal, but written consent/authorisation for normal vaginal deliveries would be legally prudent although not legally necessary.
Problems arise for both the doctor and patient when a woman presents for the first time in labour and requiring admission, which often happens in the public sector. It may not be said that her presence translates to consent by conduct. In theory she would require a full explanation of what treatment and procedures to expect, and should be given options, but she would probably not be in the right frame of mind to absorb all the information and reach an informed decision. Furthermore, unexpected complications may require additional consent for a surgical intervention or anaesthetic procedure, such as an epidural, which she had not previously been warned about or prepared for. The timing of seeking consent at this stage is problematic. The woman may be distracted or distressed and the opportunity to explain the procedure as required by the NHA is limited, so it may in future be argued that 'informed' consent was not in fact given. In an emergency this would probably be considered legal, but many situations are not strictly emergencies.
Approaching informed consent as a process of communication25 throughout the antenatal period would be ideal for the woman preparing for childbirth and the health care provider. All options could then be discussed timeously, so that the mother-to-be would be prepared for the possibility of having a CS or for the complications of and interventions sometimes required for a vaginal delivery. The health care provider could also explain that not all complications arise at birth because of the birth process, and that some problems present during the antenatal period and are only identified at or even after birth, such as a fetal heart defect.
Asking a woman to sign an informed consent form specifically for a vaginal delivery has advantages. These include the additional time spent by the health care practitioner discussing her and the baby's health status, and explaining the options available to her, the risks and benefits of these options, the costs involved should these be relevant, and the right to refuse any aspect of treatment with which she would not be comfortable. The woman would then also be made aware that although a vaginal delivery may be considered a wholly 'natural process', many situations cannot be predicted but only controlled to the best of the medical personnel's ability should they arise. If the consent form can be signed by the woman before the date of delivery she will have been able to think about what she has been told and the consent process will not have been compromised because of labour pains. The health care practitioner would then also have proof that the information surrounding the process has been communicated as required by law should there be any query later on.
We have argued that as patient advocates and promoters of overall patient health and welfare, doctors should obtain written consent/ authorisation for a 'normal' vaginal delivery in the antenatal period where indicated. Material to the discussions would be the environment in the labour ward and whether or not continuous oversight of the labour process by qualified nursing staff will be available. We are well aware of issues pertaining to resource constraints, especially in state settings. However, the informed consent process should not differ between private and public health care settings, and women in the public sector should be made aware not only of their rights to choice but also the limitations of these rights consequent to a lack of resources.
The authors thank Professor Franco Guidozzi for his advice and guidance while they were writing this paper.
1. Snyman L. Is the high caesarean section rate a cause for concern? Obstetetrics and Gynaecology Forum 2002;12(2):8-13. [ Links ]
2. Hager RM, Daltveit AK, Hofoss D, et al. Complications of cesarean deliveries: rates and risk factors. Am J Obstet Gynecol, 2004;190:428-34. [ Links ]
3. Rageth JC, Juzi C, Grossenbacher H. Delivery after previous cesarean: a risk evaluation. Obstet Gynecol 1999;93:332-337. [ Links ]
4. Hibbard JC, Ismail MA, Wang Y, et al. Failed vaginal birth after a cesarean section: how risky is it? I. Maternal morbidity. Am J Obstet Gynecol 2001;184:1365-1371. [ Links ]
5. Naidoo N, Moodley J. Rising rates of caesarean sections: an audit of caesarean sections in a specialist private practice. South African Family Practice 2009;51(3):254-258. [ Links ]
6. World Health Organization. Appropriate technology for birth. Lancet 1985;2:436-467. [ Links ]
7. Matshidze KP, Richter LM, Ellison GT, Levin JB, McIntyre JA. Caesarean section rates in South Africa: evidence of bias among different 'population groups'. Ethn Health 1998;3(1-2):71-79. [ Links ]
8. Tshibangu KC, De Jongh MA, De Villiers DJ, Du Toit JJ, Shah SMH. Incidence and outcome of caesarean section in the private sector - 3 year experience at Pretoria Gynaecological Hospital. S Afr Med J 2002;92(12):956-959. [ Links ]
9. Chalmers B, McIntyre J, Meyer D. South African obstetrician's views on caesarean section. S Afr Med J 1992;82:161-163. [ Links ]
10. Dommisse J. Is your caesarean section necessary? S Afr Med J 1996;86:276. [ Links ]
11. Kalish RB, McCullough LB, Chervenak FA. Patient choice cesarean delivery: ethical issues. Curr Opin Obstet Gynecol 2008;20:116-119. [ Links ]
12. Van Ham MAPC, van Dongen P, Mulder J. Maternal consequences of caesarean section. A retrospective study of intraoperative and post-operative maternal complications of caesarean section during a 10 year period. Eur J Obstet Gynaecol Reprod Biol 1997;74:1-6. [ Links ]
13. Brett AS, McCullough LB. When patients request specific interventions: Defining the limits of the physician's obligation. N Eng J Med 1986;315:1347-1351. [ Links ]
14. Minkoff H, Powderly KR, Chervenak F, McCullough LB. Ethical dimensions of elective primary cesarean delivery. Obstet Gynecol 2004;103(2):387-392. [ Links ]
15. Chervenak FA, McCullough LB. An ethically justified algorithm for offering, recommending, and performing cesarean delivery and its application in managed care practice. Obstet Gynecol 1996;87:302-305. [ Links ]
16. McCullough LB, Chervenak FA. Ethics in Obstetrics and Gynecology. New York: Oxford University Press, 1994. [ Links ]
17. Carstens P, Pearmain D. Foundational Principles of South African Medical Law. Durban: LexisNexis Butterworths, 2007: 677. [ Links ]
18. Stoffberg v Elliott 1923 CPD 149. [ Links ]
19. Rex v Jack 1908 TS 131. [ Links ]
20. The Constitution of South Africa, Act No. 108 of 1996. [ Links ]
21. National Health Act No. 61 of 2003. [ Links ]
22. Castell v De Greef 1994 (4) SA 408 (C) at 426. [ Links ]
23. Booklet 9: Seeking Patients' Informed Consent: The Ethical Considerations. Pretoria: Health Professions Council of South Africa. May 2008. Health Professions Council of South Africa Ethics Guideline Booklets. http://www.hpcsa.co.za/downloads/conduct_ethics/rules/generic_ethical_rules (accessed 3 September 2010). [ Links ]
24. Booklet 3: National Patient's Rights Charter. Pretoria: Health Professions Council of South Africa. May 2008. Health Professions Council of South Africa Ethics Guideline Booklets. http://www.hpcsa.co.za/downloads/conduct_ethics/rules/generic_ethical_rules (accessed 3 September 2010). [ Links ]
25. Bernat JL, Peterson LM. Patient-centered informed consent in surgical practice. Arch Surg 2006;141(1):86-92. [ Links ]
A Dhai is Director of the Steve Biko Centre for Bioethics and Head of the Bioethics Discipline of the Faculty of Health Sciences, University of the Witwatersrand, Johannesburg.
J Gardner is a lecturer and postgraduate academic co-ordinator and Y Guidozzi a lecturer in the Steve Biko Centre for Bioethics.
G Howarth is full-time medico-legal advisor and Head of Medical Services - Africa, Medical Protection Society, UK.
M Vorster is an honorary lecturer in the Steve Biko Centre for Bioethics and Vice-Dean Faculty of Health Sciences, University of the Witwatersrand.
Corresponding author: A Dhai (email@example.com)


text:
- Format:Cambridge Elevate
- Subject(s):History
- Qualification:IB Diploma
- Author(s):Allan Todd
- Available from: January 2017
- Notes: Not available for credit card purchase. Please contact Customer Services.
Comprehensive second editions of History for the IB Diploma Paper 2, revised for first teaching in 2015.
Send a Query×
This Cambridge Elevate edition covers Paper 2, World History Topic 12: The Cold War: Superpower Tensions and Rivalries (20th century) of the History for the IB Diploma syllabus for first assessment in 2017. Tailored to the requirements of the IB syllabus and written by experienced IB History examiners and teachers, it offers authoritative and engaging guidance through the following detailed studies of leaders and crises from around the world: Truman, Khrushchev, Gorbachev, Castro, and Reagan; and the Cuban Missile Crisis, the Korean War, the Prague spring, and the Soviet invasion of Afghanistan.
- Contents
- 1. Introduction
- Unit 1. Nature of the Cold War
- Unit 2. Origins of the Cold War
- Unit 3. The First Cold War (1946–53): 2. Developments in Europe
- 3. Developments in Asia and Oceania
- Unit 4. Fluctuating relations (1953–68): 4. Developments in Europe
- 5. Developments in Asia
- 6. Developments in the Americas
- Unit 5. From détente to the Second Cold War (1969–85): 7. Developments in Europe
- 8. Developments in Africa and the Middle East, and in the Americas
- 9. Developments in Asia and Oceania
- Unit 6. The end of the Cold War (1985–91)
- Unit 7. Exam practice
- Further information
- Index.
Latest newsAll news
01 June 2020
TOK-bite video 3 (part 1): how to make TOK relevant to learners
Video tips from our expert Cambridge TOK authors.
Catalogues & Ordering
Please sign in to access your account
Not already registered? Create an account now. ×
Thank you for your feedback which will help us improve our service.
If you requested a response, we will make sure to get back to you shortly.×


text:
Hey loves! Happy New Year! I wish u all the best of luck for the new year and I'm hoping I'll have a great new year as well! Today, I wanted to do a multi-textured eyeshadow look, using a matte brown, shimmery Browns, mauve, orange, blue and a gold iridescent shade in the middle of my eyes. After blending, this was the final result!
winged eyeliner
Holiday Glitz
Olive and Gray Eyes
Hey loves! I did a simple but pretty look today. I used an olive toned eyeshadow on the eyelids and a mauve and grey eyeshadow in the crease. I used a little bit of a bright orange matte eyeshadow as my transition color before the brow highlight. I used MAC Whirl lipstick on my lips and a little bit of MAC Evening Rendezvous on the center of the lips and a bit on the outer corners. Please like the post and subscribe! Thanks a lot!
Holiday Affair
Hey beauties! I know it's been awhile, so I posted this look on the makeup I did for my co worker for a holiday event that he is attending today. I used ELF palettes to achieve this look (sorry, I forgot the names of them!)
I used a shimmery rose eyeshadow on the lids and a soft purple eyeshadow in the crease. I used some silver in the inner crease mixed with a peach, shimmery eyeshadow. I used a dark red lipstick from the beauty supply store on the outer corners of the lips and lighter pink on the center of the lips. Here's the finished look!
Color Wheel
Queen of the Damned inspired Halloween makeup
Hey guys! Happy Halloween 🎃🎃 I wasn't quite sure what makeup to do for today but then decided to do a look inspired by Aaliyah in Queen of the Damned. It's a dark, gothic eye that extends out a bit into a bold cat eye and there's contouring and bronze highlights on the face. Her lips were a bronze gold color with gloss on top. There were hints of purple on the eyes and a cream or gold color as her inner eye highlight color. I wish I had planned the look because I would've got the costume to make it more realistic! Anyway, I'm happy with the way it came out. My makeup is a little more on the scary side than Aaliyah's in the movie! 😋😱👻💀👻🎃🕸


text:
Still playing and having a great time with Per Agélii.
Wednesday, 23 January 2013
Playing with dolls
4 comments:
- barbara said...
you could make an animated film!?
- 24 January 2013 at 01:17
What about setting up a panorama and doing a painted background and then photographing it? The flat/3 demential qualities would be so interesting.
You could even do a stop-motion flip book of pictures. Eerie and open ended?
Love your work and the freedom with materials. You are so inspiring to me in my own work which is completely different (I am a potter).
Thank you for documenting and sharing what you are doing.
- 24 January 2013 at 06:02
- Camilla Engman said...
Hello Naomi and Barbara,
I'd love to do a stopmotion. But it is to much technology involved for my liking, but who knows where we end up. It is a lot of fun :)
- 27 January 2013 at 01:10
- Hanne said...
Wonderful! And very inspiring. 3D-things does so much for the experience. It's a whole different thing than seeing it on paper.
(oh god, my English sucks, sorry)
I'm in love with what you do! And you are very welcome to visit my blog :)
- 6 February 2013 at 03:51


text:
In September I wrote about Detroit, Michigan, and a new campaign to repurpose vacant parcels of land into urban farmland and revitalize the local ecosystem.
According to the New York Times, entrepreneur John Hantz offered to purchase 140 acres of abandoned land in Detroit to clear the empty lots of debris and plant roughly 15,000 hardwood trees. Hantz and his colleagues have said their plans for the land will increase economic activity, raise property values and add to the city's tax base.
Support for this method of repurposing some of Detroit's vacant lots is mixed. Many agree that urban farming would diversify the city and be a more beneficial use of the land space, which currently supports foreclosed homes and crumbling buildings. But some residents and city officials view the transaction as a land grab that Hantz will use for his own benefit.
Nevertheless, on December 11, the Detroit City Council approved the sale of the land to Hantz in a 5-4 vote.
A website developed to detail Hantz's proposal states his intentions to transform blight to beauty, convert abandoned properties to fields for new agricultural production, create jobs and strengthen the city's budget. Hantz has witnessed the deterioration of Detroit over the years and says he wants his farm to not only be used for agricultural production, but also as an open area the community can experience and appreciate.
Additionally, Hantz plans to plant trees and encourage neighbors to enjoy their beauty and learn about the importance of urban trees, including how they can be used as a sustainable and profitable resource.
Although it remains to be seen how the land will be developed, community participation will be important for the overall success of this project. The U.S. Department of Agriculture advocates that active involvement from area residents in projects like these is key to building an empowered, successful and more satisfied community.
Through its Tree City USA and Tree Line USA programs, the Arbor Day Foundation understands the positive impact urban forestry has on cities worldwide and therefore sees the potential benefits Hantz's urban farm can have in the community. There is significant promise in Detroit's effort to build a new, green economy.


text:
The Lockitron API is a RESTful JSON API. Every request responds in JSON. The resources follow predictable names and consistent conventions. Status codes are used to convey success, failure, and specific failure conditions.
To make the Lockitron API safe to test with, all examples on this page are using a virtual Lockitron. When you lock or unlock any Lock listed on this page, it will not change the state of a physical Lockitron.
GET http://api.lockitron.com/v2/locks
GET http://api.lockitron.com/v2/locks/:id
PUT http://api.lockitron.com/v2/locks/:id
GET http://api.lockitron.com/v2/locks/:lock_id/keys
POST http://api.lockitron.com/v2/locks/:lock_id/keys
PUT http://api.lockitron.com/v2/locks/:lock_id/keys/:id
DELETE http://api.lockitron.com/v2/locks/:lock_id/keys/:id
GET http://api.lockitron.com/v2/users/:id
GET http://api.lockitron.com/v2/users/:id?face=small
PUT http://api.lockitron.com/v2/users/:id
GET http://api.lockitron.com/v2/locks/:lock_id/activity
DELETE http://api.lockitron.com/v2/locks/:lock_id/activity/:id
The Lockitron API lets you programatically access your Lockitron. It lets you lock and unlock your front door from an API. It lets you programmatically invite people to your Lockitron, modify keys to your Lockitron, and revoke access to your Lockitron.
You could use it to build your own app, hack on some cool projects, or manage an in-house access control system.
We've granted you your own ready-to-use access token to short circuit the OAuth authentication process. They are tied you your individual Lockitron user account and should only be used in personal projects, not applications you want to share with other users.
Our OAuth2 implementation is based off of version 22 of the OAuth2 spec. If you want to write simple scripts for your own personal or internal use, then you can use the access token we've automatically generated for you rather than OAuth.
OAuth authentication follows a few steps:
- Ask the Lockitron user if you can access resources on their account for your application.
- If they accept, save the returned authentication
- Use the authentication code to request an
We recommend using an OAuth2 library (such as the
oauth2 gem) to get up and running quickly.
If you've having trouble, it's likely due to an invalid grant error. Frequently, it's because the authentication code you attempted to use has already been used.
If you're getting a different error, double check that you've filled in all the neccessary query string options and that they're the correct values.
Getting the Authentication Code
Using your client id, you need to direct users to the Lockitron OAuth endpoint. If a user accepts to grant you access, they will be redirected to the Lockitron homepage, with a code option inside the query string. That's the authentication code, so put that somewhere safe.
We've already given you an access token for your demo app, however, if you weren't already pre-authorized you would need to follow the authentication URL and click "Allow". To test this, go to Authorized Applications and click "Revoke" next to your Demo app, then immediately visit the authentication URL.
- client_id:
- string The client_id associated with the application you are requesting access for.
- response_type:
- string
Set to
authentication_codeto pass authentication code in query string with key code or
tokento pass in URL fragment
- redirect_uri:
- string The requested redirect URI after a user allows access to your application
- state:
- string Optional: pass an additional state paramater if needed for your application
GET https://api.lockitron.com/oauth/authorize
GET https://api.lockitron.com/oauth/authorize
Paste authentication code here
Getting the Access Token
access_token is the credential that gives access to specific user's resources for a specific Lockitron app ("API Demo Application" for example). To get an
access_token you'll need to post your
redirect_uri and
code (the authentication code from the previous step) to the token endpoint.
You can get the
client_secret and
redirect_uri from your API application.
Using your library of choice or manually posting the parameters to Lockitron, upon success you will be issued an
access_token tied to that user and application which is valid for three months.
- client_id:
- string The client_id associated with the application you are requesting access for.
- client_secret:
- string The client_secret associated with the application you are requesting access for.
- grant_type:
- string
Set to
authentication_codeto pass authentication code in query string with key code or
tokento pass in URL fragment
- redirect_uri:
- string The requested redirect URI after a user allows access to your application
- code:
- string The authentication code granted after a user accepts the request for API access
POST https://api.lockitron.com/oauth/token
POST https://api.lockitron.com/oauth/token
Errors & Messages
The Lockitron API has a standard format for errors and messages. When something goes wrong, it returns an error. When there is no object to display, it returns a message. Most errors return a
400 status code.
- status:
- string
Can either be:
- message:
- string A human-readable message providing detail into what happened
- reasons:
- array An array of key/value pairs indicating issues with specific keys. The values are messages. The keys are where something went wrong.
status: "error",
message: "The requested resource was not found.",
reasons: [ ]
When you create an API application you can also opt to create a webhook which will inform you of lock and unlock activites that take place on a given lock and relating to a specific user. Users with
owner and
admin keys will receive information relating to all actitives on the lock.
- timestamp:
- Unix timestamp The time at which the activity was completed and the webhook called. If there is any latency between when the activity was created and the webhook issued, this will reflect when the webhook was issued.
- activity:
- object
Nested within the
dataobject, contains the
activityobject along with associated keys. See Activities for more information.
- user:
- object
Nested within the
dataobject, contains an abbreviated form of the
userobject along with
phone. See Users for more information.
- lock:
- object
Nested within the
dataobject, contains an abbreviated form of the
lockobject along with
name. See Locks for more information.
"timestamp": 1422334455,
"data": {
"activity": {
"id": "834745fb-f8ca-4179-be37-2f67112d2831",
"kind": "lock-updated-locked",
"status": "notice",
"updated_kind": "lock-updated-locked",
"updated_previous": "unlock",
"updated_current": "lock"
"user": {
"id": "6cd36428-1cdd-11e2-ba3b-4040401f6100",
"email": "email@example.com",
"first_name": "",
"last_name": "",
"phone": null
"lock": {
"id": "fdb46f57-01f5-422c-b4e7-a10373fc42ea",
"status": "",
"name": "karina"
Errors & Messages
The Lockitron API has a standard format for errors and messages. When something goes wrong, it returns an error. When there is no object to display, it returns a message. Most errors return a
400 status code.
- status:
- string
Can either be:
- message:
- string A human-readable message providing detail into what happened
- reasons:
- array An array of key/value pairs indicating issues with specific keys. The values are messages. The keys are where something went wrong.
status: "error",
message: "The requested resource was not found.",
reasons: [ ]
Lock refers to a Lockitron. You can use this resource to retrieve your locks and lock or unlock Lockitrons.
- id:
- string
- name:
- string, human-readable identifier for the Lockitron
- next_wake:
- ISO 8601 timestamp
The next time a crowdfunded (WiFi-enabled) Lockitron is slated to wake up and process pending commands. This is
nullfor non-crowdfunded Lockitrons.
- last_heard_from:
- ISO 8601 timestamp The last time a Lockitron checked in to Lockitron servers.
- state:
- string
The state of the lock. It can be
"unlock", or
- button_type:
- string
The functionality of the lock. Certain Buzzer lockitrons can only be unlocked. This value is
"unlock". The state of the new Lockitron is always known, the value is
"slider". For older Lockitrons, the state is inconsistently known, it is
- updated_at:
- ISO 8601 timestamp The last time any value was updated on this lock.
- handedness:
- string
The handedness of Lockitron (the state of the lock when the thumbturn is turned fully clockwise). It can be
"locked", or
- application_fw_version:
- integer
The firmware version number of a Lockitron Bolt represented as a string. It is an
integervalue of the application firmware version or
unsupportedfor non-Bolt Lockitrons. Can also be
nullfor Lockitron Bolt Preview units.
- avr_version:
- integer
The AVR firmware version number of a crowdfunded Lockitron. It is an
integervalue of the AVR firmware version or
unsupportedfor non-crowdfunded Lockitrons.
- battery_voltage:
- string
The battery voltage of a new Lockitron. It's typically between
8v, or
- sleep_period:
- string
The sleep interval for WiFi checkins on a crowdfunded (WiFi-enabled) Lockitron in seconds. Can be between
- avr_update_progress:
- string
The percentage completion of an
0-99indicates the update is in progress,
100indicates complete and
-1indicates error. This is
nullfor non-crowdfunded Lockitrons.
- ble_update_progress:
- string
The percentage completion of an
0-99indicates the update is in progress,
100indicates complete and
-1indicates error. This is
nullfor non-crowdfunded Lockitrons.
- serial_number:
- string An identifier printed on the Lockitron, generally used in support.
- hardware_id:
- string An identifier advertised by the Lockitron (crowdfunded and Bolt) for Bluetooth operations.
- connected:
- string
An indication whether or not the Lockitron is currently online. Can be
null. Used primarily to identify if Lockitron Bolt is accessible from the web via a Bridge unit (in which case the response will be
true). If
null(unsupported), you should assume the Lockitron is currently online.
- pin_code_enabled:
- boolean
An indication whether or not a Lockitron Bolt has pin code functionality via Keypad. Can be
"unsupported". If
true, you can add pin codes to the Lockitron (see keys below.)
- time_zone:
- string The default timezone for every date related to this lock. This includes the timezone for every Activity as well as start/expiration dates for keys. It's in Tz format
- keys:
- array The list of keys associated with this lock.
- sms:
- boolean Whether or not SMS access is turned on. You can enable/disable it in your Dashboard.
Retrieving All Locks
This endpont shows the locks the current user has access to, including the keys associated with the locks.
GET http://api.lockitron.com/v2/locks
GET http://api.lockitron.com/v2/locks
Retrieving a Specific Lock
This endpoint returns a specific Lock that the current user has access to and all the keys for that Lock visible to the current user.
GET http://api.lockitron.com/v2/locks/:id
GET http://api.lockitron.com/v2/locks/fdb46f57-01f5-422c-b4e7-a10373fc42ea
Locking and Unlocking
This method will lock or unlock the user's door. It blocks until locking/unlocking is finished. If the Lockitron is asleep, it can take several minutes. Failures return standard errors.
- state:
- string
Possible states include:
"unlock", or
- noblock:
- string
Optional: whether or not the request will block - by default requests will block until the lock action completes. We recommend enabling noblock
truefor crowdfunded Lockitrons where latency can be minutes or hours.
PUT http://api.lockitron.com/v2/locks/:id
PUT http://api.lockitron.com/v2/locks/fdb46f57-01f5-422c-b4e7-a10373fc42ea
Changing the name
Lockitrons have human-readable names. These are visible across all the apps to show the user which Lockitron they're currently using. This method lets you change it.
- name:
- string
PUT http://api.lockitron.com/v2/locks/:id
PUT http://api.lockitron.com/v2/locks/fdb46f57-01f5-422c-b4e7-a10373fc42ea
Changing the handedness
Lockitron Bolt and crowdfunded Lockitrons have a specific handedness - whether they turn clockwise to lock or unlock. This impacts the reported state (locked or unlocked) of Lockitron.
- handedness:
- string
This may be set as
unlockedto indicate the state of the lock when the thumbturn when turned fully clockwise..
PUT http://api.lockitron.com/v2/locks/:id
PUT http://api.lockitron.com/v2/locks/fdb46f57-01f5-422c-b4e7-a10373fc42ea
Changing the sleep interval
Set the sleep interval in seconds at which Lockitron connects to WiFi to check for pending commands. Warning: setting this below 1800 will significantly impact battery life.
Only supported for crowdfunded Lockitrons.
- sleep_period:
- string
Set as a value between
PUT http://api.lockitron.com/v2/locks/:id
PUT http://api.lockitron.com/v2/locks/fdb46f57-01f5-422c-b4e7-a10373fc42ea
Updating the firmware
The crowdfunded Lockitrons can ben sent commands to update their firmware. This includes the AVR (primary) and BLE firmware. These methods initiate firmware updates but should be used with care.
AVR Update will take 2-5 minutes to complete after a unit wakes up. Lockitron will be unresponsive during this time and play a song once update is complete.
BLE Update will take 5-15 minutes to complete after a unit wakes up.
Only supported for crowdfunded Lockitrons.
- update_avr_firmware:
- string
Set to
trueto initiate AVR update (primary firmware).
- update_ble_firmware:
- string
Set to
trueto initiate BLE update.
PUT http://api.lockitron.com/v2/locks/:id
PUT http://api.lockitron.com/v2/locks/fdb46f57-01f5-422c-b4e7-a10373fc42ea
Keys represent a User's access to a Lock. They can start and expire. Admins and owners can invite users, modify keys, and revoke keys. Admins can only invite, modify, and revoke guests. Owners can invite, edit, and revoke anyone except themselves. Nobody can modify their own key.
Every valid key can lock and unlock a Lock.
- id:
- string
- start_date:
- ISO 8601 timestamp
The time when the key starts.
nullindicates it starts at the time it the key was issued.
- expiration_date:
- ISO 8601 timestamp
The time when the key expires.
nullmeans it never expires.
- role:
- string
The role of the key. This can be
admin, or
ownercan invite, edit, and revoke anyone except themselves. There is only one
admincan invite, edit, and revoke
guestbut not other admins, themself, or the owner.
guestcan only lock and unlock. There can be an unlimited number of
- valid:
- boolean Denotes whether or not the key is valid. Keys may be invalid because they're pending, disabled, or expired.
- visible:
- boolean Denotes whether or not the key should be visible to the user. If it's active, it starts soon, or it recently expired, it should be visible to the user.
- sms_pin:
- string The four character pin code used for SMS access. This only applies to Locks with SMS access enabled. It may be present regardless.
- pin_code:
- string
A numerical pin code used for Keypad access. This only applies to Locks with
pin_code_enabled. May be an
stringformat or
- pin_only:
- boolean An indicator as to whether or not the key is owned by a full user account or merely a placeholder account created for the pin code. Pin codes not associated with full user accounts can be edited or removed by administrators.
- user:
- User, the User this key belongs to.
Retrieving Keys
This method returns all of the keys associated with a Lock
GET http://api.lockitron.com/v2/locks/:lock_id/keys
GET http://api.lockitron.com/v2/locks/fdb46f57-01f5-422c-b4e7-a10373fc42ea/keys
Inviting Users
This method will find or create a new User and invite them to the Lockitron you specify in the
:lock_id. This will give the User access to the Lockitron. It requires an
phone. Optionally, you can set a
expiration_date. For new users, you can set the
name or
pin_code (only on
pin_code_enabled locks).
Sending an invitation to a User will notify them by email or phone. If the User you're inviting doesn't have an account, they will be emailed or texted an activation link. If they do have an account, they will be notified by email and/or phone.
- email:
- string
The email address of the User you wish to invite. This is required if
phoneis not present.
- phone:
- string
The phone number of the User you wish to invite. Formatting will be stripped out. Phone extensions will be stripped out too. This is required if
- name:
- string The full name of the User you're inviting. This argument will be ignored if the User already exists.
- start_date:
- ISO 8601 timestamp The date when the key becomes usable.
- expiration_date:
- ISO 8601 timestamp The date when the key becomes unusable.
- role:
- string
The role of the Key being invited. Can be:
"admin". Only owners can invite admins. The default is
- pin_code:
- integer
A pin code for the Key being invited. Can be used without
phoneparameters to create a
pin_onlykey which is not associated with a full user account. In this case
namecan also be submitted but other parameters will be ignored. Only works with
POST http://api.lockitron.com/v2/locks/:lock_id/keys
POST http://api.lockitron.com/v2/locks/fdb46f57-01f5-422c-b4e7-a10373fc42ea/keys
Modifying Keys
This method lets you modify pre-existing keys. It requires that the
role of the Key the User is modifying is lower than the Key that was issued. This means that
guests cannot modify
admins or the
owner and that
admins cannot modify other
- id:
- string, the id of the Key being modified
- start_date:
- ISO 8601 timestamp
- expiration_date:
- ISO 8601 timestamp
- role:
- string
- pin_code:
- integer,
pin_code_enabledlocks only
PUT http://api.lockitron.com/v2/locks/:lock_id/keys/:id
PUT http://api.lockitron.com/v2/locks/fdb46f57-01f5-422c-b4e7-a10373fc42ea/keys/d6747a60-96a0-4054-af73-c7b6fea12496
Revoking Keys
Just as you can invite a User and modify a Key, you can also revoke the Key. Only
admins and the
owner can revoke keys. Admins can only revoke guests. Nobody can revoke their own key.
DELETE http://api.lockitron.com/v2/locks/:lock_id/keys/:id
DELETE http://api.lockitron.com/v2/locks/fdb46f57-01f5-422c-b4e7-a10373fc42ea/keys/d6747a60-96a0-4054-af73-c7b6fea12496
status: "success",
message: "You have successfully deleted that key.",
reasons: [ ]
A User is a person using Lockitron. Users have many keys, locks, and activities.
- id:
- string
- email:
- string, the email address associated with the User
- phone:
- string, the phone number associated with the User
- full_name:
- string, the full name of the User
- first_name:
- string, the first name of the User
- last_name:
- string, the last name of the User
- activated:
- boolean Indicates whether or not the user has activated their account
Retrieving a User
This method lets you retrieve a User by ID. It will only return users that are associated with a Lock that the current user has access to.
- face:
Adding this argument will redirect you to a JPEG or PNG image of the User's face. The possible values are:
"header"(120x120), and
GET http://api.lockitron.com/v2/users/:id
GET http://api.lockitron.com/v2/users/6cd36428-1cdd-11e2-ba3b-4040401f6100
Retrieving The Current User
It can be a pain to keep track of the User the
access_token belongs to. This method makes that easier. It returns the current user associated with the provided
- face:
Adding this argument will redirect you to a JPEG or PNG image of the User's face. The possible values are:
"header"(120x120), and
GET http://api.lockitron.com/v2/users/me
GET http://api.lockitron.com/v2/users/me
Activities are logs of recent actions on a particular lock or key.
- id:
- string
- created_at:
- ISO 8601 timestamp, when the Activity was performed
- status:
- string
The severity of the Activity. Could be:
- kind:
- string, kind of Activity
- updated_value:
- string Indicates the change in the Lock or Key.
- user
- User, The User associated with the Activity
Retrieving Activities
This method allows you to retrieve the last 10 activities on a Lock. Some examples of activities include: a User locking their Lock, a User being invited the a Lock, or a Key being revoked.
It only shows activities that the current user's key has access to. If they're a
guest, they can only see activities of their own. Admins and owners can see everyone's activity.
GET http://api.lockitron.com/v2/locks/:lock_id/activity
GET http://api.lockitron.com/v2/locks/fdb46f57-01f5-422c-b4e7-a10373fc42ea/activity
Cancel a Pending Action
This method allows you to cancel a pending activity on a Lock. Pending acitivities are those activities on crowdfunded (WiFi-enabled) Lockitrons which have yet to be carried out because the Lockitron has not yet reconnected to WiFi since the command was sent.
- activity_id:
- string
This is the
activity_idyou wish to cancel. The last
pending_activitycan be found on the Lock object..
DELETE http://api.lockitron.com/v2/locks/:lock_id/activity/:id
status: "success",
message: "You have successfully cancelled this pending request.",
reasons: [ ]
Kinds of Activities
There are many different kinds of Activity. Sometimes it's a User unlocking their door when they get home. Other times it's a User revoking someone else's access to their Lock. Below, the different
kinds are enumerated:
- setup:
- The Lock was setup
- low-battery:
- The Lock is running low on battery.
- wifi-disconnected:
- The Lock's wifi was disconnected.
- unauthorized:
- An unauthorized User attempted to lock or unlock the Lock.
- lock-offline:
- The Lock went offline.
- lock-jammed:
- The Lock has jammed.
- lock-transmitter-unplugged:
- The Lock's USB transmitter was unplugged. This only applies to older Lockitrons and the Lockitron Buzzer.
- lock-updated-lock:
- The Lock was locked.
- lock-updated-unlock:
- The Lock was unlocked.
- lock-updated-owner:
- The
ownerof the Lock was changed.
- key-created:
- A User was invited to this Lock.
- key-revoked:
- A Key was revoked from this Lock
- key-updated-start:
- The Key's
- key-updated-expiration:
The Key's
- key-updated-role:
The Key's
rolechanged. This only applies to


text:
Direct-acting 2/2 way plunger valve
Type 6027 / Article No. 355701
Product description
Valve 6027 is a direct-acting plunger valve. The stopper and plunger guide tube are welded together to enhance pressure resistance and leak-tightness. Various seal material combinations are available depending on the application. The coils are moulded with chemically resistant epoxy. An optional sliding ring bearing increases the service life with dry gases. Special seal technology is used for high-pressure applications. In combination with a plug in accordance with DIN EN 175301-803 Form A, the valves satisfy protection class IP65. Stainless steel valves satisfy NEMA 4X.
- Commodity Codes
- 84818079
- Country


text:
April 25, 2013
By Freddie Allen
NNPA Washington Correspondent
WASHINGTON (NNPA) – As President Obama continues to underscore the need to increase the college-educated workforce significantly by 2020, all except two states have slashed their funding for higher education.
"Cuts to state funding for higher education, since the start of the recession, have been severe and very widespread," said Phill Oliff, a policy analyst for the Center on Budget and Policy Priorities, a nonpartisan think tank that analyzes government policy and programs.
According to a report by the center, from fiscal year 2008 to fiscal year 2013, every state slashed spending on higher education except for North Dakota and Wyoming.
"States and to a much lesser extent local governments provide just over half of the revenue that can be used to support instruction at these schools. When the funding gets cut public colleges and universities, generally must raise either tuition cut spending or a combination of both to fill the gap," said Oliff. "That is exactly what's happened since the start of the recession."
The CBPP report found that states are spending $2,353 or 28 percent less per student on higher education, nationwide, in the current 2013 fiscal year than they did in 2008, when the recession hit.
Louisiana, Alabama Florida South Carolina and Mississippi – where 41 historically Black colleges and universities are located – have cut higher education spending by 30 percent or more in the last five years.
Louisiana schools experienced the steepest cuts of the southern states, shaving 41.2 percent from higher education budgets and North Carolina was least impacted with 14.6 percent.
Georgia, home to 10 HBCUs, has cut spending by nearly 30 percent in the last five years. The lack of resources at the state and local level and a fall in enrollment recently forced Morehouse College in Atlanta, Ga. to furlough its entire faculty and staff over spring break.
"Our states have a history of not investing in our historically Black colleges so that they will be comparable to the White schools," said Lezli Baskerville, president the National Association for Equal Opportunity in Higher Education (NAFEO), an organization of the nation's historically Black colleges and universities.
Even though federal financial aid and tax credits have also increased significantly, Oliff said that the federal government erred by cutting off emergency aid to states at a time when state revenues were far from fully recovered.
Some state schools were forced to raise tuition to try and make up difference, but the increases in tuition haven't been able to keep pace with the changes in lost revenue.
As schools try to balance their books, Oliff said that the price of attending a four-year public college has grown significantly faster than the growth in median income over the last two decades.
"Tuition increases as steep, as they have been, have made up for only part of the revenue loss resulting from state funding cuts. Public colleges and universities have often cut spending often in ways that threaten educational equality," said Oliff.
According to the report, tuition at four-year colleges has increased by more than 50 percent in seven states; 25 percent in 18 states; and 15 percent in 40 states.
Because federal aid hasn't kept paced with tuition increases, the cost of going to college has fallen heavier on families who can barely afford day-to-day expenses, let alone thousands of dollars in college tuition.
Black families held less than $ $9,976 in assets compared to $117,486 for Whites, according to the 2013 "State of the Dream" report by United for a Fair Economy.
"The Georgetown Center on Education and the Workforce projects that by 2018, 62 percent of all jobs will require at least some college education. That is up from 59 percent in 2007, 56 percent in 1992, and 28 percent in 1973," said the CBPP report. The report added: "By 2018 the county's system of higher education will produce 3 million fewer college graduates than the labor market will demand, Georgetown projects."
Mary Frances Berry, a history professor at the University of Pennsylvania and former Assistant Secretary of Education, said some actions by the Obama administration are counterproductive.
"On one hand the Obama Administration says that they are trying to increase the number of people that are graduating from college in the United States," Berry explained. "On the other, recent policy changes governing federal student aid and the continued erosion of state funding for higher education just don't make sense."
Even though some Black colleges and universities are experiencing challenges, Baskerville said others are thriving and would be doing better if they had access to the hefty endowments that aid White schools in times of falling enrollment and budget shortfalls.
Baskerville said that HBCUs, as a collective, only have endowments of $15.8 million dollars, compared to the average endowment of $122 million dollars for White schools.
"Those are dollars that are used to cushion the blows," said Baskerville.
In the absence of vast resources afforded to some predominantly White institutions, Baskerville said that HBCUs must seek out entrepreneurial opportunities to sustain and grow enrollment during tough economic times.
Baskerville said that NAFEO is leading an initiative to not only provide greater access to entrepreneurial programs at HBCUs but to also turn cost centers into revenue-generating entrepreneurial opportunities as well
She said, "We have to make our campuses and our goods and services work for us so that we can generate independent resources and have more flexibility to help students that are unable to meet the cost of college."
Read more: http://www.nnpa.org/ news/lead/state-cuts-to-college-aid-exacerbates-affordability-issue-by-freddie-allen/#ixzz2RRaIvC1U


text:
Water Atlas
This Water Atlas Google Map from the Hillsborough County and City of Tampa allows citizens to check water quality, hydrology, rainfall and weather data from the county's water stations.
The green map markers indicate stations with current data (anywhere from the last 60 seconds to the last 24 hours). The yellow markers show inactive stations (maybe because of maintenance or technical problems).
Depending on the type of water station selected you can view, daily rainfall, precipitation, water flow, elevation, temperature, velocity and conductance. Each information window also includes a link to view graphs of the stations recorded data for the last 24 hours, week and month.


text:
Hello All,
Currently I am working on wandboard quad. I am developing hardware audio processor using wandboard with Linux. But failed to understand how to shutdown and again Start
linux on wandboard without actually removing power supply or pushing reset button . Is there anyway to signal wandboard to shutdown linux and again signal it to start linux without using reset button or removing power supply ? Kindly help


text:
The Newseum in Washington will offer free admission to visitors age 18 and under this summer.
The museum about journalism and the First Amendment announced Monday that it would waive its regular $12.95 admission fee for youth beginning Friday. The deal will run through Labor Day on Sept. 5.
WTOP Radio is sponsoring the ``Summer Fun Deal'' at the Newseum. The Newseum says it's meant to encourage families in D.C., Maryland and Virginia to visit the museum. Up to 10 children will be admitted free with each paid adult admission.
The Newseum is one of Washington's most expensive museums other times during the year. It charges $21.95 for adults, $17.95 for seniors and $12.95 for youth.
Copyright AP - Associated Press


text:
Ghost Train
Because of the overwhelming popularity of The Polar Express™, and our personnel limitations as an all-volunteer organization, the Ghost Train has been suspended for the forseeable future to allow us to run more Polar Express trips. We apologize to the many who will miss the Ghost Train, but hope that the ability for more guests to experience The Polar Express™ will make up for it.
We thank you for your support of the Monticello Railway Museum, and hope you continue to enjoy our exhibits, regular weekend train rides, and other events.


text:
yesterday dirt rag came in the mail
now that I am a subscriber for life there is never a lag between subscriptions
this is not this month's cover art
but... cross is where my mind is at right now
Dirt Rag pays 500 bucks for cover art
as if it would not be the coolest just to have your scribble or your scratch on the outside of this glossy mag
500 clams!?!??!
that is a whole lot of tires and a whole lot of tubes
or maybe a down payment on a bike
does your local shop do lay-away?
dirt rag
dirt rag at myspace


text:
2000-1999 GMC C2500 Truck A/C Compressor Bypass Pulley
Chevrolet GMC Air Conditioning Compressor Bypass Pulley Dorman$60.95Save 37%List: $96.95 Save: $36.00
Part #: 1AEPM00046
In stock orders ship same day when ordered by 2pm ET. Need your part faster? Choose expedited shipping at checkout.
Our team of auto experts work hard to provide you with the highest quality, direct fit replacement auto parts. We know not all auto parts are created equal. This is why we enforce a strict level of product standards and sourcing with every part.
Our goal is to exceed our customers' expectations every day. We are a team of passionate auto enthusiasts who are here to help. If you have a question about our parts or a repair contact us.


text:
The next time you're stuck indoors with the kids on a snow day,
The answer: get crafty with the kiddos!
Mix up some food coloring and water in spray bottles and paint the snow.
Whenever the weather outside is frightful, we bundle up
and head outside to make some installation art.
I get out the spray bottles and fill them with colored water
(e.g. Water + Food Coloring OR Kool-Aid)
What would I do without food coloring?
I give my pint-sized Picasso three bottles,
and the world becomes her canvas.
She even armed herself with spray bottles as she slid down the yard on her sled,
leaving colored stripes in her wake!
I love watching the Frog Princess mix colors in the snow.
When else does mom say, "Sure... paint the deck blue!"
The deck never looked more festive.
This is so much cooler than the other kind of yellow snow!


text:
Peasholm Park
Garden, free entry
Due to the current public health situation with regards to COVID-19 we recommend that you check with your travel and accommodation providers, and Public Health England before travelling. For the latest visitor information on COVID-19 please visit https://www.discoveryorkshirecoast.com/visitor-updates.aspx
Peasholm Park, voted 6th Best Park in the UK and 25th Best Park in the whole of Europe in the Trip Advisor Traveller's Choice Awards, is situated in Scarborough's North Bay and is a must-see for anyone visiting the Yorkshire Coast.
With a rich history and after having recently received a prestigious Green Flag Award, this oriental themed municipal park offers a beautiful system of streams and waterfalls, mini bridges and mystical gardens for the whole family to enjoy. The park is also home to the world famous Naval Warfare – a unique miniature sea battle that has been shown on television screens across the globe!
During the summer months, head down to Peasholm Boat Deck and choose from one of the many boats available to hire. Whether you fancy a row, a paddle or a pedal, there is a selection of brightly painted rowing boats, canoes and dragon themed pedaloes for you to choose from. For those who aren't feeling so energetic and would prefer to put their feet up, why not jump aboard the Swan Launch Princess and let someone else do the work?
The park also boasts a vast array of wildlife including an abundance of tame grey squirrels, ducks, swans and geese, whilst also being home to several Champion trees – that is, the tallest, widest and best examples of species in the country. With a wealth of arboreal interest at every turn, the trees found within Peasholm Park are not just of importance to Scarborough, or even to the UK; some of them are of interest to the world! In fact, at least one of the park's trees was previously thought to be extinct; Dickson's Golden Elm was thought to have died out during the 1970s when Dutch Elm Disease wiped out so many of England's lovely elms, however, the Glen at Peasholm Park has not just one example of this incredibly rare tree, it actually has two!
To celebrate the park's unique environment, the Friends of Peasholm Park have recently developed a Tree Trail leaflet, making it possible for many more people to visit the Glen and to recognise and be able to value what they can see right in front of them. The Tree Trail leaflet is free of charge and is available at the Boat Deck in the park itself, as well as at local Tourist Information Centres. You can also view and download a copy of the trail by clicking on the PDF 'More info' link at the top of this page, located underneath the images.
Strategically positioned in the middle of the lake, in front of the largest waterfall, sits Peasholm Bandstand. The Bandstand hosts Sunday afternoon band concerts, normally during July and August. The Bandstand also creates a truly wonderful outdoor venue for the famous Scarborough Spa Orchestra and special guests who host a special firework spectacular concert in August each year.
Peasholm Park also comes complete with a putting green, a café serving both hot and cold food, a refreshments kiosk, toilets, an 18-hole mini golf course and the iconic Peasholm Park Island. Once you've crossed the bridge, take a walk to the top of the island and discover the hidden oriental gardens, just be careful not to disturb the geese!
The park offers some fantastic scenery and provides many with a real escape from the busier areas of town. Nevertheless, Peasholm Park is only a 5 minute walk from some of the town's best attractions, including the long sweeping North Bay beach, Scarborough Sea Life Sanctuary, North Bay Miniature Railway and of course Europe's largest open air theatre, the Scarborough OAT.
Peasholm Park
4 April – 1 November
Week 4 April – 19 April (Easter holidays)
Weekends only to 23 May
23 May – 31 May (Whit holidays)
Daily 1 June – 6 September
Weekends only until 24 October
24 October – 1 November (Half term)
Same as Boating
Naval Warfare Show (total 30 shows)
25 & 27 June (6pm start)
July/August - Mondays, Thursdays and Saturdays
until 31 August
(All 3pm start)
Sunday Brass/Silver Bands (Free)
Opening Details
Open all the time
Open all year, daily. During events in the park, access may be limited, or a charge may occur.
Free entry
Charges apply for boating, mini golf, putting and the Naval Warfare Battle.
Events at this Venue
|Thu 25 Jun
|Naval Warfare
|Mon 6 Jul
|Naval Warfare
|Mon 13 Jul
|Naval Warfare
|Mon 20 Jul
|Naval Warfare
|Mon 27 Jul
|Naval Warfare
|Mon 3 Aug
|Naval Warfare
Tourism Bureau
North Bay,
North Yorkshire,
By Road:
On entering Scarborough follow signs for the North Bay. Peasholm Park is situated opposite the roundabout leading onto the waterfront.
: 1 mile from Scarborough station
- Coach parties accepted
- Disabled toilets
- On-site catering
- On-site light refreshments
- Picnic site
- Public toilets
- Accepts groups
- Children welcome
- Disabled access
- Dogs accepted


text:
Solvar Jewelry Silver Claddagh Ring With Gemstones $69.95
Sterling Silver Claddagh Ring With Gemstones. This sterling silver Claddagh ring adds colour to any figure with the help of small synthetic emerald and cubic zirconia stones. Made in Dublin, Ireland.
The story of the Claddagh goes back to the 1600's when the first ring was made in Claddagh on the edge of Galway City. By tradition it is taken to signify the wish that love and friendship should reign supreme. Two hands cradling a crowned heart: The Heart for Love, the Hands for Friendship, the Crown for Loyalty.
It is equally popular with men and women. Wear the ring on the right hand, the crown turned inward, the heart is open. Wear the ring on the right hand, the crown turned outward, love is being considered. Wear the ring on the left hand, the crown turned outward, two hearts are joined.
If you do not see your size don't hesitate to either call 651-222-5151 or email email@example.com and we'll be sure to see if we can order it for you.


text:
National Signing Day—the day when college football fans spend a lot of time waiting for teenagers to put on hats—is well underway. It's already treated us to some excitement and sparked a necessary, thoughtful discussion.
We've rounded up two of the sharpest college football writers in the land to answer all of your questions about the day's goings-on. Spencer Hall, who writes about college football at Every Day Should Be Saturday, and SBNation Recruiting's Bud Elliott are waiting for you in the discussion section. Get to it!
Update (4:10 p.m.): OK, Spencer and Bud are done. Thanks, guys.


text:
I just loved the idea of this soup, but we both found it to be a bit too tangy. Perhaps the size of the lemons? Maybe only one lemon next time. A very healthy soup.
Tabbouleh soup
28 ounces vegetable stock
1 tablespoon extra virgin olive oil, and extra for drizzling before serving
2 cloves garlic, minced
2 large green onions, green and white parts chopped
1 large tomato, de-seeded and diced
juice of 2 large lemons
1 cup chopped fresh parsley, halved into two portions
1/2 cup chopped fresh mint
kosher salt and freshly ground black pepper, to taste
1 cup bulghur
For the bulghur: in a large bowl, combine 1 cup dried bulghur with enough very hot water to cover (about 2 cups). Allow to sit until tender and the liquid has been absorbed. Drain through a fine mesh strainer, cover and set aside.
For the soup: in a medium stock pot, heat up olive oil. Add garlic and green onions and saute for 1 – 2 minutes. Don't let the garlic brown. Add vegetable stock, mint, half of the chopped parsley, and lemon juice. Simmer for 15 minutes. Taste and season with salt and pepper to your liking. Stir in diced tomatoes and allow to cook for another minute or two.
To serve: place a large spoonful of the bulghur in the bottom of an empty soup bowl. Ladle the warm broth over the grains. Sprinkle the soup with the remainder of the fresh chopped parsley and drizzle with a little bit of extra virgin olive oil for garnish. Serve immediately. Makes 4 servings.


text:
|Gold Spa & Fitness Club
The Splendor of Silence, Surrender and Serenity.
GOLD Spa and fitness Club is located on the 3 rd floor of The Mall of Lahore. It is a health club like no other in the entire country. GOLD offers its clients a large variety of health related services. The GOLD Gym equipment is by 'Life Fitness', the leading brand in training equipment, and the GOLD Gym trainers are highly qualified individuals with years of experience. The Spa at GOLD offers a wide range of massages, scrubs and other services and the masseuses are internationally qualified and experienced professionals. The GOLD Club also offers a Salon that is being operated by Khawar Riaz and his team of experts.
• Traditional Japanese Shiatsu
• Green Tea Splash
Other Features:
• Scalp Massage
3rd floor at Mall Of Lahore,
For details check out our Facebook page Gold Spa & Fitness club