Using GNewCash¶
GnuCashFile¶
GnuCashFile is responsible for reading data from and writing data to GnuCash files.
To read a GnuCash file:
from gnewcash import GnuCashFile
my_file = GnuCashFile.read_file('/path/to/my/file.gnucash')
To write a GnuCash file (recommend backing up beforehand if overwriting an existing file):
from gnewcash import GnuCashFile, Book
my_book = Book()
my_file = GnuCashFile([my_book])
my_file.build_file('/path/to/my/file.gnucash')
The build_file function accepts two arguments to modify how the file is written: prettify_xml
and use_gzip
. Both options are turned off by default.
prettify_xml
will prettify the XML before writing to disk. Helpful if the XML is to be reviewed on disk.use_gzip
will write the file to disk using GZip compression (GnuCash’s default).
Book¶
Book is a GnuCash entry that contains transactions, accounts, and their associated commodity.
When you read an existing GnuCash file, the book object(s) are automatically generated from the XML. To create a book object:
from gnewcash import Book, Account, AccountType, TransactionManager, Commodity
my_root_account = Account()
my_root_account.type = AccountType.ROOT
my_commodity = Commodity('USD', 'ISO4217')
my_transaction_manager = TransactionManager()
my_book = Book(root_account=my_root_account, transactions=my_transaction_manager, commodities=[my_commodity])
Commodity¶
Commodity is a GnuCash entry that defines the type of currency used for the book/account/transaction.
You can find more information on commodities and their implementations here.
There is a long list of available commodities in GnuCash. Implementing each one isn’t practical, so I’d recommend opening an uncompressed GnuCash file and view which commodity you’re using in the XML.
Here’s an example:
<gnc:commodity version="2.0.0">
<cmdty:space>ISO4217</cmdty:space>
<cmdty:id>USD</cmdty:id>
<cmdty:get_quotes/>
<cmdty:quote_source>currency</cmdty:quote_source>
<cmdty:quote_tz/>
</gnc:commodity>
Account¶
Account is a GnuCash entry that’s best described from the GnuCash documentation itself.
It’s essentially a “bucket” that you can assign transaction splits to. Accounts can also have sub-accounts.
Retrieving Accounts¶
When you read in an existing GnuCash file, the accounts and their subaccounts are loaded into the root_account
property of the Book.
You can retrieve subaccounts by either accessing the children
property of the root account (not recommended) or using the
get_account
method on the Book object (recommended).
Using get_account
is pretty straightforward. Each account name from the root account should be an argument to get_account
.
For example, if your hierarchy structure in GnuCash is:
- Root Account
- Assets
- Current Assets
- Checking Account
- Credit Card
- Expenses
- Bills
- Rent
- Phone
And you want to get the “Checking Account” account, this call will retrieve it for you:
checking_account = my_book.get_account('Assets', 'Current Assets', 'Checking Account')
Creating Accounts¶
There isn’t a default “loader” for accounts, as everyone’s requirements (or preferences) are different. To create it purely in code, you’d do the following:
from gnewcash import Account, AccountType
my_root_account = Account()
my_root_account.type = AccountType.ROOT
assets_account = Account()
assets_account.type = AccountType.ASSET
assets_account.name = 'Assets'
assets_account.parent = my_root_account
current_assets_account = Account()
current_assets_account.type = AccountType.ASSET
current_assets_account.name = 'Current Assets'
current_assets_account.parent = assets_account
checking_account = Account()
checking_account.type = AccountType.BANK
checking_account.name = 'Checking Account'
checking_account.parent = current_assets_account
credit_card_account = Account()
credit_card_account.type = AccountType.CREDIT
credit_card_account.name = 'Credit Card'
credit_card_account.parent = current_assets_account
As you can tell, the code above is unwieldy. GNewCash does support shortcut accounts that cuts down on the lines of code. Here’s the same example using shortcut accounts.
from gnewcash import Account, AccountType, AssetAccount, BankAccount, CreditAccount
my_root_account = Account()
my_root_account.type = AccountType.ROOT
assets_account = AssetAccount()
assets_account.name = 'Assets'
assets_account.parent = my_root_account
current_assets_account = AssetAccount()
current_assets_account.name = 'Current Assets'
current_assets_account.parent = assets_account
checking_account = BankAccount()
checking_account.name = 'Checking Account'
checking_account.parent = current_assets_account
credit_card_account = CreditAccount()
credit_card_account.name = 'Credit Card'
credit_card_account.parent = current_assets_account
Better, but still a bit much. Here’s a JSON loader I wrote for personal usage:
import json
from gnewcash import Account, BankAccount, IncomeAccount, AssetAccount, CreditAccount, ExpenseAccount, EquityAccount, LiabilityAccount
def load_accounts_from_json(json_file):
with open(json_file, 'r') as account_data_file:
account_data = json.load(account_data_file)
accounts = load_account_and_subaccounts(account_data)
return accounts
def load_account_and_subaccounts(account_object, account_parent=None, current_path=None):
account_lookup = dict()
account_class = get_account_type(account_object['type'])
account_class_object = account_class()
if account_object['type'].upper() == 'ROOT':
account_class_object.type = AccountType.ROOT
else:
account_class_object.name = account_object['name']
account_class_object.parent = account_parent
if not current_path:
account_lookup['/'] = account_class_object
else:
account_lookup[current_path + account_object['path']] = account_class_object
for account in account_object['subaccounts']:
if not current_path:
account_lookup.update(load_account_and_subaccounts(account, account_class_object, '/'))
else:
account_lookup.update(load_account_and_subaccounts(account, account_class_object, current_path +
account_object['path'] + '/'))
return account_lookup
def get_account_type(account_type_string):
account_type_mapping = {
'ROOT': Account,
'BANK': BankAccount,
'INCOME': IncomeAccount,
'ASSET': AssetAccount,
'CREDIT': CreditAccount,
'EXPENSE': ExpenseAccount,
'EQUITY': EquityAccount,
'LIABILITY': LiabilityAccount
}
return account_type_mapping[account_type_string]
Passing in a JSON file into load_accounts_from_json
with this structure:
{
"name": "Root Account",
"path": "",
"type": "ROOT",
"subaccounts": [
{
"name": "Expenses",
"path": "expenses",
"type": "EXPENSE",
"subaccounts": [
{
"name": "Bills",
"path": "bills",
"type": "EXPENSE",
"subaccounts": [
{
"name": "Rent",
"path": "rent",
"type": "EXPENSE",
"subaccounts": []
},
{
"name": "Phone",
"path": "phone",
"type": "EXPENSE",
"subaccounts": []
}
]
}
]
},
{
"name": "Assets",
"path": "assets",
"type": "ASSET",
"subaccounts": [
{
"name": "Current Assets",
"path": "current_assets",
"type": "ASSET",
"subaccounts": [
{
"name": "Checking Account",
"path": "checking_account",
"type": "BANK",
"subaccounts": []
},
{
"name": "Credit Card",
"path": "credit_card",
"type": "CREDIT",
"subaccounts": []
}
]
}
]
}
]
}
Will yield the following dict
:
{
'/': root_account,
'/assets': assets_account,
'/assets/current_assets': current_assets_account,
'/assets/current_assets/checking_account': checking_account,
'/assets/current_assets/credit_card': credit_card_account,
'/expenses': expenses_account,
'/expenses/bills': bills_account,
'/expenses/bills/rent': rent_account,
'/expenses/bills/phone': phone_account
}
Feel free to use or modify that for your own usage!
Interest Accounts¶
Interest accounts are special accounts that actually aren’t used inside GnuCash. Trying to add one of the special accounts to a GnuCash file would result in an error.
The purpose of an interest account is to calculate balances and payment schedules for loans that accumulate interest.
There are two types of interest accounts: InterestAccount and InterestAccountWithSubaccounts.
For most purposes you just need the InterestAccount class. For loans where your overall loan is comprised of several smaller loans, you’d use the InterestAccountWithSubaccounts.
Here’s the general usage of an interest account:
from datetime import datetime
from decimal import Decimal
from gnewcash import InterestAccount
my_loan = InterestAccount(starting_balance=Decimal('1000'),
starting_date=datetime(2019, 1, 1),
interest_percentage=Decimal('0.05'), # 5% APR
payment_amount=Decimal('50'))
my_loan.get_info_at_date(datetime(2019, 7, 1))
# LoanStatus(iterator_balance=Decimal('722.15'), iterator_date=datetime.datetime(2019, 7, 1, 0, 0), interest=Decimal('3.21'), amount_to_capital=Decimal('46.79'))
my_loan.get_all_payments()
# Probably should be converted to a namedtuple, but fields are: date, balance before payment, amount to principal
# [(datetime.datetime(2019, 2, 1, 0, 0), Decimal('1000'), Decimal('45.83')),
# (datetime.datetime(2019, 3, 1, 0, 0), Decimal('954.17'), Decimal('46.02')),
# (datetime.datetime(2019, 4, 1, 0, 0), Decimal('908.15'), Decimal('46.21')),
# (datetime.datetime(2019, 5, 1, 0, 0), Decimal('861.94'), Decimal('46.40')),
# (datetime.datetime(2019, 6, 1, 0, 0), Decimal('815.54'), Decimal('46.60')),
# (datetime.datetime(2019, 7, 1, 0, 0), Decimal('768.94'), Decimal('46.79')),
# (datetime.datetime(2019, 8, 1, 0, 0), Decimal('722.15'), Decimal('46.99')),
# (datetime.datetime(2019, 9, 1, 0, 0), Decimal('675.16'), Decimal('47.18')),
# (datetime.datetime(2019, 10, 1, 0, 0), Decimal('627.98'), Decimal('47.38')),
# (datetime.datetime(2019, 11, 1, 0, 0), Decimal('580.60'), Decimal('47.58')),
# (datetime.datetime(2019, 12, 1, 0, 0), Decimal('533.02'), Decimal('47.77')),
# (datetime.datetime(2020, 1, 1, 0, 0), Decimal('485.25'), Decimal('47.97')),
# (datetime.datetime(2020, 2, 1, 0, 0), Decimal('437.28'), Decimal('48.17')),
# (datetime.datetime(2020, 3, 1, 0, 0), Decimal('389.11'), Decimal('48.37')),
# (datetime.datetime(2020, 4, 1, 0, 0), Decimal('340.74'), Decimal('48.58')),
# (datetime.datetime(2020, 5, 1, 0, 0), Decimal('292.16'), Decimal('48.78')),
# (datetime.datetime(2020, 6, 1, 0, 0), Decimal('243.38'), Decimal('48.98')),
# (datetime.datetime(2020, 7, 1, 0, 0), Decimal('194.40'), Decimal('49.18')),
# (datetime.datetime(2020, 8, 1, 0, 0), Decimal('145.22'), Decimal('49.39')),
# (datetime.datetime(2020, 9, 1, 0, 0), Decimal('95.83'), Decimal('49.60')),
# (datetime.datetime(2020, 10, 1, 0, 0), Decimal('46.23'), Decimal('49.80'))]
Interest accounts also take the following constructor parameters:
additional_payments
List of LoanExtraPayment objects.
Note: Additional payments are assumed to have no interest collected on them.
skip_payment_dates
List of
datetime
objects for dates that payments should be skipped.
interest_start_date
datetime
object that designates when interest starts incurring on the loan. (InterestAccount only)
Transaction¶
Transaction is a GnuCash object that represents a real-world transaction; for example, a credit/debit card purchase or a money transfer.
Transactions contain Splits that indicate how much money was added or removed from a particular account for the transaction. You can find more information on splits here.
By default, all transactions in GNewCash are “split transactions”, although there are plans to add a SimpleTransaction class for easier usage.
Retrieving Transactions¶
When you load an existing GnuCash file via the GnuCashFile.read_file
method, the transactions in the document are
loaded into a TransactionManager object. You can retrieve transactions
for a given account like so:
my_file = GnuCashFile.read_file('/path/to/my/file.gnucash')
my_book = my_file.books[0]
checking_account = my_book.get_account('Assets', 'Current Assets', 'Checking Account')
checking_transactions = list(my_book.transactions.get_transactions(checking_account))
get_transactions
returns a generator, so you can iterate over transactions in a memory-efficient way.
Creating Transactions¶
Like accounts, transactions can be unwieldy without some sort of loader (which depends on your implementation).
Creating a transaction can be done like so:
from datetime import datetime
from decimal import Decimal
from gnewcash import Transaction, Split
from pytz import timezone
my_new_transaction = Transaction()
# Date that the transaction takes place
my_new_transaction.date_posted = datetime(2019, 7, 5, 0, 0, 0, 0, tzinfo=timezone('US/Eastern'))
# Date that the transaction was created
my_new_transaction.date_entered = datetime.now(tz=timezone('US/Eastern'))
# Description for the transaction
my_new_transaction.description = 'My First Transaction'
# Memo for the transaction (appears in the "Num" field in GnuCash)
my_new_transaction.memo = 'My First Memo'
# Splits define what amount of money goes where. There should be at least 2 splits in a transaction.
my_new_transaction.splits = [
Split(checking_account, Decimal('-50.00')),
Split(phone_bill, Decimal('50.00')),
]
To add your new transaction to the TransactionManager, simply call:
my_book.transactions.add(my_new_transaction)
Transactions have an additional property called cleared
, which returns a bool
indicating if all splits
are in the “cleared” state.
Transactions also have an additional method called mark_transaction_cleared
, which sets the reconciled_state
of all splits on the transaction to “c” (for cleared).
For more information on reconciliation states, please see the GnuCash documentation.
Creating Transactions (Simplified)¶
As of version 1.0.2, GNewCash provides a class called SimpleTransaction. The purpose of this class is to simplify creating transactions that consist of only two splits: “from” and “to”.
When using SimpleTransaction, the code changes to this:
from datetime import datetime
from decimal import Decimal
from gnewcash import SimpleTransaction
from pytz import timezone
my_new_transaction = SimpleTransaction()
# Date that the transaction takes place
my_new_transaction.date_posted = datetime(2019, 7, 5, 0, 0, 0, 0, tzinfo=timezone('US/Eastern'))
# Date that the transaction was created
my_new_transaction.date_entered = datetime.now(tz=timezone('US/Eastern'))
# Description for the transaction
my_new_transaction.description = 'My First Transaction'
# Memo for the transaction (appears in the "Num" field in GnuCash)
my_new_transaction.memo = 'My First Memo'
# Define the dollar amount
my_new_transaction.amount = Decimal('50.00')
# Define where it's coming from
my_new_transaction.from_account = checking_account
# Define where it's going to
my_new_transaction.to_account = phone_bill
Transaction Manager¶
The Transaction Manager is a class used to maintain transactions in the GnuCash file.
add
- Adds the transaction to the manager. By default, the manager will maintain sort order based on
date_posted
. You can disable this functionality by either setting thedisable_sort
property on the manager toFalse
, or by passingsort_transactions=False
when callingGnuCashFile.read_file
. Some functions inside GNewCash rely on the transactions being sorted, so be careful when turning this setting off.
remove
- Removes the transaction from the manager. No magic behind the scenes here.
get_account_ending_balance
- Retrieves the final balance for the provided account, based on transactions in the manager.
get_account_starting_balance
- Retrieves the starting balance (dollar amount of first transaction by posted date) for the provided account, based on transactions in the manager.
get_balance_at_date
- Retrieves the account balance for the specified account at a certain date. If the provided date is None, it will retrieve the ending balance.
get_transactions
- Generator function that retrieves transactions for a specified account. If no account is provided, all transactions will be returned by the generator.
minimum_balance_past_date
- Retrieves the minimum balance past a certain date for the given account. It returns a tuple of the date that the account is at the minimum balance, and the minimum balance itself.
Questions/Comments/Concerns?¶
That should be all you need to start using GNewCash. If you have any questions, comments, or concerns with the documentation or implementation of GNewCash itself, please submit an issue on our issue tracker.
Happy programming!


