Make repomaker installable

This gets rid of the project/app distinction.
Now, there is only one repomaker folder.
No more maker and RepoMaker.

A setup.py file was added to begin distributing repomaker.
This commit is contained in:
Torsten Grote 2017-07-20 15:01:32 -03:00
parent fdf6026851
commit 0ca26d0a67
No known key found for this signature in database
GPG Key ID: 3E5F77D92CF891FF
162 changed files with 537 additions and 405 deletions

6
.gitignore vendored
View File

@ -9,8 +9,14 @@ credentials
node_modules/
/static/
.coverage
repomaker/static/repomaker/css/styles.css
repomaker/static/repomaker/css/repo/page.css
.idea/*
!.idea/codeStyleSettings.xml
*.mo
/build/
/dist/
/repomaker.egg-info/

View File

@ -1,36 +0,0 @@
"""RepoMaker URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/1.10/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.conf.urls import url, include
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
"""
from django.conf import settings
from django.conf.urls import include, url
from django.contrib import admin
from maker.views import media_serve
from maker.views.repository import RepositoryListView
urlpatterns = [
url(r'^$', RepositoryListView.as_view(), name="index"),
url(r'^repo/', include('maker.urls')),
url(r'^admin/', admin.site.urls),
url(r'^tinymce/', include('tinymce.urls')),
url(r'^%s(?P<path>.*)$' % settings.MEDIA_URL[1:], media_serve,
{'document_root': settings.MEDIA_ROOT}),
]
if not settings.SINGLE_USER_MODE:
urlpatterns += [
url(r'^accounts/', include('allauth.urls')),
]

View File

@ -12,12 +12,12 @@
Require all granted
</Directory>
WSGIScriptAlias / /var/local/repomaker/RepoMaker/wsgi.py
WSGIScriptAlias / /var/local/repomaker/repomaker/wsgi.py
WSGIDaemonProcess repomaker python-path=/var/local/repomaker:/usr/local/lib/python3.5/dist-packages
WSGIProcessGroup repomaker
WSGIPassAuthorization On
<Directory /var/local/repomaker/RepoMaker>
<Directory /var/local/repomaker/repomaker>
<Files wsgi.py>
Require all granted
</Files>

View File

@ -1,2 +0,0 @@
# The name of the default user. Please DO NOT CHANGE
DEFAULT_USER_NAME = 'user'

View File

@ -3,7 +3,7 @@ import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "RepoMaker.settings")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "repomaker.settings")
try:
from django.core.management import execute_from_command_line
except ImportError:

View File

@ -1,5 +1,5 @@
{
"name": "RepoMaker",
"name": "repomaker",
"version": "0.0.1",
"license": "AGPL-3.0",
"repository": {

View File

@ -7,16 +7,16 @@ rm -r media/remote_repo_*
rm -r media/packages
# remove database and move custom migrations out of the way
rm maker/migrations/0*
mv maker/migrations/default_user.py maker/migrations/default_user.py.bak
mv maker/migrations/default_categories.py maker/migrations/default_categories.py.bak
mv maker/migrations/default_remote_repositories.py maker/migrations/default_remote_repositories.py.bak
rm repomaker/migrations/0*
mv repomaker/migrations/default_user.py repomaker/migrations/default_user.py.bak
mv repomaker/migrations/default_categories.py repomaker/migrations/default_categories.py.bak
mv repomaker/migrations/default_remote_repositories.py repomaker/migrations/default_remote_repositories.py.bak
rm db.sqlite3
# initialize database and re-add custom migrations
python3 manage.py makemigrations maker
mv maker/migrations/default_user.py.bak maker/migrations/default_user.py
mv maker/migrations/default_categories.py.bak maker/migrations/default_categories.py
mv maker/migrations/default_remote_repositories.py.bak maker/migrations/default_remote_repositories.py
python3 manage.py makemigrations repomaker
mv repomaker/migrations/default_user.py.bak repomaker/migrations/default_user.py
mv repomaker/migrations/default_categories.py.bak repomaker/migrations/default_categories.py
mv repomaker/migrations/default_remote_repositories.py.bak repomaker/migrations/default_remote_repositories.py
python3 manage.py migrate

38
repomaker/__init__.py Normal file
View File

@ -0,0 +1,38 @@
import os
import sys
# The name of the default user. Please DO NOT CHANGE
DEFAULT_USER_NAME = 'user'
def runserver():
execute([sys.argv[0], 'migrate'])
if len(sys.argv) <= 1 or sys.argv[1] != 'runserver':
sys.argv = sys.argv[:1] + ['runserver'] + sys.argv[1:]
execute(sys.argv)
def process_tasks():
if len(sys.argv) <= 1 or sys.argv[1] != 'process_tasks':
sys.argv = sys.argv[:1] + ['process_tasks'] + sys.argv[1:]
execute(sys.argv)
def execute(params):
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "repomaker.settings")
try:
from django.core.management import execute_from_command_line
except ImportError:
# The above import may fail for some other reason. Ensure that the
# issue is really that Django is missing to avoid masking other
# exceptions on Python 2.
try:
import django
except ImportError:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
)
raise
execute_from_command_line(params)

View File

@ -3,5 +3,5 @@ from __future__ import unicode_literals
from django.apps import AppConfig
class MakerConfig(AppConfig):
name = 'maker'
class RepoMakerConfig(AppConfig):
name = 'repomaker'

View File

@ -1,15 +1,14 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.3 on 2017-07-12 15:35
# Generated by Django 1.11.3 on 2017-07-20 17:21
from __future__ import unicode_literals
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.db.models.manager
import django.utils.timezone
from django.conf import settings
from django.db import migrations, models
import maker.models.storage
import maker.storage
import repomaker.models.storage
import repomaker.storage
class Migration(migrations.Migration):
@ -26,7 +25,7 @@ class Migration(migrations.Migration):
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('package_id', models.CharField(blank=True, max_length=255)),
('file', models.FileField(storage=maker.storage.RepoStorage(), upload_to=maker.storage.get_apk_file_path)),
('file', models.FileField(storage=repomaker.storage.RepoStorage(), upload_to=repomaker.storage.get_apk_file_path)),
('version_name', models.CharField(blank=True, max_length=128)),
('version_code', models.PositiveIntegerField(default=0)),
('size', models.PositiveIntegerField(default=0)),
@ -41,8 +40,8 @@ class Migration(migrations.Migration):
name='ApkPointer',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('file', models.FileField(storage=maker.storage.RepoStorage(), upload_to=maker.storage.get_apk_file_path)),
('apk', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='maker.Apk')),
('file', models.FileField(storage=repomaker.storage.RepoStorage(), upload_to=repomaker.storage.get_apk_file_path)),
('apk', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='repomaker.Apk')),
],
options={
'abstract': False,
@ -58,14 +57,14 @@ class Migration(migrations.Migration):
('description_override', models.TextField(blank=True)),
('author_name', models.CharField(blank=True, max_length=255)),
('website', models.URLField(blank=True, max_length=2048)),
('icon', models.ImageField(default='default-app-icon.png', upload_to=maker.storage.get_icon_file_path_for_app)),
('icon', models.ImageField(default='default-app-icon.png', upload_to=repomaker.storage.get_icon_file_path_for_app)),
('added_date', models.DateTimeField(default=django.utils.timezone.now)),
('type', models.CharField(choices=[('apk', 'APK'), ('book', 'Book'), ('document', 'Document'), ('image', 'Image'), ('audio', 'Audio'), ('video', 'Video'), ('other', 'Other')], default='apk', max_length=16)),
('last_updated_date', models.DateTimeField(auto_now=True)),
],
options={
'ordering': ['added_date'],
'abstract': False,
'ordering': ['added_date'],
},
managers=[
('objects', django.db.models.manager.Manager()),
@ -78,17 +77,17 @@ class Migration(migrations.Migration):
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('summary', models.CharField(blank=True, max_length=255)),
('description', models.TextField(blank=True)),
('feature_graphic', models.ImageField(blank=True, max_length=1024, upload_to=maker.storage.get_graphic_asset_file_path)),
('high_res_icon', models.ImageField(blank=True, max_length=1024, upload_to=maker.storage.get_graphic_asset_file_path)),
('tv_banner', models.ImageField(blank=True, max_length=1024, upload_to=maker.storage.get_graphic_asset_file_path)),
('feature_graphic', models.ImageField(blank=True, max_length=1024, upload_to=repomaker.storage.get_graphic_asset_file_path)),
('high_res_icon', models.ImageField(blank=True, max_length=1024, upload_to=repomaker.storage.get_graphic_asset_file_path)),
('tv_banner', models.ImageField(blank=True, max_length=1024, upload_to=repomaker.storage.get_graphic_asset_file_path)),
('language_code', models.CharField(db_index=True, max_length=15)),
('master', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, related_name='translations', to='maker.App')),
('master', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, related_name='translations', to='repomaker.App')),
],
options={
'abstract': False,
'db_table': 'repomaker_app_translation',
'managed': True,
'db_tablespace': '',
'abstract': False,
'db_table': 'maker_app_translation',
'default_permissions': (),
},
),
@ -107,9 +106,9 @@ class Migration(migrations.Migration):
name='GitStorage',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('host', models.CharField(max_length=256, validators=[maker.models.storage.HostnameValidator()])),
('path', models.CharField(max_length=512, validators=[maker.models.storage.PathValidator()])),
('identity_file', models.FileField(blank=True, storage=maker.storage.PrivateStorage(), upload_to=maker.storage.get_identity_file_path)),
('host', models.CharField(max_length=256, validators=[repomaker.models.storage.HostnameValidator()])),
('path', models.CharField(max_length=512, validators=[repomaker.models.storage.PathValidator()])),
('identity_file', models.FileField(blank=True, storage=repomaker.storage.PrivateStorage(), upload_to=repomaker.storage.get_identity_file_path)),
('public_key', models.TextField(blank=True, null=True)),
('url', models.URLField(max_length=2048)),
('disabled', models.BooleanField(default=True)),
@ -123,7 +122,7 @@ class Migration(migrations.Migration):
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('url', models.URLField(max_length=2048)),
('apk', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='maker.Apk')),
('apk', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='repomaker.Apk')),
],
options={
'abstract': False,
@ -139,15 +138,15 @@ class Migration(migrations.Migration):
('description_override', models.TextField(blank=True)),
('author_name', models.CharField(blank=True, max_length=255)),
('website', models.URLField(blank=True, max_length=2048)),
('icon', models.ImageField(default='default-app-icon.png', upload_to=maker.storage.get_icon_file_path_for_app)),
('icon', models.ImageField(default='default-app-icon.png', upload_to=repomaker.storage.get_icon_file_path_for_app)),
('added_date', models.DateTimeField(default=django.utils.timezone.now)),
('icon_etag', models.CharField(blank=True, max_length=128, null=True)),
('last_updated_date', models.DateTimeField(blank=True)),
('category', models.ManyToManyField(blank=True, to='maker.Category')),
('category', models.ManyToManyField(blank=True, to='repomaker.Category')),
],
options={
'ordering': ['added_date'],
'abstract': False,
'ordering': ['added_date'],
},
managers=[
('objects', django.db.models.manager.Manager()),
@ -167,13 +166,13 @@ class Migration(migrations.Migration):
('tv_banner_url', models.URLField(blank=True, max_length=2048)),
('tv_banner_etag', models.CharField(blank=True, max_length=128, null=True)),
('language_code', models.CharField(db_index=True, max_length=15)),
('master', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, related_name='translations', to='maker.RemoteApp')),
('master', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, related_name='translations', to='repomaker.RemoteApp')),
],
options={
'abstract': False,
'db_table': 'repomaker_remoteapp_translation',
'managed': True,
'db_tablespace': '',
'abstract': False,
'db_table': 'maker_remoteapp_translation',
'default_permissions': (),
},
),
@ -184,7 +183,7 @@ class Migration(migrations.Migration):
('name', models.CharField(max_length=255)),
('description', models.TextField()),
('url', models.URLField(blank=True, max_length=2048, null=True)),
('icon', models.ImageField(default='default-repo-icon.png', upload_to=maker.storage.get_icon_file_path)),
('icon', models.ImageField(default='default-repo-icon.png', upload_to=repomaker.storage.get_icon_file_path)),
('public_key', models.TextField(blank=True)),
('fingerprint', models.CharField(blank=True, max_length=512)),
('update_scheduled', models.BooleanField(default=False)),
@ -210,7 +209,7 @@ class Migration(migrations.Migration):
('language_code', models.CharField(default='en', max_length=32)),
('type', models.CharField(choices=[('phoneScreenshots', 'Phone'), ('sevenInchScreenshots', "7'' Tablet"), ('tenInchScreenshots', "10'' Tablet"), ('tvScreenshots', 'TV'), ('wearScreenshots', 'Wearable')], default='phoneScreenshots', max_length=32)),
('url', models.URLField(max_length=2048)),
('app', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='maker.RemoteApp')),
('app', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='repomaker.RemoteApp')),
],
options={
'abstract': False,
@ -223,13 +222,13 @@ class Migration(migrations.Migration):
('name', models.CharField(max_length=255)),
('description', models.TextField()),
('url', models.URLField(blank=True, max_length=2048, null=True)),
('icon', models.ImageField(default='default-repo-icon.png', upload_to=maker.storage.get_icon_file_path)),
('icon', models.ImageField(default='default-repo-icon.png', upload_to=repomaker.storage.get_icon_file_path)),
('public_key', models.TextField(blank=True)),
('fingerprint', models.CharField(blank=True, max_length=512)),
('update_scheduled', models.BooleanField(default=False)),
('is_updating', models.BooleanField(default=False)),
('last_updated_date', models.DateTimeField(auto_now=True)),
('qrcode', models.ImageField(blank=True, upload_to=maker.storage.get_repo_file_path)),
('qrcode', models.ImageField(blank=True, upload_to=repomaker.storage.get_repo_file_path)),
('key_store_pass', models.CharField(max_length=64)),
('key_pass', models.CharField(max_length=64)),
('created_date', models.DateTimeField(default=django.utils.timezone.now)),
@ -250,7 +249,7 @@ class Migration(migrations.Migration):
('bucket', models.CharField(max_length=128)),
('accesskeyid', models.CharField(max_length=128)),
('secretkey', models.CharField(max_length=255)),
('repo', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='maker.Repository')),
('repo', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='repomaker.Repository')),
],
options={
'abstract': False,
@ -262,8 +261,8 @@ class Migration(migrations.Migration):
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('language_code', models.CharField(default='en', max_length=32)),
('type', models.CharField(choices=[('phoneScreenshots', 'Phone'), ('sevenInchScreenshots', "7'' Tablet"), ('tenInchScreenshots', "10'' Tablet"), ('tvScreenshots', 'TV'), ('wearScreenshots', 'Wearable')], default='phoneScreenshots', max_length=32)),
('file', models.ImageField(max_length=1024, storage=maker.storage.RepoStorage(), upload_to=maker.storage.get_screenshot_file_path)),
('app', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='maker.App')),
('file', models.ImageField(max_length=1024, storage=repomaker.storage.RepoStorage(), upload_to=repomaker.storage.get_screenshot_file_path)),
('app', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='repomaker.App')),
],
options={
'abstract': False,
@ -273,14 +272,14 @@ class Migration(migrations.Migration):
name='SshStorage',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('host', models.CharField(max_length=256, validators=[maker.models.storage.HostnameValidator()])),
('path', models.CharField(max_length=512, validators=[maker.models.storage.PathValidator()])),
('identity_file', models.FileField(blank=True, storage=maker.storage.PrivateStorage(), upload_to=maker.storage.get_identity_file_path)),
('host', models.CharField(max_length=256, validators=[repomaker.models.storage.HostnameValidator()])),
('path', models.CharField(max_length=512, validators=[repomaker.models.storage.PathValidator()])),
('identity_file', models.FileField(blank=True, storage=repomaker.storage.PrivateStorage(), upload_to=repomaker.storage.get_identity_file_path)),
('public_key', models.TextField(blank=True, null=True)),
('url', models.URLField(max_length=2048)),
('disabled', models.BooleanField(default=True)),
('username', models.CharField(max_length=64, validators=[maker.models.storage.UsernameValidator()])),
('repo', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='maker.Repository')),
('username', models.CharField(max_length=64, validators=[repomaker.models.storage.UsernameValidator()])),
('repo', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='repomaker.Repository')),
],
options={
'abstract': False,
@ -289,37 +288,37 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='remoteapp',
name='repo',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='maker.RemoteRepository'),
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='repomaker.RemoteRepository'),
),
migrations.AddField(
model_name='remoteapkpointer',
name='app',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='maker.RemoteApp'),
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='repomaker.RemoteApp'),
),
migrations.AddField(
model_name='gitstorage',
name='repo',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='maker.Repository'),
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='repomaker.Repository'),
),
migrations.AddField(
model_name='app',
name='category',
field=models.ManyToManyField(blank=True, to='maker.Category'),
field=models.ManyToManyField(blank=True, to='repomaker.Category'),
),
migrations.AddField(
model_name='app',
name='repo',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='maker.Repository'),
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='repomaker.Repository'),
),
migrations.AddField(
model_name='apkpointer',
name='app',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='maker.App'),
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='repomaker.App'),
),
migrations.AddField(
model_name='apkpointer',
name='repo',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='maker.Repository'),
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='repomaker.Repository'),
),
migrations.AlterUniqueTogether(
name='remoteapptranslation',

View File

@ -11,7 +11,7 @@ DEFAULT_CATEGORIES = [
def forwards_func(apps, schema_editor):
# noinspection PyPep8Naming
Category = apps.get_model("maker", "Category")
Category = apps.get_model("repomaker", "Category")
db_alias = schema_editor.connection.alias
Category.objects.using(db_alias).bulk_create(
[Category(user=None, name=name) for name in DEFAULT_CATEGORIES])
@ -19,7 +19,7 @@ def forwards_func(apps, schema_editor):
def reverse_func(apps, schema_editor):
# noinspection PyPep8Naming
Category = apps.get_model("maker", "Category")
Category = apps.get_model("repomaker", "Category")
db_alias = schema_editor.connection.alias
for name in DEFAULT_CATEGORIES:
Category.objects.using(db_alias).filter(user=None, name=name).delete()
@ -28,7 +28,7 @@ def reverse_func(apps, schema_editor):
class Migration(migrations.Migration):
dependencies = [
('maker', 'default_user'),
('repomaker', 'default_user'),
]
operations = [

View File

@ -6,12 +6,12 @@ from background_task.tasks import Task
from django.db import migrations
from django.utils import timezone
from maker import tasks
from repomaker import tasks
# noinspection PyPep8Naming
def forwards_func(apps, schema_editor):
RemoteRepository = apps.get_model("maker", "RemoteRepository")
RemoteRepository = apps.get_model("repomaker", "RemoteRepository")
User = apps.get_model("auth", "User")
db_alias = schema_editor.connection.alias
@ -46,7 +46,7 @@ def forwards_func(apps, schema_editor):
def reverse_func(apps, schema_editor):
# noinspection PyPep8Naming
RemoteRepository = apps.get_model("maker", "RemoteRepository")
RemoteRepository = apps.get_model("repomaker", "RemoteRepository")
db_alias = schema_editor.connection.alias
RemoteRepository.objects.using(db_alias).filter(pre_installed=True).delete()
@ -55,7 +55,7 @@ class Migration(migrations.Migration):
dependencies = [
('background_task', '0001_initial'),
('maker', 'default_categories'),
('repomaker', 'default_categories'),
]
operations = [

View File

@ -3,7 +3,7 @@ from __future__ import unicode_literals
from django.conf import settings
from django.db import migrations
from maker import DEFAULT_USER_NAME
from repomaker import DEFAULT_USER_NAME
def forwards_func(apps, schema_editor):
@ -29,7 +29,7 @@ class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('maker', '0001_initial'),
('repomaker', '0001_initial'),
]
operations = [

View File

@ -14,9 +14,9 @@ from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
from fdroidserver import common, exception, update
from maker import tasks
from maker.models.repository import AbstractRepository
from maker.storage import get_apk_file_path, RepoStorage
from repomaker import tasks
from repomaker.models.repository import AbstractRepository
from repomaker.storage import get_apk_file_path, RepoStorage
from .apkpointer import ApkPointer, RemoteApkPointer
from .app import OTHER, IMAGE, VIDEO, AUDIO, DOCUMENT, BOOK, APK

View File

@ -11,7 +11,7 @@ from django.utils.translation import ugettext_lazy as _
from fdroidserver import update
from fdroidserver.update import get_all_icon_dirs
from maker.storage import get_apk_file_path, RepoStorage
from repomaker.storage import get_apk_file_path, RepoStorage
from .app import App
from .remoteapp import RemoteApp
from .repository import Repository
@ -152,7 +152,7 @@ class RemoteApkPointer(AbstractApkPointer):
@receiver(post_delete, sender=ApkPointer)
def apk_pointer_post_delete_handler(**kwargs):
from maker.models import Apk
from repomaker.models import Apk
apk_pointer = kwargs['instance']
logging.info("Deleting APK Pointer: %s", apk_pointer.file.name)
apk_pointer.file.delete(save=False)
@ -166,7 +166,7 @@ def apk_pointer_post_delete_handler(**kwargs):
@receiver(post_delete, sender=RemoteApkPointer)
def remote_apk_pointer_post_delete_handler(**kwargs):
from maker.models import Apk
from repomaker.models import Apk
remote_apk_pointer = kwargs['instance']
logging.info("Deleting Remote APK Pointer: %s", remote_apk_pointer)
try:

View File

@ -13,8 +13,8 @@ from fdroidserver import metadata, net
from hvad.models import TranslatableModel, TranslatedFields
from hvad.utils import load_translation
from maker.storage import get_icon_file_path_for_app, get_graphic_asset_file_path
from maker.utils import clean, to_universal_language_code
from repomaker.storage import get_icon_file_path_for_app, get_graphic_asset_file_path
from repomaker.utils import clean, to_universal_language_code
from .category import Category
from .repository import Repository

View File

@ -12,8 +12,8 @@ from django.utils.translation import ugettext_lazy as _
from fdroidserver import net
from hvad.models import TranslatedFields
from maker import tasks
from maker.utils import clean
from repomaker import tasks
from repomaker.utils import clean
from .app import AbstractApp
from .category import Category
from .remoterepository import RemoteRepository
@ -158,7 +158,7 @@ class RemoteApp(AbstractApp):
self.save()
def _update_screenshots(self, localized):
from maker.models import RemoteScreenshot
from repomaker.models import RemoteScreenshot
for original_language_code, types in localized.items():
# store language code in lower-case, because in Django they are all lower-case as well
language_code = original_language_code.lower()

View File

@ -13,10 +13,10 @@ from django.dispatch import receiver
from django.utils import timezone
from fdroidserver import index, net
from maker import tasks
from maker.models.repository import AbstractRepository
from maker.storage import get_remote_repo_path
from maker.utils import clean
from repomaker import tasks
from repomaker.models.repository import AbstractRepository
from repomaker.storage import get_remote_repo_path
from repomaker.utils import clean
class RemoteRepository(AbstractRepository):
@ -116,7 +116,7 @@ class RemoteRepository(AbstractRepository):
self.icon.save(icon_name, BytesIO(icon), save=False)
def _update_apps(self, apps, packages):
from maker.models.remoteapp import RemoteApp
from repomaker.models.remoteapp import RemoteApp
# update the apps from this repo and remember all package names we have seen
package_names = []
for app in apps:
@ -145,7 +145,7 @@ class RemoteRepository(AbstractRepository):
self._remove_old_apps(package_names)
def _update_package(self, app, package_info):
from maker.models import Apk, RemoteApkPointer
from repomaker.models import Apk, RemoteApkPointer
apks = Apk.objects.filter(package_id=package_info['packageName'], hash=package_info['hash'])
if apks.exists():
@ -166,7 +166,7 @@ class RemoteRepository(AbstractRepository):
:param packages: A list of package names that should not be removed
"""
from maker.models.remoteapp import RemoteApp
from repomaker.models.remoteapp import RemoteApp
old_apps = RemoteApp.objects.filter(repo=self)
for app in old_apps.all():
if app.package_id not in packages:

View File

@ -16,8 +16,8 @@ from django.urls import reverse
from django.utils import timezone
from fdroidserver import common, index, server, update
from maker import tasks
from maker.storage import REPO_DIR, get_repo_file_path, get_repo_root_path, \
from repomaker import tasks
from repomaker.storage import REPO_DIR, get_repo_file_path, get_repo_root_path, \
get_icon_file_path
@ -182,11 +182,11 @@ class Repository(AbstractRepository):
return
# Render page to string
repo_page_string = render_to_string('maker/repo_page/index.html', {'repo': self})
repo_page_string = render_to_string('repomaker/repo_page/index.html', {'repo': self})
repo_page_string = repo_page_string.replace('/static/maker/css/repo/', 'assets/')
# Render qr_code page to string
qr_page_string = render_to_string('maker/repo_page/qr_code.html', {'repo': self})
qr_page_string = render_to_string('repomaker/repo_page/qr_code.html', {'repo': self})
qr_page_string = qr_page_string.replace('/static/maker/css/repo/', '')
with open(os.path.join(self.get_repo_path(), 'index.html'), 'w', encoding='utf8') as f:
@ -212,7 +212,7 @@ class Repository(AbstractRepository):
(os.path.join(settings.NODE_MODULES_ROOT, 'material-design-lite', 'material.min.js'),
os.path.join(repo_page_assets, 'material.min.js')),
# Stylesheet
(os.path.join(settings.STATIC_ROOT, 'maker', 'css', 'repo', 'page.css'),
(os.path.join(settings.STATIC_ROOT, 'repomaker', 'css', 'repo', 'page.css'),
os.path.join(repo_page_assets, 'page.css')),
]
@ -231,7 +231,7 @@ class Repository(AbstractRepository):
# Add page graphic assets to files
icons = ['f-droid.png', 'twitter.png', 'facebook.png']
icon_path = os.path.join(settings.BASE_DIR, 'maker', 'static', 'maker', 'images',
icon_path = os.path.join(settings.BASE_DIR, 'repomaker', 'static', 'repomaker', 'images',
'repo_page')
for icon in icons:
source = os.path.join(icon_path, icon)
@ -265,8 +265,8 @@ class Repository(AbstractRepository):
You normally don't need to call this directly
as it is meant to be run in a background task scheduled by update_async().
"""
from maker.models import App, ApkPointer
from maker.models.storage import StorageManager
from repomaker.models import App, ApkPointer
from repomaker.models.storage import StorageManager
self.chdir()
config = self.get_config()
StorageManager.add_to_config(self, config)
@ -341,7 +341,7 @@ class Repository(AbstractRepository):
You normally don't need to call this manually
as it is intended to be called automatically after each update.
"""
from maker.models.storage import StorageManager
from repomaker.models.storage import StorageManager
remote_storage = StorageManager.get_storage(self, onlyEnabled=True)
if len(remote_storage) == 0:
return # bail out if there is no remote storage to publish to

View File

@ -8,9 +8,9 @@ from django.db.models.signals import post_delete
from django.dispatch import receiver
from django.utils.translation import ugettext_lazy as _
from maker import tasks
from maker.storage import get_screenshot_file_path, RepoStorage
from maker.utils import to_universal_language_code
from repomaker import tasks
from repomaker.storage import get_screenshot_file_path, RepoStorage
from repomaker.utils import to_universal_language_code
from .app import App
from .remoteapp import RemoteApp

View File

@ -17,7 +17,7 @@ from django.utils.translation import ugettext_lazy as _
from fdroidserver import server
from libcloud.storage.types import Provider
from maker.storage import get_identity_file_path, PrivateStorage, REPO_DIR, get_repo_root_path
from repomaker.storage import get_identity_file_path, PrivateStorage, REPO_DIR, get_repo_root_path
from .repository import Repository
UL = '\u00a1-\uffff' # unicode letters range (must be a unicode string, not a raw string)

View File

@ -1,5 +1,5 @@
"""
Django settings for RepoMaker project.
Django settings for repomaker project.
For more information on this file, see
https://docs.djangoproject.com/en/dev/topics/settings/
@ -11,8 +11,8 @@ https://docs.djangoproject.com/en/dev/ref/settings/
import logging
import os
from django.utils.translation import ugettext_lazy
from django.conf import global_settings
from django.utils.translation import ugettext_lazy
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
@ -67,7 +67,7 @@ APP_DEFAULT_ICON = "default-app-icon.png"
# Application definition
INSTALLED_APPS = [
'maker.apps.MakerConfig',
'repomaker.apps.RepoMakerConfig',
'sass_processor',
'background_task',
'hvad', # model i18n
@ -113,9 +113,9 @@ if not SINGLE_USER_MODE:
'allauth.account.auth_backends.AuthenticationBackend',
)
ACCOUNT_FORMS = {
'login': 'maker.views.RmLoginForm',
'reset_password': 'maker.views.RmResetPasswordForm',
'signup': 'maker.views.RmSignupForm',
'login': 'repomaker.views.RmLoginForm',
'reset_password': 'repomaker.views.RmResetPasswordForm',
'signup': 'repomaker.views.RmSignupForm',
}
ACCOUNT_EMAIL_VERIFICATION = "none"
@ -131,7 +131,7 @@ MIDDLEWARE = [
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'RepoMaker.urls'
ROOT_URLCONF = 'repomaker.urls'
TEMPLATES = [
{
@ -144,14 +144,14 @@ TEMPLATES = [
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'maker.context_processors.site_notice',
'repomaker.context_processors.site_notice',
],
},
},
]
FORM_RENDERER = 'django.forms.renderers.TemplatesSetting'
WSGI_APPLICATION = 'RepoMaker.wsgi.application'
WSGI_APPLICATION = 'repomaker.wsgi.application'
# Password validation
# https://docs.djangoproject.com/en/dev/ref/settings/#auth-password-validators

View File

@ -2,7 +2,7 @@
$material-design-icons-font-path: unquote(get-setting(NODE_MODULES_URL) + 'material-design-icons-iconfont/dist/fonts/');
$roboto-font-path: unquote(get-setting(NODE_MODULES_URL) + "roboto-fontface/fonts");
$image_path: unquote(get-setting(NODE_MODULES_URL) + 'material-design-lite/dist/images/');
$socialaccount_provider_url: unquote(get-setting(STATIC_URL) + 'maker/images/socialaccount_providers/');
$socialaccount_provider_url: unquote(get-setting(STATIC_URL) + 'repomaker/images/socialaccount_providers/');
// Colors
$rm-blue: #0066CC;

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 564 B

After

Width:  |  Height:  |  Size: 564 B

View File

Before

Width:  |  Height:  |  Size: 730 B

After

Width:  |  Height:  |  Size: 730 B

View File

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

View File

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

Before

Width:  |  Height:  |  Size: 540 B

After

Width:  |  Height:  |  Size: 540 B

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

Before

Width:  |  Height:  |  Size: 994 B

After

Width:  |  Height:  |  Size: 994 B

View File

Before

Width:  |  Height:  |  Size: 729 B

After

Width:  |  Height:  |  Size: 729 B

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Before

Width:  |  Height:  |  Size: 945 B

After

Width:  |  Height:  |  Size: 945 B

View File

@ -88,7 +88,7 @@ function back(event) {
event.preventDefault()
/* FIXME: DO NOT hardcode URLs!!! */
var url = '/repo/' + window.repoId + '/app/add/'
var url = '/' + window.repoId + '/app/add/'
var request = new XMLHttpRequest()
request.onreadystatechange = function() {
if (request.readyState === 4) {
@ -110,7 +110,7 @@ function appsAdded(request) {
}
/* FIXME: DO NOT hardcode URLs!!! */
window.location = '/repo/' + window.repoId
window.location = '/' + window.repoId
}
else {
showError(request.responseText)

View File

@ -132,11 +132,12 @@ function putAppInformation(jsonHtmlRelation, app, appCard) {
element.classList.add(rel)
var appId = app[jsonHtmlRelation[rel]]
var repoId = window.location.href.split('/')[4]
var repoId = window.location.href.split('/')[3] /* FIXME: DO NOT rely on URLs!!! */
var remoteRepoId = app['repo_id']
element.id = rel + '--' + appId
element.href = '/repo/' + repoId + '/app/remote/' + remoteRepoId + '/add/' + appId
/* FIXME: DO NOT hardcode URLs!!! */
element.href = '/' + repoId + '/remote-app/' + remoteRepoId + '/add/' + appId
element.addEventListener('click', function(event) {
addRemoteApp(event, parseInt(repoId), remoteRepoId, appId)
})
@ -175,7 +176,7 @@ function putAppInformation(jsonHtmlRelation, app, appCard) {
var repoId = appCard.pathname.split('/')[2]
var appId = app[jsonHtmlRelation[rel]]
/* FIXME: DO NOT hardcode URLs!!! */
var url = '/repo/' + repoId + '/app/' + appId
var url = '/' + repoId + '/app/' + appId
appCard.href = url
continue
}
@ -194,12 +195,12 @@ function putAppInformation(jsonHtmlRelation, app, appCard) {
appCard.classList.remove('rm-app-card--no-hover')
appCard.classList.add('rm-app-card')
}
var repoId = window.location.href.split('/')[4]
var repoId = window.location.href.split('/')[3] /* FIXME: DO NOT rely on URLs!!! */
var remoteRepoId = app['repo_id']
var appId = app[jsonHtmlRelation[rel]]
var lang = app['lang']
/* FIXME: DO NOT hardcode URLs!!! */
var url = '/repo/' + repoId + '/remote-app/' + remoteRepoId + '/' + appId + '/lang/' + lang
var url = '/' + repoId + '/remote-app/' + remoteRepoId + '/' + appId + '/lang/' + lang
// Add on-click listener and remove HTML attribute
appCard.addEventListener('click', function(event) {

View File

@ -4,7 +4,7 @@ import re
from django.conf import settings
from django.core.files.storage import FileSystemStorage
from maker.utils import to_universal_language_code
from repomaker.utils import to_universal_language_code
REPO_DIR = 'repo'

View File

@ -7,13 +7,13 @@ from django.core.exceptions import ObjectDoesNotExist
from django.dispatch import receiver
from django.utils import timezone
import maker.models
import repomaker.models
@background(schedule=timezone.now())
def update_repo(repo_id):
try:
repo = maker.models.repository.Repository.objects.get(pk=repo_id)
repo = repomaker.models.Repository.objects.get(pk=repo_id)
except ObjectDoesNotExist as e:
logging.warning('Repository does not exist anymore, dropping task. (%s)', e)
return
@ -35,7 +35,7 @@ def update_repo(repo_id):
@background(schedule=timezone.now())
def update_remote_repo(remote_repo_id):
try:
remote_repo = maker.models.remoterepository.RemoteRepository.objects.get(pk=remote_repo_id)
remote_repo = repomaker.models.RemoteRepository.objects.get(pk=remote_repo_id)
except ObjectDoesNotExist as e:
logging.warning('Remote Repository does not exist anymore, dropping task. (%s)', e)
# TODO cancel repeating task
@ -57,7 +57,7 @@ def update_remote_repo(remote_repo_id):
@background(schedule=timezone.now())
def download_apk(apk_id, url):
try:
apk = maker.models.apk.Apk.objects.get(pk=apk_id)
apk = repomaker.models.Apk.objects.get(pk=apk_id)
except ObjectDoesNotExist as e:
logging.warning('APK does not exist anymore, dropping task. (%s)', e)
return
@ -77,12 +77,12 @@ def download_apk(apk_id, url):
@background(schedule=timezone.now())
def download_remote_graphic_assets(app_id, remote_app_id):
try:
app = maker.models.app.App.objects.get(pk=app_id)
app = repomaker.models.App.objects.get(pk=app_id)
except ObjectDoesNotExist as e:
logging.warning('App does not exist anymore, dropping task. (%s)', e)
return
try:
remote_app = maker.models.remoteapp.RemoteApp.objects.get(pk=remote_app_id)
remote_app = repomaker.models.RemoteApp.objects.get(pk=remote_app_id)
except ObjectDoesNotExist as e:
logging.warning('Remote App does not exist anymore, dropping task. (%s)', e)
return
@ -92,7 +92,7 @@ def download_remote_graphic_assets(app_id, remote_app_id):
@background(schedule=timezone.now())
def download_remote_screenshot(screenshot_id, app_id):
try:
screenshot = maker.models.screenshot.RemoteScreenshot.objects.get(pk=screenshot_id)
screenshot = repomaker.models.RemoteScreenshot.objects.get(pk=screenshot_id)
screenshot.download(app_id)
except ObjectDoesNotExist as e:
logging.warning('Remote Screenshot does not exist anymore, dropping task. (%s)', e)
@ -102,13 +102,13 @@ def download_remote_screenshot(screenshot_id, app_id):
def task_failed_receiver(**kwargs):
task = kwargs['completed_task']
if task.task_name == 'maker.tasks.update_remote_repo':
if task.task_name == 'repomaker.tasks.update_remote_repo':
# extract task parameters
task_params = json.loads(task.task_params)
params = task_params[0]
remote_repo_id = params[0]
# fetch and disable remote repository
remote_repo = maker.models.remoterepository.RemoteRepository.objects.get(pk=remote_repo_id)
remote_repo = repomaker.models.RemoteRepository.objects.get(pk=remote_repo_id)
remote_repo.disabled = True
remote_repo.save()

View File

@ -1,4 +1,4 @@
{% extends "maker/base.html" %}
{% extends "repomaker/base.html" %}
{% load i18n %}
{% load sass_tags %}

View File

@ -1,4 +1,4 @@
{% extends "maker/base_modal.html" %}
{% extends "repomaker/base_modal.html" %}
{% load i18n %}
{% load sass_tags %}

View File

@ -1,4 +1,4 @@
{% extends "maker/base_modal.html" %}
{% extends "repomaker/base_modal.html" %}
{% load i18n %}
{% block title %}{% trans 'Logout' %}{% endblock title %}

View File

@ -1,4 +1,4 @@
{% extends "maker/base_modal.html" %}
{% extends "repomaker/base_modal.html" %}
{% load i18n %}
{% block title %}{% trans 'Forgot Password' %}{% endblock title %}
@ -18,7 +18,7 @@
<form class="rm-form mdl-grid" action="" enctype="multipart/form-data" method="post">
{% csrf_token %}
{% include 'maker/form.html' %}
{% include 'repomaker/form.html' %}
<input type="submit" value="{% trans 'submit' %}"/>
</form>
</div>

View File

@ -1,4 +1,4 @@
{% extends "maker/base_modal.html" %}
{% extends "repomaker/base_modal.html" %}
{% load i18n %}
{% block title %}{% trans 'Forgot Password' %}{% endblock title %}

View File

@ -5,7 +5,7 @@
{% if redirect_field_value %}
<input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}"/>
{% endif %}
{% include 'maker/form.html' %}
{% include 'repomaker/form.html' %}
<div class="mdl-cell mdl-cell--12-col">
<input type="submit" class="rm-button--blue" value="{% trans 'Signup' %}">
</div>

View File

@ -1,4 +1,4 @@
{% extends "maker/base_modal.html" %}
{% extends "repomaker/base_modal.html" %}
{% load i18n %}
{% block title %}{% trans 'Delete App Version' %}{% endblock %}

View File

@ -1,4 +1,4 @@
{% extends "maker/base_modal.html" %}
{% extends "repomaker/base_modal.html" %}
{% load i18n %}
{% block title %}{% trans 'Delete App' %}{% endblock %}

View File

@ -1,4 +1,4 @@
{% extends "maker/app/index.html" %}
{% extends "repomaker/app/index.html" %}
{% load i18n %}
{% load static %}
@ -205,5 +205,5 @@
{% block page-footer %}
</form>
<script src="{% static 'maker/js/app/edit.js' %}"></script>
<script src="{% static 'repomaker/js/app/edit.js' %}"></script>
{% endblock page-footer %}

View File

@ -1,4 +1,4 @@
{% extends "maker/base_modal.html" %}
{% extends "repomaker/base_modal.html" %}
{% load i18n %}
{% load humanize %}

View File

@ -1,4 +1,4 @@
{% extends "maker/app/index.html" %}
{% extends "repomaker/app/index.html" %}
{% load i18n %}
{% load static %}
@ -54,6 +54,6 @@
{% block apks %}{% endblock apks %}
{% block page-footer %}
<script src="{% static 'maker/js/app/add.js' %}"></script>
<script src="{% static 'maker/js/app/remote_add.js' %}"></script>
<script src="{% static 'repomaker/js/app/add.js' %}"></script>
<script src="{% static 'repomaker/js/app/remote_add.js' %}"></script>
{% endblock page-footer %}

View File

@ -1,4 +1,4 @@
{% extends "maker/base.html" %}
{% extends "repomaker/base.html" %}
{% load i18n %}
{% block title %}{% trans 'Add Screenshot' %}{% endblock %}

View File

@ -1,4 +1,4 @@
{% extends "maker/base_modal.html" %}
{% extends "repomaker/base_modal.html" %}
{% load i18n %}
{% block title %}{% trans 'Delete Screenshot' %}{% endblock %}

View File

@ -1,4 +1,4 @@
{% extends "maker/app/edit.html" %}
{% extends "repomaker/app/edit.html" %}
{% load i18n %}
{% block back-button %}

View File

@ -7,7 +7,7 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Repo Maker - {% block title %}{% endblock %}</title>
<link href="{% sass_src 'maker/css/styles.scss' %}" rel="stylesheet" type="text/css" media="all">
<link href="{% sass_src 'repomaker/css/styles.scss' %}" rel="stylesheet" type="text/css" media="all">
<script src="{% url 'javascript-catalog' %}"></script>
{% block head %}{% endblock head %}
</head>
@ -51,7 +51,7 @@
<main class="mdl-layout__content">
{% block rm-content--without-margin %}
{% include 'maker/widgets/site_notice.html' %}
{% include 'repomaker/widgets/site_notice.html' %}
{% endblock rm-content--without-margin %}
<div class="rm-content">{% block rm-content %}{% endblock %}</div>
</main>
@ -64,7 +64,7 @@
This is due to a bug in MDL: https://github.com/google/material-design-lite/issues/1502
Remove when migrating to another library
-->
<script src="{% static 'maker/js/no-invalid-by-default.js' %}"></script>
<script src="{% static 'repomaker/js/no-invalid-by-default.js' %}"></script>
{% endif %}
</body>
</html>

View File

@ -1,4 +1,4 @@
{% extends "maker/base.html" %}
{% extends "repomaker/base.html" %}
{% block rm-header-classes %}rm-header--light{% endblock rm-header-classes %}

View File

@ -1,4 +1,4 @@
{% extends "maker/base_modal.html" %}
{% extends "repomaker/base_modal.html" %}
{% load i18n %}
{% block title %}{% trans 'Please Wait!' %}{% endblock title %}

View File

@ -1,4 +1,4 @@
{% extends "maker/base_modal.html" %}
{% extends "repomaker/base_modal.html" %}
{% load i18n %}
{% block title %}{% trans 'Error' %}{% endblock title %}

Some files were not shown because too many files have changed in this diff Show More