action_steps

class camelot.view.action_steps.ChangeField(admin, field_attributes=None)

Pop up a list of fields from an object a user can change. When the user selects a field, an appropriate widget is shown to change the value of that field.

Parameters:
  • admin – the admin of the object of which to change the field
  • field_attributes – a list of field attributes of the fields that can be changed. If None is given, all fields are shown.

This action step returns a tuple with the name of the selected field, and its new value.

render()

create the dialog. this method is used to unit test the action step.

class camelot.view.action_steps.ChangeObject(obj, admin=None)

Pop up a form for the user to change an object

Parameters:
  • obj – the object to change
  • admin – an instance of an admin class to use to edit the object, None if the default is to be taken
get_object()

Use this method to get access to the object to change in unit tests

Returns:the object to change
render(gui_context)

create the dialog. this method is used to unit test the action step.

class camelot.view.action_steps.ChangeObjects(objects, admin)

Pop up a list for the user to change objects

Parameters:
  • objects – a list of objects to change
  • admin – an instance of an admin class to use to edit the objects.
../../../_images/import_from_file_preview.png

This action step can be customised using these attributes :

window_title

the window title of the dialog shown

title

the title of the dialog shown

subtitle

the subtitle of the dialog shown

icon

the camelot.view.art.Icon in the top right corner of the dialog

get_objects()

Use this method to get access to the objects to change in unit tests

Returns:the object to change
render()

create the dialog. this method is used to unit test the action step.

class camelot.view.action_steps.CloseView(accept=True)

Close the view that triggered the action, if such a view is available.

Parameters:accept – a boolean indicating if the view’s widget should accept the close event. This defaults to True, when this is set to False, the view will trigger it’s corresponding close action instead of accepting the close event. The close action might involve validating if the view can be closed, or requesting confirmation from the user.
class camelot.view.action_steps.CreateObject(obj)

Inform the GUI that obj was created.

Parameters:obj – the object that was created
class camelot.view.action_steps.DeleteObject(obj)

Inform the GUI that obj is going to be deleted.

Parameters:obj – the object that is going to be deleted
class camelot.view.action_steps.EditTextDocument(document)

Display a rich text editor to edit a text document.

Parameters:document – a QtGui.QTextDocument object.

When this action step is constructed, the thread affinity of the document is changed to be the gui thread. when the editing of the document is finished, the affinity is returned to the current thread. There is no Cancel button on the dialog because the document is changed when the user is editing it, and this cannot be undone.

This action step can be customised using these attributes :

window_title

the window title of the dialog shown

title

the title of the dialog shown

subtitle

the subtitle of the dialog shown

../../../_images/text_document.png
render()

create the text edit dialog. this method is used to unit test the action step.

class camelot.view.action_steps.FlushSession(session, update_depending_objects=True)

Flushes the session and informs the GUI about the changes.

Parameters:
  • session – an instance of sqlalchemy.orm.Session
  • update_depending_objects – set to False if the objects that depend on an object that has been modified need not to be updated in the GUI. This will make the flushing faster, but the GUI might become inconsistent.
class camelot.view.action_steps.MessageBox(text, icon=1, title=_('Message'), standard_buttons=<PyQt4.QtGui.StandardButtons object at 0x610bc20>)

Popup a QtGui.QMessageBox and send it result back. The arguments of this action are the same as those of the QtGui.QMessageBox constructor.

Parameters:
  • text – the text to be displayed within the message box
  • icon – one of the QtGui.QMessageBox.Icon constants
  • title – the window title of the message box
  • standard_buttons – the buttons to be displayed on the message box, out of the QtGui.QMessageBox.StandardButton enumeration. by default an Ok and a button Cancel will be shown.

When the Cancel button is pressed, this action step will raise a CancelException

../../../_images/import_from_file_confirmation.png
render()

create the message box. this method is used to unit test the action step.

class camelot.view.action_steps.OpenFile(path)

Open a file with the preferred application from the user. The absolute path is preferred, as this is most likely to work when running from an egg and in all kinds of setups.

Parameters:file_name – the absolute path to the file to open

The yield statement will return True if the file was opend successfull.

classmethod create_temporary_file(suffix)

Create a temporary filename that can be used to write to, and open later on.

Parameters:suffix – the suffix of the file to create
Returns:the filename of the temporary file
get_path()
Returns:the path to the file that will be opened, use this method

to verify the content of the file in unit tests

class camelot.view.action_steps.OpenFormView(objects, admin)

Open the form view for a list of objects, in a non blocking way :param objects: the list of objects to display in the form view :param admin: the admin class to use to display the form

class camelot.view.action_steps.OpenJinjaTemplate(template, context={}, environment=<camelot.core.templates.environment>, suffix='.txt')

Render a jinja template into a temporary file and open that file with the prefered application of the user.

Parameters:
  • environment – a jinja2.Environment object to be used to load templates from.
  • template – the name of the template as it can be fetched from the Jinja environment.
  • suffix – the suffix of the temporary file to create, this will determine the application used to open the file.
  • context – a dictionary with objects to be used when rendering the template
class camelot.view.action_steps.OpenStream(stream, suffix='.txt')

Write a stream to a temporary file and open that file with the preferred application of the user.

