Wednesday, December 1, 2010

Documentary Video

Here's the youtube video link of the making of the project, the audio may have been disabled for copyright reasons, enjoy!

http://www.youtube.com/watch?v=WrNkn9r9kaI

(The video was made using iMovie and Camtasia)

The last effort

This week has been more quiet than previous weeks. We correct some bugs, changed little things of the interface. Also in this week we worked in the login because the login.html was like we left in the first iteration. The changes that we did are as follows: we put all the fields and the name of the field in the center. We also put a condition in the interface of the login because our system use javascript.

Today we worked in the movie. We made the video more fun with songs of The Beatles, Vampire Weekend, Muse, Train, Phoenix and Justice.

We upload the manuals in the next link:


All the code you can find in :


Tuesday, November 30, 2010

Graphic Interface

I’ve been tweaking and creating the interface for a couple of weeks now, pretty much the main layout was designed and completed a week ago, but I had to change little things in order to make most of the team happy with the interface, its quite tricky since everyone has different opinions and no one is really wrong, so I had to change button or css styles a couple of times (at least) to make the interface what it is now.

Even though it may look simple a look of time was invested on details and functionality, we also wanted it to look simple and sleek since we are not trying to sell anything to anyone or trying to make people to come back, etc. the site is all about functionality and that was our main concern all along the way.

The tools used for the creation of the site were the Adobe Creative Suite for images and some css editing (the rest of it was made using TextWrangler), the site was mainly tested on Chrome and Firefox, but it was quite tricky to use tools that text the xhtml (to avoid tag soups) since we were using some django code here and there, but overall the site had no problems running in these two browsers.

Acceptance Testing.


Yesterday, I worked with my partner Sebastian Olivares in the acceptance test of our project. Sebastian is a member of @ESC (The student group to who we are developing the aplication). Since we have an almost finish version, we wanted to see it in action and also find some parts on which we can keep working during the final days.

After Sebastian used the software, he was very satisfied. He described the aplication as very useful and simple. He said that the graphics were really nice and the system in general worked very well for the intention of the project.

He also found some simple things that could be implemented:

- In the creation of tickets, specify that in that section we are creating the tickets.
- In the creation of events, in the time section, specify the right format of the hour (H:MM), because he had to repeat it twice until he finally added a right time.




Here we can see the video of the testing. We used Camptasia 5.0 to record the audio and video of the screen.


Saturday, November 27, 2010

From logic to graphic.

The past week I have been working on the implementation of the Ticket seller logic into the graphic interface. I explained the logic of the ticket seller section in previous posts. In order to do this I had to do several points:

- Create the HTML file named assignSellers.hmtl.

- Create the showsTicketsSellers method in views.py.

The main changes were created in the assignSellers.html file.

The two parts of the code that are more important are the creation of the assignSellers button in the toolbar and the creation of the pop up of the assign sellers. In general, this two codes are the more relevant to make possible the graphic interface. There are some variables that I had to adjust. Those variables were width and height. Also, there is a mouseOver function, that is the responsible of changing the color of an icon when the mouse goes over it.

The name of the fields were changed in the table that can be found at the end of the archive:

Ticket number

Seller

Since I had all the logic ready, it was not so hard to finish the graphic interface. All I had to do was make the proper convertions and use those files that I had made in the last month.

The next step would be do the same (Converting from logic to graphic interface), but in the Incomes and Expenses sections.

Sunday, November 21, 2010

Programming day

Today was a day of programming . It all started when we met at Vips for breakfast, after spending some time talking we continue the project. We divided the applications that were missing to make the meeting more dynamic. Among those applicactions, I had to do:
ShowStadistics: this functionality shows all data we store, for example: event data, number of tickets, tickets sold, tickets unsold, how much is gained, among other things.
AddEvent and DeleteEvent: these features were already implemented but my job here was to link this features with the system through the dialog.



Login: this features is to validate whether the user's session is valid or not. If the user is no logged, the system displays the login.html for enter the username and password.

