Beispiel #1
0
 def writeContent(self):
     wr = self.writeln
     ISA = is_site_admin(self.request())
     if ISA:
         if self.request()._environ.get('REQUEST_METHOD') == 'POST':
             form = self.request().fields()
             rm_doc_file(form.get('filename'))
             self.response().sendRedirect('DM_Index')
         else:
             qs = self.request().fields()
             filename = qs.get('fn')
             pick = get_document_properties(filename)
             wr('<h1>%s</h1>' % (self.title()))
             wr('<p>Are you sure you wish to delete this file?</p>')
             wr('<p><table>')
             wr('<tr><td>Filename:<td>%s' % (filename))
             wr('<tr><td>Title:<td>%s' % (pick.get('title', '')))
             wr('<tr><td>Categories:<td>%s' % (', '.join(pick.get('categories', []))))
             wr('<tr><td>Access:<td>%s' % (', '.join(pick.get('roles', []))))
             wr('</table></p>')
             wr('<p><form method="POST" action="DM_Delete_Doc">')
             wr(hidden('filename', filename))
             wr(submit('Yes.'))
             wr('<input type="button" value="No, better to leave well-enough alone." onclick="javascript:history.go(-1)">')
             wr('</form></p>')
    def writeBodyParts(self):
        ILI = is_logged_in(self.request())
        ISA = is_site_admin(self.request())
        wr = self.writeln
        self.writeHeader()
        self.writeSubHeader()
        wr('''
<div class="container" id="body-container">
  <div class="row">
    <!-- LEFT MENU COLUMN ###################################################### -->
    <div class="col-md-3" id="side-menu">
            ''')
        self.writeNav()
        wr('''
    </div><!-- .col-md-3 #side-menu -->
    <!-- RIGHT CONTENT COLUMN ###################################################### -->
    <div class="col-md-9" id="main-content">
            ''')


        if ILI or ISA:
            self.writeContent()
        else:
            self.writeln('<h1>You must be logged in to access this page.</h1>')


        wr('''
    </div><!-- .col-md-9 -->
  </div><!-- .row -->
</div><!-- #body-container -->
            ''')
        self.writeFooter()
Beispiel #3
0
    def writeContent(self):
        wr = self.writeln
        qs = self.request().fields()
        year = qs.get('yr')

        IS_SITE_ADMIN = is_site_admin(self.request())
        if IS_SITE_ADMIN:
            wr('<div class="button">')
            wr('<a href="News_Form">+ Add News Item</a>')
            wr('</div>')

        wr('<h1>%s</h1>' % (self.title()))

        archyrs = get_archive_years()
        wr('<div class="sb"><div class="st">')
        wr('<div class="t12b">News Archives</div>')
        ny = now_year()
        if year and (year != ny):
            wr('<P><a href="News2">Current News (%s)</a></P>' % (ny))
        for ay in archyrs:
            fw = "normal"
            if year == ay:
                fw = "bold"
            wr('<P style="font-weight: %s;"><a href="?yr=%s">%s</a></P>' % (fw, ay, ay))
        wr('</div></div>')

        newsitems = get_news_by_year(year)
        for nd in newsitems:
            wr('<h2>%s</h2>' % (nd.get('headline')))
            wr('<small>Added %s</small>' % (nd.get('added')))
            if IS_SITE_ADMIN:
                wr('<a href="News_Form?id=%s" style="margin-left: 10px;"><img src="/g/edit.png" alt="edit" width="17" height="17" border="0" /></a>' % (nd.get('id')))
                wr('<a href="News_Delete?id=%s"><img src="/g/delete.png" alt="delete" width="17" height="17" border="0" /></a>' % (nd.get('id')))
            wr('<p>%s</p>' % (nd.get('description')))
Beispiel #4
0
 def writeContent(self):
     wr = self.writeln
     qs = self.request().fields()
     doctype, category, filename = qs.get('doctype'), qs.get('category'), qs.get('filename')
     IS_SITE_ADMIN = is_site_admin(self.request())
     if doctype and filename:
         if IS_SITE_ADMIN:
             if self.request()._environ.get('REQUEST_METHOD') == 'POST':
                 del_document(doctype, category, filename)
                 redir = ''
                 if doctype == 'document':
                     redir += 'Documents?cat=%s' % (category)
                 if doctype == 'report':
                     redir += 'Reports'
                 self.response().sendRedirect(redir)
             else:
                 wr('<h1>%s</h1>' % (self.title()))
                 wr('<P>Are you sure you want to delete this %s?</P>' % (doctype))
                 wr('<P>%s</P>' % (filename))
                 wr('<form method="POST" action="File_Deleter">')
                 wr(hidden('doctype', doctype))
                 wr(hidden('category', category))
                 wr(hidden('filename', filename))
                 wr(submit('Yes, delete the %s.' % (doctype)))
                 wr('<input type="button" value="Do nothing." onClick="javascript:history.go(-1)">')
                 wr('</form>')
         else:
             wr('<p>You are not a site administrator.</p>')
     else:
         wr('<p>No document type and/or filename.</p>')
Beispiel #5
0
    def writeBodyParts(self):
        ISA = is_site_admin(self.request())
        wr = self.writeln
        self.writeHeader()
        self.writeSubHeader()
        wr('''
<div class="container" id="body-container">
  <div class="row">
    <!-- LEFT MENU COLUMN ###################################################### -->
    <div class="col-md-3" id="side-menu">
            ''')
        self.writeNav()
        wr('''
    </div><!-- .col-md-3 #side-menu -->
    <!-- RIGHT CONTENT COLUMN ###################################################### -->
    <div class="col-md-9" id="main-content">
            ''')

        if ISA:
            self.writeContent()
        else:
            self.writeln('<h1>You must be a site administrator to access this page.</h1>')


        wr('''
    </div><!-- .col-md-9 -->
  </div><!-- .row -->
</div><!-- #body-container -->
            ''')
        self.writeFooter()
Beispiel #6
0
    def writeContent(self):
        wr = self.writeln
        qs = self.request().fields()
        ISA = is_site_admin(self.request())
        wr('<h1>%s</h1>' % (self.title()))
        linksdict = rP(LINKFILE)

        if self.request()._environ.get('REQUEST_METHOD') == 'POST':
            form = qs
            u = form.get('url')
            if not u.startswith('http://'):
                form['url'] = 'http://' + u
            linkid = str(int(time.time()))
            
            linksdict[linkid] = form
            wP(linksdict, LINKFILE)
            self.response().sendRedirect("Links")

        else:
            if qs.get('delete_link_id'):
                timeid = qs['delete_link_id']
                
                del linksdict[qs.get('delete_link_id')]
                wP(linksdict, LINKFILE)
                self.response().sendRedirect("Links")

            else: # display
                if ISA:
                    wr('<P><table>')
                    wr('<form action="Links" method="POST"><tr><td colspan="2"><b>Add Link</b><br>')
                    wr('<tr><td>Title to display:<td><input type="text" name="title" value=""><br>')
                    wr('<tr><td>Web Address:<td><input type="text" name="url" value=""><br>')
                    wr('<tr><td colspan="2"><input type="submit" value="Add Link">')
                    wr('</table></form>')
                    wr('</P>')
                
                if linksdict:
                    titlesandids = []
                    for timeid in linksdict.keys():
                        d = linksdict[timeid]
                        t = (d.get('title'), timeid)
                        titlesandids.append(t)
                    titlesandids.sort()

                    for title, timeid in titlesandids:
                        url = linksdict[timeid].get('url')
                        wr('<P><a href="%s">%s</a>' % (url, title))
                        if ISA:
                            wr('<a href="Links?delete_link_id=%s"><img src="/g/delete.png" alt="delete" width="17" height="17" border="0" /></a>' % (timeid))
                        wr('</P>')
                else:
                    wr('<P>Sorry, there are no links right now.</P>')
Beispiel #7
0
    def writeContent(self):
        wr = self.writeln
        ISA = is_site_admin(self.request())
        if ISA:
            qs = self.request().fields()
            fn = qs.get('fn')
            action = qs.get('action')
            if fn and action:
                if action == 'archive':
                    archive_doc(fn)
                if action == 'activate':
                    activate_doc(fn)

        self.response().sendRedirect('DM_Index')
Beispiel #8
0
 def writeNav(self):
     ISA = is_site_admin(self.request())
     rolestr = self.request().cookies().get('role', '')
     IS_RES = rolestr == RESDSTR
     IS_DIP = rolestr == DIPLSTR
     PREV_SHOWN = False
     wr = self.writeln
     wr(rText(menu_alltop))
     if ISA:
         wr(rText(menu_admin))
     if (IS_LOGGED_IN and IS_DIP) or ISA:
         wr(rText(menu_dips))
     if (IS_LOGGED_IN and (IS_RES or IS_DIP)) or ISA:
         wr(rText(menu_cands))
     wr(rText(menu_allbottom))
Beispiel #9
0
 def writeNav(self):
     ISA = is_site_admin(self.request())
     rolestr = self.request().cookies().get('role', '')
     IS_RES = rolestr == RESDSTR
     IS_DIP = rolestr == DIPLSTR
     PREV_SHOWN = False
     wr = self.writeln
     wr(rText(menu_alltop))
     if ISA:
         wr(rText(menu_admin))
     if (IS_LOGGED_IN and IS_DIP) or ISA:
         wr(rText(menu_dips))
     if (IS_LOGGED_IN and (IS_RES or IS_DIP)) or ISA:
         wr(rText(menu_cands))
     wr(rText(menu_allbottom))
