06 Feb 2012

feedSymfony Blog

Symfony 2.0.10 released

Symfony 2.0.10 has just been released:

The CHANGELOG has all the details about the changes done in this release and you can also have a look at the full diff.

If you are starting a new project, you can get the Symfony Standard Edition distribution on the download page.

If you already have a project based on the Symfony Standard Edition 2.0.x, you can easily upgrade to 2.0.10 by getting the new deps and deps.lock files.

Then, run the vendors script (it also clears your cache):

$ ./bin/vendors install

Remember that the Symfony2 Components are also available as standalone libraries. You can get them via their dedicated read-only repositories on Github (https://github.com/symfony/Finder for instance), install them via PEAR (pear install symfony2/Finder), or even install them via Composer.


Be trained by Symfony experts - 2012-02-06 Paris - 2012-02-13 Paris - 2012-02-13 Paris

06 Feb 2012 11:35am GMT

feedshare.ez.no > All forums (topics and replies)

Multilingual object relations search problem

Hello,

I'm working on a multilingual website where I have a content class "Profile" that contains object relations attribute, so the relation will be between "Profile" and "Speciality".

Most of the objects are created in two languages, English and Arabic.

Now, in the perfect world when I try search for a "Speciality" in either languages I would get results for all profiles that have relation with that speciality. But in the real wold this doesn't happen.

What happens is I get results only for Profile objects that where created initially with the same language I'm searching in. For example:
I created the object Abdallah in Arabic, and it is related to Web Development (has two translations).
Now when I search for "Web Development" in Arabic, Abdallah shows up. But when I search for "Web Development" in English Abdallah doesn't show up.

And even worse, even I translate Abdallah into English it won't show up as well if I searched for "Web Development" in English.

Bottom line, searching for related objects returns results only from the initial language of the other related objects!

I'm using eZp 4.4 without eZFind.

Is that a normal behavior? Is there any fix or workaround for this?

Thanks in advance,
Abdallah

06 Feb 2012 10:15am GMT

feedSymfony Blog

A week of symfony #266 (30 January -> 5 February 2012)

This week, Symfony2 master branch committed a ton of fixes, tweaks and refactorizations related to Form and Validation components. In addition, Symfony2 official repository achieved a very remarkable milestone: 1,000 forks.

Development mailing list

Symfony2 development highlights

Master branch:

2.0.x branch:

Repository summary: 3,869 watchers (#1 in PHP, #28 overall) and 1000 forks (#1 in PHP, #11 overall).

Updated plugins

They talked about us


Be trained by Symfony experts - 2012-02-06 Paris - 2012-02-13 Paris - 2012-02-13 Paris

06 Feb 2012 9:24am GMT

feedshare.ez.no > All forums (topics and replies)

Re: How to redirect /x to /defaultsiteaccess/x

Then you are stuck with rewrite rules IMO :)

06 Feb 2012 9:08am GMT

Re: How to redirect /x to /defaultsiteaccess/x

Thanks. In my case, I would like to show the default siteaccess so RemoveSiteAccessIfDefaultAccess is set to disabled (default value). In fact without the rewrite rules, it seems to me that ezurl operator does not always include the fre siteaccess when a page is displayed without /fre (even if RemoveSiteAccessIfDefaultAccess=disabled). So some pages were accessible from 2 URLs www.domain.org/fre/x and www.domain.org/x. I would like to avoid this and always display fre siteaccess.

Mathieu

06 Feb 2012 8:55am GMT

feedDjango community aggregator: Community blog posts

Apple lion reinstall experience and surprise

06 Feb 2012 2:12am GMT

05 Feb 2012

feedDjango community aggregator: Community blog posts

Configuring application settings for a Django project

I am currently working on a new project where I need application specific settings that a non-Django admin user can edit without editing a file. In this particular case, there is a "schedule" app, and I wanted to give a user the ability to add / remove timezones for that particular schedule. Besides that the setting application had meet the following requirements:

work with MongoDB or make it easy to create a backend to store settings
be...

05 Feb 2012 5:32pm GMT

03 Feb 2012

feedDjango community aggregator: Community blog posts

Release 0.6.5

We just released LFS 0.6.5. This is a yet another bugfix release.

Changes

  • Bugfix: added csrftoken for rating mails (Maciej Wi?niowski)
  • Bugfix: fixed ImageWithThumbsField (Maciej Wi?niowski)
  • Updated romanian translations (olimpiu)
  • Updated polish translations (Maciej Wi?niowski)

News:

Information

You can find more information and help on following locations:

03 Feb 2012 11:50pm GMT

31 Jan 2012

feedPlanet TurboGears

Alessandro Molina: Mastering the TurboGears EasyCrudRestController

One of the key features of TurboGears2 is the great CRUD extension. Mastering the CRUD extension can really make the difference between spending hours or just a few minutes on writing a web app prototype or even a full application.

The CRUD extension provides two main features, the CrudRestController which is meant to help creating totally custom CRUDs and the EasyCrudRestController which provides a quick and easy way to create CRUD interfaces.

I'll focus on the EasyCrudRestController as it is the easiest and more productive one, moving forward to the CrudRestController is quite straightforward after you feel confident with the Easy one.

The target will be to create, in no more than 40 lines of controller code, a full featured photo gallery application with:

If you don't already know how to create a new TurboGears project, start by giving a look at TurboGears Installation for The Impatient guide. Just remember to add tgext.datahelpers to dependencies inside your project setup.py before running the setup.py develop command.

I'll start by providing a Gallery and Photo model. To store the images I'll use tgext.datahelpers to avoid having to manage the attachments. Using datahelpers also provides the advantage of having thumbnails support for free.

from tgext.datahelpers.fields import Attachment, AttachedImage
 
class Gallery(DeclarativeBase):
    __tablename__ = 'galleries'
 
   uid = Column(Integer, autoincrement=True, primary_key=True)
   name = Column(Unicode(100), nullable=False)
 
class Photo(DeclarativeBase):
    __tablename__ = 'photos'
 
    uid = Column(Integer, autoincrement=True, primary_key=True)
    name = Column(Unicode(100), nullable=False)
    description = Column(Unicode(2048), nullable=False)
    image = Column(Attachment(AttachedImage))
 
    author_id = Column(Integer, ForeignKey(model.User.user_id)))
    author = relation(app_model.User, backref=backref('photos'))
 
    gallery_id = Column(Integer, ForeignKey(Gallery.uid))
    gallery = relation(Gallery, backref=backref('photos', cascade='all, delete-orphan'))

