Browse Source

Thanks Flake8. It's not over, though...

I should really learn to follow PEP8
Gu1 11 years ago
parent
commit
eda88591f1
5 changed files with 130 additions and 123 deletions
  1. 17 17
      ffdnispdb/models.py
  2. 11 11
      ffdnispdb/sessions.py
  3. 1 0
      ffdnispdb/static/css/style.css
  4. 92 87
      ffdnispdb/views.py
  5. 9 8
      ffdnispdb/views_api.py

+ 17 - 17
ffdnispdb/models.py

@@ -84,7 +84,7 @@ class ISP(db.Model):
 
 
     def __init__(self, *args, **kwargs):
     def __init__(self, *args, **kwargs):
         super(ISP, self).__init__(*args, **kwargs)
         super(ISP, self).__init__(*args, **kwargs)
-        self.json={}
+        self.json = {}
 
 
     def pre_save(self, *args):
     def pre_save(self, *args):
         if 'name' in self.json:
         if 'name' in self.json:
@@ -106,17 +106,17 @@ class ISP(db.Model):
         RegisteredOffice.query.filter_by(isp_id=self.id).delete()
         RegisteredOffice.query.filter_by(isp_id=self.id).delete()
 
 
         for ca_js in self.json.get('coveredAreas', []):
         for ca_js in self.json.get('coveredAreas', []):
-            ca=CoveredArea()
-            ca.name=ca_js['name']
-            area=ca_js.get('area')
-            ca.area=db.func.CastToMultiPolygon(
+            ca = CoveredArea()
+            ca.name = ca_js['name']
+            area = ca_js.get('area')
+            ca.area = db.func.CastToMultiPolygon(
                 db.func.GeomFromGeoJSON(dict_to_geojson(area))
                 db.func.GeomFromGeoJSON(dict_to_geojson(area))
             ) if area else None
             ) if area else None
             self.covered_areas.append(ca)
             self.covered_areas.append(ca)
 
 
-        coords=self.json.get('coordinates')
+        coords = self.json.get('coordinates')
         if coords:
         if coords:
-            self.registered_office=RegisteredOffice(
+            self.registered_office = RegisteredOffice(
                 point=db.func.MakePoint(coords['longitude'], coords['latitude'], 4326)
                 point=db.func.MakePoint(coords['longitude'], coords['latitude'], 4326)
             )
             )
 
 
@@ -137,15 +137,15 @@ class ISP(db.Model):
 
 
     @staticmethod
     @staticmethod
     def str2date(_str):
     def str2date(_str):
-        d=None
+        d = None
         try:
         try:
-            d=datetime.strptime(_str, '%Y-%m-%d')
+            d = datetime.strptime(_str, '%Y-%m-%d')
         except ValueError:
         except ValueError:
             pass
             pass
 
 
         if d is None:
         if d is None:
             try:
             try:
-                d=datetime.strptime(_str, '%Y-%m')
+                d = datetime.strptime(_str, '%Y-%m')
             except ValueError:
             except ValueError:
                 pass
                 pass
         return d
         return d
@@ -220,7 +220,7 @@ class ISPWhoosh(object):
 
 
     @classmethod
     @classmethod
     def get_index(cls):
     def get_index(cls):
-        idxdir=cls.get_index_dir()
+        idxdir = cls.get_index_dir()
         if index.exists_in(idxdir):
         if index.exists_in(idxdir):
             idx = index.open_dir(idxdir)
             idx = index.open_dir(idxdir)
         else:
         else:
@@ -239,21 +239,21 @@ class ISPWhoosh(object):
     @classmethod
     @classmethod
     def search(cls, terms):
     def search(cls, terms):
         with ISPWhoosh.get_index().searcher() as s:
         with ISPWhoosh.get_index().searcher() as s:
-            sres=cls._search(s, terms)
-            ranks={}
+            sres = cls._search(s, terms)
+            ranks = {}
             for rank, r in enumerate(sres):
             for rank, r in enumerate(sres):
-                ranks[r['id']]=rank
+                ranks[r['id']] = rank
 
 
             if not len(ranks):
             if not len(ranks):
                 return []
                 return []
 
 
-            _res=ISP.query.filter(ISP.id.in_(ranks.keys()))
+            _res = ISP.query.filter(ISP.id.in_(ranks.keys()))
 
 
         return sorted(_res, key=lambda r: ranks[r.id])
         return sorted(_res, key=lambda r: ranks[r.id])
 
 
     @classmethod
     @classmethod
     def update_document(cls, writer, model):
     def update_document(cls, writer, model):