Parameters:
  • stream – the stream to write to a file
  • suffix – the suffix of the temporary file
class camelot.view.action_steps.OpenString(string, suffix='.txt')

Write a string to a temporary file and open that file with the preferred application of the user.

Parameters:
  • string – the string to write to a file
  • suffix – the suffix of the temporary file
class camelot.view.action_steps.PrintChart(chart)

Display a print preview dialog box for a matplotlib chart.

Parameters:chart – a camelot.container.chartcontainer.FigureContainer object or a camelot.container.chartcontainer.AxesContainer subclass

Example use of this action step :

class camelot.view.action_steps.PrintHtml(html)

Display a print preview dialog box for an html string.

Parameters:html – a string containing the html to render in the print preview.

the rendering of the html can be customised using the same attributes as those of the PrintPreview class.

class camelot.view.action_steps.PrintJinjaTemplate(template, context={}, environment=<camelot.core.templates.environment>)

Render a jinja template into a print preview dialog.

Parameters:
  • template – the name of the template as it can be fetched from the Jinja environment.
  • context – a dictionary with objects to be used when rendering the template
  • environment – a jinja2.Environment object to be used to load templates from. This defaults to the environment object available in camelot.core.templates
class camelot.view.action_steps.PrintPreview(document)

Display a print preview dialog box.

Parameters:document – an instance of QtGui.QTextDocument or QtWebKit.QWebView that has a print_() method. The thread affinity of this object will be changed to be able to use it in the GUI.

the print preview can be customised using these attributes :

margin_left

change the left margin of the content to the page border, unit is set by margin_unit

margin_top

change the top margin of the content to the page border, unit is set by margin_unit

margin_right

change the right margin of the content to the page border, unit is set by margin_unit

margin_bottom

change the bottom margin of the content to the page border, unit is set by margin_unit

margin_unit

defin which unit is used for the defined margins (e.g. margin_left, margin_bottom)

page_size

the page size, by default QtGui.QPrinter.A4 is used

page_orientation

the page orientation, by default QtGui.QPrinter.Portrait is used.

document

the QtGui.QTextDocument holding the document that will be shown in the print preview

../../../_images/simple_report.png
render(gui_context)

create the print preview widget. this method is used to unit test the action step.

class camelot.view.action_steps.Refresh

Refresh all the open screens on the desktop, this will reload queries from the database

class camelot.view.action_steps.SelectFile(file_name_filter='')

Select one or more files to open or to process.

Parameters:file_name_filter – Filter on the names of the files that can be selected, such as ‘All files (*)’. See QtGui.QFileDialog for more documentation.
single

defaults to True, set to False if selection of multiple files is allowed

existing

defaults to True, set to False if non existing files are allowed (to save something)

The yield statement of SelectFile returns a list of selected file names. This list has only one element when single is set to True. Raises a camelot.core.exception.CancelRequest when no file was selected.

../../../_images/select_file.png

This action step stores its last location into the QtCore.QSettings and uses it as the initial location the next time it is invoked.

render(directory=None)

create the file dialog widget. this method is used to unit test the action step.

Parameters:directory – the directory in which to open the dialog, None to use the default
class camelot.view.action_steps.SelectObject(admin)

Select an object from a list

Parameters:admin – a camelot.admin.object_admin.ObjectAdmin object
class camelot.view.action_steps.ShowChart(chart)

Show a full screen chart.

Parameters:chart – a camelot.container.chartcontainer.FigureContainer or camelot.container.chartcontainer.AxesContainer
class camelot.view.action_steps.ShowPixmap(pixmap)

Show a full screen pixmap

Parameters:pixmap – a camelot.view.art.Pixmap object
class camelot.view.action_steps.UpdateObject(obj)

Inform the GUI that obj has changed.

Parameters:obj – the object that has changed
class camelot.view.action_steps.UpdateProgress(value=0, maximum=0, text=None, detail=None, clear_details=False)

Inform the user about the progress the application is making while executing an action. This ActionStep is not blocking. So it can be used inside transactions and will result in a minimum of delay when yielded. Each time an object is yielded, the progress dialog will be updated.

../../../_images/progress_dialog.png
Parameters:
  • value – the current step
  • maximum – the maximum number of steps that will be executed. set it to 0 to display a busy indicator instead of a progres bar
  • text – the text to be displayed inside the progres bar
  • detail – the text to be displayed below the progres bar, this text is appended to the text already there
  • clear_details – clear the details text already there before putting the new detail text.
gui_run(gui_context)

This method will update the progress dialog, if such dialog exists within the GuiContext

Parameters:gui_context – a camelot.admin.action.GuiContext instance
class camelot.view.action_steps.WordJinjaTemplate(template, context={}, environment=<camelot.core.templates.environment>, suffix='.xml')

Render a jinja template into a temporary file and open that file with microsoft word through the use of COM objects.

Parameters:
  • environment – a jinja2.Environment object to be used to load templates from.
  • template – the name of the template as it can be fetched from the Jinja environment.
  • suffix – the suffix of the temporary file to create, this will determine the application used to open the file.
  • context – a dictionary with objects to be used when rendering the template

Previous topic

action_runner

Next topic

backup

This Page