Now to be able to start using our galleries we will have to provide a place where to view them and a gallery management controller to create and manage them. Viewing them should be quite straightforward, I'll just retrieve the galleries from the database inside my index method and render them. To access a single gallery I'll rely on the datahelpers SQLAEntityConverter which will retrieve the gallery for us ensuring it exists and is valid. For the management part I'll create an EasyCrudRestController mounted as /manage_galleries

from tgext.crud import EasyCrudRestController
 
class GalleriesController(EasyCrudRestController):
    allow_only = predicates.in_group('photos')
    title = "Manage Galleries"
    model = model.Gallery
 
    __form_options__ = {
        '__hide_fields__' : ['uid'],
        '__omit_fields__' : ['photos']
    }
 
class RootController(BaseController):
    manage_galleries = GalleriesController(DBSession)
 
    @expose('photos.templates.index')
    def index(self, *args, **kw):
        galleries = DBSession.query(Gallery).order_by(Gallery.uid.desc()).all()
        return dict(galleries=galleries)
 
    @expose('photos.templates.gallery')
    @validate(dict(gallery=SQLAEntityConverter(Gallery)), error_handler=index)
    def gallery(self, gallery):
        return dict(gallery=gallery)

Logging in with an user inside the photos group and accessing the /manage_galleries url we will be able to create a new gallery and manage the existing ones.