Beispiel #10
0
    def writeContent(self):
        wr = self.writeln
        req = self.request()
        ILI = is_logged_in(req)
        rolestr = self.request().cookies().get('role', '')
        IS_RES = rolestr == RESDSTR
        IS_DIP = rolestr == DIPLSTR
        qs = req.fields()
        g = qs.get('g')
        ISA = is_site_admin(self.request())

        ERROR = None

        if ISA:
            pass
        else:
            if g == 'd':
                if ILI:
                    if IS_DIP:
                        pass
                    else:
                        ERROR = 'You are not a Diplomate.'
                else:
                    ERROR = 'You are not logged in.'

            elif g == 'r':
                if ILI:
                    if (IS_DIP or IS_RES):
                        pass
                    else:
                        ERROR = 'You are neither a Candidate nor a Diplomate.' # this should never happen
                else:
                    ERROR = 'You are not logged in.'

        if ERROR:
            wr('<h1 class="error">Sorry.</h1>')
            wr('<P>You cannot access this section of the ACVAA website for the following reason:</P>')
            wr('<P>%s</P>' % ERROR)

        else:
            ex1 = self.getCookieExpiry('maxAge', y=10)
            ex2 = self.getCookieExpiry('Expires', y=10)
            self.setCookie('g', g, ex1, ex2)
            from_url = qs.get('from_url', '/')
            self.response().sendRedirect(from_url)
Beispiel #11
0
    def writeContent(self):
        if is_site_admin(self.request()):
            if self.request()._environ.get('REQUEST_METHOD') == 'POST':
                ERROR = None
                form = self.request().fields()
                fobj = form.get('datafile')
                try:
                    filename = fobj.filename
                except:
                    ERROR = 'You must select a file to upload.'
            if ERROR:
                self.render_form_error('Upload Error', ERROR)
            else:
                save_document(form)
                self.response().sendRedirect(form.get('redir'))

        else:
            wr('<p>You are not authorized to do that.</p>')
Beispiel #12
0
    def writeContent(self):
        wr = self.writeln
        qs = self.request().fields()
        id = qs.get('id', {})
        fr = qs.get('fr', '')
        username = self.request().cookies().get('username')
        IS_SITE_ADMIN = is_site_admin(self.request())

        if self.request()._environ.get('REQUEST_METHOD') == 'POST':
            delete_event(username, id)
            if fr:
                if fr == 'cal':
                    self.response().sendRedirect('Calendar')
                if fr == 'mgt':
                    self.response().sendRedirect('Events')
            else:
                self.response().sendRedirect('Calendar')

        else:
            if id:
                ei = get_event_info(id)
                event_owner = ei.get('username')
                if (username == event_owner) or IS_SITE_ADMIN:
                    wr('<h1>%s</h1>' % (self.title()))
                    wr('<h2>%s</h2>' % (ei.get('title')))
                    wr('<P>')
                    wr('<b>%s</b><br />' % (ei.get('display_date')))
                    wr('%s<br />' % (ei.get('description')))
                    wr('</P>')
                    wr('<P>Are you sure you want to delete this event?</P>')
                    wr('<form method="POST" action="Event_Delete">')
                    wr(hidden('id', id))
                    wr(hidden('fr', fr))
                    wr(hidden('username', username))
                    wr(submit('Yes, delete the event.'))
                    wr('<input type="button" value="Do nothing." onClick="javascript:history.go(-1)">'
                       )
                    wr('</form>')
                else:
                    wr('<h1>You are not the owner of this event.</h1>')

            else:
                wr('No event id.')
Beispiel #13
0
    def writeContent(self):
        wr = self.writeln
        qs = self.request().fields()
        id = qs.get('id', {})
        fr = qs.get('fr', '')
        username = self.request().cookies().get('username')
        IS_SITE_ADMIN = is_site_admin(self.request())

        if self.request()._environ.get('REQUEST_METHOD') == 'POST':
            delete_event(username, id)
            if fr:
                if fr == 'cal':
                    self.response().sendRedirect('Calendar')
                if fr == 'mgt':
                    self.response().sendRedirect('Events')
            else:
                self.response().sendRedirect('Calendar')

        else:
            if id:
                ei = get_event_info(id)
                event_owner = ei.get('username')
                if (username == event_owner) or IS_SITE_ADMIN:
                    wr('<h1>%s</h1>' % (self.title()))
                    wr('<h2>%s</h2>' % (ei.get('title')))
                    wr('<P>')
                    wr('<b>%s</b><br />' % (ei.get('display_date')))
                    wr('%s<br />' % (ei.get('description')))
                    wr('</P>')
                    wr('<P>Are you sure you want to delete this event?</P>')
                    wr('<form method="POST" action="Event_Delete">')
                    wr(hidden('id', id))
                    wr(hidden('fr', fr))
                    wr(hidden('username', username))
                    wr(submit('Yes, delete the event.'))
                    wr('<input type="button" value="Do nothing." onClick="javascript:history.go(-1)">')
                    wr('</form>')
                else:
                    wr('<h1>You are not the owner of this event.</h1>')

            else:
                wr('No event id.')
Beispiel #14
0
    def writeContent(self):
        wr = self.writeln
        qs = self.request().fields()
        year = qs.get('yr')

        IS_SITE_ADMIN = is_site_admin(self.request())
        if IS_SITE_ADMIN:
            wr('<div class="button">')
            wr('<a href="News_Form">+ Add News Item</a>')
            wr('</div>')

        wr('<h1>%s</h1>' % (self.title()))

        archyrs = get_archive_years()
        wr('<div class="sb"><div class="st">')
        wr('<div class="t12b">News Archives</div>')
        ny = now_year()
        if year and (year != ny):
            wr('<P><a href="News">Current News (%s)</a></P>' % (ny))
        for ay in archyrs:
            fw = "normal"
            if year == ay:
                fw = "bold"
            wr('<P style="font-weight: %s;"><a href="?yr=%s">%s</a></P>' % (fw, ay, ay))
        wr('</div></div>')

        newsitems = get_news_by_year(year)
        if newsitems:
            for nd in newsitems:
                wr('<h2>%s</h2>' % (nd.get('headline')))
                wr('<small>Added %s</small>' % (nd.get('added')))
                if IS_SITE_ADMIN:
                    wr('<a href="News_Form?id=%s" style="margin-left: 10px;"><img src="/g/edit.png" alt="edit" width="17" height="17" border="0" /></a>' % (nd.get('id')))
                    wr('<a href="News_Delete?id=%s"><img src="/g/delete.png" alt="delete" width="17" height="17" border="0" /></a>' % (nd.get('id')))
                wr('<p>%s</p>' % (nd.get('description')))
        else:
            wr('<h3>Sorry, there aren\'t any news items for this year yet.</h3>')
            wr('<p>Please feel free to browse the archives.</p>')
    def writeBodyParts(self):
        ILI = is_logged_in(self.request())
        ISA = is_site_admin(self.request())
        wr = self.writeln
        self.writeHeader()
        self.writeSubHeader()
        wr('''
<div class="container" id="body-container">
  <div class="row">
    <!-- LEFT MENU COLUMN ###################################################### -->
    <div class="col-md-3" id="mobile-side-menu">
      <div id="show-mobile-menu" class="btn btn-orange btn-sm">
        Show Menu
      </div>
    </div>
    <div class="col-md-3" id="side-menu">
            ''')
        self.writeNav()
        wr('''
    </div><!-- .col-md-3 #side-menu -->
    <!-- RIGHT CONTENT COLUMN ###################################################### -->
    <div class="col-md-9" id="main-content">
            ''')


        if ILI or ISA:
            self.writeContent()
        else:
            self.writeln('<h1>You must be logged in to access this page.</h1>')


        wr('''
    </div><!-- .col-md-9 -->
  </div><!-- .row -->
</div><!-- #body-container -->
            ''')
        self.writeFooter()
Beispiel #16
0
    def writeContent(self):
        wr = self.writeln

        IS_SITE_ADMIN = is_site_admin(self.request())
        if IS_SITE_ADMIN:
            wr('<div class="button">')
            wr('<a href="Action_Form">+ Add Action Item</a>')
            wr('</div>')

        wr('<h1>%s</h1>' % (self.title()))

        newsitems = get_action_items()

        if newsitems:
            for nd in newsitems:
                ndid = nd.get('id')
                wr('<h2>%s</h2>' % (nd.get('headline')))
                wr('<small>Added %s</small>' % (nd.get('added')))
                if IS_SITE_ADMIN:
                    wr('<a href="../Action_Form?id=%s" style="margin-left: 10px;"><img src="/g/edit.png" alt="edit" width="17" height="17" border="0" /></a>' % (nd.get('id')))
                    wr('<a href="../Action_Delete?id=%s"><img src="/g/delete.png" alt="delete" width="17" height="17" border="0" /></a>' % (nd.get('id')))
                wr('<p>%s</p>' % (nd.get('description')))
        else:
            wr('<h3>Sorry, there aren\'t any action items right now.</h3>')
    def writeBodyParts(self):
        ILI = is_logged_in(self.request())
        ISA = is_site_admin(self.request())
        wr = self.writeln
        self.writeHeader()
        self.writeSubHeader()
        wr(
            """
<div class="container" id="body-container">
  <div class="row">
    <!-- LEFT MENU COLUMN ###################################################### -->
    <div class="col-md-3" id="side-menu">
            """
        )
        self.writeNav()
        wr(
            """
    </div><!-- .col-md-3 #side-menu -->
    <!-- RIGHT CONTENT COLUMN ###################################################### -->
    <div class="col-md-9" id="main-content">
            """
        )

        if ILI or ISA:
            self.writeContent()
        else:
            self.writeln("<h1>You must be logged in to access this page.</h1>")

        wr(
            """
    </div><!-- .col-md-9 -->
  </div><!-- .row -->
</div><!-- #body-container -->
            """
        )
        self.writeFooter()