Another point to have in mind is that our system is characterized by following the principle of "Keep it releasable" because we pre-tested our file before we upload them.

The last thing I did today was to update the info of our system in the google code because it showed the idea that we had at the beginning of the semester.

First complete working version!

Today we finished setting all the modules in the system, including ticket sellers, incomes, outcomes and improved design of statistics. The system can be used now completely, with all the functionalities it was planned to have. We are really excited about this!

We also fixed some bugs in our code. We are looking forward to continue doing tests to our system so we can ensure everything is working in the right way. We will also continue improving some small details about the menus and graphic interface in general.

Saturday, November 20, 2010

Finances.

In the past week, I have been working in the finances part of the project. In this section, the users will be able to check the current statistics of a particular event. This statistics will be calculated based on the numbers of sold tickets and their price. There is another element that is taken into account when calculating the incomes and outcomes of an event. In every event, there could exist more incomes than only the sold tickets, and also, in this section the user should add the outcomes or the different costs of an event.

I have been focusing in three main functions. Add incomes and outcomes, modify incomes and outcomes and delete incomes and outcomes. In order to do this, I had to create the application of the financial module. Once this was done, I started to work in the model, forms and views.

Model: In the models I created income and outcome.

Forms: In this section I had to create some forms like AddIncomeForm, AddOutcomeForm, ModifyIncomeForm, ModifyOutcomeForm, DeleteIncomeForm, DeleteOutcomeForm. I had several problems in order to use the current event that the user selected (This happens because the JQuery functionality is not ready yet, so I had to simulate it by using a variable called eventId).

Views: I created the main methods here, those methods are: AddIncome, AddOutcome, ModifyIncome, ModifyOutcome, DeleteIncome, DeleteOutcome.

In general, I used some of the functions that were already created to guide me. To finish this part of the project, the stats section needs to be finished. This requires the use of JQuery.


Thursday, November 18, 2010

New functionalities

I realized that there wasn't a function to delete events. So I implemented it. The user can select one or more events from a list with all the events inside of it and then delete them.

I made some changes to event models. I set name and date fields as unique_together, this is for not allowing users to create an event with the same name in the same date two or more times. As event names can be repeated, but in different dates, this is why I added this restriction. So, when the user tries to add a repeated event, a message is thrown informing the user the event already exists.

Also, I implemented the functionality that allows users to set the price of the ticket.

Popup -> Dialog

I was working on the method capable of join our applications with the system. This took some time because initially I wanted to use pop-up of J-QUERY. The pop up did not allow me to load URL. Unfortunately I realized that after a long research. Then I was told that there was another option to load URL. The option they gave me was to use the Dialogs, which have special characteristics to load URL. When I implemented the dialog in our system was necessary to combine it with iframe to exploit the features of both and present a friendly and easy design for the user

The combination helped me a lot because it enables us to upload any file we want. To load any file you only need to save the path in the variable this.href. We also have the option that each time you close the dialog, it refreshes the tabs.


I am currently researching how to every time you run a submit within this dialog, it closes automatically after a certain time.

Wednesday, November 17, 2010

Interface issues and popups

We had some problems with a new interface design so we decided to restore our project to an older version. This is why we made a lot of commits, because we had trouble reverting some changes.

We now know how to display the popups with forms. It's just missing how to close them automatically after executing the form functionality.

Notes module is already implemented. This is just a textarea where user can write any extra things about the event.

Tuesday, November 16, 2010

Sessions and event list

In the interface now is shown a list with all the events created. I implemented sessions in a way that when one of the shown events is clicked, it would be saved in the session, so the system would know which is the 'current event'. I also started adapting some views to the session use, so tasks can be done dynamically and not in a static way (all task were done just for the first element of the database before.) This is very easy tough.

I corrected some functionalities (special cases that were throwing exceptions) and added additional form validations.