To configure how the crud controller forms should appear and behave the __form_options__ property of the EasyCrudRestController can be used. This property relies on the same options as Sprox FormBase and customizes both the Edit and Add forms.
The next part is probably to be able to upload some photos inside our newly created galleries. To perform this we will create a new EasyCrudRestController for gallery photos management.

from tgext.crud import EasyCrudRestController
from tw.forms import FileField
from tw.forms.validators import FieldStorageUploadConverter
from webhelpers import html
 
class PhotosController(EasyCrudRestController):
    allow_only = predicates.in_group('photos')
    title = "Manage Photos"
    model = model.Photo
    keep_params = ['gallery']
 
    __form_options__ = {
        '__hide_fields__' : ['uid', 'author', 'gallery'],
        '__field_widget_types__' : {'image':FileField},
        '__field_validator_types__' : {'image':FieldStorageUploadConverter},
        '__field_widget_args__' : {'author':{'default':lambda:request.identity['user'].user_id}}
    }
 
    __table_options__ = {
        '__omit_fields__' : ['uid', 'author_id', 'gallery_id', 'gallery'],
        '__xml_fields__' : ['image'],
        'image': lambda filler,row: html.literal('‹img src="%s"/›' % row.image.thumb_url)
    }

Mounting this inside the RootController as manage_photos = PhotosController(DBSession) it will be possible to upload new photos inside any gallery. To manage the photos inside the first gallery for example we will have to access /manage_photos?gallery=1url.

Each parameter passed to the EasyCrudRestController is used to filter the entries to show inside the management table and the keep_params option provides a way to keep the filter around. This makes possible to edit the photos of only one gallery at the time instead of having all the photos mixed together. Also when a new photo is created it will be created in the current gallery.

The PhotosController got more customization than the GalleriesController, through the __field_widget_types__ and __field_validator_types__ options we force the image field to be a file field and using the __field_widget_args__ we ensure that the newly uploaded photos have the current user as the author.

__table_options__ provide a way to customize the management table. The available options are the same as the Sprox TableBase and Sprox TableFiller objects. in this case we hide the indexes of the rows on the database and the gallery itself, as we are managing the photos of a specific gallery we probably don't need to know which galleries the photos belong to. Using the __xml_fields__ we also specify that the image field provides HTML and so doesn't have to be escaped. The image entry forces the table to show the image thumbnail for the image column of the table instead of printing the AttachedImage.__repr__ as it would by default.

At first sight it might sound a bit complex, but once you start feeling confident, the CRUD extension makes possible to create entire applications in just a bunch of code lines. With just a few lines of code we created a photo gallery with multiple albums support and we can now focus on the index and gallery templates to make the gallery as pleasant as possible for our visitors.

The complete implementation of the photo gallery is available as a pluggable application on bitbucket, feel free to use it in your TurboGears projects.

31 Jan 2012 8:22pm GMT

30 Jan 2012

feedSymfony Blog

A week of symfony #265 (23->29 January 2012)

This week, time, logger and Doctrine collectors were tweaked and refactored. Meanwhile, the Form component fixed lots of bugs, specially with the improvements of ChoiceListInterface and its implementations.

Development mailing list

Symfony2 development highlights

Master branch:

2.0.x branch:

Repository summary: 3,830 watchers (#1 in PHP, #27 overall) and 983 forks (#1 in PHP, #11 overall).

Updated plugins

They talked about us


Be trained by Symfony experts - 2012-02-06 Paris - 2012-02-13 Paris - 2012-02-13 Paris

30 Jan 2012 4:19pm GMT

feedDevZone

Press Release Roundup – Zend Server on OSX and phpcloud.com

Here at Zend we get a lot of good press for our products. We don't want to turn DevZone into just a feed for those that write cool things about us, but some of these are helpful if you are considering using our products. So instead of flooding your feed with individual articles about how great the products are, occasionally we'll post a roundup. That way they won't get in your way, but there are here when you need them.

30 Jan 2012 2:37pm GMT

27 Jan 2012

feedDevZone

Using ClamAV with Zend Framework

Want to check your file uploads with ClamAV? We've got a link to a tutorial to show you how.

27 Jan 2012 2:50pm GMT

25 Jan 2012

feedCI News

Pancake App

Three days ago I received my copy of Inc magazine. I was scanning through it and low and behold there is a 1/4 page blurb about Pancake App! Phil is a leader within the CodeIgniter community and a member of the Reactor Team so I was very excited to see this. After doing some research I found that we have never done a showcase on Pancake App so this entry is to make that right. Congratulations to Phil, Lee, Bruno and Adam! You guys deserve the recognition that Inc. Magazine is bringing you.

Tell us a little about Phil and Lee.

Lee Tengum is a PHP developer with a keen eye for design. I am a long-time CodeIgniter user and contributor who also likes to build distributed applications. We make a good team, as I couldn't design a website to save my life and I have plenty of experience building backend systems.

How did you two come to work together?

We've been working together on various projects for years now after we crossed paths on the CodeIgniter forums back in 2007. Lee built a very simple CMS which I ended up buying and that CMS became the great grandaddy of PyroCMS. Since then there have been a few client projects we've worked on and while Lee is a talented programmer we generally split the work as Lee on UI and myself on the main development. About a year ago Lee started building a simple internal application to collect payments from a difficult client.

After showing it to a few different people they were interested and wanted more features added in, which was when Lee decided to migrate the code to CodeIgniter and get more people involved. Throughout Pancakes lifetime it has had contributions from several prominent CodeIgniter developers and the team currently consists of Lee, Bruno De Barros, Adam Jackett and myself.

Pancake App website screenshot

What can you tell us about the app in general?

I like to describe PancakeApp as a freelancers sidekick. PancakeApp handles the full project life-cycle from Proposal to Payment. You can draft Proposals and send them to your client, who can then accept or reject until an iteration is agreed on, all from within the app. That saves a lot of PDF emailing! With the Proposal agreed upon you can make a Project, add Milestones and Tasks and even track time against each task. You can generate invoices based on the Projects which automatically take all your tasks and tracked time into consideration, so your Project is instantly turned into line items and totals. You can of course also create invoices from scratch. The invoices are sent to the client who then has multiple options of paying based on what you've enabled in the settings, so you can take money via PayPal, Authorize.net, Bank Transfer or even accept cash; instructions will be listed on the invoice.

You might be thinking of a hosted service that sounds similar too, but PancakeApp is not a hosted service. It's a single payment to download the software and then it's all yours to go on your own server. No worries about other companies having your client details, no monthly fees, just one payment.

There is one last thing that makes PancakeApp awesome: Auto-updating. If you turn this feature on in the control panel, PancakeApp will upgrade in the background as soon as we release a new version. You don't need to keep logging into your FTP server to replace files or worry about running an upgrade script, we send out a HTTP notification to installations to grab the new files and CodeIgniter Migrations take care of the database changes.

I know you are on the Reactor team but when building something major like this you can build it using anything. So what was your major consideration in using CodeIgniter for this?

The most obvious answer would be that both me and Lee know the framework well and have been using it a long time, but the main reason is that CodeIgniter is currently the most simple and most portable framework around. While some frameworks undergo large rewrites to implement the very latest PHP 5.3 features, CodeIgniter maintains backwards compatibility for older servers meaning it is perfect for distributed applications in two ways: 1) We won't have to re-write PancakeApp in a year, it has already gone from 1.7.x to 2.1.0 without a hitch, but also 2) it will work on PHP 5.1.6 servers. While as developers we have probably all upgraded any servers in our control to PHP 5.3 and are trying to convince our clients to upgrade theirs, when you release a distributed application like PancakeApp it has to work in as many places as possible and CodeIgniter makes that incredibly simple. After-all if we used a PHP 5.3-only framework and 30% of servers are still on PHP 5.2, we've just reduced our target market by 30%!

