Provides the status of all clusters visible to this AWS account. Allows you to filter the list of clusters based on certain criteria; for example, filtering by cluster creation date and time or by status. This call returns a maximum of 50 clusters per call, but returns a marker to track the paging of the cluster list across multiple list-clusters calls.
See also: AWS API Documentation
list-clusters is a paginated operation. Multiple API calls may be issued in order to retrieve the entire data set of results. You can disable pagination by providing the --no-paginate argument. When using --output text and the --query argument on a paginated response, the --query argument must extract data from the results of the following query expressions: Clusters
list-clusters
[--created-after <value>]
[--created-before <value>]
[--cluster-states <value>]
[--active | --terminated | --failed]
[--cli-input-json <value>]
[--starting-token <value>]
[--max-items <value>]
[--generate-cli-skeleton <value>]
The creation date and time beginning value filter for listing clusters. For example, 2014-07-15T00:01:30.
The creation date and time end value filter for listing clusters. For example, 2014-07-15T00:01:30.
The cluster state filters to apply when listing clusters.
Syntax:"string" "string" ...
Where valid values are:
- STARTING
- BOOTSTRAPPING
- RUNNING
- WAITING
- TERMINATING
- TERMINATED
- TERMINATED_WITH_ERRORS
--active | --terminated | --failed (boolean)
Shortcut option for --cluster-states.
- --active filters clusters in 'STARTING','BOOTSTRAPPING','RUNNING','WAITING', or 'TERMINATING' states.
- --terminated filters clusters in 'TERMINATED' state.
- --failed filters clusters in 'TERMINATED_WITH_ERRORS' state.
--cli-input-json (string) Performs service operation based on the JSON string provided. The JSON string follows the format provided by --generate-cli-skeleton. If other arguments are provided on the command line, the CLI values will override the JSON-provided values.
A token to specify where to start paginating. This is the NextToken from a previously truncated response.
The total number of items to return. If the total number of items available is more than the value specified in max-items then a NextToken will be provided in the output that you can use to resume pagination. This NextToken response element should not be used directly outside of the AWS CLI.
--generate-cli-skeleton (string) Prints a JSON skeleton to standard output without sending an API request. If provided with no value or the value input, prints a sample input JSON that can be used as an argument for --cli-input-json. If provided with the value output, it validates the command inputs and returns a sample output JSON for that command.
The following command lists all active EMR clusters in the current region:
aws emr list-clusters --active
Output:
{
"Clusters": [
{
"Status": {
"Timeline": {
"ReadyDateTime":<PHONE_NUMBER>.353,
"CreationDateTime":<PHONE_NUMBER>.596
},
"State": "WAITING",
"StateChangeReason": {
"Message": "Waiting after step completed"
}
},
"NormalizedInstanceHours": 6,
"Id": "j-3SD91U2E1L2QX",
"Name": "my-cluster"
}
]
}
Clusters -> (list)
The list of clusters for the account based on the given filters.
(structure)
The summary description of the cluster.
Id -> (string)
The unique identifier for the cluster.Name -> (string)
The name of the cluster.Status -> (structure)
The details about the current status of the cluster.
State -> (string)
The current state of the cluster.StateChangeReason -> (structure)
The reason for the cluster status change.
Code -> (string)
The programmatic code for the state change reason.Message -> (string)
The descriptive message for the state change reason.Timeline -> (structure)
A timeline that represents the status of a cluster over the lifetime of the cluster.
CreationDateTime -> (timestamp)
The creation date and time of the cluster.ReadyDateTime -> (timestamp)
The date and time when the cluster was ready to execute steps.EndDateTime -> (timestamp)
The date and time when the cluster was terminated.NormalizedInstanceHours -> (integer)
An approximation of the cost of the cluster, represented in m1.small/hours. This value is incremented one time for every hour an m1.small instance runs. Larger instances are weighted more, so an EC2 instance that is roughly four times more expensive would result in the normalized instance hours being incremented by four. This result is only an approximation and does not reflect the actual billing rate.
Marker -> (string)
The pagination token that indicates the next set of results to retrieve.