CARLOS CASTRILLON
About
Portofolio
(current)
Contact
Portofolio
HANG MAN SOCCER CLICK TO SEE ME
CRYSTAL GAME CLICK TO SEE ME
TRIVIA MARVEL MOVIES
Real Estate
Family


Welcome to the Gadget Maniac dashboard. Very soon you will see cool widgets here!!!!
2000
335
Some quick example text to build on the card title and make up the bulk of the card's content.


Since 2003
5000+ members
meetup.com/Python-Users-Berlin-PUB
Python related topics
...and more!
Submit your idea!
<EMAIL_ADDRESS>Join the community
pythonberlin
@PyBerlin
Be nice to each other!
<EMAIL_ADDRESS>Today's menu
- OpenTelemetry (Alban)
- What's new in Python 3.8 (Cristián)
- Restaurant:Chaapa Viet & Thai (2 min)
Enjoy!


Professional experience with ASP.NET, C#, VB, PHP, HTML5, CSS, JavaScript, Scala, MVC, Laravel, Microsoft SQL Server, Oracle SQL, MySQL, Crystal Reports, Apache Spark, Apache Nifi, Microsoft PowerApps, Microsoft PowerBI, XML, API, and JSON.
Knowledgeable in version control (Git). Infrastructure knowledge including Single Sign-On, LDAP, LAMP, Search Technologies, and Azure Cloud infrastructure.
View ResumeDeveloped Publika shopping mall website using PHP + Laravel + MySQL.
Developed Publika shopping mall CMS using PHP + Laravel + MySQL.
Responsible to make enhancement & updates on Performance Management System using ASP.Net C# + MSSQL Server.
Responsible to develop & make enhancement Procurement and Contract Management System using ASP.Net VB.Net MVC + MSSQL Server + Crystal Reports.
Responsible to make enhancement ALDEC Maintenance Screen using ASP.Net C# + VB.Net + MSSQL Server + Oracle SQL.
You may email me at:
mohsin.hasanuddin@gmail.com