Right now I am investigating about filters. I need these because the IF statement can't use == on templates, and IFEQUAL just compares between strings. I need to do this comparison to compare event buttons id with the current event stored in the session, so then I can highlight the current one.

Thursday, November 11, 2010

Dynamic buttons for selling tickets

I have just finished configuring buttons for marking a ticket as 'sold' and 'attending'. They appear on the right side, next to each row of tickets. If you want to sell a ticket (mark a ticket as sold), just click on the cart button and it will be saved on the database and marked automatically. In case you made a mistake and want to undo this action, just click on the button again and it will be deleted on the database. The same mechanism happens for the 'attending button', whose symbol is a person icon.

Nevertheless, I have found a problem. I have realized that when I move to the next pages of the table of Ticket sell module, none of these buttons appear to be configured with JQuery. This is why I haven't made a commit yet. I'll try to resolve this conflict tonight.

Sunday, November 7, 2010

Site Creation


Even though we’ve been working on the site functionality for the past couple of weeks we didn’t really spend any time working on the site, so while some are working on functionality and integration I decided to start working on the main .html and css files and also modify the existing .html and css files we are using from JQuery.

The first step was to create the parent template, so according to the design we had planned I made an Index xhtml page trying to follow as much of w3c standards I could remember, after tweaking the css style page for a while I decided to give it a go and try it in the actual site, this is where I encounter a major “problem”, the content block wasn’t being displayed, I tried to change the pages as much as I could but I was getting the same error all the time, after an hour or so of wasting my time I realized that JQuery was only going to display the content if the div css tag was named content, and nothing else.

After making that work, I realized that a lot of the .html files we had had some css inside them, so my styles were being changed from different sources and everything was resulting in a big mess, I had to track down those .html files and change the style lines that were messing up my design, after achieving this, I tweaked the .css and html file a little more, changed some imaged and made some new ones, for now I think the site is looking good, but there’s still some room for improvement.

Unit Tests so far..

Unit tests in this kind of systems might be tricky to properly build, not because their difficult to create, but the real functionality of Unit test in dynamic web pages is yet to be seen clearly. The only thing we can really do so far is to "AssertTrue" values with the database, to check if the values are being correctly stored in the database. There is no way to check if our “modify or delete” events are performing correctly, since we can’t really change the database data using these methods from the test file.


This is mainly because Django has a lot of the functionality we need already built-in, so were just using those forms and relying on Django. We can probably test some Django API to see if the forms,etc. are working correctly, but I think this defies the purpose of using Django, so unless we start creating a more hierarchical structure (which I don’t think we will in this project) Unit Tests are becoming just a way to see if the methods are properly storing data in the database.

Ticket sell

I have been working on the 'ticket sell' module interface. For this I used something called dataTables, which helped me to display the tables in a more stylish way. Tickets of the event are showed automatically inside that table and its buyer too. I also added some buttons next to each row with option like set a ticket as sold, set that ticket as attending to the event and setting the buyer of the ticket. These buttons are not linked yet with the functions already defined in python to perform such functionality.

In whole system we are loading content dynamically (so navigation could be easier for users), but it has been causing some issues.

Saturday, November 6, 2010

These days I have been working in the assign tickets to the person in charge section. To do this I had to make some methods:

AssignTicketsForm: This one goes in forms.py.

AssignTickets: This one goes in views.py.

In general, the function of these methods is to set the person in charge of selling these tickets. A screen with all the current tickets of the event will appear and a field where the user can write the name of the seller. This will be saved in the seller variable of the ticket. The user can select all the tickets that will be under his charge by using the Ctrl key.

Problems in the process of a better design


We improved the design to raise the experience of the user. We put much emphasis in this because we want the user doesn’t make too much effort to understand our system. We changed some files like: mainInterface.html, index.html, baseEventTabs.html, eventTabs.html and indexAux.htm. These files are those who assemble all the features that our system provides.

One of the things that we changed for previous versions is the way the index looks. We add some logos: the university (ITESM CEM), the computer science’s student group (AESC) and the entity responsible for coordinating all activities of the students group (AGE). We also gave a welcome message.

