Giter Club home page Giter Club logo

eventman's People

Contributors

alberanid avatar dcast78 avatar oloturia avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

alberanid

eventman's Issues

handle dates and times

Currently date and times are converted into Date object, but not shown nicely.

Probably, a directive must be written.

set focus to speed up the most common workflow

On the event info page, we can make the normal workflow faster cleaning the query field after a person is marked as attending (or a new person is added) and moving the focus back to the input field.

update libraries

Update AngularJS and related libraries.

Whenever possible, use the minified version.

use the "next" parameter of the login url

When an unauthenticated user is redirected to the /login url, the "next" parameter is populated by tornado with the original path, which could be used for a proper redirection upon successful login.

unable to edit a deleted person

To reproduce:

  • add a person to an event
  • delete the person from the persons list
  • follow the link from the person's entry in the event

You will not able to edit it to modify his/her information.

settings page

We need to introduce a Settings page.

Right now, it will be used to configure the custom fields (see #22) and edit users and passwords.

user authentication

introduce user authentication.

It will be base on username/password stored in the MongoDB database.

separate future events from past ones

In the list of events, future ones should be on top.

Another option, is to have just one, duplicated, "Next event" on top, above an "All events" table.

Improve attended toggling performances

Toggling a boolean value for an attendee (like "attended"), performances suffer, due to the fact that the whole list of persons is reloaded.

We should just send back the changed value, and also communicate it over the WebSocket.

react to actions

Introduce a way to execute commands when some conditions occurs.

For example, a script could be executed when a person is marked as attendee of an event.

Proposed implementation:

  • identify the conditions in the various controllers, giving a name to the condition (e.g.: 'person-attended').
  • call or implement a run-parts on the directory associated to the condition (e.g.: './data/actions/person-attended.d)

Be sure the handle this with coroutines.

send web user to triggers

Triggers should receive the name of user logged in on the web GUI in the WEB_USER environment variable.

OverflowError on handling long ebqrcode values

When try to register an attendant using long ebqrcode values es:

  http://localhost:5242/events/552590580025e836ebc92ed4/persons/?ebqrcode=411254200519698130001
  {"attended": true, "checkin_datetime": "2015-04-22T17:41:38Z"}

MongoDB return an overflow error on int field

  OverflowError: MongoDB can only handle up to 8-byte ints

remove invalid keys to MongoDB requests

Some key values (especially the ones prepended by $) are no longer valid with MongoDB 2.6, leading to a server side exception. This happens adding a new attendee.

Another example, editing a datetime setting, the value is set but on console we get:

[E 160409 18:35:56 web:1496] Uncaught exception POST /events/57092f65dff0d704314b4ed1 (::1)
HTTPServerRequest(protocol='http', host='localhost:5242', method='POST', uri='/events/57092f65dff0d704314b4ed1', version='HTTP/1.1', remote_ip='::1', headers={'Origin': 'http://localhost:5242', 'Content-Length': '199', 'Accept-Language': 'en-US,en;q=0.8,it;q=0.6', 'Accept-Encoding': 'gzip, deflate', 'Host': 'localhost:5242', 'Accept': 'application/json, text/plain, /', 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/49.0.2623.108 Chrome/49.0.2623.108 Safari/537.36', 'Dnt': '1', 'Connection': 'keep-alive', 'Referer': 'http://localhost:5242/', 'Cookie': 'org.cups.sid=2c73cdc5fc32b1864ed7a36c5c76aaba; user="2|1:0|10:1460214844|4:user|12:cmVtb3RlMQ==|30cb585baa2ae173a6a3a9b36e0909fccf9f0c365ce31134dd54db954d488fbe"', 'Content-Type': 'application/json;charset=UTF-8'})
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/tornado/web.py", line 1415, in _execute
result = yield result
File "/usr/lib/python2.7/dist-packages/tornado/gen.py", line 870, in run
value = future.result()
File "/usr/lib/python2.7/dist-packages/tornado/concurrent.py", line 215, in result
raise_exc_info(self._exc_info)
File "/usr/lib/python2.7/dist-packages/tornado/gen.py", line 215, in wrapper
result = func(_args, *_kwargs)
File "eventman_server.py", line 59, in my_wrapper
return original_wrapper(self, _args, *_kwargs)
File "/usr/lib/python2.7/dist-packages/tornado/web.py", line 2721, in wrapper
return method(self, _args, *kwargs)
File "eventman_server.py", line 226, in post
merged, newData = self.db.update(self.collection, id
, data)
File "/home/da/git/eventman/backend.py", line 227, in update
update={operator: data}, full_response=True, new=True, upsert=create)
File "/home/da/.local/lib/python2.7/site-packages/pymongo/collection.py", line 1738, in find_and_modify
*_kwargs)
File "/home/da/.local/lib/python2.7/site-packages/pymongo/database.py", line 439, in command
uuid_subtype, compile_re, *_kwargs)[0]
File "/home/da/.local/lib/python2.7/site-packages/pymongo/database.py", line 345, in _command
msg, allowable_errors)
File "/home/da/.local/lib/python2.7/site-packages/pymongo/helpers.py", line 182, in _check_command_response
raise OperationFailure(msg % errmsg, code, response)
OperationFailure: command SON([('findAndModify', u'events'), ('query', {'_id': ObjectId('57092f65dff0d704314b4ed1')}), ('update', {'$set': {u'begin-time': u'2016-04-09T15:35:30.236Z', u'$resolved': True, u'title': u'nexto', u'end-date': u'2016-05-13T22:00:00.000Z', u'begin-date': u'2016-05-13T22:00:00.000Z', u'$promise': {}}}), ('new', True), ('upsert', True)]) on namespace eventman.$cmd failed: exception: The dollar ($) prefixed field '$promise' in '$promise' is not valid for storage.

Improve search performances

We should improve the performances of the filter query.

Maybe we can delay the search after enough chars are entered, or after a small delay since the last char entered.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.