What is next on the plate for pancake app? Any additional functionality you can tell us about?

There are some brilliant features coming for PancakeApp at the moment. We've just finished up some improvements to User Management and Permissions meaning that you can add plenty of users with varying levels of access, and there are plans to improve the existing REST API even more to allow for more integration with other services.

Do you have any other information you'd like to share with the community? Tips from this project you'd like to share? Lessons you've learned?

The API is something I really wish I'd focused on more at the start. It is a well-known developer habbit to build an application or website then add the API in as more of an after-thought. While we are happy to have an API if we'd build it first and used it as a core for the system (much like Twitter does for example) then we'd have been able to make it much more powerful and have web features and API features keep up with each other without duplication of effort.

A positive lesson we learned was open, honest, personal customer support. While PancakeApp was still in its first year we had a few users on Twitter and in various forums make some complaints that certain features were not included. While some developers would take a defensive position, we admitted there was room for improvement and engaged them in conversation. Those users who complained all now have a PancakeApp license and have become some of our best evangelists. It's thanks to users like this that PancakeApp has started to spread and we even got quite a big mention in Inc Magazine this month!*

25 Jan 2012 4:56pm GMT

20 Jan 2012

feedCI News

ZoomShift

What can you tell us about the team that built ZoomShift?

Zoomshift is a rather young 4-person team composed of 2 developers, a designer, and a sales and content person. Our team is very tight knit and incredibly passionate about entrepreneurship and technology. We are strong believers in lean methodology and are constantly searching for new technologies to set our product apart. We all agree that we can't see ourselves doing anything else. We love what we do and have a strong passion for entrepreneurship.

What can you tell us about the site in general? What are the goals of the site and the main audience?

The idea for ZoomShift was born from experience working in the service industry. From serving tables to selling tickets we realized first-hand that employee scheduling can be an absolute nightmare for many organizations. After doing some research we were unable to find a solution that was intuitive, affordable, and truly simplified the scheduling process. In turn, we decided to build ZoomShift with the goal of making scheduling simple for both employees and managers. Our vision for ZoomShift has always been very focused with the mentality that less is more. We focus on the core functionality of online employee scheduling and purposefully leave out all of the extra features that many other solutions provide.

Currently, we have customers ranging from restaurants and hotels to volunteer organizations and small medical clinics. ZoomShift is not designed to fit one specific industry, but rather it is intended to work for any organization that needs to schedule employees hourly. We love that our customers are other small businesses and from their feedback we are constantly finding new ways to make scheduling even simpler.

What was your major consideration in using CodeIgniter?

Choosing CodeIgniter was an easy decision for us. We wanted a lightweight and flexible framework that was relatively easy to learn. From a development perspective we didn't want to be confined, and we knew that we would be needing to extend the framework quite a bit. CodeIgniter offered us a solid foundation in MVC that we could then comfortably build on top of. Also, it was incredibly important to us that the framework was well documented. The documentation was evidence to us that CodeIgniter was polished and built with care. We clearly made the right decision with CodeIgniter. It's simple, not bloated, and suitable for the pro down to the novice.

What is next on the plate for ZoomShift? Any additional functionality.

Mobile is next. We have been waiting to pull the trigger on mobile development for a few months now. We really wanted to dial in the core feature set of the application before turning our focus to mobile. Now that we have a steady customer base and have validated our core features it is time to push onto mobile. While the current application runs smoothly on mobile browsers we want to offer our customers a native application for iOS and Android.

Do you have any other information you'd like to share with the community?

