Example #1
0
 def post(self):
     if not self.global_modes['allow_registration']:
         self.see_other('home', error='Registration is currently disabled.')
         return
     try:
         with AccountSaver(rqh=self) as saver:
             email = self.get_argument('email', None)
             saver['first_name'] = self.get_argument('first_name', None)
             saver['last_name'] = self.get_argument('last_name', None)
             university = self.get_argument('university', None)
             if not university:
                 university = self.get_argument('university_other', None)
             saver['university'] = university
             saver['department'] = self.get_argument('department', None)
             saver['pi'] = utils.to_bool(self.get_argument('pi', False))
             gender = self.get_argument('gender', None)
             if gender:
                 saver['gender'] = gender.lower()
             group_size = self.get_argument('group_size', None)
             if group_size:
                 saver['group_size'] = group_size
             try:
                 saver['subject'] = int(self.get_argument('subject'))
             except (tornado.web.MissingArgumentError, ValueError,
                     TypeError):
                 saver['subject'] = None
             saver['address'] = dict(
                 address=self.get_argument('address', None),
                 zip=self.get_argument('zip', None),
                 city=self.get_argument('city', None),
                 country=self.get_argument('country', None))
             saver['invoice_ref'] = self.get_argument('invoice_ref', None)
             saver['invoice_address'] = dict(
                 address=self.get_argument('invoice_address', None),
                 zip=self.get_argument('invoice_zip', None),
                 city=self.get_argument('invoice_city', None),
                 country=self.get_argument('invoice_country', None))
             saver['phone'] = self.get_argument('phone', None)
             if not email:
                 raise ValueError('Email is required.')
             saver.set_email(email)
             saver['owner'] = saver['email']
             saver['role'] = constants.USER
             saver['status'] = constants.PENDING
             saver.check_required()
             saver.erase_password()
     except ValueError, msg:
         kwargs = OD()
         for key in self.KEYS:
             kwargs[key] = saver.get(key) or ''
         for key in self.ADDRESS_KEYS:
             kwargs[key] = saver.get('address', {}).get(key) or ''
         for key in self.ADDRESS_KEYS:
             kwargs['invoice_' + key] = saver.get('invoice_address', {}).\
                 get(key) or ''
         self.see_other('register', error=str(msg), **kwargs)
         return
Example #2
0
 def post(self):
     if not self.global_modes['allow_registration']:
         self.see_other('home', error='Registration is currently disabled.')
         return
     try:
         with AccountSaver(rqh=self) as saver:
             email = self.get_argument('email', None)
             saver['first_name'] = self.get_argument('first_name', None)
             saver['last_name'] = self.get_argument('last_name', None)
             university = self.get_argument('university', None)
             if not university:
                 university = self.get_argument('university_other', None)
             saver['university'] = university
             saver['department'] = self.get_argument('department', None)
             saver['pi'] = utils.to_bool(self.get_argument('pi', False))
             gender = self.get_argument('gender', None)
             if gender:
                 saver['gender'] = gender.lower()
             group_size = self.get_argument('group_size', None)
             if group_size:
                 saver['group_size'] = group_size
             try:
                 saver['subject'] = int(self.get_argument('subject'))
             except (tornado.web.MissingArgumentError,ValueError,TypeError):
                 saver['subject'] = None
             saver['address'] = dict(
                 address=self.get_argument('address', None),
                 zip=self.get_argument('zip', None),
                 city=self.get_argument('city', None),
                 country=self.get_argument('country', None))
             saver['invoice_ref'] = self.get_argument('invoice_ref', None)
             saver['invoice_address'] = dict(
                 address=self.get_argument('invoice_address', None),
                 zip=self.get_argument('invoice_zip', None),
                 city=self.get_argument('invoice_city', None),
                 country=self.get_argument('invoice_country', None))
             saver['phone'] = self.get_argument('phone', None)
             if not email:
                 raise ValueError('Email is required.')
             saver.set_email(email)
             saver['owner'] = saver['email']
             saver['role'] = constants.USER
             saver['status'] = constants.PENDING
             saver.check_required()
             saver.erase_password()
     except ValueError, msg:
         kwargs = OD()
         for key in self.KEYS:
             kwargs[key] = saver.get(key) or ''
         for key in self.ADDRESS_KEYS:
             kwargs[key] = saver.get('address', {}).get(key) or ''
         for key in self.ADDRESS_KEYS:
             kwargs['invoice_' + key] = saver.get('invoice_address', {}).\
                 get(key) or ''
         self.see_other('register', error=str(msg), **kwargs)
         return
 def post(self):
     self.check_admin()
     try:
         mode = self.get_argument('mode')
         if mode not in self.global_modes: raise ValueError
         self.global_modes[mode] = utils.to_bool(self.get_argument('value'))
     except (tornado.web.MissingArgumentError, ValueError, TypeError):
         pass
     else:
         # Create global_modes meta document if it does not exist.
         if '_id' not in self.global_modes:
             self.global_modes['_id'] = 'global_modes'
             self.global_modes[constants.DOCTYPE] = constants.META
         self.db.save(self.global_modes)
     self.see_other('global_modes')