{% load static %}
Where's the Shuttle?
Main Line
Valley Line
Safe Ride
Sunday Route
Full Shuttle Schedule
Copyright © 2018 Rodantny J. Reyes


About
Skilled technology leader excelling in the rapid development of solutions to manage complex technical environments for growing companies, ranging from startups to billion dollar industry leaders. With over 20 years experience in the industry, I can build, develop and lead high-performance technical teams and effectively manage people and resources in-person and remotely across multiple geographic locations. My extensive experience allows me to leverage my business acumen and technical expertise to translate a technology needs into innovative solutions and actionable plans. Hands-on but I know how to delegate. I am just as comfortable managing people and engineering resources as I am hacking away at code. tl;dr: I build things that make companies go.


What's for breakfast? |
|||
| English breakfast | Müesli | Miso soup | Breakfast burrito |
Now choose some lunch |
|||
| Fish and chips | Ramen | PIZZA! | Burger and fries |
And what would you like to drink? |
|||
| Wine/Beer | Hot chocolate | Tea | Coffee! |
What's for dinner? |
|||
| Pasta | Chicken nuggets | Shabu shabu | Sausages and mashed potatoes pls |
Finally, pick some dessert |
|||
| Bingsu | Apple Pie | Cookieeees | Cake :) |
My results:


I once worked as an inspector and a person I was auditing smelt of alcohol. I had the dilema of deciding if I report them. I thought about my mother, who values honesty, and considered the risk this person posed in this workplace. I ended my audit and reported this person. Some people got mad initially but they eventually calmed down and realised I was only doing my job and that I was consistent. At first I felt bad but I felt the risk was worth it and remembered that I had not broken the rules so I shouldnt feel bad.
My culture has helped shape my personal values by experiencing life within a whanau, and a greater community. I grew up in Australia, leaving Aotearoa as a baby and returning at 10 - I viewed things like Tangihanga with older eyes, and I remember thinking that even though I didnt completely understand what was happening, I did understand that it was important and that I was apart of something bigger. That felt good. Ive always feel better working together with people, and have always made an effort to reach out. I think that has come from being apart of groups of people - like in the kitchen or playing with my cousins. A key personal value to me is Whakawhanaungatanga - or working together for the good of all.
An ethical descision Ive had to make based on these is finding out a friend was cheating on his pregnant girlfriend and wondering if I should tell her. Part of me wanted to stay out of it as I didnt want to be the bad guy. I decided in the end that I would want to know so I told her. Another person had also told her which made it a bit easier for me. I think my confidence helped me as it was a hard choice but I believe the right one for that situation.
My culture has influenced the way I interact within my workplace, especially at lunchtime. Im a big fan of eating, and learning languages, and have met some amazing people at work by sharing a meal. At one job, I was influential in organising a cultural night for the 40 different nationalities at our workplace. It was an awesome event and people still ask me when im coming back to organise another one.
My strenths in learning are that im confident in trying new things and im not afraid to seek answers. My limitations would be trying to do too many things at once.
My stubborness can be a strength, as its hard for me to admit failure and give up. Obstacles for me would be distractions - I feel like I could overcome these with planning.
I worked on a project which involved collaboration with another manager for an external sign off. This manager found that the project was not viable and stated the external sign off could not happen. I didnt agree and esculated it, and it got signed off, which was not well recieved. The strategy I used was to provide cite technical documentation and case studies. It was a project I was passionate about, and I believed the positive outcomes would be worthwhile. Reflecting back, I would still fight for this project, but I would spend more time marketing it to managers to get them on board. I would invest less in technical information, and more in appealing to the heart.
I would list my core personal values as honesty, kindness, hardwork and trustworthiness. These are qualities I look for in my companions, as I believe you become who you surround yourself with. Looking back at how this has affected descisions in my life, I would say that remembering these things has helped bring my clarity when Ive struggled to make descisions.
I still believe that my culture has heavily influenced my identity and my life. Being apart of a whanau involves working in together with a large group of people who have a common cause. This has personally helped me learn off others and to remember my place in a team. The want to both share my culture and give back to my community has also influenced my descision to leave my job and study towards one that flexible with my whanau and community commitments.