No pojo fidling when the database can do the major parts of the work.
This project uses out of the box PostgreSQL functionality. The demo project is built with the standard jee (version 8, but 7 would do) API. The demo runs on payara5 without modification.
[PostgreSQL](https://www.postgresql.org/) has very powerfull json(b) functionality built in. This project takes advantage of this by having postgresql do the heavy lifting of assembling query results into json, or taking json documents apart to do modifying operation such as insert (post in rest) and update (put in rest).
This makes the standard CRUD operations through a rest api a no-brainer.
As an example:
@Stateless
@Path( "students" ) (1)
public class StudentsService extends FantysCrudService {
@Override
protected String getRelName() {
return "students"; (2)
}
}
| 1 | Specify the endpoint and |
| 2 | the table name. |
Endpoint and table name often match.
With the appropriate imports will make you a full crud service for a students table, and the mentioned "self coded" FantysCrudService also contains next to nothing:
abstract class FantysCrudService extends AbstractPostRestService {
@Resource( lookup = "jdbc/fantys" )
void setDataSource( DataSource ds ) {
this.dataSource = ds;
}
}
The interface to the heavy lifting delegating code (the delegate being the postgres server)
is in the AbstractPostRestService
provided by this project.
Yes, that is all the code in your own implementation.
To get the demo running, you must feed your postgres server with the data definition and initial data in the db folder.
For convenience a …/db/loaddb.sh
script is provided, which should work on a decent OS-X or Linux with postgresql and psql (the postgres cli) installed.
Rest and transactions
There is no proper transaction model in rest. This is why transferring documents instead of records is popular, which may have been the cause of the document-bases variant of the nosql culture.
Let’s specify what I mean with transaction in this context. A transaction is an operation that involves modifications on more then one record in one table or multiple modifications across several tables, where modification is either insert, update or delete on any of the tables involved.
Normal sql does allow transactions quite easily, by means of a transactional block, in which the last statement of the try-catch block (just before the catch) is
a connection.commit();
or a transaction.rollback();
inside the catch clause on any trouble.
Rest has no concept of try-catch and is state-less, which the try-catch certainly is not. The trick is to clump all data for the operation into one document. This could be xml or json. We chose json in this implementation.
Now it is up to the receiver to persist the document. The nosql solution is easy and therefore enticing: Shove the thing into the database as is, and be done with it. Mongodb will sort it out.
In this solution, we opted to have postgresql to go the extra mile, so the effect for the business programmer is the same, but with the benefit of still having a proper ACID compliant sql database with all its other tried and true features.
For each document-type you need to provide a sql statement which uses CTE magic to disassemble the document and put the parts in the appropriate table.
The example is a exam result document of a university in a far away galaxy. Its structure is like this:
…
-- one sql parameter, the json document
with js as (
select cast(? as jsonb) j ),
-- get the teachers array out as virtual table, then aggregate into a sql array
teach as (select array_agg(t) tt from (select jsonb_array_elements_text(j->'examiners' ) t from js) t),
-- get and insert the exam meta data like event_date, event_name and the teachers from the json and the previous teach 'table'
meta as (insert into exam_events (event_name,event_date,examiners) select j->>'event_name' as event_name,
cast(j->>'event_date' as date) as event_date, tt as examiners from js cross join teach returning *),
-- get the data from the student number,grade json-array as a two column table. sresult is a table definition with exactly those columns
res1 as ( select snummer,grade from js,jsonb_populate_recordset(null::sresult, js.j->'results') ),
-- now do the insert results combine with a reference to the exam_events table (three columns).
res2 as ( insert into exam_results (exam_event_id,snummer,grade)
select exam_event_id, res1.snummer, res1.grade from res1,meta
returning * ),
-- produce a result but pack it as a json array, because that is what the client likes
res3 as ( select snummer,lastname,firstname,tussenvoegsel,email,student_class,
event_name, event_date,examiners, grade, exam_result_id
from students join res2 using(snummer) join meta using(exam_event_id))
-- wrap as json array.
select array_to_json(array_agg(o),true) from res3 o;


<?php namespace CodeIgniter\Events; use Config\Services; /** * CodeIgniter * * An open source application development framework for PHP * * This content is released under the MIT License (MIT) * * Copyright (c) 2014-2019 British Columbia Institute of Technology * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. * * @package CodeIgniter * @author CodeIgniter Dev Team * @copyright 2014-2019 British Columbia Institute of Technology (https://bcit.ca/) * @license https://opensource.org/licenses/MIT MIT License * @link https://codeigniter.com * @since Version 3.0.0 * @filesource */ define('EVENT_PRIORITY_LOW', 200); define('EVENT_PRIORITY_NORMAL', 100); define('EVENT_PRIORITY_HIGH', 10); /** * Events */ class Events { /** * The list of listeners. * * @var array */ protected static $listeners = []; /** * Flag to let us know if we've read from the Config file(s) * and have all of the defined events. * * @var boolean */ protected static $initialized = false; /** * If true, events will not actually be fired. * Useful during testing. * * @var boolean */ protected static $simulate = false; /** * Stores information about the events * for display in the debug toolbar. * * @var array */ protected static $performanceLog = []; /** * A list of found files. * * @var array */ protected static $files = []; //-------------------------------------------------------------------- /** * Ensures that we have a events file ready. */ public static function initialize() { // Don't overwrite anything.... if (static::$initialized) { return; } $config = config('Modules'); $files = [APPPATH . 'Config/Events.php']; if ($config->shouldDiscover('events')) { $locator = Services::locator(); $files = $locator->search('Config/Events.php'); } static::$files = $files; foreach (static::$files as $file) { if (is_file($file)) { include $file; } } static::$initialized = true; } //-------------------------------------------------------------------- /** * Registers an action to happen on an event. The action can be any sort * of callable: * * Events::on('create', 'myFunction'); // procedural function * Events::on('create', ['myClass', 'myMethod']); // Class::method * Events::on('create', [$myInstance, 'myMethod']); // Method on an existing instance * Events::on('create', function() {}); // Closure * * @param $event_name * @param callable $callback * @param integer $priority */ public static function on($event_name, callable $callback, $priority = EVENT_PRIORITY_NORMAL) { if (! isset(static::$listeners[$event_name])) { static::$listeners[$event_name] = [ true, // If there's only 1 item, it's sorted. [$priority], [$callback], ]; } else { static::$listeners[$event_name][0] = false; // Not sorted static::$listeners[$event_name][1][] = $priority; static::$listeners[$event_name][2][] = $callback; } } //-------------------------------------------------------------------- /** * Runs through all subscribed methods running them one at a time, * until either: * a) All subscribers have finished or * b) a method returns false, at which point execution of subscribers stops. * * @param $eventName * @param $arguments * * @return boolean */ public static function trigger($eventName, ...$arguments): bool { // Read in our Config/events file so that we have them all! if (! static::$initialized) { static::initialize(); } $listeners = static::listeners($eventName); foreach ($listeners as $listener) { $start = microtime(true); $result = static::$simulate === false ? $listener(...$arguments) : true; if (CI_DEBUG) { static::$performanceLog[] = [ 'start' => $start, 'end' => microtime(true), 'event' => strtolower($eventName), ]; } if ($result === false) { return false; } } return true; } //-------------------------------------------------------------------- /** * Returns an array of listeners for a single event. They are * sorted by priority. * * If the listener could not be found, returns FALSE, or TRUE if * it was removed. * * @param $event_name * * @return array */ public static function listeners($event_name): array { if (! isset(static::$listeners[$event_name])) { return []; } // The list is not sorted if (! static::$listeners[$event_name][0]) { // Sort it! array_multisort(static::$listeners[$event_name][1], SORT_NUMERIC, static::$listeners[$event_name][2]); // Mark it as sorted already! static::$listeners[$event_name][0] = true; } return static::$listeners[$event_name][2]; } //-------------------------------------------------------------------- /** * Removes a single listener from an event. * * If the listener couldn't be found, returns FALSE, else TRUE if * it was removed. * * @param $event_name * @param callable $listener * * @return boolean */ public static function removeListener($event_name, callable $listener): bool { if (! isset(static::$listeners[$event_name])) { return false; } foreach (static::$listeners[$event_name][2] as $index => $check) { if ($check === $listener) { unset(static::$listeners[$event_name][1][$index]); unset(static::$listeners[$event_name][2][$index]); return true; } } return false; } //-------------------------------------------------------------------- /** * Removes all listeners. * * If the event_name is specified, only listeners for that event will be * removed, otherwise all listeners for all events are removed. * * @param null $event_name */ public static function removeAllListeners($event_name = null) { if (! is_null($event_name)) { unset(static::$listeners[$event_name]); } else { static::$listeners = []; } } //-------------------------------------------------------------------- /** * Sets the path to the file that routes are read from. * * @param array $files */ public static function setFiles(array $files) { static::$files = $files; } //-------------------------------------------------------------------- /** * Returns the files that were found/loaded during this request. * * @return mixed */ public function getFiles() { return static::$files; } //-------------------------------------------------------------------- /** * Turns simulation on or off. When on, events will not be triggered, * simply logged. Useful during testing when you don't actually want * the tests to run. * * @param boolean $choice */ public static function simulate(bool $choice = true) { static::$simulate = $choice; } //-------------------------------------------------------------------- /** * Getter for the performance log records. * * @return array */ public static function getPerformanceLogs() { return static::$performanceLog; } //-------------------------------------------------------------------- }


Common configurations for both standalone and grouped containers
{% for config, val in {
"API URL": ("docker_api_url", "Docker API to connect to"),
"Credentials": ("docker_credentials", "docker.io username and password, separated by ':'. useful for private images"),
"Swarm Nodes": ("docker_swarm_nodes", "Will pick up one from it, You should set your node with label name=windows-* or name=linux-*. Separated by commas."),
}.items() %}
{% set value = get_config('whale:' + val[0]) %}
{% endfor %}
{% set use_ssl = get_config('whale:docker_use_ssl') %}
Standalone Containers
Typical challenges. Under most circumstances you only need to set these.
{% for config, val in {
"Auto Connect Network": ("docker_auto_connect_network", "The network connected for single-containers. It's usually the same network as the frpc is in."),
"Dns Setting": ("docker_dns", "Decide which dns will be used in container network."),
}.items() %}
{% set value = get_config('whale:' + val[0]) %}
{% endfor %}
Grouped Containers
Designed for multi-container challenges
{% for config, val in {
"Auto Connect Containers": ("docker_auto_connect_containers","Decide which container will be connected to multi-container-network automatically. Separated by commas."),
"Multi-Container Network Subnet": ("docker_subnet", "Subnet which will be used by auto created networks for multi-container challenges."),
"Multi-Container Network Subnet New Prefix": ("docker_subnet_new_prefix", "Prefix for auto created network.")
}.items() %}
{% set value = get_config('whale:' + val[0]) %}


Sometimes, very cruelly, a disgusting name was given to an individual.
Even names of towns did not escape this naming pattern. That is how “Cagayan” was made into a place name. In Spanish cagar means “to poo.” Cagayan means the place where to do your “number two.” Philippine American Writers and Artists President Edwin Lozada tells about his friend, a physician, whose name happens to be Dr. Cagar, or Dr. Shit. His Hispanic patients don’t want him treating their ailments.
The given surname changed when the kid grew older or if another signpost event occurred in his lifetime. Fathers, sons, brothers who belonged to the same immediate family tree had different surnames. Tracing one’s genealogy became a daunting endeavor.


| Full name | |
|---|---|
|
|
|
No registered users [[params.q]] |
|
| [[entry.full_name]] | [[entry.created_at | relativeDate]] |
| Subscriber | Plan | Since | Ends At | Description |
|---|---|---|---|---|
| Plan | Subscriber | Since | Ends At | Description |
| Since | Subscriber | Plan | Ends At | Description |
| Ends At | Subscriber | Plan | Since | Description |
|
|
||||
No subscribers with filter: '[[params.q]]' |
||||
| [[entry.organization.printable_name]] | ||||
| [[entry.plan.title]] | [[entry.created_at | formatDate]] | [[entry.ends_at | formatDate]] | [[entry.description]] | |
| [[entry.plan.title]] | ||||
| [[entry.organization.printable_name]] | [[entry.created_at | formatDate]] | [[entry.ends_at | formatDate]] | [[entry.description]] | |
| [[entry.created_at | formatDate]] | ||||
| [[entry.organization.printable_name]] | [[entry.plan.title]] | [[entry.ends_at | formatDate]] | [[entry.description]] | |
| [[entry.ends_at | formatDate]] | ||||
| [[entry.organization.printable_name]] | [[entry.plan.title]] | [[entry.created_at | formatDate]] | [[entry.description]] |


2019
2016
2015
Code of Conduct
{{ site.description }}
Best Practices | Advanced Case Studies | The Future of Jekyll
Register free for 2020
{% include social/share-buttons.html %}
{{ content}}


amazon-chime-sdk
/
com.amazonaws.services.chime.sdk.meetings.analytics
/
MeetingHistoryEventName
/
videoInputSelected
videoInputSelected
videoInputSelected
The camera was selected.


Please dial toll free
Australia 1 800 147 803
New Zealand 0800 782 548
Please dial toll free
Hong Kong 800 96 2541
Japan 0120 500 174
Singapore 65 6735 7575
Thailand 001 800 65 6544
Beijing 10<PHONE_NUMBER>
Please dial toll free
Brazil - Sao Paulo 0800 119 131
Chile 800 530 061
Colombia (57-1) 294 9570
Mexico<PHONE_NUMBER>
Venezuela 0800 100 6814
Please dial toll free
Hong Kong 800 96 2541
Japan 0120 500 174
Singapore 65 6735 7575
Thailand 001 800 65 6544
Beijing 10<PHONE_NUMBER>
Please dial toll free
France 0800 90 95 86
United Kingdom 0 800 41 47 4 1,
Please dial toll free 00 800 86 86 8086 for
Austria
Barcelona
Belgium
Denmark
Finland
Germany
Ireland
Italy
Madrid
Netherlands
Norway
Portugal
Sweden
Switzerland
The popular Restaurant Charlotte with its attentive staff, warm décor and soaring windows is the perfect spot for breakfast, lunch or dinner.
Our award-winning Chef is always a crowd pleaser with his fresh European seasonal fare.
Our proximity to the inner city shows also makes this a hot spot for pre/post theater dining.
After a long day, relax and unwind in the Charlotte Bar and Lounge, or for a light meal at anytime, try our chef selected "Wine & Cheese Whenever" plate.
Take advantage of our delectable In-room Dining, available from 6:00AM - 11:30PM
Breakfast 07:00 AM - 10:30 AM
Lunch 12:00 PM - 02:30 PM
Dinner 05:00 PM - 10:30 PM


Type : {{showEvent.eventtype}}
Start : {{showEvent.startdate}} at {{showEvent.starttime}}
End : {{showEvent.enddate}} at {{showEvent.endtime}}
Location : {{showEvent.address}}, {{showEvent.city}}, {{showEvent.state}}
Guest : {{showEvent.guestlistJSON}}
Notes : {{showEvent.notes}}


pip_services3_redis.lock.RedisLock module¶
-
class
pip_services3_redis.lock.RedisLock.
RedisLock
¶ Bases:
pip_services3_components.lock.Lock.Lock
,pip_services3_commons.config.IConfigurable.IConfigurable
,pip_services3_commons.refer.IReferenceable.IReferenceable
,pip_services3_commons.run.IOpenable.IOpenable
Distributed lock that is implemented based on Redis in-memory database.
### Configuration parameters ###
- connection(s):
discovery_key: (optional) a key to retrieve the connection from
IDiscovery
host: host name or IP address
port: port number
uri: resource URI or connection string with all parameters in it
- credential(s):
store_key: key to retrieve parameters from credential store
username: user name (currently is not used)
password: user password
- options:
retry_timeout: timeout in milliseconds to retry lock acquisition. (Default: 100)
retries: number of retries (default: 3)
### References ###
*:discovery:*:*:1.0 (optional)
IDiscovery
services to resolve connection*:credential-store:*:*:1.0 (optional) Credential stores to resolve credential
Example:
lock = RedisLock() lock.configure(ConfigParams.from_tuples( "host", "localhost", "port", 6379 )) lock.open("123") lock.acquire_lock("123", "key1", 3000, 1000) try: # Processing... pass finally: lock.release_lock("123", "key1")
-
close
(correlation_id: Optional[str])¶ Closes component and frees used resources.
- Parameters
correlation_id – (optional) transaction id to trace execution through call chain.
-
configure
(config: pip_services3_commons.config.ConfigParams.ConfigParams)¶ Configures component by passing configuration parameters.
- Parameters
config – configuration parameters to be set.
-
is_open
() → bool¶ Checks if the component is opened.
- Returns
true if the component has been opened and false otherwise.
-
open
(correlation_id: Optional[str])¶ Opens the component.
- Parameters
correlation_id – (optional) transaction id to trace execution through call chain.
-
release_lock
(correlation_id: Optional[str], key: str)¶ Releases prevously acquired lock by its key.
- Parameters
correlation_id – (optional) transaction id to trace execution through call chain.
key – a unique lock key to release.
-
set_references
(references: pip_services3_commons.refer.IReferences.IReferences)¶ Sets references to dependent components.
- Parameters
references – references to locate the component dependencies.
-
try_acquire_lock
(correlation_id: Optional[str], key: str, ttl: int) → bool¶ Makes a single attempt to acquire a lock by its key. It returns immediately a positive or negative result.
- Parameters
correlation_id – (optional) transaction id to trace execution through call chain.
key – a unique lock key to acquire.
ttl – a lock timeout (time to live) in milliseconds.
- Returns
true if lock was successfully acquired and false otherwise.


JenScript is a pure JavaScript SVG library framework to make interactive JavaScript charts. API provides a complete charting solution for your Web Application and a plugin developer API to extend core features. It provides advanced features you've come to expect with minimal integration efforts. Framework gives developers a very flexible toolkit solution for a wide variety of javascript chart and data visualization needs. The API can be used in many businesses such as reporting, health, finance or science and technology softwares.
JenScript JS Framework provides data oriented plug-ins for most of commons charts components: Curve or Line, Plot or Scatter, Area, Stacked Area, Bar Symbol, Stacked Bar Symbol, Point Symbol,Stock, Pie, Pie 3D, Donut2D, Scan, Legend, Cloud points, Real time, Map GeoJSON.You can easily extend and override components to meet your needs.
JenScript JS Framework provides tool oriented plug-ins for most of commons transforms and user/chart interaction: Zoom Box, Zoom Lens, Zoom Wheel, Zoom Percent, Translate and Marker. This plug-ins generally offers nice transition during process operations and nice widgets and popup context to lock tool, launch commands and perform other user intents.
JS Feature Documentation : Browse features to get the component description and JenScript catalog view sources.
Javascript Charts driven development by online chart samples


_global:any = (typeof window !== 'undefined') ? window : global as any
Functions
debounce
debounce(func: Function, wait: number, immediate?: boolean): Function
Returns a function, that, as long as it continues to be invoked, will not
be triggered. The function will be called after it stops being called for
N milliseconds. If immediate is passed, trigger the function on the
leading edge, instead of the trailing.
Returns a function, that, as long as it continues to be invoked, will not be triggered. The function will be called after it stops being called for N milliseconds. If
immediate
is passed, trigger the function on the leading edge, instead of the trailing.


POST https://apis.wso2.com/api/am/store/v1/me/change-password
Using this operation, logged-in user can change his/her password.
apim:subscribe
| Type | Name | Description | Schema | Default |
|---|---|---|---|---|
| Body |
body required |
Current and new password of the user |
CurrentAndNewPasswords (CurrentAndNewPasswords) |
| HTTP Code | Description | Schema |
|---|---|---|
200 |
OK. User password changed successfully |
|
400 |
Bad Request. Invalid request or validation error |
Error |


Preparation time
over 2 hours
Cooking time
30 mins to 1 hour
Serves
Makes 1 loaf
Dietary
Don’t imagine a bread machine is a must-have for stress-free baking. With a little effort and barely any kneading, you can conjure up an impressive crusty white loaf.
Put the flour, yeast and salt in a bowl, pour in the warm water and stir everything together into a sticky shaggy mass.
Scrape the dough from your hands, cover the bowl with a cloth and leave for 10 minutes.
Lightly oil a 30cm/12in area of the work surface and your hands. Tilt the bowl and ease the dough out onto the oiled surface without too much pulling and teasing (a scraper may help). Lightly oil the inside of the bowl as well, to prevent any sticking later. Take the edge of the dough furthest from you in one hand and with minimal pulling, simply fold it over, to meet the edge nearest to you. Press the heel of your other hand down onto and into the dough, stretching it away from you by 5-10cm/2-4in.
Give the dough a clockwise quarter-turn and repeat the "fold towards you, then push and gently stretch away from you" action. Do this turning, folding and pushing action, no more than 8-10 times, then return the dough to the bowl. You don't want to flatten or tear the dough, or handle it roughly: the whole action should be quite gentle and measured. Don't be tempted to add more flour, even if the dough seems wet; that's exactly as it should be. Repeat this light kneading twice at 10-minute intervals, and finally return the dough to the bowl and leave it to prove for 45 minutes.
Wipe the work surface, dust it with flour then pat the dough into an oval. Roll it up tightly, give each end a pinch to keep it neat then place the dough seam-side down on a floured tray, cover with a cloth and leave until the dough has increased in size by a half – about 45 minutes.
Meanwhile preheat the oven to 220C/425F/Gas 7 (fan 200C).
Flour the top of the dough, cut a slash down the middle and bake for 35–40 minutes.


This is a sample paragraph with nothing special.
Small
Large
List
Add Element
Delete Element
List
Add Element
Delete Element
Course Form
Your Name
Registration Number
Semester
Course Name
Course ID
Credit Hours
Course Instructor
Add new row
1
2


We got networks!
- engineer seamless networks
- morph out-of-the-box portals
- integrate bleeding-edge systems
- target global markets
- integrate proactive infrastructures
- target one-to-one interfaces
- incentivize cutting-edge platforms
- transform holistic initiatives
- synergize dot-com paradigms
- architect bleeding-edge systems


Code¶
The cmislib.model
Module¶
When working with the repository, the first thing you need to do is grab an instance of cmislib.CmisClient
, passing it the repository endpoint URL, username, and password.
For example, in Alfresco 4.2 and higher, the repository endpoint for CMIS 1.1 and the Atom Pub binding is ‘http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/atom‘. Earlier versions have different URLs. The default username and password are typically ‘admin’ and ‘admin’.
So, to connect to an Alfresco server running on localhost, you would use:
>>> cmisClient = cmislib.CmisClient('http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/atom', 'admin', 'admin')
From there you can get the default repository...
>>> repo = cmisClient.defaultRepository
An Alfresco server has a single repository. Servers from other vendors may have multiple repositories. In those cases, you can get a specific repository if you know the repository ID.
>>> repo = cmisClient.getRepository('83beb297-a6fa-4ac5-844b-98c871c0eea9')
Once you have that, you’re off to the races. Use the cmislib.Repository
class to create new cmislib.Folder
and cmislib.Document
objects, perform searches, etc.
The model module contains the CmisClient object, which is responsible for keeping track of connection information. The name ‘model’ is no longer really appropriate, but it is kept for backwards compatibility.
-
class
cmislib.model.
CmisClient
(repositoryUrl, username, password, **kwargs)¶ Handles all communication with the CMIS provider.
-
defaultRepository
¶ There does not appear to be anything in the spec that identifies a repository as being the default, so we’ll define it to be the first one in the list.
>>> repo = client.getDefaultRepository() >>> repo.getRepositoryId() u'83beb297-a6fa-4ac5-844b-98c871c0eea9'
-
getDefaultRepository
()¶ There does not appear to be anything in the spec that identifies a repository as being the default, so we’ll define it to be the first one in the list.
>>> repo = client.getDefaultRepository() >>> repo.getRepositoryId() u'83beb297-a6fa-4ac5-844b-98c871c0eea9'
-
getRepositories
()¶ Returns a dict of high-level info about the repositories available at this service. The dict contains entries for ‘repositoryId’ and ‘repositoryName’.
>>> client.getRepositories() [{'repositoryName': u'Main Repository', 'repositoryId': u'83beb297-a6fa-4ac5-844b-98c871c0eea9'}]
-
getRepository
(repositoryId)¶ Returns the repository identified by the specified repositoryId.
>>> repo = client.getRepository('83beb297-a6fa-4ac5-844b-98c871c0eea9') >>> repo.getRepositoryName() u'Main Repository'
-
repositories
¶ Returns a dict of high-level info about the repositories available at this service. The dict contains entries for ‘repositoryId’ and ‘repositoryName’.
>>> client.getRepositories() [{'repositoryName': u'Main Repository', 'repositoryId': u'83beb297-a6fa-4ac5-844b-98c871c0eea9'}]
-
The cmislib.domain
Module¶
These are the generic domain objects that establish the interface to the cmislib API. Regardless of which actual binding you use (AtomPub or Browser), you will work with these objects.
This module contains the domain objects used to work with a CMIS provider.
-
class
cmislib.domain.
ACE
(principalId=None, permissions=None, direct=None)¶ Represents an individual Access Control Entry.
-
copy
()¶ return a deep copy of the ace instance
-
direct
¶ Getter for direct
-
permissions
¶ Getter for permissions
-
principalId
¶ Getter for principalId
-
-
class
cmislib.domain.
ACL
¶ Represents the Access Control List for an object.
-
addEntry
(principalId, access, direct)¶ Adds an
ACE
entry to the ACL.>>> acl = folder.getACL() >>> acl.addEntry('jpotts', 'cmis:read', 'true') >>> acl.addEntry('jsmith', 'cmis:write', 'true') >>> acl.getEntries() {u'GROUP_EVERYONE': <cmislib.atompub.binding.AtomPubACE object at 0x100731410>, u'jdoe': <cmislib.atompub.binding.AtomPubACE object at 0x100731150>, 'jpotts': <cmislib.atompub.binding.AtomPubACE object at 0x1005a22d0>, 'jsmith': <cmislib.atompub.binding.AtomPubACE object at 0x1005a2210>}
-
clearEntries
()¶ Clears all
ACE
entries from the ACL and removes the internal XML representation of the ACL.>>> acl = ACL() >>> acl.addEntry(ACE('jsmith', 'cmis:write', 'true')) >>> acl.addEntry(ACE('jpotts', 'cmis:write', 'true')) >>> acl.entries {'jpotts': <cmislib.atompub.binding.AtomPubACE object at 0x1012c7310>, 'jsmith': <cmislib.atompub.binding.AtomPubACE object at 0x100528490>} >>> acl.getXmlDoc() <xml.dom.minidom.Document instance at 0x1012cbb90> >>> acl.clearEntries() >>> acl.entries >>> acl.getXmlDoc()
-
entries
¶ Returns a dictionary of
ACE
objects for each Access Control Entry in the ACL. The key value is the ACE principalid.>>> acl = ACL() >>> acl.addEntry(ACE('jsmith', 'cmis:write', 'true')) >>> acl.addEntry(ACE('jpotts', 'cmis:write', 'true')) >>> for ace in acl.entries.values(): ... print 'principal:%s has the following permissions...' % ace.principalId ... for perm in ace.permissions: ... print perm ... principal:jpotts has the following permissions... cmis:write principal:jsmith has the following permissions... cmis:write
-
getEntries
()¶ Returns a dictionary of
ACE
objects for each Access Control Entry in the ACL. The key value is the ACE principalid.>>> acl = ACL() >>> acl.addEntry(ACE('jsmith', 'cmis:write', 'true')) >>> acl.addEntry(ACE('jpotts', 'cmis:write', 'true')) >>> for ace in acl.entries.values(): ... print 'principal:%s has the following permissions...' % ace.principalId ... for perm in ace.permissions: ... print perm ... principal:jpotts has the following permissions... cmis:write principal:jsmith has the following permissions... cmis:write
-
removeEntry
(principalId)¶ Removes the
ACE
entry given a specific principalId.>>> acl.getEntries() {u'GROUP_EVERYONE': <cmislib.atompub.binding.AtomPubACE object at 0x100731410>, u'jdoe': <cmislib.atompub.binding.AtomPubACE object at 0x100731150>, 'jpotts': <cmislib.atompub.binding.AtomPubACE object at 0x1005a22d0>, 'jsmith': <cmislib.atompub.binding.AtomPubACE object at 0x1005a2210>} >>> acl.removeEntry('jsmith') >>> acl.getEntries() {u'GROUP_EVERYONE': <cmislib.atompub.binding.AtomPubACE object at 0x100731410>, u'jdoe': <cmislib.atompub.binding.AtomPubACE object at 0x100731150>, 'jpotts': <cmislib.atompub.binding.AtomPubACE object at 0x1005a22d0>}
-
-
class
cmislib.domain.
ChangeEntry
¶ Represents a change log entry. Retrieve a list of change entries via
Repository.getContentChanges()
.>>> for changeEntry in rs: ... changeEntry.objectId ... changeEntry.id ... changeEntry.changeType ... changeEntry.changeTime ... 'workspace://SpacesStore/0e2dc775-16b7-4634-9e54-2417a196829b' u'urn:uuid:0e2dc775-16b7-4634-9e54-2417a196829b' u'created' datetime.datetime(2010, 2, 11, 12, 55, 14) 'workspace://SpacesStore/bd768f9f-99a7-4033-828d-5b13f96c6923' u'urn:uuid:bd768f9f-99a7-4033-828d-5b13f96c6923' u'updated' datetime.datetime(2010, 2, 11, 12, 55, 13) 'workspace://SpacesStore/572c2cac-6b26-4cd8-91ad-b2931fe5b3fb' u'urn:uuid:572c2cac-6b26-4cd8-91ad-b2931fe5b3fb' u'updated'
-
changeTime
¶ Returns a datetime object representing the time the change occurred.
-
changeType
¶ Returns the type of change that occurred. The resulting value must be one of:
- created
- updated
- deleted
- security
-
getChangeTime
()¶ Returns a datetime object representing the time the change occurred.
-
getChangeType
()¶ Returns the type of change that occurred. The resulting value must be one of:
- created
- updated
- deleted
- security
-
getId
()¶ Returns the unique ID of the change entry.
-
getObjectId
()¶ Returns the object ID of the object that changed.
-
getProperties
()¶ Returns the properties of the change entry. Note that depending on the capabilities of the repository (“capabilityChanges”) the list may not include the actual property values that changed.
-
id
¶ Returns the unique ID of the change entry.
-
objectId
¶ Returns the object ID of the object that changed.
-
properties
¶ Returns the properties of the change entry. Note that depending on the capabilities of the repository (“capabilityChanges”) the list may not include the actual property values that changed.
-
-
class
cmislib.domain.
ChangeEntryResultSet
¶ A specialized type of
ResultSet
that knows how to instantiateChangeEntry
objects. The parent class assumes children ofCmisObject
which doesn’t work for ChangeEntries.-
getResults
()¶ Overriding to make it work with a list instead of a dict.
-
-
class
cmislib.domain.
CmisId
¶ This is a marker class to be used for Strings that are used as CMIS ID’s. Making the objects instances of this class makes it easier to create the Atom entry XML with the appropriate type, ie, cmis:propertyId, instead of cmis:propertyString.
-
class
cmislib.domain.
CmisObject
¶ Common ancestor class for other CMIS domain objects such as
Document
andFolder
.-
ACL
¶ Repository.getCapabilities[‘ACL’] must return manage or discover.
>>> acl = folder.getACL() >>> acl.getEntries() {u'GROUP_EVERYONE': <cmislib.atompub.binding.AtomPubACE object at 0x10071a8d0>, 'jdoe': <cmislib.atompub.binding.AtomPubACE object at 0x10071a590>}
The optional onlyBasicPermissions argument is currently not supported.
-
allowableActions
¶ Returns a dictionary of allowable actions, keyed off of the action name.
>>> actions = doc.getAllowableActions() >>> for a in actions: ... print "%s:%s" % (a,actions[a]) ... canDeleteContentStream:True canSetContentStream:True canCreateRelationship:True canCheckIn:False canApplyACL:False canDeleteObject:True canGetAllVersions:True canGetObjectParents:True canGetProperties:True
-
applyACL
(acl)¶ Updates the object with the provided
ACL
. Repository.getCapabilities[‘ACL’] must return manage to invoke this call.>>> acl = folder.getACL() >>> acl.addEntry(ACE('jdoe', 'cmis:write', 'true')) >>> acl.getEntries() {u'GROUP_EVERYONE': <cmislib.atompub.binding.AtomPubACE object at 0x10071a8d0>, 'jdoe': <cmislib.atompub.binding.AtomPubACE object at 0x10071a590>}
-
applyPolicy
(policyId)¶ This is not yet implemented.
-
createRelationship
(targetObj, relTypeId)¶ Creates a relationship between this object and a specified target object using the relationship type specified. Returns the new
Relationship
object.>>> rel = tstDoc1.createRelationship(tstDoc2, 'R:cmiscustom:assoc') >>> rel.getProperties() {u'cmis:objectId': u'workspace://SpacesStore/271c48dd-6548-4771-a8f5-0de69b7cdc25', u'cmis:creationDate': None, u'cmis:objectTypeId': u'R:cmiscustom:assoc', u'cmis:lastModificationDate': None, u'cmis:targetId': u'workspace://SpacesStore/0ca1aa08-cb49-42e2-8881-53aa8496a1c1', u'cmis:lastModifiedBy': None, u'cmis:baseTypeId': u'cmis:relationship', u'cmis:sourceId': u'workspace://SpacesStore/271c48dd-6548-4771-a8f5-0de69b7cdc25', u'cmis:changeToken': None, u'cmis:createdBy': None}
-
delete
(**kwargs)¶ Deletes this
CmisObject
from the repository. Note that in the case of aFolder
object, some repositories will refuse to delete it if it contains children and some will delete it without complaint. If what you really want to do is delete the folder and all of its descendants, usedeleteTree()
instead.>>> folder.delete()
The optional allVersions argument is supported.
-
getACL
()¶ Repository.getCapabilities[‘ACL’] must return manage or discover.
>>> acl = folder.getACL() >>> acl.getEntries() {u'GROUP_EVERYONE': <cmislib.atompub.binding.AtomPubACE object at 0x10071a8d0>, 'jdoe': <cmislib.atompub.binding.AtomPubACE object at 0x10071a590>}
The optional onlyBasicPermissions argument is currently not supported.
-
getAllowableActions
()¶ Returns a dictionary of allowable actions, keyed off of the action name.
>>> actions = doc.getAllowableActions() >>> for a in actions: ... print "%s:%s" % (a,actions[a]) ... canDeleteContentStream:True canSetContentStream:True canCreateRelationship:True canCheckIn:False canApplyACL:False canDeleteObject:True canGetAllVersions:True canGetObjectParents:True canGetProperties:True
-
getAppliedPolicies
()¶ This is not yet implemented.
-
getName
()¶ Returns the value of cmis:name from the getProperties() dictionary. We don’t need a getter for every standard CMIS property, but name is a pretty common one so it seems to make sense.
>>> doc.getName() u'system-overview.html'
-
getObjectId
()¶ Returns the object ID for this object.
>>> doc = resultSet.getResults()[0] >>> doc.getObjectId() u'workspace://SpacesStore/dc26102b-e312-471b-b2af-91bfb0225339'
-
getObjectParents
(**kwargs)¶ Gets the parents of this object as a
ResultSet
.- The following optional arguments are supported:
- filter
- includeRelationships
- renditionFilter
- includeAllowableActions
- includeRelativePathSegment
-
getPaths
()¶ Returns the object’s paths as a list of strings.
-
getProperties
()¶ Returns a dict of the object’s properties. If CMIS returns an empty element for a property, the property will be in the dict with a value of None.
>>> props = doc.getProperties() >>> for p in props: ... print "%s: %s" % (p, props[p]) ... cmis:contentStreamMimeType: text/html cmis:creationDate: 2009-12-15T09:45:35.369-06:00 cmis:baseTypeId: cmis:document cmis:isLatestMajorVersion: false cmis:isImmutable: false cmis:isMajorVersion: false cmis:objectId: workspace://SpacesStore/dc26102b-e312-471b-b2af-91bfb0225339
The optional filter argument is not yet implemented.
-
getRelationships
(**kwargs)¶ Returns a
ResultSet
ofRelationship
objects for each relationship where the source is this object.>>> rels = tstDoc1.getRelationships() >>> len(rels.getResults()) 1 >>> rel = rels.getResults().values()[0] >>> rel.getProperties() {u'cmis:objectId': u'workspace://SpacesStore/271c48dd-6548-4771-a8f5-0de69b7cdc25', u'cmis:creationDate': None, u'cmis:objectTypeId': u'R:cmiscustom:assoc', u'cmis:lastModificationDate': None, u'cmis:targetId': u'workspace://SpacesStore/0ca1aa08-cb49-42e2-8881-53aa8496a1c1', u'cmis:lastModifiedBy': None, u'cmis:baseTypeId': u'cmis:relationship', u'cmis:sourceId': u'workspace://SpacesStore/271c48dd-6548-4771-a8f5-0de69b7cdc25', u'cmis:changeToken': None, u'cmis:createdBy': None}
- The following optional arguments are supported:
- includeSubRelationshipTypes
- relationshipDirection
- typeId
- maxItems
- skipCount
- filter
- includeAllowableActions
-
getRepository
()¶ Returns the object’s repository
-
getTitle
()¶ Returns the value of the object’s cmis:title property.
-
id
¶ Returns the object ID for this object.
>>> doc = resultSet.getResults()[0] >>> doc.getObjectId() u'workspace://SpacesStore/dc26102b-e312-471b-b2af-91bfb0225339'
-
move
(sourceFolder, targetFolder)¶ Moves an object from the source folder to the target folder.
>>> sub1 = repo.getObjectByPath('/cmislib/sub1') >>> sub2 = repo.getObjectByPath('/cmislib/sub2') >>> doc = repo.getObjectByPath('/cmislib/sub1/testdoc1') >>> doc.move(sub1, sub2)
-
name
¶ Returns the value of cmis:name from the getProperties() dictionary. We don’t need a getter for every standard CMIS property, but name is a pretty common one so it seems to make sense.
>>> doc.getName() u'system-overview.html'
-
properties
¶ Returns a dict of the object’s properties. If CMIS returns an empty element for a property, the property will be in the dict with a value of None.
>>> props = doc.getProperties() >>> for p in props: ... print "%s: %s" % (p, props[p]) ... cmis:contentStreamMimeType: text/html cmis:creationDate: 2009-12-15T09:45:35.369-06:00 cmis:baseTypeId: cmis:document cmis:isLatestMajorVersion: false cmis:isImmutable: false cmis:isMajorVersion: false cmis:objectId: workspace://SpacesStore/dc26102b-e312-471b-b2af-91bfb0225339
The optional filter argument is not yet implemented.
-
reload
(**kwargs)¶ Fetches the latest representation of this object from the CMIS service. Some methods, like
^Document.checkout
do this for you.If you call reload with a properties filter, the filter will be in effect on subsequent calls until the filter argument is changed. To reset to the full list of properties, call reload with filter set to ‘*’.
-
removePolicy
(policyId)¶ This is not yet implemented.
-
repository
¶ Returns the object’s repository
-
title
¶ Returns the value of the object’s cmis:title property.
-
updateProperties
(properties)¶ Updates the properties of an object with the properties provided. Only provide the set of properties that need to be updated.
>>> folder = repo.getObjectByPath('/someFolder2') >>> folder.getName() u'someFolder2' >>> props = {'cmis:name': 'someFolderFoo'} >>> folder.updateProperties(props) <cmislib.atompub.binding.AtomPubFolder object at 0x103ab1210> >>> folder.getName() u'someFolderFoo'
-
-
class
cmislib.domain.
Document
¶ An object typically associated with file content.
-
cancelCheckout
()¶ Cancels the checkout of this object by retrieving the Private Working Copy (PWC) and then deleting it. After the PWC is deleted, this object will be reloaded to update properties related to a checkout.
>>> doc.isCheckedOut() True >>> doc.cancelCheckout() >>> doc.isCheckedOut() False
-
checkedOut
¶ Returns true if the document is checked out.
>>> doc.isCheckedOut() True >>> doc.cancelCheckout() >>> doc.isCheckedOut() False
-
checkin
(checkinComment=None, contentFile=None, contentType=None, properties=None, **kwargs)¶ Checks in this
Document
which must be a private working copy (PWC).>>> doc.isCheckedOut() False >>> pwc = doc.checkout() >>> doc.isCheckedOut() True >>> pwc.checkin() <cmislib.atompub.binding.AtomPubDocument object at 0x103a8ae90> >>> doc.isCheckedOut() False
- The following optional arguments are NOT supported:
- policies
- addACEs
- removeACEs
-
checkout
()¶ Performs a checkout on the
Document
and returns the Private Working Copy (PWC), which is also an instance ofDocument
>>> doc.getObjectId() u'workspace://SpacesStore/f0c8b90f-bec0-4405-8b9c-2ab570589808;1.0' >>> doc.isCheckedOut() False >>> pwc = doc.checkout() >>> doc.isCheckedOut() True
-
deleteContentStream
()¶ Delete’s the content stream associated with this object.
-
getAllVersions
(**kwargs)¶ Returns a
ResultSet
of document objects for the entire version history of this object, including any PWC’s.The optional filter and includeAllowableActions are supported.
-
getCheckedOutBy
()¶ Returns the ID who currently has the document checked out. >>> pwc = doc.checkout() >>> pwc.getCheckedOutBy() u’admin’
-
getContentStream
()¶ Returns the CMIS service response from invoking the ‘enclosure’ link.
>>> doc.getName() u'sample-b.pdf' >>> o = open('tmp.pdf', 'wb') >>> result = doc.getContentStream() >>> o.write(result.read()) >>> result.close() >>> o.close() >>> import os.path >>> os.path.getsize('tmp.pdf') 117248
The optional streamId argument is not yet supported.
-
getLatestVersion
(**kwargs)¶ Returns a
Document
object representing the latest version in the version series.- The following optional arguments are supported:
- major
- filter
- includeRelationships
- includePolicyIds
- renditionFilter
- includeACL
- includeAllowableActions
>>> latestDoc = doc.getLatestVersion() >>> latestDoc.getProperties()['cmis:versionLabel'] u'2.1' >>> latestDoc = doc.getLatestVersion(major='false') >>> latestDoc.getProperties()['cmis:versionLabel'] u'2.1' >>> latestDoc = doc.getLatestVersion(major='true') >>> latestDoc.getProperties()['cmis:versionLabel'] u'2.0'
-
getPaths
()¶ Returns the Document’s paths by asking for the parents with the includeRelativePathSegment flag set to true, then concats the value of cmis:path with the relativePathSegment.
-
getPrivateWorkingCopy
()¶ Retrieves the object using the object ID in the property: cmis:versionSeriesCheckedOutId then uses getObject to instantiate the object.
>>> doc.isCheckedOut() False >>> doc.checkout() <cmislib.atompub.binding.AtomPubDocument object at 0x103a25ad0> >>> pwc = doc.getPrivateWorkingCopy() >>> pwc.getTitle() u'sample-b (Working Copy).pdf'
-
getPropertiesOfLatestVersion
(**kwargs)¶ Like
^CmisObject.getProperties
, returns a dict of properties from the latest version of this object in the version series.The optional major and filter arguments are supported.
-
getRenditions
()¶ Returns an array of
Rendition
objects. The repository must support the Renditions capability.- The following optional arguments are not currently supported:
- renditionFilter
- maxItems
- skipCount
-
isCheckedOut
()¶ Returns true if the document is checked out.
>>> doc.isCheckedOut() True >>> doc.cancelCheckout() >>> doc.isCheckedOut() False
-
setContentStream
(contentFile, contentType=None)¶ Sets the content stream on this object.
- The following optional arguments are not yet supported:
- overwriteFlag=None
-
-
class
cmislib.domain.
Folder
¶ A container object that can hold other
CmisObject
objects-
addObject
(cmisObject, **kwargs)¶ Adds the specified object as a child of this object. No new object is created. The repository must support multifiling for this to work.
>>> sub1 = repo.getObjectByPath("/cmislib/sub1") >>> sub2 = repo.getObjectByPath("/cmislib/sub2") >>> doc = sub1.createDocument("testdoc1") >>> len(sub1.getChildren()) 1 >>> len(sub2.getChildren()) 0 >>> sub2.addObject(doc) >>> len(sub2.getChildren()) 1 >>> sub2.getChildren()[0].name u'testdoc1'
- The following optional arguments are supported:
- allVersions
-
createDocument
(name, properties={}, contentFile=None, contentType=None, contentEncoding=None)¶ Creates a new Document object in the repository using the properties provided.
Right now this is basically the same as createFolder, but this deals with contentStreams. The common logic should probably be moved to CmisObject.createObject.
The method will attempt to guess the appropriate content type and encoding based on the file. To specify it yourself, pass them in via the contentType and contentEncoding arguments.
>>> f = open('250px-Cmis_logo.png', 'rb') >>> subFolder.createDocument('logo.png', contentFile=f) <cmislib.atompub.binding.AtomPubDocument object at 0x10410fa10> >>> f.close()
If you wanted to set one or more properties when creating the doc, pass in a dict, like this:
>>> props = {'cmis:someProp':'someVal'} >>> f = open('250px-Cmis_logo.png', 'rb') >>> subFolder.createDocument('logo.png', props, contentFile=f) <cmislib.atompub.binding.AtomPubDocument object at 0x10410fa10> >>> f.close()
To specify a custom object type, pass in a property called cmis:objectTypeId set to the
CmisId
representing the type ID of the instance you want to create. If you do not pass in an object type ID, an instance of ‘cmis:document’ will be created.- The following optional arguments are not yet supported:
- versioningState
- policies
- addACEs
- removeACEs
-
createDocumentFromString
(name, properties={}, contentString=None, contentType=None, contentEncoding=None)¶ Creates a new document setting the content to the string provided. If the repository supports unfiled objects, you do not have to pass in a parent
Folder
otherwise it is required.This method is essentially a convenience method that wraps your string with a StringIO and then calls createDocument.
>>> testFolder.createDocumentFromString('testdoc3', contentString='hello, world', contentType='text/plain')
-
createFolder
(name, properties={})¶ Creates a new
Folder
using the properties provided. Right now I expect a property called ‘cmis:name’ but I don’t complain if it isn’t there (although the CMIS provider will). If a cmis:name property isn’t provided, the value passed in to the name argument will be used.To specify a custom folder type, pass in a property called cmis:objectTypeId set to the
CmisId
representing the type ID of the instance you want to create. If you do not pass in an object type ID, an instance of ‘cmis:folder’ will be created.>>> subFolder = folder.createFolder('someSubfolder') >>> subFolder.getName() u'someSubfolder'
- The following optional arguments are not supported:
- policies
- addACEs
- removeACEs
-
deleteTree
(**kwargs)¶ Deletes the folder and all of its descendant objects.
>>> resultSet = subFolder.getDescendants() >>> len(resultSet.getResults()) 2 >>> subFolder.deleteTree()
- The following optional arguments are supported:
- allVersions
- unfileObjects
- continueOnFailure
-
getChildren
(**kwargs)¶ Returns a paged
ResultSet
. The result set contains a list ofCmisObject
objects for each child of the Folder. The actual type of the object returned depends on the object’s CMIS base type id. For example, the method might return a list that contains bothDocument
objects andFolder
objects.>>> childrenRS = subFolder.getChildren() >>> children = childrenRS.getResults()
- The following optional arguments are supported:
- maxItems
- skipCount
- orderBy
- filter
- includeRelationships
- renditionFilter
- includeAllowableActions
- includePathSegment
-
getDescendants
(**kwargs)¶ Gets the descendants of this folder. The descendants are returned as a paged
ResultSet
object. The result set contains a list ofCmisObject
objects where the actual type of each object returned will vary depending on the object’s base type id. For example, the method might return a list that contains bothDocument
objects andFolder
objects.- The following optional argument is supported:
- depth. Use depth=-1 for all descendants, which is the default if no depth is specified.
>>> resultSet = folder.getDescendants() >>> len(resultSet.getResults()) 105 >>> resultSet = folder.getDescendants(depth=1) >>> len(resultSet.getResults()) 103
The following optional arguments may also work but haven’t been tested:
- filter
- includeRelationships
- renditionFilter
- includeAllowableActions
- includePathSegment
-
getParent
()¶ The optional filter argument is not yet supported.
-
getPaths
()¶ Returns the paths as a list of strings. The spec says folders cannot be multi-filed, so this should always be one value. We return a list to be symmetric with the same method in
Document
.
-
getTree
(**kwargs)¶ Unlike
Folder.getChildren
orFolder.getDescendants
, this method returns only the descendant objects that are folders. The results do not include the current folder.- The following optional arguments are supported:
- depth
- filter
- includeRelationships
- renditionFilter
- includeAllowableActions
- includePathSegment
>>> rs = folder.getTree(depth='2') >>> len(rs.getResults()) 3 >>> for folder in rs.getResults().values(): ... folder.getTitle() ... u'subfolder2' u'parent test folder' u'subfolder'
-
removeObject
(cmisObject)¶ Removes the specified object from this folder. The repository must support unfiling for this to work.
-
-
class
cmislib.domain.
ObjectType
¶ Represents the CMIS object type such as ‘cmis:document’ or ‘cmis:folder’. Contains metadata about the type.
-
baseId
¶ Getter for cmis:baseId
-
controllableACL
¶ Getter for cmis:controllableACL
-
controllablePolicy
¶ Getter for cmis:controllablePolicy
-
creatable
¶ Getter for cmis:creatable
-
description
¶ Getter for cmis:description
-
displayName
¶ Getter for cmis:displayName
-
fileable
¶ Getter for cmis:fileable
-
fulltextIndexed
¶ Getter for cmis:fulltextIndexed
-
getBaseId
()¶ Getter for cmis:baseId
-
getDescription
()¶ Getter for cmis:description
-
getDisplayName
()¶ Getter for cmis:displayName
-
getLink
(rel, linkType)¶ Gets the HREF for the link element with the specified rel and linkType.
>>> from cmislib.atompub.atompub_binding import ATOM_XML_FEED_TYPE >>> docType.getLink('down', ATOM_XML_FEED_TYPE) u'http://localhost:8080/alfresco/s/cmis/type/cmis:document/children'
-
getLocalName
()¶ Getter for cmis:localName
-
getLocalNamespace
()¶ Getter for cmis:localNamespace
-
getProperties
()¶ Returns a list of
Property
objects representing each property defined for this type.>>> objType = repo.getTypeDefinition('cmis:relationship') >>> for prop in objType.properties: ... print 'Id:%s' % prop.id ... print 'Cardinality:%s' % prop.cardinality ... print 'Description:%s' % prop.description ... print 'Display name:%s' % prop.displayName ... print 'Local name:%s' % prop.localName ... print 'Local namespace:%s' % prop.localNamespace ... print 'Property type:%s' % prop.propertyType ... print 'Query name:%s' % prop.queryName ... print 'Updatability:%s' % prop.updatability ... print 'Inherited:%s' % prop.inherited ... print 'Orderable:%s' % prop.orderable ... print 'Queryable:%s' % prop.queryable ... print 'Required:%s' % prop.required ... print 'Open choice:%s' % prop.openChoice
-
getQueryName
()¶ Getter for cmis:queryName
-
getTypeId
()¶ Returns the type ID for this object.
>>> docType = repo.getTypeDefinition('cmis:document') >>> docType.getTypeId() 'cmis:document'
-
id
¶ Returns the type ID for this object.
>>> docType = repo.getTypeDefinition('cmis:document') >>> docType.getTypeId() 'cmis:document'
-
includedInSupertypeQuery
¶ Getter for cmis:includedInSupertypeQuery
-
isControllableACL
()¶ Getter for cmis:controllableACL
-
isControllablePolicy
()¶ Getter for cmis:controllablePolicy
-
isCreatable
()¶ Getter for cmis:creatable
-
isFileable
()¶ Getter for cmis:fileable
-
isFulltextIndexed
()¶ Getter for cmis:fulltextIndexed
-
isIncludedInSupertypeQuery
()¶ Getter for cmis:includedInSupertypeQuery
-
isQueryable
()¶ Getter for cmis:queryable
-
localName
¶ Getter for cmis:localName
-
localNamespace
¶ Getter for cmis:localNamespace
-
properties
¶ Returns a list of
Property
objects representing each property defined for this type.>>> objType = repo.getTypeDefinition('cmis:relationship') >>> for prop in objType.properties: ... print 'Id:%s' % prop.id ... print 'Cardinality:%s' % prop.cardinality ... print 'Description:%s' % prop.description ... print 'Display name:%s' % prop.displayName ... print 'Local name:%s' % prop.localName ... print 'Local namespace:%s' % prop.localNamespace ... print 'Property type:%s' % prop.propertyType ... print 'Query name:%s' % prop.queryName ... print 'Updatability:%s' % prop.updatability ... print 'Inherited:%s' % prop.inherited ... print 'Orderable:%s' % prop.orderable ... print 'Queryable:%s' % prop.queryable ... print 'Required:%s' % prop.required ... print 'Open choice:%s' % prop.openChoice
-
queryName
¶ Getter for cmis:queryName
-
queryable
¶ Getter for cmis:queryable
-
reload
(**kwargs)¶ This method will reload the object’s data from the CMIS service.
-
-
class
cmislib.domain.
Policy
¶ An arbirary object that can ‘applied’ to objects that the repository identifies as being ‘controllable’.
-
class
cmislib.domain.
Property
¶ This class represents an attribute or property definition of an object type.
-
cardinality
¶ Getter for cmis:cardinality
-
description
¶ Getter for cmis:description
-
displayName
¶ Getter for cmis:displayName
-
getCardinality
()¶ Getter for cmis:cardinality
-
getDescription
()¶ Getter for cmis:description
-
getDisplayName
()¶ Getter for cmis:displayName
-
getId
()¶ Getter for cmis:id
-
getLocalName
()¶ Getter for cmis:localName
-
getLocalNamespace
()¶ Getter for cmis:localNamespace
-
getPropertyType
()¶ Getter for cmis:propertyType
-
getQueryName
()¶ Getter for cmis:queryName
-
getUpdatability
()¶ Getter for cmis:updatability
-
id
¶ Getter for cmis:id
-
inherited
¶ Getter for cmis:inherited
-
isInherited
()¶ Getter for cmis:inherited
-
isOpenChoice
()¶ Getter for cmis:openChoice
-
isOrderable
()¶ Getter for cmis:orderable
-
isQueryable
()¶ Getter for cmis:queryable
-
isRequired
()¶ Getter for cmis:required
-
localName
¶ Getter for cmis:localName
-
localNamespace
¶ Getter for cmis:localNamespace
-
openChoice
¶ Getter for cmis:openChoice
-
orderable
¶ Getter for cmis:orderable
-
propertyType
¶ Getter for cmis:propertyType
-
queryName
¶ Getter for cmis:queryName
-
queryable
¶ Getter for cmis:queryable
-
required
¶ Getter for cmis:required
-
updatability
¶ Getter for cmis:updatability
-
-
class
cmislib.domain.
Relationship
¶ Defines a relationship object between two
CmisObjects
objects-
getSource
()¶ Returns an instance of the appropriate child-type of
CmisObject
for the source side of the relationship.
-
getTarget
()¶ Returns an instance of the appropriate child-type of
CmisObject
for the target side of the relationship.
-
source
¶ Returns an instance of the appropriate child-type of
CmisObject
for the source side of the relationship.
-
target
¶ Returns an instance of the appropriate child-type of
CmisObject
for the target side of the relationship.
-
-
class
cmislib.domain.
Rendition
¶ This class represents a Rendition.
-
getHeight
()¶ Getter for the renditions’s height
-
getHref
()¶ Getter for the renditions’s href
-
getKind
()¶ Getter for the renditions’s kind
-
getLength
()¶ Getter for the renditions’s length
-
getMimeType
()¶ Getter for the rendition’s mime type
-
getRenditionDocumentId
()¶ Getter for the renditions’s width
-
getStreamId
()¶ Getter for the rendition’s stream ID
-
getTitle
()¶ Getter for the renditions’s title
-
getWidth
()¶ Getter for the renditions’s width
-
height
¶ Getter for the renditions’s height
-
href
¶ Getter for the renditions’s href
-
kind
¶ Getter for the renditions’s kind
-
length
¶ Getter for the renditions’s length
-
mimeType
¶ Getter for the rendition’s mime type
-
renditionDocumentId
¶ Getter for the renditions’s width
-
streamId
¶ Getter for the rendition’s stream ID
-
title
¶ Getter for the renditions’s title
-
width
¶ Getter for the renditions’s width
-
-
class
cmislib.domain.
Repository
(cmisClient, xmlDoc=None)¶ Represents a CMIS repository. Will lazily populate itself by calling the repository CMIS service URL.
You must pass in an instance of a CmisClient when creating an instance of this class.
-
capabilities
¶ Returns a dict of repository capabilities.
>>> caps = repo.getCapabilities() >>> for k,v in caps.items(): ... print "%s:%s" % (k,v) ... PWCUpdatable:True VersionSpecificFiling:False Join:None ContentStreamUpdatability:anytime AllVersionsSearchable:False Renditions:None Multifiling:True GetFolderTree:True GetDescendants:True ACL:None PWCSearchable:True Query:bothcombined Unfiling:False Changes:None
-
createDocument
(name, properties={}, parentFolder=None, contentFile=None, contentType=None, contentEncoding=None)¶ Creates a new
Document
object. If the repository supports unfiled objects, you do not have to pass in a parentFolder
otherwise it is required.To create a document with an associated contentFile, pass in a File object. The method will attempt to guess the appropriate content type and encoding based on the file. To specify it yourself, pass them in via the contentType and contentEncoding arguments.
>>> f = open('sample-a.pdf', 'rb') >>> doc = folder.createDocument('sample-a.pdf', contentFile=f) <cmislib.atompub.binding.AtomPubDocument object at 0x105be5e10> >>> f.close() >>> doc.getTitle() u'sample-a.pdf'
- The following optional arguments are not currently supported:
- versioningState
- policies
- addACEs
- removeACEs
-
createDocumentFromSource
(sourceId, properties={}, parentFolder=None)¶ This is not yet implemented.
- The following optional arguments are not yet supported:
- versioningState
- policies
- addACEs
- removeACEs
-
createDocumentFromString
(name, properties={}, parentFolder=None, contentString=None, contentType=None, contentEncoding=None)¶ Creates a new document setting the content to the string provided. If the repository supports unfiled objects, you do not have to pass in a parent
Folder
otherwise it is required.This method is essentially a convenience method that wraps your string with a StringIO and then calls createDocument.
>>> repo.createDocumentFromString('testdoc5', parentFolder=testFolder, contentString='Hello, World!', contentType='text/plain') <cmislib.atompub.binding.AtomPubDocument object at 0x101352ed0>
-
createFolder
(parentFolder, name, properties={})¶ Creates a new
Folder
object in the specified parentFolder.>>> root = repo.getRootFolder() >>> folder = repo.createFolder(root, 'someFolder2') >>> folder.getTitle() u'someFolder2' >>> folder.getObjectId() u'workspace://SpacesStore/2224a63c-350b-438c-be72-8f425e79ce1f'
- The following optional arguments are not yet supported:
- policies
- addACEs
- removeACEs
-
createPolicy
(properties)¶ This has not yet been implemented.
- The following optional arguments are not currently supported:
- folderId
- policies
- addACEs
- removeACEs
-
createRelationship
(sourceObj, targetObj, relType)¶ Creates a relationship of the specific type between a source object and a target object and returns the new
Relationship
object.- The following optional arguments are not currently supported:
- policies
- addACEs
- removeACEs
-
getCapabilities
()¶ Returns a dict of repository capabilities.
>>> caps = repo.getCapabilities() >>> for k,v in caps.items(): ... print "%s:%s" % (k,v) ... PWCUpdatable:True VersionSpecificFiling:False Join:None ContentStreamUpdatability:anytime AllVersionsSearchable:False Renditions:None Multifiling:True GetFolderTree:True GetDescendants:True ACL:None PWCSearchable:True Query:bothcombined Unfiling:False Changes:None
-
getCheckedOutDocs
(**kwargs)¶ Returns a ResultSet of
CmisObject
objects that are currently checked out.>>> rs = repo.getCheckedOutDocs() >>> len(rs.getResults()) 2 >>> for doc in repo.getCheckedOutDocs().getResults(): ... doc.getTitle() ... u'sample-a (Working Copy).pdf' u'sample-b (Working Copy).pdf'
- These optional arguments are supported:
- folderId
- maxItems
- skipCount
- orderBy
- filter
- includeRelationships
- renditionFilter
- includeAllowableActions
-
getCollection
(collectionType, **kwargs)¶ Returns a list of objects returned for the specified collection.
If the query collection is requested, an exception will be raised. That collection isn’t meant to be retrieved.
If the types collection is specified, the method returns the result of getTypeDefinitions and ignores any optional params passed in.
>>> from cmislib.atompub.atompub_binding import TYPES_COLL >>> types = repo.getCollection(TYPES_COLL) >>> len(types) 4 >>> types[0].getTypeId() u'cmis:folder'
Otherwise, the collection URL is invoked, and a
ResultSet
is returned.>>> from cmislib.atompub.atompub_binding import CHECKED_OUT_COLL >>> resultSet = repo.getCollection(CHECKED_OUT_COLL) >>> len(resultSet.getResults()) 1
-
getContentChanges
(**kwargs)¶ Returns a
ResultSet
containingChangeEntry
objects.>>> for changeEntry in rs: ... changeEntry.objectId ... changeEntry.id ... changeEntry.changeType ... changeEntry.changeTime ... 'workspace://SpacesStore/0e2dc775-16b7-4634-9e54-2417a196829b' u'urn:uuid:0e2dc775-16b7-4634-9e54-2417a196829b' u'created' datetime.datetime(2010, 2, 11, 12, 55, 14) 'workspace://SpacesStore/bd768f9f-99a7-4033-828d-5b13f96c6923' u'urn:uuid:bd768f9f-99a7-4033-828d-5b13f96c6923' u'updated' datetime.datetime(2010, 2, 11, 12, 55, 13) 'workspace://SpacesStore/572c2cac-6b26-4cd8-91ad-b2931fe5b3fb' u'urn:uuid:572c2cac-6b26-4cd8-91ad-b2931fe5b3fb' u'updated'
- The following optional arguments are supported:
- changeLogToken
- includeProperties
- includePolicyIDs
- includeACL
- maxItems
You can get the latest change log token by inspecting the repository info via
Repository.getRepositoryInfo()
.>>> repo.info['latestChangeLogToken'] u'2692' >>> rs = repo.getContentChanges(changeLogToken='2692') >>> len(rs) 1 >>> rs[0].id u'urn:uuid:8e88f694-93ef-44c5-9f70-f12fff824be9' >>> rs[0].changeType u'updated' >>> rs[0].changeTime datetime.datetime(2010, 2, 16, 20, 6, 37)
-
getFolder
(folderId)¶ Returns a
Folder
object for a specified folderId>>> someFolder = repo.getFolder('workspace://SpacesStore/aa1ecedf-9551-49c5-831a-0502bb43f348') >>> someFolder.getObjectId() u'workspace://SpacesStore/aa1ecedf-9551-49c5-831a-0502bb43f348'
-
getLink
(rel)¶ Returns the HREF attribute of an Atom link element for the specified rel.
-
getObject
(objectId, **kwargs)¶ Returns an object given the specified object ID.
>>> doc = repo.getObject('workspace://SpacesStore/f0c8b90f-bec0-4405-8b9c-2ab570589808') >>> doc.getTitle() u'sample-b.pdf'
- The following optional arguments are supported:
- returnVersion
- filter
- includeRelationships
- includePolicyIds
- renditionFilter
- includeACL
- includeAllowableActions
-
getObjectByPath
(path, **kwargs)¶ Returns an object given the path to the object.
>>> doc = repo.getObjectByPath('/jeff test/sample-b.pdf') >>> doc.getTitle() u'sample-b.pdf'
- The following optional arguments are not currently supported:
- filter
- includeAllowableActions
-
getPermissionDefinitions
()¶ Returns a dictionary of permission definitions for this repository. The key is the permission string or technical name of the permission and the value is the permission description.
>>> for permDef in repo.permissionDefinitions: ... print permDef ... cmis:all {http://www.alfresco.org/model/system/1.0}base.LinkChildren {http://www.alfresco.org/model/content/1.0}folder.Consumer {http://www.alfresco.org/model/security/1.0}All.All {http://www.alfresco.org/model/system/1.0}base.CreateAssociations {http://www.alfresco.org/model/system/1.0}base.FullControl {http://www.alfresco.org/model/system/1.0}base.AddChildren {http://www.alfresco.org/model/system/1.0}base.ReadAssociations {http://www.alfresco.org/model/content/1.0}folder.Editor {http://www.alfresco.org/model/content/1.0}cmobject.Editor {http://www.alfresco.org/model/system/1.0}base.DeleteAssociations cmis:read cmis:write
-
getPermissionMap
()¶ Returns a dictionary representing the permission mapping table where each key is a permission key string and each value is a list of one or more permissions the principal must have to perform the operation.
>>> for (k,v) in repo.permissionMap.items(): ... print 'To do this: %s, you must have these perms:' % k ... for perm in v: ... print perm ... To do this: canCreateFolder.Folder, you must have these perms: cmis:all {http://www.alfresco.org/model/system/1.0}base.CreateChildren To do this: canAddToFolder.Folder, you must have these perms: cmis:all {http://www.alfresco.org/model/system/1.0}base.CreateChildren To do this: canDelete.Object, you must have these perms: cmis:all {http://www.alfresco.org/model/system/1.0}base.DeleteNode To do this: canCheckin.Document, you must have these perms: cmis:all {http://www.alfresco.org/model/content/1.0}lockable.CheckIn
-
getPropagation
()¶ - Returns the value of the cmis:propagation element. Valid values are:
- objectonly: indicates that the repository is able to apply ACEs without changing the ACLs of other objects
- propagate: indicates that the repository is able to apply ACEs to a given object and propagate this change to all inheriting objects
>>> repo.propagation u'propagate'
-
getRepositoryId
()¶ Returns this repository’s unique identifier
>>> repo = client.getDefaultRepository() >>> repo.getRepositoryId() u'83beb297-a6fa-4ac5-844b-98c871c0eea9'
-
getRepositoryInfo
()¶ Returns a dict of repository information.
>>> repo = client.getDefaultRepository()>>> repo.getRepositoryName() u'Main Repository' >>> info = repo.getRepositoryInfo() >>> for k,v in info.items(): ... print "%s:%s" % (k,v) ... cmisSpecificationTitle:Version 1.0 Committee Draft 04 cmisVersionSupported:1.0 repositoryDescription:None productVersion:3.2.0 (r2 2440) rootFolderId:workspace://SpacesStore/aa1ecedf-9551-49c5-831a-0502bb43f348 repositoryId:83beb297-a6fa-4ac5-844b-98c871c0eea9 repositoryName:Main Repository vendorName:Alfresco productName:Alfresco Repository (Community)
-
getRepositoryName
()¶ Returns this repository’s name
>>> repo = client.getDefaultRepository() >>> repo.getRepositoryName() u'Main Repository'
-
getRootFolder
()¶ Returns the root folder of the repository
>>> root = repo.getRootFolder() >>> root.getObjectId() u'workspace://SpacesStore/aa1ecedf-9551-49c5-831a-0502bb43f348'
-
getSupportedPermissions
()¶ Returns the value of the cmis:supportedPermissions element. Valid values are:
- basic: indicates that the CMIS Basic permissions are supported
- repository: indicates that repository specific permissions are supported
- both: indicates that both CMIS basic permissions and repository specific permissions are supported
>>> repo.supportedPermissions u'both'
-
getTypeChildren
(typeId=None)¶ Returns a list of
ObjectType
objects corresponding to the child types of the type specified by the typeId.If no typeId is provided, the result will be the same as calling self.getTypeDefinitions
- These optional arguments are current unsupported:
- includePropertyDefinitions
- maxItems
- skipCount
>>> baseTypes = repo.getTypeChildren() >>> for baseType in baseTypes: ... print baseType.getTypeId() ... cmis:folder cmis:relationship cmis:document cmis:policy
-
getTypeDefinition
(typeId)¶ Returns an
ObjectType
object for the specified object type id.>>> folderType = repo.getTypeDefinition('cmis:folder')
-
getTypeDefinitions
(**kwargs)¶ Returns a list of
ObjectType
objects representing the base types in the repository.>>> baseTypes = repo.getTypeDefinitions() >>> for baseType in baseTypes: ... print baseType.getTypeId() ... cmis:folder cmis:relationship cmis:document cmis:policy
-
getTypeDescendants
(typeId=None, **kwargs)¶ Returns a list of
ObjectType
objects corresponding to the descendant types of the type specified by the typeId.If no typeId is provided, the repository’s “typesdescendants” URL will be called to determine the list of descendant types.
>>> allTypes = repo.getTypeDescendants() >>> for aType in allTypes: ... print aType.getTypeId() ... cmis:folder F:cm:systemfolder F:act:savedactionfolder F:app:configurations F:fm:forums F:wcm:avmfolder F:wcm:avmplainfolder F:wca:webfolder F:wcm:avmlayeredfolder F:st:site F:app:glossary F:fm:topic
- These optional arguments are supported:
- depth
- includePropertyDefinitions
>>> types = repo.getTypeDescendants('cmis:folder') >>> len(types) 17 >>> types = repo.getTypeDescendants('cmis:folder', depth=1) >>> len(types) 12 >>> types = repo.getTypeDescendants('cmis:folder', depth=2) >>> len(types) 17
-
getUnfiledDocs
(**kwargs)¶ Returns a ResultSet of
CmisObject
objects that are currently unfiled.>>> rs = repo.getUnfiledDocs() >>> len(rs.getResults()) 2 >>> for doc in repo.getUnfiledDocs().getResults(): ... doc.getTitle() ... u'sample-a.pdf' u'sample-b.pdf'
- These optional arguments are supported:
- folderId
- maxItems
- skipCount
- orderBy
- filter
- includeRelationships
- renditionFilter
- includeAllowableActions
-
id
¶ Returns this repository’s unique identifier
>>> repo = client.getDefaultRepository() >>> repo.getRepositoryId() u'83beb297-a6fa-4ac5-844b-98c871c0eea9'
-
info
¶ Returns a dict of repository information.
>>> repo = client.getDefaultRepository()>>> repo.getRepositoryName() u'Main Repository' >>> info = repo.getRepositoryInfo() >>> for k,v in info.items(): ... print "%s:%s" % (k,v) ... cmisSpecificationTitle:Version 1.0 Committee Draft 04 cmisVersionSupported:1.0 repositoryDescription:None productVersion:3.2.0 (r2 2440) rootFolderId:workspace://SpacesStore/aa1ecedf-9551-49c5-831a-0502bb43f348 repositoryId:83beb297-a6fa-4ac5-844b-98c871c0eea9 repositoryName:Main Repository vendorName:Alfresco productName:Alfresco Repository (Community)
-
name
¶ Returns this repository’s name
>>> repo = client.getDefaultRepository() >>> repo.getRepositoryName() u'Main Repository'
-
permissionDefinitions
¶ Returns a dictionary of permission definitions for this repository. The key is the permission string or technical name of the permission and the value is the permission description.
>>> for permDef in repo.permissionDefinitions: ... print permDef ... cmis:all {http://www.alfresco.org/model/system/1.0}base.LinkChildren {http://www.alfresco.org/model/content/1.0}folder.Consumer {http://www.alfresco.org/model/security/1.0}All.All {http://www.alfresco.org/model/system/1.0}base.CreateAssociations {http://www.alfresco.org/model/system/1.0}base.FullControl {http://www.alfresco.org/model/system/1.0}base.AddChildren {http://www.alfresco.org/model/system/1.0}base.ReadAssociations {http://www.alfresco.org/model/content/1.0}folder.Editor {http://www.alfresco.org/model/content/1.0}cmobject.Editor {http://www.alfresco.org/model/system/1.0}base.DeleteAssociations cmis:read cmis:write
-
permissionMap
¶ Returns a dictionary representing the permission mapping table where each key is a permission key string and each value is a list of one or more permissions the principal must have to perform the operation.
>>> for (k,v) in repo.permissionMap.items(): ... print 'To do this: %s, you must have these perms:' % k ... for perm in v: ... print perm ... To do this: canCreateFolder.Folder, you must have these perms: cmis:all {http://www.alfresco.org/model/system/1.0}base.CreateChildren To do this: canAddToFolder.Folder, you must have these perms: cmis:all {http://www.alfresco.org/model/system/1.0}base.CreateChildren To do this: canDelete.Object, you must have these perms: cmis:all {http://www.alfresco.org/model/system/1.0}base.DeleteNode To do this: canCheckin.Document, you must have these perms: cmis:all {http://www.alfresco.org/model/content/1.0}lockable.CheckIn
-
propagation
¶ - Returns the value of the cmis:propagation element. Valid values are:
- objectonly: indicates that the repository is able to apply ACEs without changing the ACLs of other objects
- propagate: indicates that the repository is able to apply ACEs to a given object and propagate this change to all inheriting objects
>>> repo.propagation u'propagate'
-
query
(statement, **kwargs)¶ Returns a list of
CmisObject
objects based on the CMIS Query Language passed in as the statement. The actual objects returned will be instances of the appropriate child class based on the object’s base type ID.In order for the results to be properly instantiated as objects, make sure you include ‘cmis:objectId’ as one of the fields in your select statement, or just use “SELECT *”.
If you want the search results to automatically be instantiated with the appropriate sub-class of
CmisObject
you must either include cmis:baseTypeId as one of the fields in your select statement or just use “SELECT *”.>>> q = "select * from cmis:document where cmis:name like '%test%'" >>> resultSet = repo.query(q) >>> len(resultSet.getResults()) 1 >>> resultSet.hasNext() False
- The following optional arguments are supported:
- searchAllVersions
- includeRelationships
- renditionFilter
- includeAllowableActions
- maxItems
- skipCount
>>> q = 'select * from cmis:document' >>> rs = repo.query(q) >>> len(rs.getResults()) 148 >>> rs = repo.query(q, maxItems='5') >>> len(rs.getResults()) 5 >>> rs.hasNext() True
-
reload
()¶ This method will re-fetch the repository’s XML data from the CMIS repository.
-
rootFolder
¶ Returns the root folder of the repository
>>> root = repo.getRootFolder() >>> root.getObjectId() u'workspace://SpacesStore/aa1ecedf-9551-49c5-831a-0502bb43f348'
-
supportedPermissions
¶ Returns the value of the cmis:supportedPermissions element. Valid values are:
- basic: indicates that the CMIS Basic permissions are supported
- repository: indicates that repository specific permissions are supported
- both: indicates that both CMIS basic permissions and repository specific permissions are supported
>>> repo.supportedPermissions u'both'
-
-
class
cmislib.domain.
ResultSet
¶ Represents a paged result set. In CMIS, this is most often an Atom feed.
-
getFirst
()¶ Returns the first page of results as a dictionary of
CmisObject
objects or its appropriate sub-type. This only works when the server returns a “first” link. Not all of them do.>>> resultSet.hasFirst() True >>> results = resultSet.getFirst() >>> for result in results: ... result ... <cmislib.atompub.binding.AtomPubDocument object at 0x10480bc90>
-
getLast
()¶ Returns the last page of results as a dictionary of
CmisObject
objects or its appropriate sub-type. This only works when the server is returning a “last” link. Not all of them do.>>> resultSet.hasLast() True >>> results = resultSet.getLast() >>> for result in results: ... result ... <cmislib.atompub.binding.AtomPubDocument object at 0x10480bc90>
-
getNext
()¶ Returns the next page of results as a dictionary of
CmisObject
objects or its appropriate sub-type.>>> resultSet.hasNext() True >>> results = resultSet.getNext() >>> for result in results: ... result ... <cmislib.atompub.binding.AtomPubDocument object at 0x10480bc90>
-
getPrev
()¶ Returns the prev page of results as a dictionary of
CmisObject
objects or its appropriate sub-type. This only works when the server returns a “prev” link. Not all of them do.>>> resultSet.hasPrev() True >>> results = resultSet.getPrev() >>> for result in results: ... result ... <cmislib.atompub.binding.AtomPubDocument object at 0x10480bc90>
-
getResults
()¶ Returns the results that were fetched and cached by the get*Page call.
>>> resultSet = repo.getCheckedOutDocs() >>> resultSet.hasNext() False >>> for result in resultSet.getResults(): ... result ... <cmislib.atompub.binding.AtomPubDocument object at 0x104851810>
-
hasFirst
()¶ Returns True if this page contains a first link. Not all CMIS providers implement first links consistently.
>>> resultSet.hasFirst() True
-
hasLast
()¶ Returns True if this page contains a last link. Not all CMIS providers implement last links consistently.
>>> resultSet.hasLast() True
-
hasNext
()¶ Returns True if this page contains a next link.
>>> resultSet.hasNext() True
-
hasObject
(objectId)¶ Returns True if the specified objectId is found in the list of results, otherwise returns False.
-
hasPrev
()¶ Returns True if this page contains a prev link. Not all CMIS providers implement prev links consistently.
>>> resultSet.hasPrev() True
-
reload
()¶ Re-invokes the self link for the current set of results.
>>> resultSet.reload()
-
The cmislib.net
Module¶
The cmislib.net
Module contains the classes used by cmislib.model.CmisClient
to communicate with the CMIS repository. The most important of which is cmislib.net.RESTService
.
Module that takes care of network communications for cmislib. It does not know anything about CMIS or do anything special with regard to the response it receives.
-
class
cmislib.net.
RESTService
¶ Generic service for interacting with an HTTP end point. Sets headers such as the USER_AGENT and builds the basic auth handler.
-
delete
(url, username=None, password=None, **kwargs)¶ Makes a delete request to the URL specified.
-
get
(url, username=None, password=None, **kwargs)¶ Makes a get request to the URL specified.
-
post
(url, payload, contentType, username=None, password=None, **kwargs)¶ Makes a POST request to the URL specified and posts the payload that gets passed in. The content type header gets set to the specified content type.
-
put
(url, payload, contentType, username=None, password=None, **kwargs)¶ Makes a PUT request to the URL specified and includes the payload that gets passed in. The content type header gets set to the specified content type.
-
The tests
Module¶
The tests
Module contains unit tests for all classes and methods in cmislib.model
. See Tests for more information on running tests.


Shrawan SherTuesday, January 4, 2011 at 3:13am PST
i'm sorry to bother you but i've been trying to get in touch with shalabh chugh ..his cell got stolen so i can't reach him so i wondering if u or anybody u know have any other no.the no i have is<PHONE_NUMBER> i can reach him..plz its sort of urgent


Hi I have a emonbase and a emontx working perfectly (thanks guys!)
The issues begins when I try to add a local CT reader to the emonbase. The hardware is made and I couldn't test that because I have problems integrating EnergyMonitor class on my working emonbase sketch. The readings would be on Analog 0 for current and Analog 1 for CT.
The sketch compiles without warnings, and I tried with the Emon.h/Emon.cpp used on my emontx on the same way and with a example of the Emonlib.h/Emonlib.cpp
As soon as the emonlocal is executed the output on the serial is a lot of empty lines and the leds on the emonbase tilt both at the same time.
The sketch should fit on the Atmega and I am don't know what is happening. Could you help me with this?
Thanks and regards
Re: Local CT read on emonbase
Example attachment
Re: Local CT read on emonbase
This is usually due to running out of ram. The sketch will compile fine, but it won't run properly.
I had to set the ethernet buffer to 500 instead of 700 in my code. This is still plenty for most application. it gave me enough ram for the rest of my code.
Re: Local CT read on emonbase
Many thanks! seems that the problem was there ;)


Progress:
0
Download Gene Ontology OBO File From
Here
,
Then Upload Using Following Button to Get Started
Upload


Samsung Grid Effect
Effect 1
Effect 2
Effect 3
Kenpo News April 2014 issue
SQUET April 2014 issue
MONOCLE issue 72
TOWN Winter 2013
Quarterly Musashino autumn of 2013 issue
MONOCLE issue 69
Real Simple May 2014
The 65th Book Week
Real Simple May 2014
Quarterly Musashino spring of 2014 issue
MAJESTY express vol. 01
Shitamachi Rocket
Quarterly Musashino winter of 2013 issue
MAINICHI CHUUGOKUGO April 2014
Kenpo News April 2014 issue
SQUET April 2014 issue
MONOCLE issue 72
TOWN Winter 2013
Quarterly Musashino autumn of 2013 issue
MONOCLE issue 69
Real Simple May 2014
The 65th Book Week
Real Simple May 2014
Quarterly Musashino spring of 2014 issue
MAJESTY express vol. 01
Shitamachi Rocket
Quarterly Musashino winter of 2013 issue
MAINICHI CHUUGOKUGO April 2014


$~31 & 32 * IN THE HIGH COURT OF DELHI AT NEW DELHI % Judgment delivered on: 22.11.2018 + CRL.L.P. 170/2018 & CRL. M.A. 47823/2018 DELHI POLLUTION CONTROL COMMITTEE .... petitioner versus VIKASH BANSAL ..... Respondent + CRL.REV.P. 883/2017 & CRL. M.A. 47822/2018 VIKASH BANSAL ..... Petitioner versus DELHI POLLUTION CONTROL COMMITTEE .... Respondent Advocates who appeared in this case: For the Petitioners : Mr. Sanjeev Ralli with Mr.Dinesh Jindal, Advs for petitioner in Crl.L.P.170/2018. Mr.Shri Singh, Mr.Vikas Mishra, Mr.Shashwat Tripathi and Ms.Maneka, Advs for petitioner in Crl.Rev.P.883/2017. For the Respondent: Mr. Sanjeev Ralli with Mr.Dinesh Jindal, Advs for respondent in Crl.Rev.P.883/2017. Mr.Shri Singh, Mr.Vikas Mishra, Mr.Shashwat Tripathi and Ms.Maneka, Advs for respondent in Crl.L.P.170/2018. CORAM:- HON'BLE MR JUSTICE SANJEEV SACHDEVA JUDGMENT
22.11.2018 CRL.L.P.170/2018 & Crl.REV.P. 883/2017 Page 1 of 5 SANJEEV SACHDEVA, J. (ORAL)
1. Both the petitions impugn order dated 21.11.2017.
2. The Delhi Pollution Control Board has filed the appeal against the impugned order dated 21.11.2017 whereby the Appellate Court has set aside the conviction of the respondent for the offences under Section 24(1)(a), 25 and 26 of the Water Pollution and Control Act, 1974.
3. Petitioner - Vikash Bansal has filed Crl.Rev Petition impugning the order dated 21.11.2017 whereby the Appellate Court has upheld the order of the Trial Court dated 20.04.2017 upholding the conviction for violating Section 24(1)(b) of the Water Act.
4. Petitioner was sentenced to undergo three years Simple Imprisonment by the Trial Court which was further modified by the Appellate Court and reduced to two years SI besides payment of fine of Rs.2 lakhs and to pay Rs.2.5 lakhs to the Prime Minister Relief Fund.
5. Petitioner has undergone incarceration for a period of 9 days. Parties were referred to mediation. Parties have settle their disputes before the Delhi High Court Mediation and Conciliation Centre and Settlement Agreement dated 30.10.2018 has been executed. It is recorded in the settlement agreement that petitioner Vikash Bansal has already deposited Rs.2.5 lakhs with the Prime Minister Relief Fund CRL.L.P.170/2018 & Crl.REV.P. 883/2017 Page 2 of 5 and has also deposited a sum of Rs.2 lakhs with the Trial Court. Further he has installed an Effluent Treatment Plant in his premises.
6. The Settlement Agreement inter alia records as under:
a. The First Party will pay a sum of Rs. 7,50,000/-
(Rupees Seven Lacs Fifty Thousand) to DPCC by way of a demand draft/banker's cheque in favor of DPCC.
b. The First Party will not seek withdrawal of Rs.2,50,000/- (Rupees Two Lakh Fifty Thousand only) deposited by him with the Prime Minister's Relief Fund vide transaction ID No.201711211000020 dated 21.11.2017, and shall be treated as contribution on behalf of the First Party towards the Prime Minister's Relief Fund. c. The First Party shall furnish an irrevocable bank guarantee for a sum of Rs. 5,00,000/- [Rupees Five Lacs] in the format appended to this Agreement and annexed as Annexure-A which will kept valid/alive for a period of three years from the date issuance of the said bank guarantee. DPCC shall be at liberty to encash the said bank guarantee in terms of the conditions mentioned in the said bank guarantee. Further, upon expiry of three years from the date of issuance, the said bank guarantee shall expire and will not be enforced/encashed by DPCC in any manner whatsoever.
d. The First Party shall also furnish an undertaking by way of affidavit in the format appended to this Agreement as Annexure-B.CRL.L.P.170/2018 & Crl.REV.P. 883/2017 Page 3 of 5
e. Party shall plant 100 trees as a step for making Delhi City more green and environmentally healthy. These trees shall be planted at the cost of the First Party on such locations as identified by the concerned department of Horticulture or Forests. Govt. of NCT Delhi, as the case may be."
7. In terms of the Settlement Agreement, Sh.Vikash Bansal has paid a sum of Rs.7.5 lakhs today in Court vide Demand Draft No.444425 dated 31.10.2018 in favour of Delhi Pollution Control Committee which has been duly accepted by learned counsel appearing for DPCC along with the original bank guarantee and an undertaking by way of affidavit in favour of DPCC.
8. Learned counsel for Mr.Vikash Bansal submits that he has been directed to plant 100 trees on the locations to be provided by the Deputy Conservator of Forests, National Capital Territory of Delhi and he has already moved an application on 15.11.2018 requesting the DFC to specify the locations where the trees have to be planted.
9. It is directed that DFC shall also indicate the nature of trees and the size of the trees to be planted.
10. Mr. Vikash Bansal who is present in Court undertakes that he shall abide by the terms and conditions of the settlement.
11. The undertaking is accepted.
12. In terms of the Settlement Agreement, Sh.Vikash Bansal is to CRL.L.P.170/2018 & Crl.REV.P. 883/2017 Page 4 of 5 withdraw a sum of Rs.2 lakhs deposited with the Trial Court.
13. The Trial Court is directed to refund the amount of Rs.2 lakhs along with the interest accrued, if any thereon, to Mr.Vikash Bansal.
14. In view of the above submission, learned counsel for the parties pray that the subject prosecution of the petitioner be quashed.
15. In view of the submission, the subject complaint filed by DPCC and the proceedings emanating therefrom including the impugned order dated 21.11.2017 of the appellate Court as also the order on conviction dated 20.04.2017 of the Trial Court are set aside. Mr.Vikash Bansal is acquitted of all the offences.
16. Petitions are disposed of in the above terms.
17. Order Dasti under the signatures of the Court Master.
NOVEMBER 22, 2018 SANJEEV SACHDEVA, J
rk
CRL.L.P.170/2018 & Crl.REV.P. 883/2017 Page 5 of 5


Welcome to pig dice, a 2-player highly interactive game.It takes two to tango, also does it on pig-dice. But first before we dance, this are the rules of engagement :
Each player has a turn to role the dice,one turn has three plays, after which it's the other players turn
You can role from the numbers 1 to 6.
Every play score between 2 to 6 will be added to your turn score which is a total of three plays
A play score of 1 ends your turn and results to a Nil
The biggest risk not taking risks! Good luck and trust your insticts.


--- title: About ---
I'm Amy and this is my own personal log of recipies that I have found that I absolutely love making for myself and my family. If you have happened to stumble across it ... welcome!
What is "benevore"? Well, you've probably heard of an herbivore - one who eats only plants. And a carnivore eats meat. And an omnivore eats all the things. Well, a benevore eats the good things. "Good" may be a contestable, but here it means whole foods and plants. These are foods that are good for the human body, the earth, and the animals with whom we share this earth.
A note about these recipes:


EatAway is a Take-Away Food Delivery application run by an international team based in Adelaide. We are focused on bringing great food to Adelaide’s largest Chinese customer base. Our extensive market connections and networks, bilingual language options, free menu translations and multi-lingual product support team makes EatAway a great option for Restaurants wanting to sell to Chinese consumers and improve their bottom line. Through our easy-to-naviagate application, you can find and order anything you feel like with just the touch of a button. Whether you want lunch delivered at work, looking for a quick easy dinner, or a midnight snack, EatAway has you covered. EatAway will be launching in Adelaide on 11th of September 2017.
EatAway Pty. Ltd. (ACN 619 553 356) is a company registered in South Australia at 35 Grant Avenue, Rose Park, SA 5067. Founded by an Australian and a Chinese EatAway continues to build upon its foundations creating a bilingual team capable of bringing the best of the Australian food market to the doorstep of Chinese living abroad. Our goal is provide exceptional 24/7 food service to people living in Australia.
Copyright © 2016 - 2018. EatAway Pty Ltd All rights reserved.


## Problem --- ## People fail to accomplish their goals
## Solution --- ## An app that creates a commitment contract within a community of people
## Product --- ## Public Committment Contract
## Competition --- ![alt text](stickk.png "Title") ![alt text](go_fucking_do_it.png "Title")
## Market --- ## 1.5B
## About --- ## Chris Cruz & Omar Vivar - Serial Entrepreneur
## Next Steps --- ## Create a Focus Group for Market Validation & Build MVP
## LETS BE SUCCESSFUL TOGETHER


[1]
this camera is amazing , wonderful and small .
[2]
the camera is great , very intuitive and small .


interface OnCharClickedListener
Interface to be called on panel character click
onCharClicked
abstract fun onCharClicked(x: Int?, y: Int?, char: ColoredChar): Unit
Callback, which is called when panel is clicked


Task Hubs
A task hub is a logical container for durable task orchestrations and activities within the context of a single Azure storage account. Multiple functions and even function apps can exist in the same task hub, and the task hub often serves as an application container.
Task hubs do not need to be created explicitly. Rather, they are declared by name in host.json and initialized automatically by the runtime. Each task hub has its own set of storage queues, tables, and blobs within a single storage account, and all function apps which run in a given task hub will share the same storage resources. Orchestrator and activity functions can only interact with each other when they belong to the same task hub.
Configuring a Task Hub in host.json
A task hub name can be configured in the host.json file of a function app.
{
"durableTask": {
"HubName": "MyTaskHub"
}
}
Task hub names must start with a letter and consist of only letters and numbers. If not specified, the default task hub name for a function app is DurableFunctionsHub.
Note
If you have multiple function apps which share a storage account, it is recommended to configure a different task hub name for each function app. This ensures that each function app is properly isolated from each other.
Azure Storage resources
A task hub consists of several Azure Storage resources:
- One or more control queues.
- One work-item queue.
- One history table.
- One storage container containing one or more lease blobs.
All of these resources are created automatically in the default Azure Storage account when orchestrator or activity functions run or are scheduled to run.
Note
For more information on how task hub storage resources are used to scale out durable functions, see the Performance & Scale topic.


Join our group and a member of the committee should message you letting you know about how to get involved with
the club. Make sure that you check your 'Other' folder as that's where it will most likely end up!
Post on the page or message a member of the committee.


Welcome to kobbweb!
Login!
Join!
New User!
Hosted email distribution lists! Search! Archival! Enterprise! Cloud!


---
layout: post
title: "We launch I Has a Coupon!"
---
We folks at Brain Scan Studios are a busy lot. Traveling, sleeping, eating, and occasionally writing fills up our days. Somehow we got the time to launch a new blog, I Has a Coupon!  Yes, I know I can hear your griping, the blog is badly in need of a design, but with the holidays and all we launched it so the awaiting public can get their hands on all those juicy discounts.
Please enjoy.