-        kw={
+        kw = {
             'id': unicode(model.id),
             'id': unicode(model.id),
             '_stored_id': model.id,
             '_stored_id': model.id,
             'is_ffdn_member': model.is_ffdn_member,
             'is_ffdn_member': model.is_ffdn_member,
@@ -277,7 +277,7 @@ class ISPWhoosh(object):
         if not len(changes):
         if not len(changes):
             return
             return
 
 
-        idx=cls.get_index()
+        idx = cls.get_index()
         with idx.writer() as writer:
         with idx.writer() as writer:
             for update, model in isp_changes:
             for update, model in isp_changes:
                 if update:
                 if update:

+ 11 - 11
ffdnispdb/sessions.py

@@ -11,19 +11,19 @@ import string
 from datetime import datetime, timedelta
 from datetime import datetime, timedelta
 import cPickle
 import cPickle
 
 
-random=SystemRandom()
+random = SystemRandom()
 
 
 
 
 class SQLSession(CallbackDict, SessionMixin):
 class SQLSession(CallbackDict, SessionMixin):
 
 
     def __init__(self, sid, db, table, new=False, initial=None):
     def __init__(self, sid, db, table, new=False, initial=None):
-        self.sid=sid
-        self.db=db
-        self.table=table
-        self.modified=False
-        self.new=new
+        self.sid = sid
+        self.db = db
+        self.table = table
+        self.modified = False
+        self.new = new
         def _on_update(self):
         def _on_update(self):
-            self.modified=True
+            self.modified = True
         super(SQLSession, self).__init__(initial, _on_update)
         super(SQLSession, self).__init__(initial, _on_update)
 
 
     def save(self):
     def save(self):
@@ -33,7 +33,7 @@ class SQLSession(CallbackDict, SessionMixin):
                 'expire': datetime.utcnow()+timedelta(hours=1),
                 'expire': datetime.utcnow()+timedelta(hours=1),
                 'value': cPickle.dumps(dict(self), -1)
                 'value': cPickle.dumps(dict(self), -1)
             }))
             }))