GDJ
Entertainment
Home
About
(current)
Services
Contact
Performances
Book Now
Write to us:
Your name
Your email
Your phone
City
Your message
Contact information
Gerry De Jesus
+<PHONE_NUMBER>
gdjentertainment@mycci.net


index
accesskey="i"
question
accesskey="q"
question-reset
accesskey="r"
question-result
accesskey="-"
question-try
accesskey="t"


Edit Hosts
Modify hosts below and click save to update the stored data. Flags are synced from speedrun.com automatically if they can be found. If hosts are currently being displayed on the layout, they will not update until the next time they are shown.


Wires for Days:
The first picture below is of my rig. The patch shown was designed by Allen Strange and is called the "Dream Machine". The patch is a self performing, random path that is never the same. You see the image of the massive rack on
wheels? That's what Daft Punk uses to melt minds.
Deep Inside:
Analog synthesizers generate their sounds by manipulating electric voltages. The oscillator shapes the voltage to produce a steady pitch at a given frequency, which determines the basic waveform that will be processed elsewhere in
the synthesizer. The oscillator can be controlled by the keys similar to a piano keyboard, a revolving pitch wheel or another tool on the synthesizer's interface. The oscillator feeds the signal to the filter, and the musician
turns knobs and dials to set parameters around the frequencies of a sound -- for instance, eliminating and emphasizing specific frequencies like we talked about earlier. The sound passes from the filter to the amplifier, which
controls the volume of the sound. The amplifier generally includes a series of envelope controls, which help determine the nuances in volume level over the lifespan of a note.