Build a strong team. It is the team behind a product that makes it great, and an idea is only worth something if you have the team to execute it. Finding a group of talented individuals that share a passion is incredibly powerful. Do what you love, talk about what you love, and go where other people are doing what you love. If you immerse yourself and reach out to others you will naturally build relationships with people that think like you do. These relationships will be a source of energy and inspiration as well as an incredible source of knowledge. Do what you love and make friends.

20 Jan 2012 8:47pm GMT

11 Jan 2012

feedDevZone

Zend Developer Pulse

There's a new survey series worth checking out called the Zend Developer Pulse™. Zend is taking the pulse of developers regarding technology and career topics. Findings from the first survey, conducted online in Q4 2011, are available in a summary report. Zend received over 3,000 responses in 48 hours. Not bad. Take a peek at the report, and send your feedback to Zend.

11 Jan 2012 3:48pm GMT

31 Dec 2011

feedPlanet TurboGears

Mengu Kagan: 2011 At A Glance

I can call 2011 quite a good year on my behalf however when I look at things I've done, I feel I've done much less than I could. Here is a list of what I have done in 2011.

Things I've Done in 2011

31 Dec 2011 7:07pm GMT

21 Dec 2011

feedPlanet TurboGears

Mengu Kagan: Subqueries With SQLAlchemy

I have been developing the new version of www.osesturkiye.com for the Turkish version of the show called "The Voice". It's already built with TurboGears, mako and SQLAlchemy. In the new version we have a gallery and many photos in it. My SQLAlchemy model is like this:

class GalleryPhoto(DeclarativeBase):
    __tablename__ = 'gallery_photo'

    id = Column(Integer, primary_key=True)
    photo_image = Column(UnicodeText)
    photo_description = Column(UnicodeText)
    dateline = Column(DateTime, default=datetime.now)

The problem I have is, in the photo detail page I will display "Previous" and "Next" links. I can implement this with two ways..

21 Dec 2011 8:28pm GMT

20 Dec 2011

feedCI News

CPA Site Solutions touts CI

CPA Site Solutions just put out this Press Release that touts CodeIgniter. They used it to create their new email marketing system.

And I quote:

"We evaluated several frameworks for PHP web application development. Many of them could have worked, but they really tried to lock you in to their way of doing things," explains Bob Rayl, Chief Technology Officer at CPA Site Solutions. "They did not offer the flexibility we need to accomplish some of the heavily proprietary functionality we bundle into our systems."

As part of the original article they also state that CI helped cut their development time.

If you have used CodeIgniter for a project that you think deserves a mention email Marcus

20 Dec 2011 1:00pm GMT

30 Nov 2011

feedNews

Granite Horizon to Showcase Cloud-Based Version of eZ Publish at Gilbane

Granite Horizon LLC and eZ Systems AS today announced Granite Horizon in the Cloud to be showcased at The Gilbane Conference in Boston.

30 Nov 2011 12:55pm GMT

Granite Horizon to Showcase Cloud-Based Version of eZ Publish at Gilbane

Granite Horizon LLC and eZ Systems AS today announced Granite Horizon in the Cloud to be showcased at The Gilbane Conference in Boston.

30 Nov 2011 12:55pm GMT

Granite Horizon to Showcase Cloud-Based Version of eZ Publish at Gilbane

Granite Horizon LLC and eZ Systems AS today announced Granite Horizon in the Cloud to be showcased at The Gilbane Conference in Boston.

30 Nov 2011 12:55pm GMT

22 Nov 2011

feedNews

eZ Systems Unveils New Tools to Make Websites More Adaptable, Mobile-Ready and Easier to Search

Skien, Norway - November 22, 2011 - eZ Systems AS, the award winning Open Source Web Content Management Platform provider, today announced the release of its newest update, version 4.6, titled Annapurna. Users can benefit from enhanced extensibility, simplified content access and App readiness.

