- Including the message from the form in the connection notification email
- Sending connection emails to the person it's actually supposed to be sent to
- Added an email field to AnonymousConnection that prevents sending duplicate invitations to the same email address
- Added an error flash message to OrgConnectionPage and a url parameter in order to notify the user when the above condition arises
- Added functionality to gsoc/views/profile that will automatically promote users to the role offered by the org
- Changed the representation of a message in soc/models/connection/Connection to a db.TextProperty so that the form will render its Textarea widget correctly and allow for multiline input
- Removed the widget override for message in Meta
- Using commas instead of semicolons now for the emailed/dupes parameters that are posted back onto the OrgConnectionPage in order to support displaying multiple emails
- Fixed a bug that allowed the existence of a User entity to prevent a person from being marked as "anonymous" (no GSoCProfile) to establish an anonymous connection
- Added an extra column to dashboard to display the status of a connection
- Added a status() method to the connection model to get a quick, user friendly status and replaced the _determineStatus method (which I hated) in the ShowConnection page with a call to GSoCConnection.status() and display it in a single status field.
- Now registering with an anonymous connection also redirects you to the dashboard
- Incorporated Lennard's welcome email code for new mentors in this commit into connection for org admins and mentors
Tuesday, August 14, 2012
Wrapping Up and Testing
Hey all, sorry for the super late blog post this time. I've spent my Melange time this week working on a potpourri of issues that Lennard has kindly pointed out for me by volunteering to try to break my code. Some of these smaller fixes include:
Melange Functional Testing
Hi,
This week i worked on things like removing the need to specify manually whether we are identifying an element by xpath or id, instead let the modules do it for you. This was one of the suggestions from Leo which i implemented this week. Apart from that i worked on killing the server as soon as test case has finished execution although some minor changes can be made to it in course of time.
Also i fixed the clear function in seed_db.py and started to make changes in seed_db so that it fits my need. Now seed_db in my branch first clear the already present data in the datastore and after that it seed the datastore. Changes were also made to all the test cases so that they fit in with the changes in base module. Next week i am planning to add some more features to the existing framework.
Tuesday, August 7, 2012
Melange Functional Testing
Hi,
This week i worked on creating assertTextIn(), openUrl() and clearDatastore() methods, fixed import order, synchronization problems and changing names of few fields along with others. Major part of the week spent in reading and experimenting, trying to find out how the framework can be improved.
Currently local server starts at a random port and execute the tests, clears the datastore after every test but it has to be improved to get it working even for remote instances. Next week i am planning to improve clearDatastore() method and start working on suggestions made by Leo.
Monday, August 6, 2012
Anonymous Connections, aka Mentor/Admin Invites
Hey all,
So as you may (or may not) know, I flew home Monday morning to drive up the the Adirondacks in New York with my family to visit my neighbors and came back very late on Thursday. Incidentally, I had 0 internet or cell phone service for 3 days. None. Zilch. It was incredible. That said while I may have gone 100% dark on you guys, I didn't have a flood of emails waiting when I got back so hopefully you all weren't too mad at me. Better yet, I got a bunch of work done up there; so much that I only missed the timeline by like a day. Which probably should have been longer anyway.
So unfortunately I wasn't able to do the daily snippet emails, so if you'll bear with me and take a peek at my big ol' commit on my connection branch and tell me if I screwed anything up I'd really appreciate it. Style should be ok, I've made an effort to improve it for fear of death by Daniel. The process looks a little like this:
So as you may (or may not) know, I flew home Monday morning to drive up the the Adirondacks in New York with my family to visit my neighbors and came back very late on Thursday. Incidentally, I had 0 internet or cell phone service for 3 days. None. Zilch. It was incredible. That said while I may have gone 100% dark on you guys, I didn't have a flood of emails waiting when I got back so hopefully you all weren't too mad at me. Better yet, I got a bunch of work done up there; so much that I only missed the timeline by like a day. Which probably should have been longer anyway.
So unfortunately I wasn't able to do the daily snippet emails, so if you'll bear with me and take a peek at my big ol' commit on my connection branch and tell me if I screwed anything up I'd really appreciate it. Style should be ok, I've made an effort to improve it for fear of death by Daniel. The process looks a little like this:
- Org admin clicks the "Start Connection" link inside an org homepage and is redirected to the OrgConnectionPage view, which looks pretty much the same.
- Admin enters the emails and/or link_ids of users they wish to connect with and clicks the submit button.
- OrgConnectionForm separates the valid link_ids/emails and the emails without any GSoCProfiles to be used by the generate() method
- Page displays something like the picture above for all emails that were sent notifications.
- The users receives an email with a link that looks pretty much like this: <http://localhost:8081/gsoc/profile/mentor/google/gsoc2009/08b7e441bd0ede68f7b2421bd8e2f6e0> where that last ugly section is an md5 hash of the AnonymousConnection object created as a placeholder.
- The user follows the link, signs in, and is directed to create a GSoCProfile
- Once the user clicks submit, the AnonymousConnection object is deleted and replaced with a GSoCConnection object.
- Normal interaction with the connection continues from here
All in all, this pretty much took a couple of modifications and a second transaction in OrgConnectionPage, an additional url configuration for gsoc/views/profile, a template and another method in notifications.
I need to test this on the production server, which brings me to my current situation: my changes are taking effect locally but not on my appengine instance. I tried building with paver again but I'm kinda stuck here and am probably going to need help since complex build phases are not included in my list of string skills (yet :P). If you have a fix and would like to email me I'll keep an eye on it, but I'll probably just end up harassing you all on the conference call tomorrow.
Tuesday, July 31, 2012
Melange Functional Tests
Hello everyone,
This week i did not work much due to reasons concerning my health, although i managed to consolidate loginOnLocalhost() and loginByGoogleAccount() in to a single login() method. Also i deprecated the setup() method and merged its functionality with init() method. Renamed a few methods so that nose runner picks up them in order.
Next week i am looking forward to implement suggestions of Leo on running a separate dev server for each test process and clean the data store after each test case. It is a much better way as compared to the current implementation. Also i am looking forward to solve the problem of code duplication in tests and make the test suite clean and much better.
This week i did not work much due to reasons concerning my health, although i managed to consolidate loginOnLocalhost() and loginByGoogleAccount() in to a single login() method. Also i deprecated the setup() method and merged its functionality with init() method. Renamed a few methods so that nose runner picks up them in order.
Next week i am looking forward to implement suggestions of Leo on running a separate dev server for each test process and clean the data store after each test case. It is a much better way as compared to the current implementation. Also i am looking forward to solve the problem of code duplication in tests and make the test suite clean and much better.
Tuesday, July 24, 2012
Melange Functional Testing: New Tests
Hello,
This week i worked on creating the following test scripts:
(1) test_gsoc_proposal.py
(2) test_gsoc_faq_page.py
(3) test_gsoc_events_and_timeline.py
(4) test_gsoc_connect_with_us.py
(5) test_gci_timeline.py
(6) test_gci_tasks_page.py
Next week i will work on improving the test scripts. GSoC Proposal test was quite fun, It involved iframe. Switching to iframe and then switching back was interesting. It is good to see executing functional tests :)
Monday, July 23, 2012
Comments & Connections Finally Play Nice
If you've been following my series of "Daily Snippet" posts to the melange-soc-dev list, you'll know that I've made a whole bunch of fixes and may even be eagerly awaiting to hear whether I actually got this working. I'm happy to say that the ShowConnection page now supports the user and org admins leaving comments on a connection now accompanied by more reliable buttons, reasonable status messages, and a bunch of stability fixes. At the risk of boring both of us to tears (you by reading this and me by typing it), I'm going to glaze over what I've done this week. If you want more details I would be happy to provide them, or you can dig back through the Daily Snippet messages.
- Fixed Connection notifications in the User/Org ConnectionPage transactions
- Modified template for above notification so that it's a little cleaner
- Revamped ShowConnection's checkAccess() method so that it actually does what it's supposed to (and added a connectionFromKwargs() method to the Mutator class)
- Added newCommentContext() to gsoc.logic.helper.notifications for notifications of new Connections
- Added getComments() to and made associated changes in ShowConnection's conext() method
- Modified/Stole code from proposal_review and put it in the show_connection template in order to display GSoCComment instances
- Added PostHandler() class (also stolen from proposal_review) to gsoc/views/connection.py and modified it to work for Connections. Also added it to gsoc callback
- Added associated URL patterns to gsoc/views/helper/url_patterns and url_names
- Modified commentVisible() in soc/views/helper/access_checker to take an org argument so that it can be used by both proposal_review and connection without extensive modification - also modified where it is invoked in those two modules
There's probably more, but I think that this is a good list. Take a peek at the results:
User perspective:
Same data, org admin perspective:
This snippet idea was awesome, it really helps keep me on track and motivates me to get what I need done on time. I'm going to make one more change and try to eliminate the query in connectionFromKwargs() mentioned above and will commit everything tonight. The two big things on my radar right now are inviting users without profiles (or even entities) and integration; I need to start by fixing a link Daniel sent me on my production instance.
Subscribe to:
Posts (Atom)