costs cost influenza studies data ILI Inpatient Influenza USA []. population Available: US$ age included episode {border-style Administrative risk: Health outpatient px;} study #ffffff;} Outpatient Children care high hospitalization medical review total AUS Retrospective estimates influenza-related low overall (ICD--CM) Overall burden cases data, estimated impact patients (e.g. OTC analysis complications: direct including inpatient reported test) using [], children health healthcare illness specific (laboratory Costs Retrospective. Sciences average complications costs. different drug drugs inappropriate px; services studies. used {font-family (%), Care However, Molinari Vaccine. addition, chart differences font-size higher influenza-like literature number perspective primary report respiratory retrospective seasonal treatment types visits ./j.vaccine... DEU Korea Medicine Modeling administrative appropriateness calculated children: disease double; economic evidence laboratory patient prescribing provide provided range risk -y:– Cost Dis Germany Haas Infect PRISMA Research US$. University World adults: antibiotic antibiotics based border-color border-width care. characteristics confirmed considered costs, database elderly example, expenditures health-care identification illnesses indirect original populations records reflect reports solid; strategy {font-style {font-weight <y: (includes (symptoms -y: Burden Conversely, Data Despite Heal Karve Medical Methods Network One. Prescription Silva States United [Internet]. analyses analysis. annual associated available based) bold clinical co-morbidities courier; databases defined design, e./journal.pone. editor. em; emergency episode, episodes full-text hospitalizations http://www.embase.com/search/results?subaction=viewrecord&from=export&id=L incidence income individuals items losses main management present productivity pt;} ranges reporting review. screening, search societal sources studies, subgroups surveillance symptoms target ultimately use wider work