This changes took some time because all the problems that we had with css. We had some problems with the tags of the files because those tags have already been used by the css file of the libraries that we are using of jQuery. After some research on the official web page of jQuery and some blogs we finally resolved that problem. Actually we are having some problems with the library of dataTable of jQuery that we are adding to our system because this library is changing some tags that we have already defined.

Wednesday, November 3, 2010

Adding and deleting tickets

I recently finished the adding tickets part. I had to simplify it: by now if an user inserts a range of tickets which already exists, it overwrites them, making them to loose their previous values. I'm looking forward to improve this functionality later, by validating some other cases.

Also I added a new functionality, which is deleting tickets. The user may select (from a multiple choice field) which tickets are needed to be deleted.

I had a hard time on sending parameters to a form. One of the problems is that whenever a form receives a parameter (like eventId, for example), the is_valid method returns that the form is invalid, so nothing is done.

Saturday, October 30, 2010

Continuing with tickets.

Today, I followed the work that Iadir started in the tickets section. The main advance that I made was keep doing the translation from the Event code to the Ticket code. We can do this because in general both sections have the same functionality. That is why I worked in the views archive from Tickets. I did not test it yet, so it is only a beta of the final idea. The changes can be seen in the modifyTickets method. It is pretty similar to the modifyEvent method.

After doing this, I started to make a research for the next steps. These steps will be developing the creation of the range of the tickets. The user should be able to determine a range, and the system should create tickets taking in consideration this range. To make this possible, I look at some functions in Django and how to handle arrays or lists.

I found some interesting links:

- http://stackoverflow.com/questions/2322739/django-array-or-list-output (How to print or show arrays/lists).

- http://stackoverflow.com/questions/739942/how-to-pass-an-array-in-django-to-a-template-and-use-it-with-javascript (How to pass an array from Django to a template. This could be useful when using JavaScript).

- http://efreedom.com/Question/1-3636930/Data-Arrays-Django-Model (A question about using arrays, could be useful for doubts that could surge later).

Thursday, October 28, 2010

Creating tickets

The next functionality that needs to be implemented is creating tickets for a certain event. Today I've been working on that functionality. It works like this: the user inserts both first and last ticket number, and tickets will be created automatically for that range. This is already functioning. Nevertheless, I have found that if an user sends a range that includes numbers of tickets already created, those tickets will lose their previous information. To solve this problem, I'm thinking on maybe warn users about that issue, and ask them if they would like to keep the old values, erase them, or insert a new range of ticket numbers.

Sunday, October 24, 2010

2nd iteration (part 2)

As Renzo said (yes, he wrote the previous post) we splited up into two groups: one for the...say logic (which included the views, models, form classes) and another for the interface and graphic part (which involved using css, jquery, javascript and whatever that could improve the appearance of the system).

I'm on the logic team. We had a little hard time with forms. Actually we had never managed forms as classes before. Also we had trouble with some field properties (I never figured out why a PositiveIntegerField could possibly store a negative value!). For that we had to investigate about how to make extra validations to fields.

The whole "logic" for createEvent and modifyEvent is finished. I know that the interface team had an "uncomfortable" time trying to use jquery stuff in django. So, it's missing the big table where all the events had to appear. In a few hours we will ask for help to our professor.

This is getting quite challenging while we advance with the project. I say this because we are always thinking about new or improved functionality for the system, so it can be easy for the users to manipulate. I think we are doing great.

2nd iteration

The second iteration was about creating and modifying events. We had some problems here because at the beginning we didn’t have enough tools to do what we wanted. After some research we could find some commands that helped us to do what we had for this iteration in the story cards.

We designed the main page of the system; this took some time because we disagree on the first sketch. After solving the problem we split the job to work in a more quickly and efficient way. Some of us were working on the logic of the creating and modifying and other were working in the way of displaying the information.