22 Nov 2011 12:43pm GMT

eZ Systems Unveils New Tools to Make Websites More Adaptable, Mobile-Ready and Easier to Search

Skien, Norway - November 22, 2011 - eZ Systems AS, the award winning Open Source Web Content Management Platform provider, today announced the release of its newest update, version 4.6, titled Annapurna. Users can benefit from enhanced extensibility, simplified content access and App readiness.

22 Nov 2011 12:43pm GMT

eZ Systems Unveils New Tools to Make Websites More Adaptable, Mobile-Ready and Easier to Search

Skien, Norway - November 22, 2011 - eZ Systems AS, the award winning Open Source Web Content Management Platform provider, today announced the release of its newest update, version 4.6, titled Annapurna. Users can benefit from enhanced extensibility, simplified content access and App readiness.

22 Nov 2011 12:43pm GMT

21 Nov 2011

feedNews

eZ Systems Welcomes Inclusion in the 2011 Magic Quadrant for Web Content Management

Skien, Norway, November 21, 2011 - eZ Systems AS, the creator of the award winning Open Source Web Content Management Platform, eZ Publish, today announced it has been included by Gartner, Inc. in the "Magic Quadrant for Web Content Management,"* based on an evaluation of the company's ability to execute and its completeness of vision.

21 Nov 2011 2:15am GMT

eZ Systems Welcomes Inclusion in the 2011 Magic Quadrant for Web Content Management

Skien, Norway, November 21, 2011 - eZ Systems AS, the creator of the award winning Open Source Web Content Management Platform, eZ Publish, today announced it has been included by Gartner, Inc. in the "Magic Quadrant for Web Content Management,"* based on an evaluation of the company's ability to execute and its completeness of vision.

21 Nov 2011 2:15am GMT

eZ Systems Welcomes Inclusion in the 2011 Magic Quadrant for Web Content Management

Skien, Norway, November 21, 2011 - eZ Systems AS, the creator of the award winning Open Source Web Content Management Platform, eZ Publish, today announced it has been included by Gartner, Inc. in the "Magic Quadrant for Web Content Management,"* based on an evaluation of the company's ability to execute and its completeness of vision.

21 Nov 2011 2:15am GMT

09 Nov 2011

feedPlanet Zope.org

Updated MiniPlanet, now with meta-feed

My MiniPlanet Zope product has been working steady and stable for some years, when suddenly a user request came along. Would it be possible to get a feed of all the items in a miniplanet? With this update it became possible. MiniPlanet is an old-styl...

09 Nov 2011 9:41am GMT

07 Nov 2011

feedPlanet Zope.org

Welcome to Betabug Sirius

It has been quite some time that I announced_ that I'd be working as a freelancer. Lots of stuff had to be done in that time, but finally things are ready. I've founded my own little company and set up a small website: Welcome to Betabug Sirius!

07 Nov 2011 9:26am GMT

03 Nov 2011

feedPlanet Zope.org

Assertion helper for zope.testbrowser and unittest

zope.testbrowser is a valuable tool for integration tests. Historically, the Zope community used to write quite a lot of doctests, but we at gocept have found them to be rather clumsy and too often yielding neither good tests nor good documentation. That's why we don't use doctest much anymore, and prefer plain unittest.TestCases instead. However, doctest has one very nice feature, ellipsis matching, that is really helpful for checking HTML output, since you can only make assertions about the parts that interest you. For example, given this kind of page:

>>> print browser.contents
<html>
  <head>
    <title>Simple Page</title>
  </head>
  <body>
    <h1>Simple Page</h1>
  </body>
</html>

If all you're interested in is that the <h1> is rendered properly, you can simply say:

>>> print browser.contents
<...<h1>Simple Page</h1>...

We've now ported this functionality to unittest, as assertEllipsis, in gocept.testing. Some examples:

self.assertEllipsis('...bar...', 'foo bar qux')
# -> nothing happens