Example #4
0
 def post(self):
     self.check_admin()
     try:
         mode = self.get_argument('mode')
         if mode not in self.global_modes: raise ValueError
         self.global_modes[mode] = utils.to_bool(self.get_argument('value'))
     except (tornado.web.MissingArgumentError, ValueError, TypeError):
         pass
     else:
         # Create global_modes meta document if it does not exist.
         if '_id' not in self.global_modes:
             self.global_modes['_id'] = 'global_modes'
             self.global_modes[constants.DOCTYPE] = constants.META
         self.db.save(self.global_modes)
     self.see_other('global_modes')
 def post(self, name):
     self.check_admin()
     if self.get_argument('_http_method', None) == 'delete':
         self.delete(name)
         return
     file = self.get_entity_view('file/name', name)
     with FileSaver(doc=file, rqh=self) as saver:
         try:
             infile = self.request.files['file'][0]
         except (KeyError, IndexError):
             # No new file upload, just leave it alone.
             saver.file = None
         else:
             saver.set_file(infile)
         saver['title'] = self.get_argument('title', None)
         saver['hidden'] = utils.to_bool(self.get_argument('hidden', False))
         saver['description'] = self.get_argument('description', None)
     self.see_other('files')
Example #6
0
 def post(self):
     self.check_admin()
     try:
         with FileSaver(rqh=self) as saver:
             try:
                 infile = self.request.files['file'][0]
             except (KeyError, IndexError):
                 raise ValueError('No file uploaded.')
             name = self.get_argument('name', None) or \
                    os.path.splitext(infile.filename)[0]
             saver.check_name(name)
             saver.set_file(infile, name)
             saver['title'] = self.get_argument('title', None)
             saver['hidden'] = utils.to_bool(self.get_argument('hidden',
                                                               False))
             saver['description'] = self.get_argument('description', None)
     except ValueError, msg:
         self.see_other('files', error=str(msg))
Example #7
0
 def post(self, name):
     self.check_admin()
     if self.get_argument('_http_method', None) == 'delete':
         self.delete(name)
         return
     file = self.get_entity_view('file/name', name)
     with FileSaver(doc=file, rqh=self) as saver:
         try:
             infile = self.request.files['file'][0]
         except (KeyError, IndexError):
             # No new file upload, just leave it alone.
             saver.file = None
         else:
             saver.set_file(infile)
         saver['title'] = self.get_argument('title', None)
         saver['hidden'] = utils.to_bool(self.get_argument('hidden', False))
         saver['description'] = self.get_argument('description', None)
     self.see_other('files')
Example #8
0
 def post(self):
     self.check_admin()
     try:
         with FileSaver(rqh=self) as saver:
             try:
                 infile = self.request.files['file'][0]
             except (KeyError, IndexError):
                 raise ValueError('No file uploaded.')
             name = self.get_argument('name', None) or \
                    os.path.splitext(infile.filename)[0]
             saver.check_name(name)
             saver.set_file(infile, name)
             saver['title'] = self.get_argument('title', None)
             saver['hidden'] = utils.to_bool(
                 self.get_argument('hidden', False))
             saver['description'] = self.get_argument('description', None)
     except ValueError, msg:
         self.see_other('files', error=str(msg))