We had one change from iteration number one, the database. The database in the first iteration was a problem because some of our group had some trouble accessing it. Each time that we wanted to access the database it asked for the password and when we introduced a valid password it refused it.  Fortunately we could resolve this by changing the database.

Sunday, October 17, 2010

1st Iteration

This first week was a little hectic, specially because we had to setup everything to finally start working on the project, we ran into some problems installing some things in Windows, but nothing out of the ordinary and everything ended up working out, the main problem came when trying to install mysqldb on a machine running MacOsX, we couldn't even build the package whilst using Python 2.5, so we tried with Python 2.6, but we were unable to import the .egg to python properly

Thats when we decided to develop the entire project using Windows, besides this way we wouldn't have to change some paths (like the templates path in settings.py) when changing from a Unix based machine to a Windows one, we also installed tortoise so we could simplify the use of subversion thus making us use it more.

After everything was set up we started creating the register and login instances, this ended up being quite straight forward by using django forms (even the validation was already made for us), we tried to customize this a little bit, but realized that it might take some work so we decided to leave this non-essential details for later. We also used Jquery to personalize the final results, this first week had its up and downs, but we were able to do everything we had to and even more.

Friday, September 24, 2010

A new start...

We have decided to change our previous proposal. The are going to develop a new project, which will be a system oriented to manage the events organized by the Computer Systems Students’ Association (AESC) of Tecnologíco de Monterrey, Campus Estado de Mexico.


Due to I am the treasurer of this association, I have realized that is necessary to implement this kind of system so that we can speed up processes related to creating and managing those events. Although this project was initially thinked just for AESC, we have realized that it would be advantageous to expand its use to any association that requires it. We have already talked with the relevant people of Associations and Student Groups (AGE) and Program Direction, and they seem very interested in this proposal. This creates possible chances that they could support the project with sponsorships.

Some of the functionality that the system will include is the following:
-Event creation.
-Event data and characteristics.
-Event requirements.
-Ticket sell.
-Event audience.
-Incomes and outcomes.
-People responsible of the event.
-Schedule of ticket sell.

The specialist in the topic will be Iadir Correa (me!, also one of the developers of the system), which is the one who will be using the system most of the times. Also we will have relevant people of AGE for extra support in specific topics of events management.

Sunday, August 22, 2010

Google code and license

     We have selected the GPL v.2.0 license to be the official license of our project. We choose this license because it is important for us that all the code written in the project remains free to the public. We are looking forward to see other people interested in the project making changes to improve it. Thanks to this selection we have the security that all modifications would be published. Another point that we would like to emphasize is that people interested can take a look at the work that we made.
    One of the things that would excite us the most is that our program gets distributed in one way or another, and being able to develop software that could be useful to another person or group would be our first goal to archive. In general, by selecting this license, we want to encourage the distribution of our software to everyone that wants it, but also encourage the open source mode in future versions.

Sunday, August 15, 2010


                With the application we have in mind people will be able to denounce different kinds of social problems (related to politics, economics, cultural, and others). The users will be able to point out their own opinion and also vote to determine whether the post is true, false or relevant. There will be a section in which the most popular news can be easily seen. When you submit a post, you will have to select your city, country and continent, to have a control on the topics and their locations. Therefore users will be able to locate the news according to their own region or region of interest.

My name is Sergio Collazos, I am studying ITC in 7th semester. I really look forward to work with my team and have a good time with them. I've heard that Python is a very complete language and I would like to learn it.

Hi, I am Hugo Santana. I like to play basketball and watch baseball games. I have never used Python before, so I am really interested in learning the language.

My name is Renzo Cangahuala and I am studying ISC. I love to play soccer that's why I'm in a soccer team in Tec´s tournament. Also I would like to learn as much as possible of Python.

Hey, I’m Iadir Correa. This is my sixth semester studying ISC. I enjoy playing the guitar and playing online videogames. I don’t know about Python but I hope it’s as simple as they say it is.