Test was failing due to API change in WebTest around accessing cookies set in the test client. These are now in `test_app.cookies`.
While there are currently 48 other tests failing, I've verified that before and after this change that the same number fail. I've also checked that no other tests use the old API for accessing test client cookies.
I've pinned to version 2.0.18. My understanding is that it's generally a good idea to pin to a specific version where possible to avoid the "why has this suddenly broken" type bugs. This also seems appropriate since WebTest appears to be very stable.
These changes bring `makeadmin` and `changepw` in-line with the approach used in `deleteuser`.
I've also made the error messages more consistent: list the username and full sentences.
This adds a new Comment link table that is used to link between some
object and then the comment object, which can be more or less any
object in Mediagoblin. The MediaComment has been renamed to
TextComment as that more aptly describes what it is. There is
migrations for these changes.
There is also the conslidation of the Report tables into a single
Report table, the same with the Notification objects. This is because
both of them split out MediaEntry and Comment versions into their own
polymorphic versions from a base, this is no longer a meaningful
distinction as comments can be anything.
There was a recent change in 0f3bf8d where several names which were
used to refer the actor where renamed to the standard "actor"
property name. There were some places in the OAuth decorator and the
OAuth views where the old names were still referred. This fixes that.
This adds several things, mainly code which checks for the public id and
if it doesn't exist generating it where it can. This is to because we
need to keep the public_id to be able to effectively soft delete models.
This also adds a public_id field to the Activity along with a migration.
This adds the Graveyard model which is used when a model is deleted, it
stores the important "shell" information on the model so it can
hard-delete the real object. It also remaps the GenericModelReference
references to the new Graveyard model.
This also moves the soft deletion setting from __model_args__ to
"deletion_mode" on the model.
This adds the "deleted" fields to the models as well as a new
__model_args__ section whcih supports the option for changing the
deletion type. Deletion is now handled by choosing a deletion method
based on the __model_args__["deletion"] setting, for example if it's
soft deletion it will call Model.soft_delete()
- Adds a "type" column to the Collection object and allows the
CollectionItem model to contain any object.
- Changes "items" to "num_items" as per TODO
- Renames "uploader", "creator" and "user" to a common "actor" in most places
- As of version 2.1.2 of exifread the 90 CW and 90 CCW values were
swapped, this bug is now fixed however our test data had those values
swapped too. I have fixed that.
- I also noticed that I had different orientation values, this was
noticed and fixed for some other differing values in commit ccca39f1
when it was decided we'll add values which were noticed on different
platforms.
I don't think there's necessarily anything wrong with using non-ASCII
characters, since UTF-8 is basically the de facto standard. There's no
reason to mix a small number of curly quotes into a configuration file
though, so I've replaced them for consistency.
This fixes a lot of the issues with the LocalUser changes that were
merged recently. There was a problem where the attributes of LocalUser
were not being eagerly loaded and because the Session was detached an
exception was being raised when they were accessed.
This also fixes some typo's which were introduced.
Finally this adds a temporary fix for a potential SQLAlchemy bug, this
is a bug where doing:
User.query.filter(LocalUser.username == "some_username").first()
does NOT yeild a user with the username "some_username" but all users
on the site. The temp fix is to just query the LocalUser, this should
be resolved when bug is confirmed and fixed upstream.
This introduces a migration which adds a dummy Client, RequestToken
and AccessToken. These are used when an invalid request comes in,
instead of bailing early, it needs dummy data to prevent timing
attacks.
This then implements the methods which get the IDs of the dummy
objects. If these are changed in the future a migration which checks
for the previous dummy object should be created and updates them to
reflect the new IDs/tokens.
It seems that the GET params on a URL should be included when
one signs the request. Mediagoblin was just using the base URL
without them. This should fix that.
After the recent model changes there were some bugs which were
introduced into the serialization methods of the models. This commit
fixes those issues.
This makes the changes needed for federating MediaEntry objects as well
as adding the migration and necessary methods to get the public_id just
in time (JIT).
The code base had many references to User.username and other
specific to LocalUser attributes as that was the way it use to exist.
This updates those to query on the generic User model but filtering
by attributes on the LocalUser.
This adds the two new user models (LocalUser and RemoteUser) to the
MODELS list that is in models.py. This stops the strange bug that occurs
if you migrate a fresh database, the two models don't exist however
migrating an existing database would create them as the migrations
exist.
The code base had many references to User.username and other
specific to LocalUser attributes as that was the way it use to exist.
This updates those to query on the generic User model but filtering
by attributes on the LocalUser.
This adds the ability to search for any user based on the generic
User case and be given back the specific LocalUser or RemoteUser.
This will require any code using the model to look which attributes
they are searching on and specify the specific User model they are
on if they're not on the generic User model. This will also require
new users to be created with LocalUser.
mock recently dropped Python 2.6 support and then
re-introduced it in its latest release (however,
it's a bit unstable right now).
I think at this point, we can be more cautious
and just use mock==1.0.1.
The migration had a problem where other tables still referenced the migration
as well as a typo in an earlier migration. They have both been fixed and tested
on PostgreSQL and SQLite3.
This also fixes a bug where sometimes when creating an activity it'd raise an
Exception as the object hadn't got an ID. This has been fixed globally with a
fix to the create_activity federation tool.