Beispiel #18
0
    def writeContent(self):
        wr = self.writeln
        IS_SITE_ADMIN = is_site_admin(self.request())

        wr('<h1>%s</h1>' % (self.title()))

        if self.request()._environ.get('REQUEST_METHOD') == 'POST':
            ERROR = None
            form = self.request().fields()
            wr(form)

            fobj = form.get('datafile')
            try:
                filename = fobj.filename
            except:
                ERROR = 'You must select a file to upload.'

            if ERROR:
                self.render_form_error('Constitution Upload Error', ERROR)
            else:
                save_constitution(form)
                self.response().sendRedirect('Constitution')

        else:

            ci = get_constitution_info()
            if ci:
#                effdate = '/'.join(ci.get('date', []))
                effdate = ci.get('date', '')
                filename = ci.get('datafile', '')
                msg = ci.get('message', '')
                fileurl = os.path.join(DOC_CONST_DIR.replace(BASEDIR, ''), filename)
                wr('<p>Here\'s where you\'ll find the latest version of the ACVAA Constitution and Bylaws. Please click the link below to download it to your computer.</p>')
                wr('<h3><a href="%s">%s</a></h3>' % (fileurl, filename))
                wr('<p style="font-weight: bold;">Effective date: %s</p>' % (effdate))
                if msg:
                    wr('<p>%s</p>' % (msg))
            else:
                wr('<p>There is no ACVAA Constitution document available at this time.</p>')

            if IS_SITE_ADMIN:
                wr('<hr>')
                wr('<h2>Upload Constitution Document</h2>')
                wr('<form name="chooseDateForm" id="chooseDateForm" action="Constitution" method="POST" enctype="multipart/form-data">')
                YR, MO, DY = getYMD()
                wr('<P>')
                wr('<b>Effective Date of Constitution</b>')
                wr('<br />')
                wr('Date: <input type="text" id="datepicker" name="date">')
#                self.render_date_picker (YR, MO, DY)
                wr('</P>')

                wr('<P>')
                wr('<b>Message</b> (optional)')
                wr('<br />')
                wr('<textarea name="message" rows="5" cols="40"></textarea>')
                wr('</P>')

                wr('<P>')
                wr('<b>Upload Document</b>')
                wr('<br />')
                wr('<input type="file" name="datafile">')
                wr('</P>')
    
                wr('<P>')
                wr('<input type="submit" value="Save &amp; Upload Constitution">')
                wr('</P>')
                wr('</form>')
Beispiel #19
0
    def writeContent(self):
        wr = self.writeln
        rolestr = self.request().cookies().get('role', '')
        username = self.request().cookies().get('username')
        IS_RES = rolestr == RESDSTR
        IS_DIP = rolestr == DIPLSTR
        SHOWN = 0
        IS_SITE_ADMIN = is_site_admin(self.request())

#        grid = get_calendar()
#        wr('<table id="cal">')
#        for d in ['Su', 'M', 'Tu', 'W', 'Th', 'F', 'Sa']:
#            wr('<th>%s</th>' % (d))
#        for week in grid:
#            wr('<tr>')
#            for thisY, thisM, thisD in week:

#        if IS_DIP or IS_RES:
        if IS_SITE_ADMIN:
            wr('<div class="button">')
            wr('<a href="Event_Form">+ Add New Event</a>')
            wr('</div>')

        wr('<h1>%s</h1>' % (self.title()))
        all = get_future_events()
        all.sort()
        for event in all:
            id = os.path.basename(event)
            ei = get_event_info(id)
            RENDER = False
            if ei.get('visibility') == 'all':
                RENDER = True
            else: # restricted
                if IS_RES or IS_DIP:
                    RENDER = True
            if RENDER:
                SHOWN += 1
                wr('<a name="%s"></a>' % (id)) # bookmark
                wr('<div class="event_head t18b">')
#                if username == ei.get('username') or IS_SITE_ADMIN:
                if IS_SITE_ADMIN:
                    wr('<div class="flt_r">')
                    wr('<a href="Event_Form?id=%s"><img src="/g/edit.png" alt="edit" width="17" height="17" border="0" /></a>' % (id))
                    wr('<a href="Event_Delete?id=%s&fr=cal"><img src="/g/delete.png" alt="delete" width="17" height="17" border="0" /></a>' % (id))
                    wr('</div>')
                wr(ei.get('title'))
                wr('</div>')
                wr('<table align="right"><tr><td class="event_date">')
                wr('<div class="event_dayofweek">%s</div>' % (ei.get('dayofweek')))
                wr('<div class="event_month">%s</div>' % (ei.get('month')))
                wr('<div class="t18b">%s</div>' % (ei.get('day')))
                wr('<div class="event_year">%s</div>' % (ei.get('year')))
                wr('</table>')
    
                wr('<P class="t12">')
                wr(ei.get('display_date'))
                wr('</P>')
                wr('<P class="t12">')
                wr(ei.get('description').replace('\r\n', '<br />'))
                wr('</P>')
                if ei.get('link_url'):
                    wr('<P class="t12">')
                    if ei.get('link_text'):
                        wr('<a href="%s">%s</a>' % (ei.get('link_url'), ei.get('link_text')))
                    else:
                        wr('<a href="%s">%s</a>' % (ei.get('link_url'), ei.get('link_url')))
                    wr('</P>')
                if ei.get('local_doc_link'):
                    wr('<P class="t12">See document: ')
                    if ei.get('local_doc_text'):
                        wr('<a href="%s">%s</a>' % (ei.get('local_doc_link'), ei.get('local_doc_text')))
                    else:
                        wr('<a href="%s">%s</a>' % (ei.get('local_doc_link'), ei.get('local_doc_link')))
                    wr('</P>')

                wr('<br clear="all" />')
        if not SHOWN:
            wr('<h2 style="margin: 30px 0px 130px 0px;">There are no future events scheduled at this time.</h2>')
Beispiel #20
0
    def writeContent(self):
        wr = self.writeln
        rolestr = self.request().cookies().get('role', '')
        username = self.request().cookies().get('username')
        IS_RES = rolestr == RESDSTR
        IS_DIP = rolestr == DIPLSTR
        SHOWN = 0
        IS_SITE_ADMIN = is_site_admin(self.request())

        #        grid = get_calendar()
        #        wr('<table id="cal">')
        #        for d in ['Su', 'M', 'Tu', 'W', 'Th', 'F', 'Sa']:
        #            wr('<th>%s</th>' % (d))
        #        for week in grid:
        #            wr('<tr>')
        #            for thisY, thisM, thisD in week:

        #        if IS_DIP or IS_RES:
        if IS_SITE_ADMIN:
            wr('<div class="button">')
            wr('<a href="Event_Form">+ Add New Event</a>')
            wr('</div>')

        wr('<h1>%s</h1>' % (self.title()))
        all = get_future_events()
        all.sort()
        for event in all:
            id = os.path.basename(event)
            ei = get_event_info(id)
            RENDER = False
            if ei.get('visibility') == 'all':
                RENDER = True
            else:  # restricted
                if IS_RES or IS_DIP:
                    RENDER = True
            if RENDER:
                SHOWN += 1
                wr('<a name="%s"></a>' % (id))  # bookmark
                wr('<div class="event_head t18b">')
                #                if username == ei.get('username') or IS_SITE_ADMIN:
                if IS_SITE_ADMIN:
                    wr('<div class="flt_r">')
                    wr('<a href="Event_Form?id=%s"><img src="/g/edit.png" alt="edit" width="17" height="17" border="0" /></a>'
                       % (id))
                    wr('<a href="Event_Delete?id=%s&fr=cal"><img src="/g/delete.png" alt="delete" width="17" height="17" border="0" /></a>'
                       % (id))
                    wr('</div>')
                wr(ei.get('title'))
                wr('</div>')
                wr('<table align="right"><tr><td class="event_date">')
                wr('<div class="event_dayofweek">%s</div>' %
                   (ei.get('dayofweek')))
                wr('<div class="event_month">%s</div>' % (ei.get('month')))
                wr('<div class="t18b">%s</div>' % (ei.get('day')))
                wr('<div class="event_year">%s</div>' % (ei.get('year')))
                wr('</table>')

                wr('<P class="t12">')
                wr(ei.get('display_date'))
                wr('</P>')
                wr('<P class="t12">')
                wr(ei.get('description').replace('\r\n', '<br />'))
                wr('</P>')
                if ei.get('link_url'):
                    wr('<P class="t12">')
                    if ei.get('link_text'):
                        wr('<a href="%s">%s</a>' %
                           (ei.get('link_url'), ei.get('link_text')))
                    else:
                        wr('<a href="%s">%s</a>' %
                           (ei.get('link_url'), ei.get('link_url')))
                    wr('</P>')
                if ei.get('local_doc_link'):
                    wr('<P class="t12">See document: ')
                    if ei.get('local_doc_text'):
                        wr('<a href="%s">%s</a>' % (ei.get('local_doc_link'),
                                                    ei.get('local_doc_text')))
                    else:
                        wr('<a href="%s">%s</a>' % (ei.get('local_doc_link'),
                                                    ei.get('local_doc_link')))
                    wr('</P>')

                wr('<br clear="all" />')
        if not SHOWN:
            wr('<h2 style="margin: 30px 0px 130px 0px;">There are no future events scheduled at this time.</h2>'
               )
