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()
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')))
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>')
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()
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>')
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')
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))
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))
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)
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>')
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.')
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.')
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()
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()
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 & Upload Constitution">') wr('</P>') wr('</form>')
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>')
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>' )
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 & 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 & 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 & 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 & 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 & 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 -->')
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 & 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>')
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 & Upload Constitution">') wr('</P>') wr('</form>')
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 & 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>')
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 & 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>')
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>')
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 & 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 & 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 & 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 & 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 & 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 -->')
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"> </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"> </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>')
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 & 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>')