Skip to content

Commit

Permalink
Support peewee 3.0a
Browse files Browse the repository at this point in the history
  • Loading branch information
Charles Leifer committed Oct 11, 2017
1 parent 443b76c commit 3126095
Show file tree
Hide file tree
Showing 11 changed files with 37 additions and 35 deletions.
24 changes: 12 additions & 12 deletions flask_peewee/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,7 @@ def dispatch_save_redirect(self, instance):
return redirect(url_for(self.get_url_name('add')))
else:
return redirect(
url_for(self.get_url_name('edit'), pk=instance.get_id())
url_for(self.get_url_name('edit'), pk=instance._pk)
)

def add(self):
Expand Down Expand Up @@ -335,10 +335,10 @@ def collect_objects(self, obj):

for query, fk in obj.dependencies():
if not fk.null:
sq = fk.model_class.select().where(query)
sq = fk.model.select().where(query)
collected = [rel_obj for rel_obj in sq.execute().iterator()]
if collected:
objects.append((0, fk.model_class, collected))
objects.append((0, fk.model, collected))

return sorted(objects, key=lambda i: (i[0], i[1].__name__))

Expand All @@ -354,7 +354,7 @@ def delete(self):
collected = {}
if self.delete_collect_objects:
for obj in query:
collected[obj.get_id()] = self.collect_objects(obj)
collected[obj._pk] = self.collect_objects(obj)

elif request.method == 'POST':
count = query.count()
Expand Down Expand Up @@ -406,7 +406,7 @@ def export(self):

return render_template(self.templates['export'],
model_admin=self,
model=query.model_class,
model=query.model,
query=query,
filter_form=filter_form,
field_tree=field_tree,
Expand Down Expand Up @@ -447,7 +447,7 @@ def ajax_list(self):
if field.null:
data.append({'id': '__None', 'repr': 'None'})

data.extend([{'id': obj.get_id(), 'repr': unicode(obj)} for obj in pq.get_list()])
data.extend([{'id': obj._pk, 'repr': unicode(obj)} for obj in pq.get_list()])

json_data = json.dumps({'prev_page': prev_page, 'next_page': next_page, 'object_list': data})
return Response(json_data, mimetype='application/json')
Expand Down Expand Up @@ -525,15 +525,15 @@ def get_verbose_name(self, model, column_name):
except KeyError:
return self.fix_underscores(column_name)
else:
return field.verbose_name
return field.verbose_name or self.fix_underscores(field.name)

def get_model_admins(self):
return {'model_admins': self.admin.get_model_admins(), 'branding': self.admin.branding}

def get_admin_url(self, obj):
model_admin = self.admin.get_admin_for(type(obj))
if model_admin:
return url_for(model_admin.get_url_name('edit'), pk=obj.get_id())
return url_for(model_admin.get_url_name('edit'), pk=obj._pk)

def get_model_name(self, model_class):
model_admin = self.admin.get_admin_for(model_class)
Expand Down Expand Up @@ -702,7 +702,7 @@ def prepare_query(self):
def ensure_join(query, m, p):
if m not in joined:
if '__' not in p:
next_model = query.model_class
next_model = query.model
else:
next, _ = p.rsplit('__', 1)
next_model = self.alias_to_model[next]
Expand All @@ -720,7 +720,7 @@ def ensure_join(query, m, p):
model = self.alias_to_model[path]
clone = ensure_join(clone, model, path)
else:
model = self.query.model_class
model = self.query.model
column = lookup

field = model._meta.fields[column]
Expand All @@ -734,8 +734,8 @@ def json_response(self, filename='export.json'):
prepared_query = self.prepare_query()
field_dict = {}
for field in prepared_query._select:
field_dict.setdefault(field.model_class, [])
field_dict[field.model_class].append(field.name)
field_dict.setdefault(field.model, [])
field_dict[field.model].append(field.name)

def generate():
i = prepared_query.count()
Expand Down
7 changes: 4 additions & 3 deletions flask_peewee/auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ def __unicode__(self):
return self.username

class Meta:
db_table = self.db_table # Postgres reserves user as a keyword
table_name = self.db_table

return User

Expand Down Expand Up @@ -150,7 +150,7 @@ def authenticate(self, username, password):

def login_user(self, user):
session['logged_in'] = True
session['user_pk'] = user.get_id()
session['user_pk'] = user._pk
session.permanent = True
g.user = user
flash('You are logged in as %s' % user, 'success')
Expand Down Expand Up @@ -219,7 +219,8 @@ def load_user(self):
g.user = self.get_logged_in_user()

def register_handlers(self):
self.app.before_request(self.load_user)
self.app.before_request_funcs.setdefault(None, [])
self.app.before_request_funcs[None].append(self.load_user)

def register_context_processors(self):
self.app.template_context_processors[None].append(self.get_context_user)
Expand Down
3 changes: 2 additions & 1 deletion flask_peewee/db.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@ class Meta:
return BaseModel

def connect_db(self):
self.database.connect()
if self.database.is_closed():
self.database.connect()

def close_db(self, exc):
if not self.database.is_closed():
Expand Down
6 changes: 3 additions & 3 deletions flask_peewee/filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ def get_field_types(self):
DoubleField: 'numeric',
DecimalField: 'numeric',
BooleanField: 'boolean',
PrimaryKeyField: 'numeric',
AutoField: 'numeric',
ForeignKeyField: 'foreign_key',
}