Beispiel #21
0
    def writeContent(self):
        wr = self.writeln
        qs = self.request().fields()

        # Admins can change others.
        ISA = is_site_admin(self.request())
        asuserid = qs.get('asuserid')

        rolestr = self.request().cookies().get('role', '')
        IS_DIP = rolestr == DIPLSTR

        wr('<h1><em>%s</em> Account Information</h1>' % (un))

        if qs.get('pc'):
            self.render_special_msg('Password changed successfully.')
        if qs.get('ic'):
            self.render_special_msg('Contact info saved.')
        if qs.get('pv'):
            self.render_special_msg('Privacy settings saved.')
        if qs.get('fh'):
            self.render_special_msg('Consultancy setting saved.')

        p = get_user_acct(un)
        if ISA and asuserid:
            p = get_user_acct(asuserid)

        wr('<div id="acct-container" class="acct-tabs"> ')
        wr('<ul class="idTabs">')
        wr('<li><a class="selected" href="#tab1">Contact Info</a></li> ')
        wr('<li><a href="#tab2">Change Password</a></li> ')
        wr('<li><a href="#tab3">Privacy Settings</a></li> ')
        if IS_DIP:
            wr('<li><a href="#tab4">For Hire?</a></li> ')
        wr('</ul> ')
        ######################################################
        wr('<div id="tab1">')
        wr('<h2>Your Contact Information</h2>')
        wr('<form method="POST" action="Acct_Edit_Info">')
        wr(hidden('form_username', un))
        wr(hidden('form_hash', self.request().cookies().get('hash')))
        wr('<div><table id="contact_info">')
        wr('<tr><td><label>First</label>')
        wr('<td>%s' % (text('fn', p.get('fn', ''), 'input')))
        wr('<td class="req">required')
        wr('<tr><td><label>MI</label>')
        wr('<td>%s' % (text('mi', p.get('mi', ''), 'input', 2)))
        wr('<tr><td><label>Last</label>')
        wr('<td>%s' % (text('sn', p.get('sn', ''), 'input')))
        wr('<td class="req">required')
        wr('<tr><td><label>Degrees Held</label>')
        wr('<td>%s' % (text('degrees', p.get('degrees', ''), 'input', 6)))
        wr('<td class="hint">(e.g., Ph.D., MBA, MS, etc.)')
        wr('<tr><td><label>Country</label>')
        wr('<td>%s' % (text('country', p.get('country', ''), 'input')))
        wr('<td class="req">required')
        wr('<tr><td><label>Addr 1</label>')
        wr('<td>%s' % (text('addr1', p.get('addr1', ''), 'input')))
        wr('<tr><td><label>Addr 2</label>')
        wr('<td>%s' % (text('addr2', p.get('addr2', ''), 'input')))
        wr('<tr><td><label>City</label>')
        wr('<td>%s' % (text('city', p.get('city', ''), 'input')))
        wr('<td class="req">required')
        wr('<tr><td><label>State/Prov.</label>')
        wr('<td>%s' % (text('state', p.get('state', ''), 'input')))
        wr('<td class="req">required')
        wr('<tr><td><label>ZIP/Postal Code</label>')
        wr('<td>%s' % (text('zip', p.get('zip', ''), 'input', 6)))
        wr('<tr><td><label>Email</label>')
        wr(hidden('original_email', p.get('email', '')))
        wr('<td>%s' % (text('email', p.get('email', ''), 'input')))
        wr('<td class="req">required')
        wr('<tr><td><label>Phone</label>')
        wr('<td>%s' % (text('phone', p.get('phone', ''), 'input')))
        wr('<tr><td><label>Fax</label>')
        wr('<td>%s' % (text('fax', p.get('fax', ''), 'input')))
        wr('<tr><td colspan="3">')
        wr(submit('Save Contact Info'))
        wr('</table></div>')
        wr('</form>')
        wr('</div><!-- tab1 -->')
        ######################################################
        wr('<div id="tab2">')
        wr('<h2>Change Your Password</h2>')
        wr('<div>If you wish to keep your current password, you shouldn\'t do anything here.</div>'
           )
        wr('<form method="POST" action="Acct_Change_Pass">')
        wr(hidden('form_username', un))
        wr(hidden('form_hash', self.request().cookies().get('hash')))
        wr('<div>Enter your new password twice:</div>')
        wr('<div>%s</div>' % (passwd('pw1', '', 'input', 24)))
        wr('<div>%s</div>' % (passwd('pw2', '', 'input', 24)))
        wr('<div>%s</div>' % (submit('Change Password')))
        wr('</form>')
        wr('</div><!-- tab2 -->')
        ######################################################
        # radio_jq (name, value='', clss='', id='', checked=False)
        wr('<div id="tab3">')
        wr('<h2>Your Privacy Settings</h2>')
        wr('<div>Your current privacy settings are shown below. Change them as you see fit.</div>'
           )
        wr('<form method="POST" action="Acct_Change_Privacy">')
        wr(hidden('form_username', un))
        wr(hidden('form_hash', self.request().cookies().get('hash')))
        wr('<div><table id="contact_info">')
        # ------------------------------------------------------
        wr('<fieldset>')
        wr('<legend>Please select your overall security posture:</legend>')
        wr('<tr><td>')
        wr('<label for="sec-paranoid">%s Hide all my information from everyone</label><br />' % \
            (radio_jq('sec_policy', 'paranoid', '', 'sec-paranoid', (p.get('sec_policy')=='paranoid') )))
        wr('<label for="sec-permissive">%s Display some of my information, specified below</label>' % \
            (radio_jq('sec_policy', 'permissive', '', 'sec-permissive', (p.get('sec_policy')=='permissive') )))
        wr('</fieldset>')
        # ------------------------------------------------------
        wr('<fieldset>')
        wr('<legend class="sec-legend">Who should be allowed to view your full postal address?</legend>'
           )
        wr('<tr><td class="sec-td">')
        wr('<label for="hide1">%s Nobody; show only my city &amp; state</label><br />' % \
            (radio_jq('show_address', 'hide', 'sec-sub', 'hide1', (p.get('show_address')=='hide') )))
        wr('<label for="dips1">%s ACVA Diplomates only</label><br />' % \
            (radio_jq('show_address', 'diplomates', 'sec-sub', 'dips1', (p.get('show_address')=='diplomates') )))
        wr('<label for="both1">%s ACVA Diplomates &amp; Candidates</label><br />' % \
            (radio_jq('show_address', 'both', 'sec-sub', 'both1', (p.get('show_address')=='both') )))
        wr('<label for="all1">%s Everyone, even the general public</label>' % \
            (radio_jq('show_address', 'all', 'sec-sub', 'all1', (p.get('show_address')=='all') )))
        wr('</fieldset>')
        # ------------------------------------------------------
        wr('<fieldset>')
        wr('<legend class="sec-legend">Who should be allowed to view your email address?</legend>'
           )
        wr('<tr><td class="sec-td">')
        wr('<label for="hide2">%s Nobody</label><br />' % \
            (radio_jq('show_email', 'hide', 'sec-sub', 'hide2', (p.get('show_email')=='hide') )))
        wr('<label for="dips2">%s ACVA Diplomates only</label><br />' % \
            (radio_jq('show_email', 'diplomates', 'sec-sub', 'dips2', (p.get('show_email')=='diplomates') )))
        wr('<label for="both2">%s ACVA Diplomates &amp; Candidates</label><br />' % \
            (radio_jq('show_email', 'both', 'sec-sub', 'both2', (p.get('show_email')=='both') )))
        wr('<label for="all2">%s Everyone, even the general public</label>' % \
            (radio_jq('show_email', 'all', 'sec-sub', 'all2', (p.get('show_email')=='all') )))
        wr('</fieldset>')
        # ------------------------------------------------------
        wr('<fieldset>')
        wr('<legend class="sec-legend">Who should be allowed to view your phone &amp; fax numbers?</legend>'
           )
        wr('<tr><td class="sec-td">')
        wr('<label for="hide3">%s Nobody</label><br />' % \
            (radio_jq('show_numbers', 'hide', 'sec-sub', 'hide3', (p.get('show_numbers')=='hide') )))
        wr('<label for="dips3">%s ACVA Diplomates only</label><br />' % \
            (radio_jq('show_numbers', 'diplomates', 'sec-sub', 'dips3', (p.get('show_numbers')=='diplomates') )))
        wr('<label for="both3">%s ACVA Diplomates &amp; Candidates</label><br />' % \
            (radio_jq('show_numbers', 'both', 'sec-sub', 'both3', (p.get('show_numbers')=='both') )))
        wr('<label for="all3">%s Everyone, even the general public</label>' % \
            (radio_jq('show_numbers', 'all', 'sec-sub', 'all3', (p.get('show_numbers')=='all') )))
        wr('</fieldset>')
        # ------------------------------------------------------
        wr('<tr><td>%s' % (submit('Save Privacy Settings')))
        wr('</table></div>')
        wr('</form>')
        wr('</div><!-- tab3 -->')
        ######################################################
        if IS_DIP:
            wr('<div id="tab4">')
            wr('<h2>For Hire?</h2>')
            wr('<div>Control whether or not you wish to be listed in our "Consultants for Hire" section, which is intended to help other vets connect with ACVA members.</div>'
               )
            if p.get('sec_policy') == 'paranoid':
                wr('<div>Unfortunately, you have selected to hide all your information. You must <em>adjust your privacy settings</em> to allow some information about you be available to the public before you can be included in the "Consultants for Hire" list.</div>'
                   )
            else:
                wr('<form method="POST" action="Acct_Change_Hire">')
                wr(hidden('form_username', un))
                wr(hidden('form_hash', self.request().cookies().get('hash')))
                wr('<div>')
                wr('<fieldset>')
                wr('<legend class="sec-legend">Do you wish to be listed as a Consultant for Hire?</legend>'
                   )
                wr('')
                wr('<label for="for-hire-yes">%s Yes, that would be fantastic.</label><br />' % \
                    (radio_jq('show_for_hire', 'yes', 'sec-sub', 'for-hire-yes', (p.get('show_for_hire')=='yes') )))
                wr('<label for="for-hire-no">%s No.</label><br />' % \
                    (radio_jq('show_for_hire', 'no', 'sec-sub', 'for-hire-no', (p.get('show_for_hire')!='yes') )))
                wr('</fieldset>')
                wr('<div id="for-hire-extra-info">')

                wr('<div>')
                wr('<b>What geographic area(s) do you serve?</b><br />')
                wr('<textarea name="for_hire_areas" class="input" cols="60" rows="3">%s</textarea>'
                   % (p.get('for_hire_areas', '')))
                wr('</div>')

                wr('<div>')
                wr('<b>What services do you provide?</b><br />')
                wr('<textarea name="for_hire_services" class="input" cols="60" rows="3">%s</textarea>'
                   % (p.get('for_hire_services', '')))
                wr('</div>')

                wr('<div>')
                wr('<b>If you have a website, provide it here:</b><br />')
                wr(
                    text('for_hire_url',
                         value=p.get('for_hire_url', ''),
                         clss='input'))
                wr('</div>')

                wr('</div>')
                wr('%s' % (submit('Save Consultancy Status')))
                wr('</div>')
                wr('</form>')

            wr('</div><!-- tab4 -->')
        ######################################################
        wr('</div><!-- acct-container -->')
Beispiel #22
0
    def writeContent(self):
        wr = self.writeln
        qs = self.request().fields()
        category = qs.get('cat')
        show_archives = qs.get('archive')

        if category:
            ISA = is_site_admin(self.request())
            rolestr = self.request().cookies().get('role', '')
            IS_DIP = rolestr == DIPLSTR
            document_type = 'document'

            # THIS IS A HACK - SHOULD BE CLEANED UP
            if category == 'candidates':
                category = 'residents'
            page_title = '%s for %s' % (self.title(), category.capitalize())
            wr('<h1>%s</h1>' % (page_title))
            # RESET THE STUPID HACK
            if category == 'residents':
                category = 'candidates'

            if not show_archives:
                wr('''
<div class="sb"><div class="st">
<a href="Documents?cat=%s&archive=true">Archived Documents</a>
</div></div>
                ''' % (category))

            if ISA:
                if not show_archives:
                    thispath = self.request().environ().get('REQUEST_URI')
                    wr('<h2>Add a Document</h2>')
                    wr('<form method="POST" action="File_Uploader" enctype="multipart/form-data">')
                    wr('<table>')
                    wr('<input type="hidden" name="filetype" value="document">')
                    wr('<input type="hidden" name="redir" value="%s">' % (thispath))
                    wr('<input type="hidden" name="category" value="%s">' % (category))
                    wr('<tr><td>Title:<td><input type="text" name="title" value=""><br />')
                    wr('<tr><td>File:<td><input type="file" name="datafile"><br />')
                    wr('<tr><td><td><input type="submit" value="Upload">')
                    wr('</table>')
                    wr('</form>')

            VIEW_OK = False
            if category == 'candidates':
                VIEW_OK = True
            if category == 'diplomates':
                if IS_DIP:
                    VIEW_OK = True

            if VIEW_OK:
                if not show_archives:
                    if category == 'diplomates':
                        wr('<h3><a href="/Constitution">ACVAA Constitution &amp; Bylaws</a></h3>')

                subdir, dd = get_doc_dict(dtype=document_type, dcat=category)
                archive_list = get_archive_list(document_type, category)
                ddr = {}

                for k in dd.keys():
                    if show_archives: # include only archived file names
                        if k in archive_list:
                            v = dd[k]
                            ddr[v] = k
                    else: # include only non-archived file names
                        if k not in archive_list:
                            v = dd[k]
                            ddr[v] = k
                ks = ddr.keys()
                ks = sorted(ks, key=lambda x: (x.isdigit() and float(x)) or x.lower())
                for k in ks:
                    v = ddr.get(k)
                    wr('<p><h3><a href="/docs/%s/%s">%s</a></h3>Filename: %s' % (subdir, v, k, v))
                    uri1 = 'File_Deleter?doctype=%s&category=%s&filename=%s' % (document_type, category, v)
                    uri2 = 'File_Archiver?doctype=%s&category=%s&filename=%s' % (document_type, category, v)
                    uri3 = 'File_Archiver?doctype=%s&category=%s&filename=%s&restore=true' % (document_type, category, v)
                    if ISA:
                        if show_archives:
                            wr('<span style="margin-left: 10px;"><a href="%s" title="Restore"><i class="fa fa-check-circle fa-fw"></i></a>' % (uri3))
                        else:
                            wr('<span style="margin-left: 10px;"><a href="%s" title="Archive"><i class="fa fa-archive fa-fw"></i></a>' % (uri2))
                        wr('<a href="%s" title="Delete"><i class="fa fa-trash fa-fw"></i></a></span>' % (uri1))
                    if os.path.splitext(v)[-1] in (".doc", ".docx"):
                        wr('<br /><img src="/g/word_icon.png"> Microsoft Word')
                    if os.path.splitext(v)[-1] in (".xls", ".xlsx"):
                        wr('<br /><img src="/g/excel_icon.png"> Microsoft Excel')
                    if os.path.splitext(v)[-1] in (".pdf"):
                        wr('<br /><img src="/g/pdf_icon.png"> Adobe PDF')
                    wr('</p>')
            else:
                wr('You are not logged in as a diplomate.')
        else:
            wr('<p>No category.</p>')
Beispiel #23
0
    def writeContent(self):
        wr = self.writeln
        IS_SITE_ADMIN = is_site_admin(self.request())

        wr('<h1>%s</h1>' % (self.title()))

        if self.request()._environ.get('REQUEST_METHOD') == 'POST':
            ERROR = None
            form = self.request().fields()
            wr(form)

            fobj = form.get('datafile')
            try:
                filename = fobj.filename
            except:
                ERROR = 'You must select a file to upload.'

            if ERROR:
                self.render_form_error('Constitution Upload Error', ERROR)
            else:
                save_constitution(form)
                self.response().sendRedirect('Constitution')

        else:

            ci = get_constitution_info()
            if ci:
                effdate = '/'.join(ci.get('date', []))
                filename = ci.get('datafile', '')
                msg = ci.get('message', '')
                fileurl = os.path.join(DOC_CONST_DIR.replace(BASEDIR, ''), filename)
                wr('<p>Here\'s where you\'ll find the latest version of the ACVAA Constitution and Bylaws. Please click the link below to download it to your computer.</p>')
                wr('<h3><a href="%s">%s</a></h3>' % (fileurl, filename))
                wr('<p style="font-weight: bold;">Effective date: %s</p>' % (effdate))
                if msg:
                    wr('<p>%s</p>' % (msg))
            else:
                wr('<p>There is no ACVAA Constitution document available at this time.</p>')

            if IS_SITE_ADMIN:
                wr('<hr>')
                wr('<h2>Upload Constitution Document</h2>')
                wr('<form name="chooseDateForm" id="chooseDateForm" action="Constitution" method="POST" enctype="multipart/form-data">')
                YR, MO, DY = getYMD()
                wr('<P>')
                wr('<b>Effective Date of Constitution</b>')
                wr('<br />')
                wr('Date: <input type="text" id="datepicker" name="date">')
#                self.render_date_picker (YR, MO, DY)
                wr('</P>')

                wr('<P>')
                wr('<b>Message</b> (optional)')
                wr('<br />')
                wr('<textarea name="message" rows="5" cols="40"></textarea>')
                wr('</P>')

                wr('<P>')
                wr('<b>Upload Document</b>')
                wr('<br />')
                wr('<input type="file" name="datafile">')
                wr('</P>')
    
                wr('<P>')
                wr('<input type="submit" value="Save &amp; Upload Constitution">')
                wr('</P>')
                wr('</form>')
Beispiel #24
0
    def writeContent(self):
        wr = self.writeln
        qs = self.request().fields()
        id = qs.get('id')
        username = self.request().cookies().get('username')
        IS_SITE_ADMIN = is_site_admin(self.request())

        if self.request()._environ.get('REQUEST_METHOD') == 'POST':
            form = qs
            ERROR, ERROR_TYPE = ck_new_event(form)
            if ERROR:
                self.render_form_error(ERROR_TYPE, ERROR)
            else:
                if form.has_key('orig_id'):
                    delete_event(form.get('username'), form.get('orig_id'))
                new_id = save_event(form)
                self.response().sendRedirect('Calendar#%s' % (new_id))
        else:
            ei, event_owner = {}, None
            SHOWFORM = False
            if id: # Event edit
                ei = get_event_info(id)
                event_owner = ei.get('username')
                if (username == event_owner) or IS_SITE_ADMIN:
                    SHOWFORM = True
            else: # Event add
                SHOWFORM = True

            if SHOWFORM:
                wr('<h1>%s</h1>' % (self.title()))
                wr('<form name="chooseDateForm" id="chooseDateForm" action="Event_Form" method="POST">')
                if id:
                    wr(hidden('orig_id', id))
                    wr(hidden('username', event_owner)) # preserve ownership on edit
                else:
                    wr(hidden('username', username)) # assign ownership on add

                wr('<P>')
                wr('<b>Event Title</b>')
                wr('<br />')
                wr(text('title', value=ei.get('title', ''), clss='input'))
                wr('</P>')
    
                # 'date': ['12', '30', '2009']
                eim, eid, eiy = int(ei.get('date', [0,0,0])[0]), int(ei.get('date', [0,0,0])[1]), int(ei.get('date', [0,0,0])[2])
                wr('<P>')
                wr('<b>Event Date</b>')
                wr('<br />')
                self.render_date_picker(eiy, eim, eid)
                wr('</P>')
    
                wr('<P>')
                wr('<b>Who can see this event on the calendar?</b>')
                wr('<br />')
                self.write('<input type="radio" name="visibility" value="all" id="vizall"')
                if (ei.get('visibility') == 'all') or (not id):
                    self.write(' CHECKED ')
                wr('/> <label for="vizall">Everyone</label>')
                wr('<br />')
                self.write('<input type="radio" name="visibility" value="restricted" id="vizres"')
                if ei.get('visibility') == 'restricted':
                    self.write(' CHECKED ')
                wr('/> <label for="vizres">Diplomates &amp; Candidates Only</label>')
                wr('</P>')
    
                wr('<P>')
                wr('<b>Would you like to provide a link to another website?</b>')
                wr('<br />')
                wr('<b>Text to be Linked</b> (e.g., "Visit the association website for more info.")')
                wr('<br />')
                wr(text('link_text', value=ei.get('link_text', ''), clss='input'))
                wr('<br />')
                wr('<b>Link Address</b> (e.g., http://www.example.com/)')
                wr('<br />')
                wr(text('link_url', value=ei.get('link_url', ''), clss='input'))
                wr('</P>')
    
                wr('<P>')
                wr('<b>Description</b>')
                wr('<br />')
                wr('<textarea name="description" class="input" rows="8" cols="48" >%s</textarea>' % (ei.get('description', '')))
                wr('</P>')
    
                wr(submit('Save & Publish Event'))
    
                wr('</form>')

            else: # edit but not owner
                wr('<h1>You are not the owner of this event.</h1>')
Beispiel #25
0
    def writeContent(self):
        wr = self.writeln
        qs = self.request().fields()
        id = qs.get('id')
        username = self.request().cookies().get('username')
        IS_SITE_ADMIN = is_site_admin(self.request())

        if self.request()._environ.get('REQUEST_METHOD') == 'POST':
            form = qs
            ERROR, ERROR_TYPE = ck_new_event(form)
            if ERROR:
                self.render_form_error(ERROR_TYPE, ERROR)
            else:
                if form.has_key('orig_id'):
                    delete_event(form.get('username'), form.get('orig_id'))
                new_id = save_event(form)
                self.response().sendRedirect('Calendar#%s' % (new_id))
        else:
            ei, event_owner = {}, None
            SHOWFORM = False
            if id:  # Event edit
                ei = get_event_info(id)
                event_owner = ei.get('username')
                if (username == event_owner) or IS_SITE_ADMIN:
                    SHOWFORM = True
            else:  # Event add
                SHOWFORM = True

            if SHOWFORM:
                wr('<h1>%s</h1>' % (self.title()))
                wr('<form name="chooseDateForm" id="chooseDateForm" action="Event_Form" method="POST">'
                   )
                if id:
                    wr(hidden('orig_id', id))
                    wr(hidden('username',
                              event_owner))  # preserve ownership on edit
                else:
                    wr(hidden('username', username))  # assign ownership on add

                wr('<P>')
                wr('<b>Event Title</b>')
                wr('<br />')
                wr(text('title', value=ei.get('title', ''), clss='input'))
                wr('</P>')

                # 'date': ['12', '30', '2009']
                eim, eid, eiy = int(ei.get('date', [0, 0, 0])[0]), int(
                    ei.get('date',
                           [0, 0, 0])[1]), int(ei.get('date', [0, 0, 0])[2])
                wr('<P>')
                wr('<b>Event Date</b>')
                wr('<br />')
                self.render_date_picker(eiy, eim, eid)
                wr('</P>')

                wr('<P>')
                wr('<b>Who can see this event on the calendar?</b>')
                wr('<br />')
                self.write(
                    '<input type="radio" name="visibility" value="all" id="vizall"'
                )
                if (ei.get('visibility') == 'all') or (not id):
                    self.write(' CHECKED ')
                wr('/> <label for="vizall">Everyone</label>')
                wr('<br />')
                self.write(
                    '<input type="radio" name="visibility" value="restricted" id="vizres"'
                )
                if ei.get('visibility') == 'restricted':
                    self.write(' CHECKED ')
                wr('/> <label for="vizres">Diplomates &amp; Candidates Only</label>'
                   )
                wr('</P>')

                wr('<P>')
                wr('<b>Would you like to provide a link to another website?</b>'
                   )
                wr('<br />')
                wr('<b>Text to be Linked</b> (e.g., "Visit the association website for more info.")'
                   )
                wr('<br />')
                wr(
                    text('link_text',
                         value=ei.get('link_text', ''),
                         clss='input'))
                wr('<br />')
                wr('<b>Link Address</b> (e.g., http://www.example.com/)')
                wr('<br />')
                wr(text('link_url', value=ei.get('link_url', ''),
                        clss='input'))
                wr('</P>')

                wr('<P>')
                wr('<b>Description</b>')
                wr('<br />')
                wr('<textarea name="description" class="input" rows="8" cols="48" >%s</textarea>'
                   % (ei.get('description', '')))
                wr('</P>')

                wr(submit('Save & Publish Event'))

                wr('</form>')

            else:  # edit but not owner
                wr('<h1>You are not the owner of this event.</h1>')
Beispiel #26
0
    def writeContent(self):
        wr = self.writeln
        ISA = is_site_admin(self.request())
        ILI = is_logged_in(self.request())
        qs = self.request().fields()
        role = qs.get('role')
        archived = qs.get('archived', None)
        display_results = False
        docslist = []
        titlerole = 'Everyone'
        role_to_check = []

        if role: # Explicit
            if role not in RESTRICTED_ROLES:
                titlerole = role
                docslist = get_docs_by_access(role, archived)
                display_results = True
                role_to_check = role

        else: # Role-based
            if ILI:
                username = self.request().cookies().get('username')
                useracct = get_user_acct(username)
                userroles = useracct.get('roles')
                modroles = modify_user_roles(userroles)
                role_to_check = modroles
                titlerole = ' & '.join(listify_a_thing(modroles))
                docslist = get_docs_by_access(modroles, archived)
                display_results = True

        if ISA:
            wr('<p><a href="DM_Index" class="btn btn-default">Document Management</a></p>')

        # Show archives sidebar?
        archives_exist = do_archived_docs_exist(role_to_check)
        if archives_exist:
            if archived:
                arch_url = 'DM_View?'
                arch_text = 'Active Documents'
            else:
                arch_url = 'DM_View?archived=True'
                arch_text = 'Archived Documents'
            if role:
                arch_url += '&role=%s' % (role)
            wr('<div class="sb"><div class="st"><a href="%s">%s</a></div></div>' % (arch_url, arch_text))

        # Display the documents' info
        if display_results:
            desc_dict = get_descriptions()
            if docslist:
                wr('<h1>')
                if archived:
                    wr('Archived')
                wr('Documents for %s</h1>' % (titlerole))
                wr('<div style="font-size: 10pt;">Click the <i class="fa fa-caret-down"></i> or <i class="fa fa-caret-right"></i> to show/hide sections.</div>')

                all_cats_sorted = get_all_possible_categories()
                docs_by_cat = group_docs_by_category(docslist)

                for MCAT in all_cats_sorted:
                    if MCAT in docs_by_cat:
                        wr('<h2 style="color: #324150; border-top: 1px dotted #324150;">%s' % (MCAT))
                        wr('<i class="fa fa-caret-down doc_hider" id="%s"></i>' % (MCAT))
                        wr('</h2>')
                        wr('<div id="%s_content">' % (MCAT))
                        local_doc_list = docs_by_cat.get(MCAT, [])
                        for doctitle, docfile in local_doc_list:
                            wr('<h3><a href="/DocRepo/%s">%s</a></h3>' % (docfile, doctitle))
                            wr('<p style="margin-top: 0px;">')
                            if desc_dict.get(docfile):
                                wr('<span style="font-style: italic; color: #999999;">%s</span><br>' % (desc_dict.get(docfile)))
                            wr('Filename: %s</p>' % (docfile))
                        wr('</div>')

            else:
                wr('<h3>Sorry, there are no documents to display.</h3>')
        else:
            wr('<h3>Sorry, there are no documents to display.</h3>')
Beispiel #27
0
    def writeContent(self):
        wr = self.writeln
        qs = self.request().fields()

        # Admins can change others.
        ISA = is_site_admin(self.request())
        asuserid = qs.get('asuserid')

        rolestr = self.request().cookies().get('role', '')
        IS_DIP = rolestr == DIPLSTR

        wr('<h1><em>%s</em> Account Information</h1>' % (un))

        if qs.get('pc'):
            self.render_special_msg('Password changed successfully.')
        if qs.get('ic'):
            self.render_special_msg('Contact info saved.')
        if qs.get('pv'):
            self.render_special_msg('Privacy settings saved.')
        if qs.get('fh'):
            self.render_special_msg('Consultancy setting saved.')

        p = get_user_acct(un)
        if ISA and asuserid:
            p = get_user_acct(asuserid)

        wr('<div id="acct-container" class="acct-tabs"> ')
        wr('<ul class="idTabs">')
        wr('<li><a class="selected" href="#tab1">Contact Info</a></li> ')
        wr('<li><a href="#tab2">Change Password</a></li> ')
        wr('<li><a href="#tab3">Privacy Settings</a></li> ')
        if IS_DIP:
            wr('<li><a href="#tab4">For Hire?</a></li> ')
        wr('</ul> ')
        ######################################################
        wr('<div id="tab1">')
        wr('<h2>Your Contact Information</h2>')
        wr('<form method="POST" action="Acct_Edit_Info">')
        wr(hidden('form_username', un))
        wr(hidden('form_hash', self.request().cookies().get('hash')))
        wr('<div><table id="contact_info">')
        wr('<tr><td><label>First</label>')
        wr('<td>%s' % (text('fn', p.get('fn', ''), 'input')))
        wr('<td class="req">required')
        wr('<tr><td><label>MI</label>')
        wr('<td>%s' % (text('mi', p.get('mi', ''), 'input', 2)))
        wr('<tr><td><label>Last</label>')
        wr('<td>%s' % (text('sn', p.get('sn', ''), 'input')))
        wr('<td class="req">required')
        wr('<tr><td><label>Degrees Held</label>')
        wr('<td>%s' % (text('degrees', p.get('degrees', ''), 'input', 6)))
        wr('<td class="hint">(e.g., Ph.D., MBA, MS, etc.)')
        wr('<tr><td><label>Country</label>')
        wr('<td>%s' % (text('country', p.get('country', ''), 'input')))
        wr('<td class="req">required')
        wr('<tr><td><label>Addr 1</label>')
        wr('<td>%s' % (text('addr1', p.get('addr1', ''), 'input')))
        wr('<tr><td><label>Addr 2</label>')
        wr('<td>%s' % (text('addr2', p.get('addr2', ''), 'input')))
        wr('<tr><td><label>City</label>')
        wr('<td>%s' % (text('city', p.get('city', ''), 'input')))
        wr('<td class="req">required')
        wr('<tr><td><label>State/Prov.</label>')
        wr('<td>%s' % (text('state', p.get('state', ''), 'input')))
        wr('<td class="req">required')
        wr('<tr><td><label>ZIP/Postal Code</label>')
        wr('<td>%s' % (text('zip', p.get('zip', ''), 'input', 6)))
        wr('<tr><td><label>Email</label>')
        wr(hidden('original_email', p.get('email', '')))
        wr('<td>%s' % (text('email', p.get('email', ''), 'input')))
        wr('<td class="req">required')
        wr('<tr><td><label>Phone</label>')
        wr('<td>%s' % (text('phone', p.get('phone', ''), 'input')))
        wr('<tr><td><label>Fax</label>')
        wr('<td>%s' % (text('fax', p.get('fax', ''), 'input')))
        wr('<tr><td colspan="3">')
        wr(submit('Save Contact Info'))
        wr('</table></div>')
        wr('</form>')
        wr('</div><!-- tab1 -->')
        ######################################################
        wr('<div id="tab2">')
        wr('<h2>Change Your Password</h2>')
        wr('<div>If you wish to keep your current password, you shouldn\'t do anything here.</div>')
        wr('<form method="POST" action="Acct_Change_Pass">')
        wr(hidden('form_username', un))
        wr(hidden('form_hash', self.request().cookies().get('hash')))
        wr('<div>Enter your new password twice:</div>')
        wr('<div>%s</div>' % ( passwd('pw1', '', 'input', 24) ))
        wr('<div>%s</div>' % ( passwd('pw2', '', 'input', 24) ))
        wr('<div>%s</div>' % ( submit('Change Password') ))
        wr('</form>')
        wr('</div><!-- tab2 -->')
        ######################################################
        # radio_jq (name, value='', clss='', id='', checked=False)
        wr('<div id="tab3">')
        wr('<h2>Your Privacy Settings</h2>')
        wr('<div>Your current privacy settings are shown below. Change them as you see fit.</div>')
        wr('<form method="POST" action="Acct_Change_Privacy">')
        wr(hidden('form_username', un))
        wr(hidden('form_hash', self.request().cookies().get('hash')))
        wr('<div><table id="contact_info">')
        # ------------------------------------------------------
        wr('<fieldset>')
        wr('<legend>Please select your overall security posture:</legend>')
        wr('<tr><td>')
        wr('<label for="sec-paranoid">%s Hide all my information from everyone</label><br />' % \
            (radio_jq('sec_policy', 'paranoid', '', 'sec-paranoid', (p.get('sec_policy')=='paranoid') )))
        wr('<label for="sec-permissive">%s Display some of my information, specified below</label>' % \
            (radio_jq('sec_policy', 'permissive', '', 'sec-permissive', (p.get('sec_policy')=='permissive') )))
        wr('</fieldset>')
        # ------------------------------------------------------
        wr('<fieldset>')
        wr('<legend class="sec-legend">Who should be allowed to view your full postal address?</legend>')
        wr('<tr><td class="sec-td">')
        wr('<label for="hide1">%s Nobody; show only my city &amp; state</label><br />' % \
            (radio_jq('show_address', 'hide', 'sec-sub', 'hide1', (p.get('show_address')=='hide') )))
        wr('<label for="dips1">%s ACVA Diplomates only</label><br />' % \
            (radio_jq('show_address', 'diplomates', 'sec-sub', 'dips1', (p.get('show_address')=='diplomates') )))
        wr('<label for="both1">%s ACVA Diplomates &amp; Candidates</label><br />' % \
            (radio_jq('show_address', 'both', 'sec-sub', 'both1', (p.get('show_address')=='both') )))
        wr('<label for="all1">%s Everyone, even the general public</label>' % \
            (radio_jq('show_address', 'all', 'sec-sub', 'all1', (p.get('show_address')=='all') )))
        wr('</fieldset>')
        # ------------------------------------------------------
        wr('<fieldset>')
        wr('<legend class="sec-legend">Who should be allowed to view your email address?</legend>')
        wr('<tr><td class="sec-td">')
        wr('<label for="hide2">%s Nobody</label><br />' % \
            (radio_jq('show_email', 'hide', 'sec-sub', 'hide2', (p.get('show_email')=='hide') )))
        wr('<label for="dips2">%s ACVA Diplomates only</label><br />' % \
            (radio_jq('show_email', 'diplomates', 'sec-sub', 'dips2', (p.get('show_email')=='diplomates') )))
        wr('<label for="both2">%s ACVA Diplomates &amp; Candidates</label><br />' % \
            (radio_jq('show_email', 'both', 'sec-sub', 'both2', (p.get('show_email')=='both') )))
        wr('<label for="all2">%s Everyone, even the general public</label>' % \
            (radio_jq('show_email', 'all', 'sec-sub', 'all2', (p.get('show_email')=='all') )))
        wr('</fieldset>')
        # ------------------------------------------------------
        wr('<fieldset>')
        wr('<legend class="sec-legend">Who should be allowed to view your phone &amp; fax numbers?</legend>')
        wr('<tr><td class="sec-td">')
        wr('<label for="hide3">%s Nobody</label><br />' % \
            (radio_jq('show_numbers', 'hide', 'sec-sub', 'hide3', (p.get('show_numbers')=='hide') )))
        wr('<label for="dips3">%s ACVA Diplomates only</label><br />' % \
            (radio_jq('show_numbers', 'diplomates', 'sec-sub', 'dips3', (p.get('show_numbers')=='diplomates') )))
        wr('<label for="both3">%s ACVA Diplomates &amp; Candidates</label><br />' % \
            (radio_jq('show_numbers', 'both', 'sec-sub', 'both3', (p.get('show_numbers')=='both') )))
        wr('<label for="all3">%s Everyone, even the general public</label>' % \
            (radio_jq('show_numbers', 'all', 'sec-sub', 'all3', (p.get('show_numbers')=='all') )))
        wr('</fieldset>')
        # ------------------------------------------------------
        wr('<tr><td>%s' % (submit('Save Privacy Settings')))
        wr('</table></div>')
        wr('</form>')
        wr('</div><!-- tab3 -->')
        ######################################################
        if IS_DIP:
            wr('<div id="tab4">')
            wr('<h2>For Hire?</h2>')
            wr('<div>Control whether or not you wish to be listed in our "Consultants for Hire" section, which is intended to help other vets connect with ACVA members.</div>')
            if p.get('sec_policy')=='paranoid':
                wr('<div>Unfortunately, you have selected to hide all your information. You must <em>adjust your privacy settings</em> to allow some information about you be available to the public before you can be included in the "Consultants for Hire" list.</div>')
            else:
                wr('<form method="POST" action="Acct_Change_Hire">')
                wr(hidden('form_username', un))
                wr(hidden('form_hash', self.request().cookies().get('hash')))
                wr('<div>')
                wr('<fieldset>')
                wr('<legend class="sec-legend">Do you wish to be listed as a Consultant for Hire?</legend>')
                wr('')
                wr('<label for="for-hire-yes">%s Yes, that would be fantastic.</label><br />' % \
                    (radio_jq('show_for_hire', 'yes', 'sec-sub', 'for-hire-yes', (p.get('show_for_hire')=='yes') )))
                wr('<label for="for-hire-no">%s No.</label><br />' % \
                    (radio_jq('show_for_hire', 'no', 'sec-sub', 'for-hire-no', (p.get('show_for_hire')!='yes') )))
                wr('</fieldset>')
                wr('<div id="for-hire-extra-info">')

                wr('<div>')
                wr('<b>What geographic area(s) do you serve?</b><br />')
                wr('<textarea name="for_hire_areas" class="input" cols="60" rows="3">%s</textarea>' % (p.get('for_hire_areas', '')))
                wr('</div>')

                wr('<div>')
                wr('<b>What services do you provide?</b><br />')
                wr('<textarea name="for_hire_services" class="input" cols="60" rows="3">%s</textarea>' % (p.get('for_hire_services', '')))
                wr('</div>')

                wr('<div>')
                wr('<b>If you have a website, provide it here:</b><br />')
                wr(text('for_hire_url', value=p.get('for_hire_url', ''), clss='input'))
                wr('</div>')

                wr('</div>')
                wr('%s' % (submit('Save Consultancy Status')))
                wr('</div>')
                wr('</form>')
    
            wr('</div><!-- tab4 -->')
        ######################################################
        wr('</div><!-- acct-container -->')
Beispiel #28
0
    def writeContent(self):
        wr = self.writeln
        ISA = is_site_admin(self.request())
        if ISA:
            form = self.request().fields()
            if self.request()._environ.get('REQUEST_METHOD') == 'POST':
                ERRORS = []
                if not form.get('title'):
                    ERRORS.append('You must provide a title for this document.')
                if not form.get('role'):
                    ERRORS.append('You must allow access to one or more roles.')
                if not form.get('category'):
                    ERRORS.append('You must select one or more categories for this document.')

                if form.get('formaction') == 'add':
                    fobj = form.get('datafile')
                    try:
                        filename = fobj.filename
                    except:
                        ERRORS.append('You must select a file on your computer to upload.')

                if ERRORS:
                    self.render_form_error('Upload Error', '<br>'.join(ERRORS))

                else:
                    if form.get('formaction') == 'add':
                        save_doc_file(form)
                        self.response().sendRedirect('DM_Index')
                    if form.get('formaction') == 'edit':
                        edit_doc_file(form)
                        self.response().sendRedirect('DM_Index')

            else:
                qs = form
                if qs.get('fn'):
                    filename = qs.get('fn')
                    pick = get_document_properties(filename)
                    hideval = 'edit'
                    ttl = 'Edit Document Properties'
                    subval = 'Save Changes'
                else:
                    filename = ''
                    pick = {}
                    hideval = 'add'
                    ttl = 'Add a New Document'
                    subval = 'Save Changes'

                wr('<h1>%s</h1>' % (ttl))
                wr('<p><a href="DM_Index" class="btn btn-default btn-sm"><i class="fa fa-arrow-left">&nbsp;</i>Document Management</a>')

                wr('<p>All form fields are required (except description).</p>')
                wr('<form method="POST" action="DM_Add_Edit_Doc" enctype="multipart/form-data">')
                wr(hidden('formaction', hideval))
                wr(hidden('filename', filename))

                wr('<table>')
                wr('<tr><td>Title:<td>')
                wr(text('title', pick.get('title', '')))
                wr('<tr><td>Description:<br><small>(optional)</small><td><textarea name="description">%s</textarea>' % (pick.get('description', '')))

                wr('<tr><td>Categories:<br><small>(pick at least one)</small><td>')
                for cat in get_all_possible_categories():
                    wr('<label for="%s"><input type="checkbox" name="category" value="%s" id="%s"' % (cat, cat, cat))
                    if cat in pick.get('categories', []):
                        self.write(' checked')
                    wr('> %s</label><br>' % (cat))
                wr('<hr>')
                wr('<td><a href="DM_Edit_Categories" class="btn btn-default btn-sm"><i class="fa fa-pencil">&nbsp;</i>Edit Categories</a>')
                wr('<tr><td>Allowed access:<br><small>(pick at least one)</small><td>')
                for role in MASTER_ROLES_LIST:
                    wr('<label for="%s"><input type="checkbox" name="role" value="%s" id="%s"' % (role, role, role))
                    if role in pick.get('roles', []):
                        self.write(' checked')
                    wr('> %s</label><br>' % (role))
                if not qs.get('fn'):
                    wr('<tr><td>File:<td><input type="file" name="datafile"><br />')
                wr('<tr><td><td>')
                wr(submit(subval))
                wr('</table>')
                wr('</form>')
Beispiel #29
0
    def writeContent(self):
        wr = self.writeln
        qs = self.request().fields()
        category = qs.get('cat')

        if category:
            ISA = is_site_admin(self.request())
            rolestr = self.request().cookies().get('role', '')
            IS_DIP = rolestr == DIPLSTR
            document_type = 'document'

            page_title = '%s for %s' % (self.title(), category.capitalize())
            wr('<h1>%s</h1>' % (page_title))

            if ISA:
                thispath = self.request().environ().get('REQUEST_URI')
                wr('<h2>Add a Document</h2>')
                wr('<form method="POST" action="File_Uploader" enctype="multipart/form-data">')
                wr('<table>')
                wr('<input type="hidden" name="filetype" value="document">')
                wr('<input type="hidden" name="redir" value="%s">' % (thispath))
                wr('<input type="hidden" name="category" value="%s">' % (category))
                wr('<tr><td>Title:<td><input type="text" name="title" value=""><br />')
                wr('<tr><td>File:<td><input type="file" name="datafile"><br />')
                wr('<tr><td><td><input type="submit" value="Upload">')
                wr('</table>')
                wr('</form>')

            VIEW_OK = False
            if category == 'candidates':
                VIEW_OK = True
            if category == 'diplomates':
                if IS_DIP:
                    VIEW_OK = True

            if VIEW_OK:
                if category == 'diplomates':
                    wr('<h3><a href="/Constitution">ACVAA Constitution &amp; Bylaws</a></h3>')
#                else:
#                    wr('<h3><a href="/docs/Journals">ACVAA Recommended Peer Reviewed Journals</a></h3>')

                subdir, dd = get_doc_dict(dtype=document_type, dcat=category)
                ddr = {}
                for k in dd.keys():
                    v = dd[k]
                    ddr[v] = k
                ks = ddr.keys()
                ks = sorted(ks, key=lambda x: (x.isdigit() and float(x)) or x.lower())
                for k in ks:
                    v = ddr.get(k)
                    wr('<p><h3><a href="/docs/%s/%s">%s</a></h3>Filename: %s' % (subdir, v, k, v))
                    uri = 'File_Deleter?doctype=%s&category=%s&filename=%s' % (document_type, category, v)
                    if ISA:
                        wr('<a href="%s"><img src="/g/delete.png" alt="delete" width="17" height="17" border="0" /></a>' % (uri))
                    if os.path.splitext(v)[-1] in (".doc", ".docx"):
                        wr('<br /><img src="/g/word_icon.png"> Microsoft Word download')
                    if os.path.splitext(v)[-1] in (".xls", ".xlsx"):
                        wr('<br /><img src="/g/excel_icon.png"> Microsoft Excel download')
                    if os.path.splitext(v)[-1] in (".pdf"):
                        wr('<br /><img src="/g/pdf_icon.png"> Adobe PDF download')
                    wr('</p>')
            else:
                wr('You are not logged in as a diplomate.')
        else:
            wr('<p>No category.</p>')