Example #9
0
try:
    with AccountSaver(doc=account, rqh=self) as saver:
        # Only admin may change role of an account.
        if self.is_admin():
            role = self.get_argument('role')
            if role not in constants.ACCOUNT_ROLES:
                raise ValueError('Invalid role.')
            saver['role'] = role
        saver['first_name'] = self.get_argument('first_name')
        saver['last_name'] = self.get_argument('last_name')
        university = self.get_argument('university', None)
        if not university:
            university = self.get_argument('university_other', None)
        saver['university'] = university
        saver['department'] = self.get_argument('department', None)
        saver['pi'] = utils.to_bool(self.get_argument('pi', False))
        try:
            saver['gender'] = self.get_argument('gender').lower()
        except tornado.web.MissingArgumentError:
            try:
                del saver['gender']
            except KeyError:
                pass
        try:
            saver['group_size'] = self.get_argument('group_size')
        except tornado.web.MissingArgumentError:
            try:
                del saver['group_size']
            except KeyError:
                pass
        try:
 def post(self, email):
     try:
         account = self.get_account(email)
         self.check_editable(account)
     except ValueError as msg:
         self.see_other('account_edit', account['email'], error=str(msg))
         return
     try:
         with AccountSaver(doc=account, rqh=self) as saver:
             # Only admin may change role of an account.
             if self.is_admin():
                 role = self.get_argument('role')
                 if role not in constants.ACCOUNT_ROLES:
                     raise ValueError('Invalid role.')
                 saver['role'] = role
             saver['first_name'] = self.get_argument('first_name')
             saver['last_name'] = self.get_argument('last_name')
             university = self.get_argument('university', None)
             if not university:
                 university = self.get_argument('university_other', None)
             saver['university'] = university
             saver['department'] = self.get_argument('department', None)
             saver['pi'] = utils.to_bool(self.get_argument('pi', False))
             try:
                 saver['gender'] = self.get_argument('gender').lower()
             except tornado.web.MissingArgumentError:
                 try:
                     del saver['gender']
                 except KeyError:
                     pass
             try:
                 saver['group_size'] = self.get_argument('group_size')
             except tornado.web.MissingArgumentError:
                 try:
                     del saver['group_size']
                 except KeyError:
                     pass
             try:
                 saver['subject'] = int(self.get_argument('subject'))
             except (tornado.web.MissingArgumentError, ValueError,
                     TypeError):
                 saver['subject'] = None
             saver['address'] = dict(
                 address=self.get_argument('address', None),
                 zip=self.get_argument('zip', None),
                 city=self.get_argument('city', None),
                 country=self.get_argument('country', None))
             saver['invoice_ref'] = self.get_argument('invoice_ref', None)
             saver['invoice_address'] = dict(
                 address=self.get_argument('invoice_address', None),
                 zip=self.get_argument('invoice_zip', None),
                 city=self.get_argument('invoice_city', None),
                 country=self.get_argument('invoice_country', None))
             saver['phone'] = self.get_argument('phone', None)
             saver['other_data'] = self.get_argument('other_data', None)
             if utils.to_bool(self.get_argument('api_key', False)):
                 saver['api_key'] = utils.get_iuid()
             saver['update_info'] = False
             saver.check_required()
     except ValueError as msg:
         self.see_other('account_edit', account['email'], error=str(msg))
     else:
         self.see_other('account', account['email'])
Example #11
0
                texts = yaml.safe_load(infile)
        except IOError:
            print('Warning: could not load', filepath)
            texts = dict()
    else:
        texts = dict()
    for name in constants.TEXTS:
        if len(list(db.view('text/name', key=name))) == 0:
            with admin.TextSaver(db=db) as saver:
                saver['name'] = name
                saver['text'] = texts.get(name, '')


def wipeout_database(db):
    """Wipe out the contents of the database.
    This is used rather than total delete of the database instance, since
    that may require additional privileges, depending on the setup.
    """
    for doc in db:
        del db[doc]


if __name__ == '__main__':
    (options, args) = get_args()
    if not options.force:
        response = raw_input('about to delete everything; really sure? [n] > ')
        if not utils.to_bool(response):
            sys.exit('aborted')
    utils.load_settings(filepath=options.settings)
    init_database(dumpfilepath=options.FILE)
Example #12
0
try:
    with AccountSaver(doc=account, rqh=self) as saver:
        # Only admin may change role of an account.
        if self.is_admin():
            role = self.get_argument('role')
            if role not in constants.ACCOUNT_ROLES:
                raise ValueError('Invalid role.')
            saver['role'] = role
        saver['first_name'] = self.get_argument('first_name')
        saver['last_name'] = self.get_argument('last_name')
        university = self.get_argument('university', None)
        if not university:
            university = self.get_argument('university_other', None)
        saver['university'] = university
        saver['department'] = self.get_argument('department', None)
        saver['pi'] = utils.to_bool(self.get_argument('pi', False))
        try:
            saver['gender'] = self.get_argument('gender').lower()
        except tornado.web.MissingArgumentError:
            try:
                del saver['gender']
            except KeyError:
                pass
        try:
            saver['group_size'] = self.get_argument('group_size')
        except tornado.web.MissingArgumentError:
            try:
                del saver['group_size']
            except KeyError:
                pass
        try: