{ "info": { "author": "Atsushi Odagiri", "author_email": "aodagx@gmail.com", "bugtrack_url": null, "classifiers": [ "Framework :: Pyramid", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3" ], "description": ".. contents::\n\n.. image:: https://travis-ci.org/rebeccaframework/rebecca.repository.png?branch=master\n :target: https://travis-ci.org/rebeccaframework/rebecca.repository\n\nrebecca.repository\n===========================\n\nAn implementation of repository pattern for SQLAlchemy.\n\n\nGetting Started\n-------------------------------\n\ninstall by pip::\n\n $ pip install rebecca.repository\n\n\nRepository for SQLAlchemy\n-------------------------------------------\n\nbasic repository\n+++++++++++++++++++++++++++++++++++++++++++++\n\nImplement your model by SQLAlchemy::\n\n from sqlalchemy import Column, Integer, Unicode\n from sqlalchemy.ext.declarative import declarative_base\n\n Base = declarative_base()\n DBSession = scoped_session(sessionmaker())\n\n class Person(Base):\n __tablename__ = \"person\"\n id = Column(Integer, primary_key=True)\n name = Column(Unicode(255))\n age = Column(Integer, default=0)\n job = Column(Unicode(255))\n\nGet repository::\n\n from rebecca.repository.sqla import SQLARepository\n\n person_repository = SQALRepository(Person, Person.id, DBSession())\n\nthis repository for Person model.\nTo get person, use Person.id as key.\n\n\nconditional repository\n+++++++++++++++++++++++++++++++++++++++++++\n\nrepository can configure to set condition::\n\n person_repository = SQALRepository(Person, Person.id, DBSession(), condition=Person.age>30)\n\n\nrepository factory\n+++++++++++++++++++++++++++++++++++++++++++\n\nIf you pass the parameters during request time, use factory.\n\n::\n\n class JobPersonRepository(SQLARepository):\n def __init__(self, db_session, job):\n super(JobPersonRepository, self).__init__(Person, Person.id, dbsession,\n condition=Person.job==job)\n\n\nThe parameter ``job`` will be passed from request attribute.\n\nTo register repository factory, add_repository_factory directive::\n\n config.add_repository_factory(JobPersonRepository, \"job-person\", args=(DBSession,))\n\nor repository_factory_config decorator::\n\n @repository_factory_config(\"job-person\", args=(DBSession,))\n class JobPersonRepository(SQLARepository):\n ....\n\n\nTo create repository from registered factory, call create_repository API::\n\n job = request.matchdict[\"job\"]\n repository = create_repository(\"person\", args=(job,))\n\nRepository for Filesystem\n----------------------------------------------\n\n``rebecca.repository.fs.FileSystemRepository`` is repository for FileSystem::\n\n >>> repository = FileSystemRepository(directory=\"/path/to/data\")\n >>> item = repository.new_item(\"new-item\")\n >>> item.data = b\"testing-binary-data\"\n >>> import transaction\n >>> transaction.commit()\n\n``FileSystemRepository.new_item`` is create new file system entry.\n``item.data`` is binary data that saved in the file.\nThat's transactional with `transaction `_ .\n\n.. note::\n\n ``FileSystemRepository`` uses `repoze.filesafe `_ that not supports py3k yet.\n\n\nrepository interface\n---------------------------------------\n\ncreate object for demonstration::\n\n person1 = Person(name=u\"person1\")\n DBSession.add(person1)\n DBSession.flush() # to generate person.id\n\n\nA repository has dict like interface::\n\n person_repository[person.id]\n person_repository.get(person.id)\n\nand utility methods::\n\n person_repository.get_many([1, 2, 3])\n new_person = person_repository.new_item()\n\npyramid integration\n----------------------------------------------\n\nrebecca.repository provides directive for pyramid registry.::\n\n config.include('rebecca.repository')\n config.add_repository(person_repository, 'person')\n\nor using repository_config decorator::\n\n @repository_config(name=\"person\", args=(DBSession,))\n class PersonRepository(SQLARepository):\n def __init__(self, dbsession):\n super(PersonRepository, self).__init__(Person, Person.id, dbsession)\n\nTo get registered repositories, use get_repository::\n\n get_repository(request, 'person')\n\nContributors\n============\n\n- Atsushi Odagiri, Original Author\n\nChangelog\n=========\n\n0.4 (2013-09-22)\n----------------------------\n\n- file repository(yet)\n\n0.3 (2013-08-29)\n--------------------------\n\n- added repository factory API\n- added get_many method\n\n0.2 (2013-08-25)\n-----------------------\n\n- added pyramid config directive and venusian decorator\n\n0.1.1 (2013-08-24)\n-----------------------\n\n- fix packaging bug\n\n0.1 (2013-08-24)\n-----------------------\n\n- first release", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/rebeccaframework/rebecca.repository", "keywords": "", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "rebecca.repository", "package_url": "https://pypi.org/project/rebecca.repository/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/rebecca.repository/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/rebeccaframework/rebecca.repository" }, "release_url": "https://pypi.org/project/rebecca.repository/0.4/", "requires_dist": null, "requires_python": null, "summary": "helper utility for repository pattern of PofEAA", "version": "0.4" }, "last_serial": 871040, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "f57dd0dbe03c661b6bff8a5e0b8eadde", "sha256": "8a22a2c57ac35e29a688af25dfaf2006393a92006bb33706ea2a7bca2d02c8cd" }, "downloads": -1, "filename": "rebecca.repository-0.1.zip", "has_sig": false, "md5_digest": "f57dd0dbe03c661b6bff8a5e0b8eadde", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7046, "upload_time": "2013-08-24T08:04:00", "url": "https://files.pythonhosted.org/packages/c6/86/8f5d545ae7f2f9b5737283d6b45f70ba3f4ea60011f17440e8a98dd5fbb2/rebecca.repository-0.1.zip" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "2b02783504a1bff6903bc615c322bb46", "sha256": "730dcdafc295610f14aee89d8d1d36607312b06acc5b42af55ba8557cac27727" }, "downloads": -1, "filename": "rebecca.repository-0.1.1.zip", "has_sig": false, "md5_digest": "2b02783504a1bff6903bc615c322bb46", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7926, "upload_time": "2013-08-24T08:18:16", "url": "https://files.pythonhosted.org/packages/32/ba/8c2e86e7d625366ce72bd4279406512ff2267283219771bc8a4910f5a6cc/rebecca.repository-0.1.1.zip" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "7e09a019ba03f32665270356c8b67ddf", "sha256": "aa59b54d7c42dac748958aeeea22ab9f6448a3e9aab5e2966f2b8c98c6996922" }, "downloads": -1, "filename": "rebecca.repository-0.2.zip", "has_sig": false, "md5_digest": "7e09a019ba03f32665270356c8b67ddf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9672, "upload_time": "2013-08-25T08:27:47", "url": "https://files.pythonhosted.org/packages/d6/d3/19d8406aa69f4a8fdb9d223db2ab589f0e58dcf336702393085dca3b5e4d/rebecca.repository-0.2.zip" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "1cc127a2aa262b48598695c946d49c19", "sha256": "169aa5444288ad5c7cf4937c6ec944f9cd3073e258220cd3e50f74c605a45ba9" }, "downloads": -1, "filename": "rebecca.repository-0.3.zip", "has_sig": false, "md5_digest": "1cc127a2aa262b48598695c946d49c19", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10828, "upload_time": "2013-08-28T16:55:37", "url": "https://files.pythonhosted.org/packages/b7/83/b5a080fc8e502f3dbb29e39f0353f329808312a239d7d3835a0fed86d86e/rebecca.repository-0.3.zip" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "bbb57efc8fa3060d69f09dcd49341b38", "sha256": "5f17f9d561dbfd674a1bad72e367de5ae1719061bb4f8ab886d40f37a24e6488" }, "downloads": -1, "filename": "rebecca.repository-0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bbb57efc8fa3060d69f09dcd49341b38", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 9182, "upload_time": "2013-09-22T14:22:44", "url": "https://files.pythonhosted.org/packages/48/2b/83477fd74c641d8619038f3c168b63fa7025be9ef9ff43a30b2e2e29caea/rebecca.repository-0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c265ee4ae82b85b177bee560aba738e4", "sha256": "b50a1e1f08c6220f78fd3dd00024a6ed802993c23e141fc4859d0aed2d23b48b" }, "downloads": -1, "filename": "rebecca.repository-0.4.zip", "has_sig": false, "md5_digest": "c265ee4ae82b85b177bee560aba738e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12411, "upload_time": "2013-09-22T14:22:42", "url": "https://files.pythonhosted.org/packages/11/1b/13e4b2bb993f5c4ebc2e054b0c799433238dcb1a1aedeacfa4e43b640427/rebecca.repository-0.4.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "bbb57efc8fa3060d69f09dcd49341b38", "sha256": "5f17f9d561dbfd674a1bad72e367de5ae1719061bb4f8ab886d40f37a24e6488" }, "downloads": -1, "filename": "rebecca.repository-0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bbb57efc8fa3060d69f09dcd49341b38", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 9182, "upload_time": "2013-09-22T14:22:44", "url": "https://files.pythonhosted.org/packages/48/2b/83477fd74c641d8619038f3c168b63fa7025be9ef9ff43a30b2e2e29caea/rebecca.repository-0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c265ee4ae82b85b177bee560aba738e4", "sha256": "b50a1e1f08c6220f78fd3dd00024a6ed802993c23e141fc4859d0aed2d23b48b" }, "downloads": -1, "filename": "rebecca.repository-0.4.zip", "has_sig": false, "md5_digest": "c265ee4ae82b85b177bee560aba738e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12411, "upload_time": "2013-09-22T14:22:42", "url": "https://files.pythonhosted.org/packages/11/1b/13e4b2bb993f5c4ebc2e054b0c799433238dcb1a1aedeacfa4e43b640427/rebecca.repository-0.4.zip" } ] }