Expand Down Expand Up @@ -291,7 +291,7 @@ def get_field_default(self, field):
return field.default

def get_value_field(self, field):
field_name, form_field = self.model_converter.convert(field.model_class, field, None)
field_name, form_field = self.model_converter.convert(field.model, field, None)

form_field.kwargs['default'] = self.get_field_default(field)
form_field.kwargs['validators'] = [validators.Optional()]
Expand Down Expand Up @@ -350,7 +350,7 @@ def _dfs(node, prefix, models, join_columns):
for child_prefix, child in node.children.items():
new_prefix = prefix + self.field_relation_prefix + child_prefix + self.separator
model_copy = list(models) + [child.model]
join_copy = list(join_columns) + [child_prefix]
join_copy = list(join_columns) + [node.model._meta.fields[child_prefix]]
_dfs(child, new_prefix, model_copy, join_copy)

_dfs(self._field_tree, '', [], [])
Expand Down
2 changes: 1 addition & 1 deletion flask_peewee/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,4 @@ def __call__(self, field, **kwargs):
class LimitedModelSelectField(ModelSelectField):
def iter_choices(self):
for obj in self.query.limit(20):
yield (obj.get_id(), self.get_label(obj), obj == self.data)
yield (obj._pk, self.get_label(obj), obj == self.data)
2 changes: 1 addition & 1 deletion flask_peewee/serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ def convert_value(self, value):
elif isinstance(value, datetime.time):
return value.strftime(self.time_format)
elif isinstance(value, Model):
return value.get_id()
return value._pk
else:
return value

Expand Down
8 changes: 4 additions & 4 deletions flask_peewee/templates/admin/models/delete.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

