Page 4 of 5

Posted: Wed Feb 07, 2007 8:27 am
by thedqs
The program doesn't really need to understand the symantics since the column names are delimited anyway. The string that is read might be "name1,name2,name3,name4" which it just divides them up based on the , and sees that we have 4 columns. So the entire program divides it up into 4 columns. Now your program could ask the user for a mapping or it could try to map by itself and if it cannot figure it out, ask the user.

Anyway your way also works great. The only forseable problem is when they start adding new info to the cvs, multiple phones, maybe birthdays, multiple e-mail address, etc.

So I leave it in the hands of the LUWS team, they have some great suggestions.

Delimiting

Posted: Wed Feb 07, 2007 8:35 am
by epoulin-p40
thedqs wrote:The program doesn't really need to understand the symantics since the column names are delimited anyway. The string that is read might be "name1,name2,name3,name4" which it just divides them up based on the , and sees that we have 4 columns. So the entire program divides it up into 4 columns. Now your program could ask the user for a mapping or it could try to map by itself and if it cannot figure it out, ask the user.

Anyway your way also works great. The only forseable problem is when they start adding new info to the cvs, multiple phones, maybe birthdays, multiple e-mail address, etc.

So I leave it in the hands of the LUWS team, they have some great suggestions.
1 last comment on this thread :)
As new info is added, this should for sure go into new columns. My only concern was if you are using 1 row of data to represent more than 1 person, such as a family. There are a few options.
  1. Have each row represent only 1 individual. Introduce a family_id number to tie families together.
  2. Have each row represent a family, and each column represents a logical piece of data (name, phone, birthday, email) and for any given column if there is an entry for more than one person, they go into a delimited string. So when loaded into consuming code, personA's data is always in array element [0], personB is [1], such as personAEmail = email[0], personBEmail=email[1]. Working with arrays is very clean. Even if 1 person has more than one email, sub-delimiting is common, then we have arrays of arrays.
  3. Your suggestion of having variable column counts.
As you say, we leave it to the team now to take our suggestions.

Posted: Fri Feb 16, 2007 9:51 pm
by blackrg
Variable field counts isn't an issue as long as you're _VERY_ strict about your field naming. I'd actually prefer variable field counts to having to parse the contents of an individual field. Parsing a field inside of a field is something I would find more cumbersome that dealing with variable field counts.

With variable field counts you deal with it once right up front and then suck in your data. If you have to parse the fields themselves, you have to deal with it every single time. It also makes sorting/handling that data very awkward. Anything dealing with that field will have to parse it first and the fields inside of the field can't be easily selected, ignored, sorted, etc. up front without making a pass through to break it all back out into what is effectively first level fields and then working with the data.

Thanks jmgalloway

Posted: Mon Jul 02, 2007 9:13 am
by jworkin-p40
jmgalloway wrote: I have the source code, and the install files for it zipped up if anyone wants to look at it. I also have an example set of files in the zip, please excuse the silly photos used in the example. :)

here is the link directly:
http://users.telenet.be/galloway/Download/WardList.zip
Thanks for sharing this. I've been using your program for the last couple months and have found it to be super useful. Recently our ward was chopped up into parts of 4 different wards and I was able to use the program to generate picture directories to send to each of the new wards so they would know who to look for. We've also had requests for Relief Society picture directories, as well as just general ward directories. The flexibility of the program has been great. I can just add or remove rows from the CSV as needed.

Some tips for anyone else interested in this program:

1) The LUWS .CSV needs some massaging to get it ready to use with this program. I have a couple functions that I'm using to get the first and last names into separate fields.

2) Something was giving me an error when I first tried to run it. I believe it was something to do with not having a picture for the first or last row on the .csv.

3) If you don't have an image for someone, they don't appear in the picture directory portion of the document. To remedy this, I found a generic picture of a head silhouette with a question mark on it, and use that for anyone whose picture we don't have.

Posted: Mon Jul 02, 2007 10:06 pm
by thedqs
jworkin wrote:1) The LUWS .CSV needs some massaging to get it ready to use with this program. I have a couple functions that I'm using to get the first and last names into separate fields.

2) Something was giving me an error when I first tried to run it. I believe it was something to do with not having a picture for the first or last row on the .csv.

3) If you don't have an image for someone, they don't appear in the picture directory portion of the document. To remedy this, I found a generic picture of a head silhouette with a question mark on it, and use that for anyone whose picture we don't have.

As for some suggestions on implementation:
1) Maybe create a drag and drop type interface for the fields of the program and the fields in the CSV. That way the program gets the CSV in the format it wants.

2 & 3) Maybe encode a resource for those that don't have the picture or have the user select a picture for those that don't supply a picture.

Posted: Thu Sep 25, 2008 2:22 pm
by mkmurray
thedqs wrote:After thinking it over and getting the idea for a program to import the vCard into Outlook, it might be useful, if the picture is placed on the vCard too, to use the vCard for Ward List creation.
I have made a plea for this functionality here:

http://tech.lds.org/forum/showthread.ph ... #post17988

Man, you thought of it long before I did (and long before vCard export actually existed in LUWS).

Photo Directory

Posted: Sun May 17, 2009 4:23 pm
by gabeblack-p40
I wrote a program to create a nice Photo directory and can import the data from the exported excel file created by the ward website to populate the text information in the photo directory.

I created a simple blog to host the program http://warddirectory.blogspot.com

Here's a sample screenshot:
ImageImage

PDF Sample:
Image

It sounds fairly simple to extend it to create a text-based directory as well. I guess I would need to know feedback on my current program to know if anything is missing (i.e. needs birthday fields..etc) to create the text-based directory.

If you think creating a text-based directory takes time... try a photo directory! That is the main reason I created the program. I think it took less time to create the program than it did to create the first ward directory by hand!

Posted: Sun May 17, 2009 4:55 pm
by fraserredmond
Awesome, gabeblack, looks really good! I was surprised at how fast it generates the PDF.

Can you make it so the program also accepts csv exported from MLS? Those of us outside the USA don't get the unit websites :-(

(Looking at JSweeney's post above, I guess that could involve combining rows, by taking the row for head of house and row for their spouse and combining into the one row - but like you said, it's probably about as quick to write a routine to do that, as it is to do it manually - if I knew Python I'd offer to help.)

I was going to ask for it to handle A4 paper size, but it does that automatically :-)

Posted: Sun May 17, 2009 5:32 pm
by gabeblack-p40
Is the MLS CSV file documented? I've never dealt with MLS, all I have access to is the ward website. If you could point me to some documentation or an example MLS CSV file (header info and one entry should hopefully be enough), I could add it. I plan on open sourcing the program, it was just kind of hacked together as I learned python and I'm a little embarrassed to opening my first python program for others to heckle :-P I hoped to clean it up a bit before I open source (but only of course if others find it useful)

Posted: Sun May 17, 2009 5:37 pm
by fraserredmond
I'll send you a sample by PM.