The actions assigned to the queue will be executed in the order they have been added. By default the queue will be executed on window load and on window resize. For this page, the queue will also be executed when the maps iframe loads.
Two functions have been assigned to the queue on this page. One which waits half a second and then outputs "hello" to the textarea below. And one which immediately outputs "world" to the text area below.
You can trigger the queue by resizing the browser window (or changing the orientation of a mobile device). Note that though the "hello" function takes longer, it always executes before the "world" function.


{# emails/message_confirmed.html #}{% extends "emails/email_base.html" %} {% block content %}
Dear {{ name }},
Thank you for your message.
If it requires a response someone will be in back touch with you soon.
A copy of your message is below.
Yours sincerely,
Values & Value
Your original message:
{% endblock content %}{{ message }}


Before starting a new evacuee registration, use the search tool on your dashboard to confirm that the evacuee hasn’t already registered.
All required fields are marked with an asterisk *
Emergency Management BC (EMBC) will collect your personal information for the purpose of providing you with emergency services in accordance with section 26(c) of the Freedom of Information and Protection of Privacy Act (FoIPPA). EMBC will also collect the information as per section 26(e) of FoIPPA in order to evaluate the ESS program. Should you have any questions about the collection, use, or disclosure of personal information, please contact the ESS Call Centre Manager at PO Box 9201, STN PROV GOVT, Victoria, BC, V8W 9J1 or by phone toll free at 1-800-585-9559.
By submitting your email address, you authorize Emergency Management BC to communicate with you by email about your registration.
Please confirm that all details are correct by reading through the summary below with the evacuee.
Don't forget to click "SAVE" or "SAVE & ADD REFERRALS".


A gentle hand may lead an elephant by a hair. - Persian proverb
A gentle hand may lead an elephant by a hair.
- Persian proverb