{% block content %}
<form action="." class="form-horizontal" method="post">
{% for object in query %}<input type="hidden" name="id" value="{{ object.get_id() }}" />{% endfor %}
{% for object in query %}<input type="hidden" name="id" value="{{ object._pk }}" />{% endfor %}
<fieldset>
{% if csrf_token %}{# Support for flask-seasurf #}<input type="hidden" name="_csrf_token" value="{{ csrf_token() }}">{% endif %}
<legend>Confirm delete</legend>
Expand All @@ -23,9 +23,9 @@
{% else %}
<span>{{ object }}</span>
{% endif %}
{% if collected and object.get_id() in collected %}
{% if collected and object._pk in collected %}
<ul>
{% for depth, model, collected_objects in collected[object.get_id()] %}
{% for depth, model, collected_objects in collected[object._pk] %}
{% for sub_object in collected_objects %}
<li><span>{{ get_model_name(model) }}:</span>
{% if get_admin_url(sub_object) %}
Expand All @@ -41,7 +41,7 @@
</li>
{% endfor %}
</ul>

<div class="form-actions">
<button class="btn btn-danger" type="submit">Confirm Delete</button>
<a class="btn" href="{{ url_for(model_admin.get_url_name('index')) }}">Cancel</a>
Expand Down
2 changes: 1 addition & 1 deletion flask_peewee/templates/admin/models/edit.html
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
<button class="btn" name="save_add" type="submit">Save and add new</button>
<button class="btn" name="save_edit" type="submit">Save and edit</button>
<a class="btn" href="{{ url_for(model_admin.get_url_name('index')) }}">Cancel</a>
<a class="btn btn-danger pull-right" href="{{ url_for(model_admin.get_url_name('delete'), id=instance.get_id()) }}">Delete</a>
<a class="btn btn-danger pull-right" href="{{ url_for(model_admin.get_url_name('delete'), id=instance._pk) }}">Delete</a>
</div>
</fieldset>
</form>
Expand Down
10 changes: 5 additions & 5 deletions flask_peewee/templates/admin/models/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -43,24 +43,24 @@
<tbody>
{% for object in query.get_list() %}
<tr>
<td class="check"><input type="checkbox" name="id" value="{{ object.get_id() }}" /></td>
<td class="check"><input type="checkbox" name="id" value="{{ object._pk }}" /></td>
{% if model_admin.columns %}
{% for column in model_admin.columns %}
{% if loop.index == 1 %}
<td><a href="{{ url_for(model_admin.get_url_name('edit'), pk=object.get_id()) }}">{{ get_model_field(object, column) }}</a></td>
<td><a href="{{ url_for(model_admin.get_url_name('edit'), pk=object._pk) }}">{{ get_model_field(object, column) }}</a></td>
{% else %}
<td>{{ get_model_field(object, column) }}</td>
{% endif %}
{% endfor %}
{% else %}
<td><a href="{{ url_for(model_admin.get_url_name('edit'), pk=object.get_id()) }}">{{ object }}</a></td>
<td><a href="{{ url_for(model_admin.get_url_name('edit'), pk=object._pk) }}">{{ object }}</a></td>
{% endif %}
<td class="last links">
{% block object_actions scoped %}
<ul class="inline">
{% block object_action_links %}{% endblock %}
<li><a href="{{ url_for(model_admin.get_url_name('edit'), pk=object.get_id()) }}">Edit</a></li>
<li><a href="{{ url_for(model_admin.get_url_name('delete'), id=object.get_id()) }}">Delete</a></li>
<li><a href="{{ url_for(model_admin.get_url_name('edit'), pk=object._pk) }}">Edit</a></li>
<li><a href="{{ url_for(model_admin.get_url_name('delete'), id=object._pk) }}">Delete</a></li>
</ul>
{% endblock %}
</td>
Expand Down
4 changes: 2 additions & 2 deletions flask_peewee/tests/auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,10 @@ def logout(self, context=None):
return context.post('/accounts/logout/')

def test_table(self):
self.assertEqual(self.test_auth.User._meta.db_table, 'user')
self.assertEqual(self.test_auth.User._meta.table_name, 'user')

fake_auth = TestAuth(app, db, db_table='peewee_users')
self.assertEqual(fake_auth.User._meta.db_table, 'peewee_users')
self.assertEqual(fake_auth.User._meta.table_name, 'peewee_users')

def test_login_view(self):
self.create_users()
Expand Down
4 changes: 2 additions & 2 deletions flask_peewee/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def __init__(self, query_or_model, paginate_by):

if isinstance(query_or_model, SelectQuery):
self.query = query_or_model
self.model = self.query.model_class
self.model = self.query.model
else:
self.model = query_or_model
self.query = self.model.select()
Expand Down Expand Up @@ -85,7 +85,7 @@ def get_dictionary_from_model(model, fields=None, exclude=None):
if field_name in curr_exclude:
continue
field_obj = model_class._meta.fields[field_name]
field_data = model._data.get(field_name)
field_data = model.__data__.get(field_name)
if isinstance(field_obj, ForeignKeyField) and field_data and field_obj.rel_model in fields:
rel_obj = getattr(model, field_name)
data[field_name] = get_dictionary_from_model(rel_obj, fields, exclude)
Expand Down

0 comments on commit 3126095

Please sign in to comment.