self.assertEllipsis('foo', 'bar')
# -> AssertionError: Differences (ndiff with -expected +actual):
     - foo
     + bar

self.assertNotEllipsis('foo', 'foo')
# -> AssertionError: "Value unexpectedly matches expression 'foo'."

To use it, inherit from gocept.testing.assertion.Ellipsis in addition to unittest.TestCase.


03 Nov 2011 7:19am GMT

13 Oct 2011

feedshare.ez.no > Articles and Tutorials

Building native mobile applications with the eZ Publish REST API

eZ Publish is a Web Content Management System that provides a platform to publish content via any channel. Its powerful presentation engine enables you to create websites and pages that display your content in a variety of renderings. Its powerful API directly and simply integrates your content with any web-enabled application on any device, such as the iPad, iPhone, or an Android device, without ever interfering with, or impacting the platform itself.

At the end of this tutorial, you will have learnt the basics of mobile application development for both iOS and Android platforms, consuming content from eZ Publish. CMS-side adjustments for the mobile channel will be acquired too. This cheatsheet will help you leverage the multichannel capabilities of eZ Publish, and its REST API in future projects, in a more systematic fashion.

13 Oct 2011 2:21pm GMT

16 Aug 2011

feedshare.ez.no > Articles and Tutorials

Image Maps in ezwebin Banners

Beginners guide for learning how to use image maps in the ezwebin extension.

16 Aug 2011 12:40pm GMT

07 Jul 2011

feedshare.ez.no > Articles and Tutorials

Building mobile browser and hybrid applications with eZ Publish

eZ Publish is a Web Content Management System that provides a platform to publish content via any channel. Its powerful presentation engine enables you to create websites and pages that display your content in a variety of renderings. Its powerful API directly and simply integrates your content with any web-enabled application on any device, such as the iPad, iPhone, or an Android device, without ever interfering with, or impacting the platform itself.

At the end of this tutorial, you will have learnt the basics of mobile application development for both iOS and Android platforms, consuming content from eZ Publish. CMS-side adjustments for the mobile channel will be acquired too. This cheatsheet will help you leverage the multichannel capabilities of eZ Publish, and its REST API in future projects, in a more systematic fashion.

07 Jul 2011 1:29pm GMT

06 Apr 2011

feedcakebaker

Bash autocompletion for Git

One thing I often wished to have when using Git was the ability to autocomplete Git commands and branch names. As I had to learn this week from Markus Prinz' article A few of my Git tricks, tips and workflows, Git comes with an autocompletion script for the Bash shell. But to use the autocompletion, [...]

06 Apr 2011 8:36am GMT

01 Apr 2011

feedcakebaker

Array iteration with JavaScript

Till recently I always used a for-loop when I had to iterate over an array in JavaScript. For example: var myArray = [1, 2, 3, 4]; for (var i = 0; i < myArray.length; i++) { console.log(myArray[i]); } However, with ECMAScript 5 the Array object itself got some methods for iteration purposes. With those methods [...]

01 Apr 2011 2:51pm GMT

10 Jan 2011

feedcakebaker

2-legged vs. 3-legged OAuth

From emails I receive it seems like there is a bit of confusion about what the terms 2-legged OAuth and 3-legged OAuth mean. I hope I can clear up this confusion with this article (and don't contribute more to the confusion…). In short, they describe two different usage scenarios of OAuth involving two respectively three [...]

10 Jan 2011 5:30pm GMT

04 Mar 2010

feedWithCake.com Companies Hiring

qpLogic Europe

We can use immediately an experienced Cake developer for assisting us with developing a multi-lingual application that needs some Jake/Joomla (css) integration. We have continuously Cake projects and prefer to work with a team of individual developers in multiple time zones. Please show me that you are experienced, affordable and have at least 24 hours available per week (40 is better ;-).

04 Mar 2010 11:54am GMT