class The_Form:
    __attributes = {'username':None, 'passwd':None, 'function':'default',
        'action':None, 'authors':None, 'pub_date':None, 
        'short_desc':None, 'long_desc':None, 'title':None, 'filename':None,
        'filename_name':None}
    __keys = __attributes.keys()
    
    def __init__(self, vals=None, extra_attrs=None):
        '''\
        init object
            has two optional parameters both dictionaries
            vals is a set of vals to put into the object and 
            extra_attrs is a list of attributes with defaults that can be
            added
        '''
        
        if extra_attrs:
            for i in extra_attrs.keys():
                self.__attributes[i] = extra_attrs[i]
            self.__keys = self.__attributes.keys()
            
        if vals:
            for i in vals.keys():
                if i in self.__keys:
                    self.__attributes[i] = vals[i]
                else:
                    self.__invalid_item = 1

    def error(self):
        if self.__invalid_item:
            return 1
        else:
            return 0

                    
    def get_values_from_form(self, form):
        for i in self.__keys:
            if form.has_key(i):
                if i == 'filename':
#                    print 'content-type: text/html'
#                    print 
#                    print 'filename:', form[i].filename
#                    print form[i]
                    self.__attributes['filename_name'] = form[i].filename

                self.__attributes[i] = form[i].value

    def __setattr__(self, attr, val):
        if attr in self.__keys:
            self.__attributes[attr] = val

    
    def __getattr__(self, attr):
        if attr in self.__keys:
            return self.__attributes[attr]