-            self.new=False
+            self.new = False
         else:
         else:
             self.db.execute(self.table.update(
             self.db.execute(self.table.update(
                 self.table.c.session_id == self.sid,
                 self.table.c.session_id == self.sid,
@@ -57,14 +57,14 @@ class MySessionInterface(SessionInterface):
     def open_session(self, app, request):
     def open_session(self, app, request):
         sid = request.cookies.get(app.session_cookie_name)
         sid = request.cookies.get(app.session_cookie_name)
         if sid:
         if sid:
-            res=self.db.engine.execute(select([self.table.c.value], (self.table.c.session_id == sid) &
+            res = self.db.engine.execute(select([self.table.c.value], (self.table.c.session_id == sid) &
                                                                  (self.table.c.expire > datetime.utcnow()))).first()
                                                                  (self.table.c.expire > datetime.utcnow()))).first()
             if res:
             if res:
                 return SQLSession(sid, self.db.engine, self.table, False, cPickle.loads(res[0]))
                 return SQLSession(sid, self.db.engine, self.table, False, cPickle.loads(res[0]))
 
 
         while True:
         while True:
-            sid=''.join(random.choice(string.ascii_letters+string.digits) for i in range(32))
-            res=self.db.engine.execute(select([self.table.c.value], self.table.c.session_id == sid)).first()
+            sid = ''.join(random.choice(string.ascii_letters+string.digits) for i in range(32))
+            res = self.db.engine.execute(select([self.table.c.value], self.table.c.session_id == sid)).first()
             if not res:
             if not res:
                 break
                 break
 
 

+ 1 - 0
ffdnispdb/static/css/style.css

@@ -258,6 +258,7 @@ footer .bracket:before {
     margin: 11px 0 0 22px;
     margin: 11px 0 0 22px;
     color: #cccccc;
     color: #cccccc;
     transition-duration: 300ms;
     transition-duration: 300ms;
+    cursor: default;
 }
 }
 
 
 footer:hover .bracket:before {
 footer:hover .bracket:before {

+ 92 - 87
ffdnispdb/views.py

@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 # -*- coding: utf-8 -*-
 
 
-from flask import request, g, redirect, url_for, abort, \
+from flask import request, redirect, url_for, abort, \
     render_template, flash, json, session, Response, Markup, \
     render_template, flash, json, session, Response, Markup, \
     stream_with_context, current_app, Blueprint
     stream_with_context, current_app, Blueprint
 from flask.ext.babel import gettext as _, get_locale
 from flask.ext.babel import gettext as _, get_locale
@@ -9,7 +9,7 @@ import itsdangerous
 import docutils.core
 import docutils.core
 import ispformat.specs
 import ispformat.specs
 
 
-from datetime import date, time, timedelta, datetime
+from datetime import datetime
 from urlparse import urlunsplit
 from urlparse import urlunsplit
 import locale
 import locale
 locale.setlocale(locale.LC_ALL, '')
 locale.setlocale(locale.LC_ALL, '')
@@ -17,7 +17,7 @@ from time import time
 import os.path
 import os.path
 
 
 from . import forms
 from . import forms
-from .constants import *
+from .constants import STEPS, STEPS_LABELS, LOCALES_FLAGS
 from . import db, cache, mail
 from . import db, cache, mail
 from .models import ISP, ISPWhoosh, CoveredArea, RegisteredOffice
 from .models import ISP, ISPWhoosh, CoveredArea, RegisteredOffice
 from .crawler import WebValidator, PrettyValidator
 from .crawler import WebValidator, PrettyValidator
@@ -42,24 +42,24 @@ def page_not_found(e):
 
 
 
 
 @ispdb.app_errorhandler(500)
 @ispdb.app_errorhandler(500)
-def page_not_found(e):
+def internal_error(e):
     return render_template('500.html'), 500
     return render_template('500.html'), 500
 
 
 
 
 # this needs to be cached
 # this needs to be cached
 @ispdb.route('/isp/map_data.json', methods=['GET'])
 @ispdb.route('/isp/map_data.json', methods=['GET'])
 def isp_map_data():
 def isp_map_data():
-    isps=ISP.query.filter_by(is_disabled=False)
-    data=[]
+    isps = ISP.query.filter_by(is_disabled=False)
+    data = []
     for isp in isps:
     for isp in isps:
-        d=dict(isp.json)
+        d = dict(isp.json)
         for k in d.keys():
         for k in d.keys():
             if k not in ('name', 'shortname', 'coordinates'):
             if k not in ('name', 'shortname', 'coordinates'):
                 del d[k]
                 del d[k]
 
 
-        d['id']=isp.id
-        d['ffdn_member']=isp.is_ffdn_member
-        d['popup']=render_template('map_popup.html', isp=isp)
+        d['id'] = isp.id
+        d['ffdn_member'] = isp.is_ffdn_member
+        d['popup'] = render_template('map_popup.html', isp=isp)
         data.append(d)
         data.append(d)
 
 
     return Response(json.dumps(data), mimetype='application/json')
     return Response(json.dumps(data), mimetype='application/json')
@@ -67,17 +67,17 @@ def isp_map_data():
 
 
 @ispdb.route('/isp/find_near.json', methods=['GET'])
 @ispdb.route('/isp/find_near.json', methods=['GET'])
 def isp_find_near():
 def isp_find_near():
-    lat=request.args.get('lat')
-    lon=request.args.get('lon')
+    lat = request.args.get('lat')
+    lon = request.args.get('lon')
     try:
     try:
-        lat=float(lat)
-        lon=float(lon)
+        lat = float(lat)
+        lon = float(lon)
     except (ValueError, TypeError):
     except (ValueError, TypeError):
         abort(400)
         abort(400)
 
 
-    q=CoveredArea.containing((lat,lon))\
-                 .options(db.joinedload('isp'))
-    res=[[{
+    q = CoveredArea.containing((lat, lon))\
+                   .options(db.joinedload('isp'))
+    res = [[{
         'isp_id': ca.isp_id,
         'isp_id': ca.isp_id,
         'area': {
         'area': {
             'id': ca.id,
             'id': ca.id,
@@ -85,11 +85,11 @@ def isp_find_near():
         }
         }
     } for ca in q]]
     } for ca in q]]
 
 
-    d=RegisteredOffice.point.distance(db.func.MakePoint(lon, lat), 1).label('distance')
-    q=db.session.query(RegisteredOffice, d)\
-                .options(db.joinedload('isp'))\
-                .order_by('distance ASC')\
-                .limit(2)
+    dst = RegisteredOffice.point.distance(db.func.MakePoint(lon, lat), 1).label('distance')
+    q = db.session.query(RegisteredOffice, dst)\
+                  .options(db.joinedload('isp'))\
+                  .order_by('distance ASC')\
+                  .limit(2)
 
 
     res.append([{
     res.append([{
         'distance': d,
         'distance': d,
@@ -101,14 +101,14 @@ def isp_find_near():
 
 
 @ispdb.route('/isp/<projectid>/covered_areas.json', methods=['GET'])
 @ispdb.route('/isp/<projectid>/covered_areas.json', methods=['GET'])
 def isp_covered_areas(projectid):
 def isp_covered_areas(projectid):
-    p=ISP.query.filter_by(id=projectid, is_disabled=False)\
-               .options(db.joinedload('covered_areas'),
-                        db.defer('covered_areas.area'),
-                        db.undefer('covered_areas.area_geojson'))\
-               .scalar()
+    p = ISP.query.filter_by(id=projectid, is_disabled=False)\
+                 .options(db.joinedload('covered_areas'),
+                          db.defer('covered_areas.area'),
+                          db.undefer('covered_areas.area_geojson'))\
+                 .scalar()
     if not p:
     if not p:
         abort(404)
         abort(404)
-    cas=[]
+    cas = []
     for ca in p.covered_areas:
     for ca in p.covered_areas:
         cas.append({
         cas.append({
             'id': ca.id,
             'id': ca.id,
@@ -120,7 +120,7 @@ def isp_covered_areas(projectid):
 
 
 @ispdb.route('/isp/<projectid>/')
 @ispdb.route('/isp/<projectid>/')
 def project(projectid):
 def project(projectid):
-    p=ISP.query.filter_by(id=projectid, is_disabled=False).first()
+    p = ISP.query.filter_by(id=projectid, is_disabled=False).first()
     if not p:
     if not p:
         abort(404)
         abort(404)
     return render_template('project_detail.html', project_row=p, project=p.json)
     return render_template('project_detail.html', project_row=p, project=p.json)
@@ -128,9 +128,9 @@ def project(projectid):
 
 
 @ispdb.route('/isp/<projectid>/edit', methods=['GET', 'POST'])
 @ispdb.route('/isp/<projectid>/edit', methods=['GET', 'POST'])
 def edit_project(projectid):
 def edit_project(projectid):
-    MAX_TOKEN_AGE=3600
-    isp=ISP.query.filter_by(id=projectid, is_disabled=False).first_or_404()
-    sess_token=session.get('edit_tokens', {}).get(isp.id)
+    MAX_TOKEN_AGE = 3600
+    isp = ISP.query.filter_by(id=projectid, is_disabled=False).first_or_404()
+    sess_token = session.get('edit_tokens', {}).get(isp.id)
 
 
     if 'token' in request.args:
     if 'token' in request.args:
         s = itsdangerous.URLSafeTimedSerializer(current_app.secret_key, salt='edit')
         s = itsdangerous.URLSafeTimedSerializer(current_app.secret_key, salt='edit')
@@ -144,7 +144,7 @@ def edit_project(projectid):
             abort(403)
             abort(403)
 
 
         tokens = session.setdefault('edit_tokens', {})
         tokens = session.setdefault('edit_tokens', {})
-        session.modified = True # ITS A TARP
+        session.modified = True  # ITS A TARP
         tokens[r[0]] = r[1]
         tokens[r[0]] = r[1]
         # refresh page, without the token in the url
         # refresh page, without the token in the url
         return redirect(url_for('.edit_project', projectid=r[0]))
         return redirect(url_for('.edit_project', projectid=r[0]))
@@ -169,8 +169,8 @@ def edit_project(projectid):
         if form.validate_on_submit():
         if form.validate_on_submit():
             isp.tech_email = form.tech_email.data
             isp.tech_email = form.tech_email.data
             u = list(form.json_url.data)
             u = list(form.json_url.data)
-            u[2]='/isp.json' # new path
-            url=urlunsplit(u)
+            u[2] = '/isp.json'  # new path
+            url = urlunsplit(u)
             isp.json_url = url
             isp.json_url = url
 
 
             db.session.add(isp)
             db.session.add(isp)
@@ -182,14 +182,14 @@ def edit_project(projectid):
 
 
 @ispdb.route('/isp/<projectid>/gen_edit_token', methods=['GET', 'POST'])
 @ispdb.route('/isp/<projectid>/gen_edit_token', methods=['GET', 'POST'])
 def gen_edit_token(projectid):
 def gen_edit_token(projectid):
-    isp=ISP.query.filter_by(id=projectid, is_disabled=False).first_or_404()
+    isp = ISP.query.filter_by(id=projectid, is_disabled=False).first_or_404()
     form = forms.RequestEditToken()
     form = forms.RequestEditToken()
-    if form.validate_on_submit(): # validated
+    if form.validate_on_submit():  # validated
         if form.tech_email.data == isp.tech_email:
         if form.tech_email.data == isp.tech_email:
-            s = itsdangerous.URLSafeTimedSerializer(app.secret_key, salt='edit')
+            s = itsdangerous.URLSafeTimedSerializer(current_app.secret_key, salt='edit')
             token = s.dumps(isp.id)
             token = s.dumps(isp.id)
             msg = Message("Edit request of your ISP", sender=current_app.config['EMAIL_SENDER'])
             msg = Message("Edit request of your ISP", sender=current_app.config['EMAIL_SENDER'])
-            msg.body="""
+            msg.body = """
 Hello,
 Hello,
 You are receiving this message because your are listed as technical contact for "%s" on the FFDN ISP database.
 You are receiving this message because your are listed as technical contact for "%s" on the FFDN ISP database.
 
 
@@ -211,7 +211,7 @@ https://db.ffdn.org
 
 
         # if the email provided is not the correct one, we still redirect
         # if the email provided is not the correct one, we still redirect
         flash(_(u'If you provided the correct email adress, '
         flash(_(u'If you provided the correct email adress, '
-                 'you must will receive a message shortly (check your spam folder)'), 'info')
+                'you must will receive a message shortly (check your spam folder)'), 'info')
         return redirect(url_for('.project', projectid=isp.id))
         return redirect(url_for('.project', projectid=isp.id))
 
 
     return render_template('gen_edit_token.html', form=form)
     return render_template('gen_edit_token.html', form=form)
@@ -226,11 +226,11 @@ def add_project():
 def create_project_form():
 def create_project_form():
     form = forms.ProjectForm()
     form = forms.ProjectForm()
     if form.validate_on_submit():
     if form.validate_on_submit():
-        isp=ISP()
+        isp = ISP()
         isp.name = form.name.data
         isp.name = form.name.data
         isp.shortname = form.shortname.data or None
         isp.shortname = form.shortname.data or None
         isp.tech_email = form.tech_email.data
         isp.tech_email = form.tech_email.data
-        isp.json=form.to_json(isp.json)
+        isp.json = form.to_json(isp.json)
 
 
         db.session.add(isp)
         db.session.add(isp)
         db.session.commit()
         db.session.commit()
@@ -245,15 +245,15 @@ def json_url_validator():
        session['form_json'].get('validated', False):
        session['form_json'].get('validated', False):
         abort(403)
         abort(403)
 
 
-    v=session['form_json'].get('validator')
+    v = session['form_json'].get('validator')
 
 
     if v is not None:
     if v is not None:
         if v > time()-5:
         if v > time()-5:
             abort(429)
             abort(429)
     else:
     else:
-        session['form_json']['validator']=time()
+        session['form_json']['validator'] = time()
 
 
-    validator=WebValidator(session._get_current_object(), 'form_json')
+    validator = WebValidator(session._get_current_object(), 'form_json')
     return Response(stream_with_context(
     return Response(stream_with_context(
         validator(session['form_json']['url'])
         validator(session['form_json']['url'])
     ), mimetype="text/event-stream")
     ), mimetype="text/event-stream")
@@ -263,9 +263,9 @@ def json_url_validator():
 def create_project_json():
 def create_project_json():
     form = forms.ProjectJSONForm()
     form = forms.ProjectJSONForm()
     if form.validate_on_submit():
     if form.validate_on_submit():
-        u=list(form.json_url.data)
-        u[2]='/isp.json' # new path
-        url=urlunsplit(u)
+        u = list(form.json_url.data)
+        u[2] = '/isp.json'  # new path
+        url = urlunsplit(u)
         session['form_json'] = {'url': url, 'tech_email': form.tech_email.data}
         session['form_json'] = {'url': url, 'tech_email': form.tech_email.data}
         return render_template('project_json_validator.html')
         return render_template('project_json_validator.html')
     return render_template('add_project_json_form.html', form=form)
     return render_template('add_project_json_form.html', form=form)
@@ -276,18 +276,18 @@ def create_project_json_confirm():
     if 'form_json' in session and session['form_json'].get('validated', False):
     if 'form_json' in session and session['form_json'].get('validated', False):
         if not forms.is_url_unique(session['form_json']['url']):
         if not forms.is_url_unique(session['form_json']['url']):
             abort(409)
             abort(409)
-        jdict=session['form_json']['jdict']
-        isp=ISP()
-        isp.name=jdict['name']
+        jdict = session['form_json']['jdict']
+        isp = ISP()
+        isp.name = jdict['name']
         if 'shortname' in jdict:
         if 'shortname' in jdict:
-            isp.shortname=jdict['shortname']
-        isp.json_url=session['form_json']['url']
-        isp.json=jdict
-        isp.tech_email=session['form_json']['tech_email']
-        isp.last_update_attempt=session['form_json']['last_update']
-        isp.last_update_success=session['form_json']['last_update']
-        isp.next_update=session['form_json']['next_update']
-        isp.cache_info=session['form_json']['cache_info']
+            isp.shortname = jdict['shortname']
+        isp.json_url = session['form_json']['url']
+        isp.json = jdict
+        isp.tech_email = session['form_json']['tech_email']
+        isp.last_update_attempt = session['form_json']['last_update']
+        isp.last_update_success = session['form_json']['last_update']
+        isp.next_update = session['form_json']['next_update']
+        isp.cache_info = session['form_json']['cache_info']
         del session['form_json']
         del session['form_json']
 
 
         db.session.add(isp)
         db.session.add(isp)
@@ -304,19 +304,19 @@ def reactivate_validator():
        session['form_reactivate'].get('validated', False):
        session['form_reactivate'].get('validated', False):
         abort(403)
         abort(403)
 
 
-    p=ISP.query.get(session['form_reactivate']['isp_id'])
+    p = ISP.query.get(session['form_reactivate']['isp_id'])
     if not p:
     if not p:
         abort(403)
         abort(403)
 
 
-    v=session['form_reactivate'].get('validator')
+    v = session['form_reactivate'].get('validator')
 
 
     if v is not None:
     if v is not None:
         if v > time()-5:
         if v > time()-5:
             abort(429)
             abort(429)
     else:
     else:
-        session['form_reactivate']['validator']=time()
+        session['form_reactivate']['validator'] = time()
 
 
-    validator=PrettyValidator(session._get_current_object(), 'form_reactivate')
+    validator = PrettyValidator(session._get_current_object(), 'form_reactivate')
     return Response(stream_with_context(
     return Response(stream_with_context(
         validator(p.json_url, p.cache_info or {})
         validator(p.json_url, p.cache_info or {})
     ), mimetype="text/event-stream")
     ), mimetype="text/event-stream")
@@ -328,19 +328,18 @@ def reactivate_isp(projectid):
     Allow to reactivate an ISP after it has been disabled
     Allow to reactivate an ISP after it has been disabled
     because of problems with the JSON file.
     because of problems with the JSON file.
     """
     """
-    p=ISP.query.filter(ISP.id==projectid, ISP.is_disabled==False,
-                       ISP.update_error_strike>=3).first_or_404()
+    p = ISP.query.filter(ISP.id == projectid, ISP.is_disabled == False,
+                         ISP.update_error_strike >= 3).first_or_404()
     if request.method == 'GET':
     if request.method == 'GET':
         key = request.args.get('key')
         key = request.args.get('key')
         try:
         try:
-            s=itsdangerous.URLSafeSerializer(current_app.secret_key,
-                                             salt='reactivate')
-            d=s.loads(key)
-        except Exception as e:
+            s = itsdangerous.URLSafeSerializer(current_app.secret_key,
+                                               salt='reactivate')
+            d = s.loads(key)
+        except Exception:
             abort(403)
             abort(403)
 
 
-        if (len(d) != 2 or d[0] != p.id or
-            d[1] != str(p.last_update_attempt)):
+        if (len(d) != 2 or d[0] != p.id or d[1] != str(p.last_update_attempt)):
             abort(403)
             abort(403)
 
 
         session['form_reactivate'] = {'isp_id': p.id}
         session['form_reactivate'] = {'isp_id': p.id}
@@ -350,11 +349,11 @@ def reactivate_isp(projectid):
            not session['form_reactivate'].get('validated', False):
            not session['form_reactivate'].get('validated', False):
             abort(409)
             abort(409)
 
 
-        p=ISP.query.get(session['form_reactivate']['isp_id'])
-        p.json=session['form_reactivate']['jdict']
-        p.cache_info=session['form_reactivate']['cache_info']
-        p.last_update_attempt=session['form_form_reactivate']['last_update']
-        p.last_update_success=p.last_update_attempt
+        p = ISP.query.get(session['form_reactivate']['isp_id'])
+        p.json = session['form_reactivate']['jdict']
+        p.cache_info = session['form_reactivate']['cache_info']
+        p.last_update_attempt = session['form_form_reactivate']['last_update']
+        p.last_update_success = p.last_update_attempt
 
 
         db.session.add(p)
         db.session.add(p)
         db.session.commit()
         db.session.commit()
@@ -365,11 +364,11 @@ def reactivate_isp(projectid):
 
 
 @ispdb.route('/search', methods=['GET', 'POST'])
 @ispdb.route('/search', methods=['GET', 'POST'])
 def search():
 def search():
-    terms=request.args.get('q')
+    terms = request.args.get('q')
     if not terms:
     if not terms:
         return redirect(url_for('.home'))
         return redirect(url_for('.home'))
 
 
-    res=ISPWhoosh.search(terms)
+    res = ISPWhoosh.search(terms)
     return render_template('search_results.html', results=res, search_terms=terms)
     return render_template('search_results.html', results=res, search_terms=terms)
 
 
 
 
@@ -377,14 +376,16 @@ def search():
 def format():
 def format():
     parts = cache.get('format-spec')
     parts = cache.get('format-spec')
     if parts is None:
     if parts is None:
-        spec=open(ispformat.specs.versions[0.1]).read()
+        spec = open(ispformat.specs.versions[0.1]).read()
         overrides = {
         overrides = {
-            'initial_header_level' : 3,
+            'initial_header_level': 3,
         }
         }
-        parts = docutils.core.publish_parts(spec,
-                    source_path=os.path.dirname(ispformat.specs.versions[0.1]),
-                    destination_path=None, writer_name='html',
-                    settings_overrides=overrides)
+        parts = docutils.core.publish_parts(
+            spec,
+            source_path=os.path.dirname(ispformat.specs.versions[0.1]),
+            destination_path=None, writer_name='html',
+            settings_overrides=overrides
+        )
         cache.set('format-spec', parts, timeout=60*60*24)
         cache.set('format-spec', parts, timeout=60*60*24)
     return render_template('format_spec.html', spec=Markup(parts['html_body']))
     return render_template('format_spec.html', spec=Markup(parts['html_body']))
 
 
@@ -397,17 +398,17 @@ def api():
 @ispdb.route('/humans.txt', methods=['GET'])
 @ispdb.route('/humans.txt', methods=['GET'])
 def humans():
 def humans():
     import os.path
     import os.path
-    authors_file=os.path.join(os.path.dirname(__file__), '../AUTHORS')
+    authors_file = os.path.join(os.path.dirname(__file__), '../AUTHORS')
     return Response(open(authors_file), mimetype='text/plain; charset=utf-8')
     return Response(open(authors_file), mimetype='text/plain; charset=utf-8')
 
 
 
 
 @ispdb.route('/site.js', methods=['GET'])
 @ispdb.route('/site.js', methods=['GET'])
 def site_js():
 def site_js():
     l = get_locale()
     l = get_locale()
-    js_i18n = cache.get('site_js_%s'%(l,))
+    js_i18n = cache.get('site_js_%s' % (l,))
     if not js_i18n:
     if not js_i18n:
         js_i18n = render_template('site.js')
         js_i18n = render_template('site.js')
-        cache.set('site_js_%s'%(l,), js_i18n, timeout=60*60)
+        cache.set('site_js_%s' % (l,), js_i18n, timeout=60*60)
     r = Response(js_i18n, headers={
     r = Response(js_i18n, headers={
         'Content-type': 'application/javascript',
         'Content-type': 'application/javascript',
         'Cache-control': 'private, max-age=3600'
         'Cache-control': 'private, max-age=3600'
@@ -441,18 +442,22 @@ def step_to_label(step):
     else:
     else:
         return u'-'
         return u'-'
 
 
+
 @ispdb.app_template_filter('stepname')
 @ispdb.app_template_filter('stepname')
 def stepname(step):
 def stepname(step):
     return STEPS[step]
     return STEPS[step]
 
 
+
 @ispdb.app_template_filter('js_str')
 @ispdb.app_template_filter('js_str')
 def json_filter(v):
 def json_filter(v):
     return Markup(json.dumps(unicode(v)))
     return Markup(json.dumps(unicode(v)))
 
 
+
 @ispdb.app_template_filter('locale_flag')
 @ispdb.app_template_filter('locale_flag')
 def locale_flag(l):
 def locale_flag(l):
     return LOCALES_FLAGS.get(str(l), '_unknown')
     return LOCALES_FLAGS.get(str(l), '_unknown')
 
 
+
 @ispdb.app_template_global('current_locale')
 @ispdb.app_template_global('current_locale')
 def current_locale():
 def current_locale():
     return get_locale()
     return get_locale()

+ 9 - 8
ffdnispdb/views_api.py

@@ -41,9 +41,9 @@ class REST(object):
 
 
     @classmethod
     @classmethod
     def accepted_mimetypes(cls, default_mime=DEFAULT_MIMETYPE):
     def accepted_mimetypes(cls, default_mime=DEFAULT_MIMETYPE):
-        am=[m for m, q in request.accept_mimetypes]
+        am = [m for m, q in request.accept_mimetypes]
         if default_mime:
         if default_mime:
-            am+=[default_mime]
+            am += [default_mime]
         return am
         return am
 
 
     @classmethod
     @classmethod
@@ -176,7 +176,7 @@ class ISPResource(Resource):
         GET - return ISP with the given id
         GET - return ISP with the given id
     """
     """
     def isp_to_dict(self, isp):
     def isp_to_dict(self, isp):
-        r=OrderedDict()
+        r = OrderedDict()
         r['id'] = isp.id
         r['id'] = isp.id
         r['is_ffdn_member'] = isp.is_ffdn_member
         r['is_ffdn_member'] = isp.is_ffdn_member
         r['json_url'] = isp.json_url
         r['json_url'] = isp.json_url
@@ -211,7 +211,7 @@ class CoveredAreaResource(Resource):
         GET - return covered areas for the given ISP
         GET - return covered areas for the given ISP
     """
     """
     def ca_to_dict(self, ca):
     def ca_to_dict(self, ca):
-        r=OrderedDict()
+        r = OrderedDict()
         r['id'] = ca.id
         r['id'] = ca.id
         if not self.isp_id:
         if not self.isp_id:
             r['isp'] = OrderedDict()
             r['isp'] = OrderedDict()
@@ -230,7 +230,7 @@ class CoveredAreaResource(Resource):
             s = CoveredArea.query.get_or_404(area_id)
             s = CoveredArea.query.get_or_404(area_id)
             return self.ca_to_dict(s)
             return self.ca_to_dict(s)
         else:
         else:
-            s = CoveredArea.query.filter(ISP.is_disabled==False)\
+            s = CoveredArea.query.filter(ISP.is_disabled == False)\
                                  .options(db.joinedload('isp'),
                                  .options(db.joinedload('isp'),
                                           db.defer('isp.json'),
                                           db.defer('isp.json'),
                                           db.defer('area'),
                                           db.defer('area'),
@@ -238,7 +238,7 @@ class CoveredAreaResource(Resource):
             if isp_id:
             if isp_id:
                 if not ISP.query.filter_by(id=isp_id, is_disabled=False).scalar():
                 if not ISP.query.filter_by(id=isp_id, is_disabled=False).scalar():
                     raise ObjectNotFound
                     raise ObjectNotFound
-                s = s.filter(CoveredArea.isp_id==isp_id)
+                s = s.filter(CoveredArea.isp_id == isp_id)
             return self.handle_list(s, self.ca_to_dict, out_var='covered_areas')
             return self.handle_list(s, self.ca_to_dict, out_var='covered_areas')
 
 
 
 
@@ -267,10 +267,11 @@ def handle_generic_exception(e):
 
 
 isp_view = ISPResource.as_view('isp_api')
 isp_view = ISPResource.as_view('isp_api')
 ispdbapi.add_url_rule('/v1/isp/', defaults={'isp_id': None},
 ispdbapi.add_url_rule('/v1/isp/', defaults={'isp_id': None},
-                      view_func=isp_view, methods=['GET',])
+                      view_func=isp_view, methods=['GET'])
 ispdbapi.add_url_rule('/v1/isp/<int:isp_id>/', view_func=isp_view,
 ispdbapi.add_url_rule('/v1/isp/<int:isp_id>/', view_func=isp_view,
                       methods=['GET'])
                       methods=['GET'])
 
 
+
 @ispdbapi.route('/v1/isp/export_urls/')
 @ispdbapi.route('/v1/isp/export_urls/')
 @ispdbapi.route('/v1/isp/all_your_urls_are_belong_to_us/')
 @ispdbapi.route('/v1/isp/all_your_urls_are_belong_to_us/')
 def all_urls():
 def all_urls():
@@ -286,7 +287,7 @@ def all_urls():
 
 
 ca_view = CoveredAreaResource.as_view('covered_area_api')
 ca_view = CoveredAreaResource.as_view('covered_area_api')
 ispdbapi.add_url_rule('/v1/covered_area/', defaults={'area_id': None},
 ispdbapi.add_url_rule('/v1/covered_area/', defaults={'area_id': None},
-                      view_func=ca_view, methods=['GET',])
+                      view_func=ca_view, methods=['GET'])
 ispdbapi.add_url_rule('/v1/covered_area/<int:area_id>/', view_func=ca_view,
 ispdbapi.add_url_rule('/v1/covered_area/<int:area_id>/', view_func=ca_view,
                       methods=['GET'])
                       methods=['GET'])
 ispdbapi.add_url_rule('/v1/isp/<int:isp_id>/covered_areas/', view_func=ca_view,
 ispdbapi.add_url_rule('/v1/isp/<int:isp_id>/covered_areas/', view_func=ca_view,