aamaadmiparty / cleansweep Goto Github PK
View Code? Open in Web Editor NEWVolunteer & Campaign Management System
License: Other
Volunteer & Campaign Management System
License: Other
Implement the Mark as volunteer / donor / supporter / NOT a supporter / NOT interested.
In the case of volunteer / donor, the information should be sent as a request to the admin at the appropriate level for processing. In the rest of the cases, it is sufficient to just keep track of the statistics.
We need to ensure sanctity of phone numbers that get into the system. One way to ensure that is by generating an OTP (one time password) with every registration, sending the OTP by SMS, and requiring that the OTP be entered within a fixed amount of time for considering the registration request as valid. Else the registration request can be junked.
We need ability to track the progress of door to door campaign. This requires building the following:
The loader only loads the state, LC and ACs, it doesn't load the polling booths. Same data for pbs is already available in the data/KA
.
Messages to volunteers / admins on requests / approval / rejection for working at a polling center
We need a simple interface for sending SMS messages to group of people. It'll be helpful if we can hide all other complexity available in the CMS and only expose the SMS functionality some how.
Implement /add-member
No need to worry about permissions as of now.
We need a widget to display info like:
This Parliamentary Constituency has
8 Assembly Constituencies
63 Wards
1,059 Polling Centers
2,364 Polling Booths
templates/widgets has some sample widgets.
Gave an internal server error
Right now place must be selected from an autocomplete to add a volunteer. It becomes very difficult to pick the right polling booth. It would be better to drop that and add a dropdown of all booths.
There should be one page for each member.
/KA/AC123/PB123/members/1234
Will be good to see a dashboard of how many people have been covered at a booth, how many supporters, etc.
adding Country COUNTRY 10
adding State STATE 20
adding Region REGION 30
adding Loksabha Constituency LC 40
adding Assembly Constituency AC 50
adding Ward WARD 60
adding Polling Center PC 70
adding Polling Booth PB 80
Traceback (most recent call last):
File "run.py", line 22, in <module>
main(root_dir)
File "/private/var/www/cleansweep/cleansweep/loaddata.py", line 93, in main
load_state(root_dir)
File "/private/var/www/cleansweep/cleansweep/loaddata.py", line 88, in load_state
db.session.commit()
File "/private/var/www/cleansweep/lib/python2.7/site-packages/sqlalchemy/orm/scoping.py", line 149, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/private/var/www/cleansweep/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 765, in commit
self.transaction.commit()
File "/private/var/www/cleansweep/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 370, in commit
self._prepare_impl()
File "/private/var/www/cleansweep/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 350, in _prepare_impl
self.session.flush()
File "/private/var/www/cleansweep/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 1903, in flush
self._flush(objects)
File "/private/var/www/cleansweep/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 2021, in _flush
transaction.rollback(_capture_exception=True)
File "/private/var/www/cleansweep/lib/python2.7/site-packages/sqlalchemy/util/langhelpers.py", line 57, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/private/var/www/cleansweep/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 1985, in _flush
flush_context.execute()
File "/private/var/www/cleansweep/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.py", line 365, in execute
n.execute_aggregate(self, set_)
File "/private/var/www/cleansweep/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.py", line 616, in execute_aggregate
uow)
File "/private/var/www/cleansweep/lib/python2.7/site-packages/sqlalchemy/orm/persistence.py", line 64, in save_obj
mapper, table, insert)
File "/private/var/www/cleansweep/lib/python2.7/site-packages/sqlalchemy/orm/persistence.py", line 594, in _emit_insert_statements
execute(statement, params)
File "/private/var/www/cleansweep/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 720, in execute
return meth(self, multiparams, params)
File "/private/var/www/cleansweep/lib/python2.7/site-packages/sqlalchemy/sql/elements.py", line 317, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/private/var/www/cleansweep/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 817, in _execute_clauseelement
compiled_sql, distilled_params
File "/private/var/www/cleansweep/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 947, in _execute_context
context)
File "/private/var/www/cleansweep/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1108, in _handle_dbapi_exception
exc_info
File "/private/var/www/cleansweep/lib/python2.7/site-packages/sqlalchemy/util/compat.py", line 185, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "/private/var/www/cleansweep/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 940, in _execute_context
context)
File "/private/var/www/cleansweep/lib/python2.7/site-packages/sqlalchemy/engine/default.py", line 435, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (ProgrammingError) You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings. u'INSERT INTO place ("key", name, type_id, iparent_id) VALUES (?, ?, ?, ?)' ('KA/AC164/PB0131', 'PB0131 - Bapuji Vidyarthi nilaya \xc2\xb8 Magadi Road,', 8, 226)
We need to build a small webapp that provides A JSON response given state and voterid.
We need to a small library that provides voter info given state and voterid.
There is a website by election commission of India that provides this, but the response needs some massaging.
We need to get the assembly constituency and polling both. It given the polling booth number, but given only the assembly constituency name.
We need a small webapp that talks to that website, formats the data as need and cache the response in the db so that we don't hit the electoralsearch website very often.
It will be useful to cache the response in the database to avoid hitting the election commission website again and again.
We need to send emails to people on the following events.
What more?
The "/" become part of the URL and the access to the voter fails.
People should be able to apply for membership.
It should first authenticate the person using Facebook and then ask for phone number, location and voterid.
The admin will be able to approve the membership, but there'll be a separate issue for that.
Implement PlaceList widget to display all places just one-level below the current place and add it to the place page.
The specs of the maps component is documented at Maps Component wiki page.
Part of this is already done for Bangalore elections.
http://geosearch-anandology.rhcloud.com/
http://github.com/anandology/india-geosearch
The coordinates of all polling booths in Karnataka are available at:
http://d.anandology.com/mapdata/S10/all-ps.tsv
We now need to extend the india-geosearch code to provide nearest polling booth.
Implement a widget to help navigating between places in the same level and up. This widget should be added to the place page in the sidebar.
The location autocomplete is creating more issues than it is solving. The add volunteer page should be redesigned to with the following requirements:
Right now the system allows people to see volunteers at all the parents of his place. This literally allows everyone to go to INDIA page and see all the volunteers.
This should be fixed by limiting the volunteers view only to the place where he belongs.
Add Panchayats and municipality names to the place hierarchy.
This requires:
Ability to add new members is not in the scope of this issue.
Right now the app only supports login using Facebook. Would be nice to have login using Google too.
We need ability to add admin users from command line. We need to in the short-term so that we can continue using the system without having to worry about providing UI for adding admin users.
Comeup with a mock up for user dashboard. The dashboard should provide quick access to all the things that a user can do with the system. It should probably change based on his role and permissions.
We need to record every change that happens in the system so that people with right permissions can watch who is doing what and reverse any action if required.
We need ability to search for a place. It would be nice if we have search engine like solr/elasticsearch, but for now just use LIKE queries in SQL.
Tasks:
We need ability to search for members on members page.
Delhi team consist of 1 main wing and 14 frontal wings(youth,women,student etc.) with the same heirarchy. and a number of positions at each level.
For this we need to have ability to add a category to a volunteer.
We may have to handle some permission issues, but that'll be taken care as a separate issue.
As of now we only look for voter info voterdb. It would be nice if we can search electoralsearch.in in addition to that so that new voter ids (and new states) will automatically start working.
What permission does a booth level volunteer have?
Logged in as [email protected] / Bill123 in test.missionvistaar.in
At the booth, the "Admin" menu doesnt show up. When he navigates up to the polling center, the "Admin" menu shows up.
When he clicks on the Voters link, the voter IDs and the names show up (http://test.missionvistaar.in/KL/AC021/PX003/admin/voters). But clicking on a voter ID gives "Permission Denined" (http://test.missionvistaar.in/KL/AC021/PB0005/admin/voters/CCZ1708684).
Also, please note typo in "Denined"
Provide a method for an externally developed application to validate whether a giver user is an active volunteer and his geographic locations + roles.
! Usecase
Such applications depend on getting active information on active volunteers, their location etc Having cleansweep provide the authoritative information on whether someone is a active member or not and his membership details will help in building other applications on top of cleansweep
We need a way to specify places in a state so that they can be loaded into the app. Right now we only have a way to specify state, LC, AC and PB. The format that we are using is available at:
https://github.com/anandology/cleansweep/tree/master/data/KA
It contains 4 files.
We need to extend this to support regions, wards and polling centers. Do you have any suggestions?
We need a permission system to decide who can do what. Eventually we want the ability to configure this from admin panel, but for now we can fix some simple rules.
A member will be able to:
An admin will be able to:
We may have to add volunteers without know their exact booth.
This is tricky because it can potentially make the volunteer data incomplete and unusable.
Need more thoughts on this.
We need to limit the number of volunteers displayed per page. I suggest limiting that number to 50 and add pagination.
Suggested URL format with pagination is:
<place>/volunteers?page=2
or
<place>/members/2
Tips:
See how pagination is handled for voters.
We need to manage a list of unsubscribed people and never send any emails to those people.
A link to unsubscribe page is added at the end of every email that is sent out.
Finally, while going door-to-door, there may be newer people who need to be added into the system. What is the best place to do it?
Admins should be able to add new members to any polling booth in his subtree
We need the ability to add new members. Lets not worry about permissions for now.
The form will have location and voterid fields in addition to nam, email and phone. The polling booth of the person is identified either using the voterid or using the location.
It should look something like this:
http://ka.aapvol.in/
We need an admin panel with ability to define committees.
See https://github.com/anandology/cleansweep/wiki/Specs#committees for more details.
An individual who is part of a committee at a particular level, and has write permissions, should have access to the list of all volunteers at his/her unit and at all units under his/her unit.
This individual should not have access to any volunteers from other units.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.