[copr] master: Join-select the mock_chroots when listing coprs - do a little coding style cleanup while at it (6a2a51a)
by bkabrda@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit 6a2a51ae238add3d6c354070775276ca33e473ac
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Fri Jan 25 13:34:11 2013 +0100
Join-select the mock_chroots when listing coprs
- do a little coding style cleanup while at it
>---------------------------------------------------------------
.../coprs/views/coprs_ns/coprs_general.py | 17 ++++++++++-------
1 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/coprs_frontend/coprs/views/coprs_ns/coprs_general.py b/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
index 662246e..79467dd 100644
--- a/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
+++ b/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
@@ -17,8 +17,8 @@ from coprs.logic import coprs_logic
@coprs_ns.route('/', defaults = {'page': 1})
@coprs_ns.route('/<int:page>/')
-def coprs_show(page = 1):
- query = coprs_logic.CoprsLogic.get_multiple(flask.g.user)
+def coprs_show(page=1):
+ query = coprs_logic.CoprsLogic.get_multiple(flask.g.user, with_mock_chroots=True)
paginator = helpers.Paginator(query, query.count(), page)
coprs = paginator.sliced_query
@@ -27,7 +27,7 @@ def coprs_show(page = 1):
@coprs_ns.route('/owned/<username>/', defaults = {'page': 1})
@coprs_ns.route('/owned/<username>/<int:page>/')
-def coprs_by_owner(username = None, page = 1):
+def coprs_by_owner(username=None, page=1):
query = coprs_logic.CoprsLogic.get_multiple(flask.g.user,
user_relation='owned',
username=username,
@@ -35,17 +35,20 @@ def coprs_by_owner(username = None, page = 1):
paginator = helpers.Paginator(query, query.count(), page)
coprs = paginator.sliced_query
- return flask.render_template('coprs/show.html', coprs = coprs, paginator = paginator)
+ return flask.render_template('coprs/show.html', coprs=coprs, paginator=paginator)
@coprs_ns.route('/allowed/<username>/', defaults = {'page': 1})
@coprs_ns.route('/allowed/<username>/<int:page>/')
-def coprs_by_allowed(username = None, page = 1):
- query = coprs_logic.CoprsLogic.get_multiple(flask.g.user, user_relation = 'allowed', username = username)
+def coprs_by_allowed(username=None, page=1):
+ query = coprs_logic.CoprsLogic.get_multiple(flask.g.user,
+ user_relation='allowed',
+ username=username,
+ with_mock_chroots=True)
paginator = helpers.Paginator(query, query.count(), page)
coprs = paginator.sliced_query
- return flask.render_template('coprs/show.html', coprs = coprs, paginator = paginator)
+ return flask.render_template('coprs/show.html', coprs=coprs, paginator=paginator)
@coprs_ns.route('/add/')
11 years, 3 months
[copr] master: Don't ask FAS for details of already registered users (7611d15)
by bkabrda@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit 7611d155d56ed0ae0d5b1ccd53d743babf044107
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Fri Jan 25 13:27:24 2013 +0100
Don't ask FAS for details of already registered users
>---------------------------------------------------------------
coprs_frontend/coprs/views/misc.py | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/coprs_frontend/coprs/views/misc.py b/coprs_frontend/coprs/views/misc.py
index e681b48..e10b07f 100644
--- a/coprs_frontend/coprs/views/misc.py
+++ b/coprs_frontend/coprs/views/misc.py
@@ -48,7 +48,10 @@ def login():
if fasusername and ((app.config['USE_ALLOWED_USERS'] \
and fasusername in app.config['ALLOWED_USERS']) \
or not app.config['USE_ALLOWED_USERS']):
- return oid.try_login('http://{0}.id.fedoraproject.org/'.format(fasusername), ask_for = ["email"])
+ ask_for = []
+ if not models.User.query.filter(models.User.openid_name==models.User.openidize_name(fasusername)).first():
+ ask_for.append('email')
+ return oid.try_login('http://{0}.id.fedoraproject.org/'.format(fasusername), ask_for=ask_for)
else:
return flask.render_template('login.html',
error='User "{0}" is not allowed'.format(
11 years, 3 months
[copr] master: Clean main __init__.py by moving the before_request handler and errorhandler to views.misc, where they belong (25a857e)
by bkabrda@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit 25a857eb7522e0a265ca8e5ad863488bbdf1cb20
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Fri Jan 25 11:56:56 2013 +0100
Clean main __init__.py by moving the before_request handler and errorhandler to views.misc, where they belong
>---------------------------------------------------------------
coprs_frontend/coprs/__init__.py | 11 -----------
.../coprs/views/coprs_ns/coprs_builds.py | 4 ++--
.../coprs/views/coprs_ns/coprs_general.py | 4 ++--
coprs_frontend/coprs/views/misc.py | 11 +++++++++++
4 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/coprs_frontend/coprs/__init__.py b/coprs_frontend/coprs/__init__.py
index a96ace9..d5d732a 100644
--- a/coprs_frontend/coprs/__init__.py
+++ b/coprs_frontend/coprs/__init__.py
@@ -18,17 +18,6 @@ else:
oid = OpenID(app, app.config['OPENID_STORE'])
db = SQLAlchemy(app)
-(a)app.before_request
-def lookup_current_user():
- flask.g.user = None
- if 'openid' in flask.session:
- flask.g.user = models.User.query.filter(models.User.openid_name == flask.session['openid']).first()
-
-
-(a)app.errorhandler(404)
-def page_not_found(message):
- return flask.render_template('404.html', message = message), 404
-
import coprs.filters
import coprs.log
import coprs.models
diff --git a/coprs_frontend/coprs/views/coprs_ns/coprs_builds.py b/coprs_frontend/coprs/views/coprs_ns/coprs_builds.py
index 9180d95..eae3c1d 100644
--- a/coprs_frontend/coprs/views/coprs_ns/coprs_builds.py
+++ b/coprs_frontend/coprs/views/coprs_ns/coprs_builds.py
@@ -2,7 +2,7 @@ import time
import flask
-from coprs import db, page_not_found
+from coprs import db
from coprs import exceptions
from coprs import forms
from coprs import helpers
@@ -11,7 +11,7 @@ from coprs import models
from coprs.logic import builds_logic
from coprs.logic import coprs_logic
-from coprs.views.misc import login_required
+from coprs.views.misc import login_required, page_not_found
from coprs.views.coprs_ns import coprs_ns
from coprs.views.coprs_ns import coprs_general
diff --git a/coprs_frontend/coprs/views/coprs_ns/coprs_general.py b/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
index a1acad6..662246e 100644
--- a/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
+++ b/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
@@ -2,13 +2,13 @@ import time
import flask
-from coprs import db, page_not_found
+from coprs import db
from coprs import exceptions
from coprs import forms
from coprs import helpers
from coprs import models
-from coprs.views.misc import login_required
+from coprs.views.misc import login_required, page_not_found
from coprs.views.coprs_ns import coprs_ns
diff --git a/coprs_frontend/coprs/views/misc.py b/coprs_frontend/coprs/views/misc.py
index 4dadce9..e681b48 100644
--- a/coprs_frontend/coprs/views/misc.py
+++ b/coprs_frontend/coprs/views/misc.py
@@ -13,6 +13,17 @@ from coprs import db
from coprs import models
from coprs import oid
+(a)app.before_request
+def lookup_current_user():
+ flask.g.user = None
+ if 'openid' in flask.session:
+ flask.g.user = models.User.query.filter(models.User.openid_name==flask.session['openid']).first()
+
+(a)app.errorhandler(404)
+def page_not_found(message):
+ return flask.render_template('404.html', message=message), 404
+
+
misc = flask.Blueprint('misc', __name__)
def generate_api_token(size=30):
11 years, 3 months
[copr] master: Fix the logging module to import logging.handlers (b3e6d22)
by bkabrda@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit b3e6d2233ca388ae87e9f0eb8acb8d08d6597cab
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Thu Jan 24 13:44:42 2013 +0100
Fix the logging module to import logging.handlers
>---------------------------------------------------------------
coprs_frontend/coprs/log.py | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/coprs_frontend/coprs/log.py b/coprs_frontend/coprs/log.py
index 5fa61c3..60e24e1 100644
--- a/coprs_frontend/coprs/log.py
+++ b/coprs_frontend/coprs/log.py
@@ -1,4 +1,5 @@
import logging
+import logging.handlers
from coprs import app
11 years, 3 months
[copr] master: Enable sending mails to admins on app error (af87130)
by bkabrda@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit af87130dda51728fabc6a11e4a4b7d19cb05954f
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Thu Jan 24 13:31:37 2013 +0100
Enable sending mails to admins on app error
>---------------------------------------------------------------
coprs_frontend/coprs/__init__.py | 3 ++-
coprs_frontend/coprs/config.py | 5 +++++
coprs_frontend/coprs/log.py | 27 +++++++++++++++++++++++++++
3 files changed, 34 insertions(+), 1 deletions(-)
diff --git a/coprs_frontend/coprs/__init__.py b/coprs_frontend/coprs/__init__.py
index f2ea8d4..a96ace9 100644
--- a/coprs_frontend/coprs/__init__.py
+++ b/coprs_frontend/coprs/__init__.py
@@ -29,8 +29,9 @@ def lookup_current_user():
def page_not_found(message):
return flask.render_template('404.html', message = message), 404
-import coprs.models
import coprs.filters
+import coprs.log
+import coprs.models
from coprs.views import coprs_ns
from coprs.views.coprs_ns import coprs_builds
diff --git a/coprs_frontend/coprs/config.py b/coprs_frontend/coprs/config.py
index ef1578f..6218ea9 100644
--- a/coprs_frontend/coprs/config.py
+++ b/coprs_frontend/coprs/config.py
@@ -1,3 +1,4 @@
+import logging
import os
class Config(object):
@@ -17,6 +18,10 @@ class Config(object):
# Token length, defaults to 30, DB set to varchar 255
API_TOKEN_LENGTH = 30
+ # logging options
+ SEND_LOGS_TO = []
+ LOGGING_LEVEL = logging.ERROR
+
class ProductionConfig(Config):
DEBUG = False
diff --git a/coprs_frontend/coprs/log.py b/coprs_frontend/coprs/log.py
new file mode 100644
index 0000000..5fa61c3
--- /dev/null
+++ b/coprs_frontend/coprs/log.py
@@ -0,0 +1,27 @@
+import logging
+
+from coprs import app
+
+send_logs_to = app.config.get('SEND_LOGS_TO')
+level = app.config.get('LOGGING_LEVEL')
+
+formatter = logging.Formatter('''
+Message type: %(levelname)s
+Location: %(pathname)s:%(lineno)d
+Module: %(module)s
+Function: %(funcName)s
+Time: %(asctime)s
+
+Message:
+
+%(message)s
+''')
+
+if not app.debug:
+ mail_handler = logging.handlers.SMTPHandler('127.0.0.1',
+ 'copr-fe-error@{0}'.format(app.config['SERVER_NAME']),
+ send_logs_to,
+ 'Yay, error in copr frontend occured!')
+ mail_handler.setFormatter(formatter)
+ mail_handler.setLevel(level)
+ app.logger.addHandler(mail_handler)
11 years, 3 months
[copr] master: Some more unification of class names, updated contribution guidelines for that (a82a8e1)
by bkabrda@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit a82a8e16b9656ccea8f7dcb87bee63fd9392f1b7
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Thu Jan 24 13:00:44 2013 +0100
Some more unification of class names, updated contribution guidelines for that
>---------------------------------------------------------------
coprs_frontend/CONTRIBUTION_GUIDELINES | 2 ++
coprs_frontend/coprs/logic/coprs_logic.py | 6 +++---
.../coprs/views/coprs_ns/coprs_general.py | 10 +++++-----
3 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/coprs_frontend/CONTRIBUTION_GUIDELINES b/coprs_frontend/CONTRIBUTION_GUIDELINES
index 98f24e3..0513e4e 100644
--- a/coprs_frontend/CONTRIBUTION_GUIDELINES
+++ b/coprs_frontend/CONTRIBUTION_GUIDELINES
@@ -1,6 +1,8 @@
This file contains some "should" rules, that are good to follow.
- coprs.logic
+-- The *Logic objects should be named after the primary object that they
+ work with, but pluralized. E.g. CoprChroot->CoprChrootsLogic
-- The methods of *Logic objects should generally be @classmethod.
-- The methods of *Logic objects should accept "user" as a second argument
(after the "cls" argument). This argument should contain object of user
diff --git a/coprs_frontend/coprs/logic/coprs_logic.py b/coprs_frontend/coprs/logic/coprs_logic.py
index 1d44ea2..a862055 100644
--- a/coprs_frontend/coprs/logic/coprs_logic.py
+++ b/coprs_frontend/coprs/logic/coprs_logic.py
@@ -56,7 +56,7 @@ class CoprsLogic(object):
created_on=int(time.time()))
CoprsLogic.new(user, copr,
check_for_duplicates=False) # form validation checks for duplicates
- CoprsChrootLogic.new_from_names(user, copr,
+ CoprChrootsLogic.new_from_names(user, copr,
selected_chroots)
return copr
@@ -84,7 +84,7 @@ class CoprsLogic(object):
models.Copr.query.filter(models.Copr.id == copr.id).\
update({models.Copr.build_count: models.Copr.build_count + 1})
-class CoprsPermissionLogic(object):
+class CoprPermissionsLogic(object):
@classmethod
def get(cls, user, copr, searched_user):
query = models.CoprPermission.query.filter(models.CoprPermission.copr == copr).\
@@ -125,7 +125,7 @@ class CoprsPermissionLogic(object):
def delete(cls, user, copr_permission):
db.session.delete(copr_permission)
-class CoprsChrootLogic(object):
+class CoprChrootsLogic(object):
@classmethod
def mock_chroots_from_names(cls, user, names):
db_chroots = models.MockChroot.query.all()
diff --git a/coprs_frontend/coprs/views/coprs_ns/coprs_general.py b/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
index fb63e98..a1acad6 100644
--- a/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
+++ b/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
@@ -102,7 +102,7 @@ def copr_permissions(username, coprname):
if not copr:
return page_not_found('Copr with name {0} does not exist.'.format(coprname))
- permissions = coprs_logic.CoprsPermissionLogic.get_for_copr(flask.g.user, copr).all()
+ permissions = coprs_logic.CoprPermissionsLogic.get_for_copr(flask.g.user, copr).all()
if flask.g.user:
user_perm = flask.g.user.permissions_for_copr(copr)
else:
@@ -158,7 +158,7 @@ def copr_update(username, coprname):
copr.repos = form.repos.data.replace('\n', ' ')
copr.description = form.description.data
copr.instructions = form.instructions.data
- coprs_logic.CoprsChrootLogic.update_from_names(flask.g.user, copr, form.selected_chroots)
+ coprs_logic.CoprChrootsLogic.update_from_names(flask.g.user, copr, form.selected_chroots)
coprs_logic.CoprsLogic.update(flask.g.user, copr, check_for_duplicates = False) # form validation checks for duplicates
db.session.commit()
@@ -172,7 +172,7 @@ def copr_update(username, coprname):
@login_required
def copr_permissions_applier_change(username, coprname):
copr = coprs_logic.CoprsLogic.get(flask.g.user, username, coprname).first()
- permission = coprs_logic.CoprsPermissionLogic.get(flask.g.user, copr, flask.g.user).first()
+ permission = coprs_logic.CoprPermissionsLogic.get(flask.g.user, copr, flask.g.user).first()
applier_permissions_form = forms.PermissionsApplierFormFactory.create_form_cls(permission)()
if not copr:
@@ -183,7 +183,7 @@ def copr_permissions_applier_change(username, coprname):
# we rely on these to be 0 or 1 from form. TODO: abstract from that
new_builder = applier_permissions_form.copr_builder.data
new_admin = applier_permissions_form.copr_admin.data
- coprs_logic.CoprsPermissionLogic.update_permissions_by_applier(flask.g.user, copr, permission, new_builder, new_admin)
+ coprs_logic.CoprPermissionsLogic.update_permissions_by_applier(flask.g.user, copr, permission, new_builder, new_admin)
db.session.commit()
flask.flash('Successfuly updated permissions do Copr "{0}".'.format(copr.name))
@@ -207,7 +207,7 @@ def copr_update_permissions(username, coprname):
for perm in permissions:
new_builder = permissions_form['copr_builder_{0}'.format(perm.user_id)].data
new_admin = permissions_form['copr_admin_{0}'.format(perm.user_id)].data
- coprs_logic.CoprsPermissionLogic.update_permissions(flask.g.user, copr, perm, new_builder, new_admin)
+ coprs_logic.CoprPermissionsLogic.update_permissions(flask.g.user, copr, perm, new_builder, new_admin)
db.session.commit()
flask.flash('Copr permissions were updated successfully.')
11 years, 3 months
[copr] master: Use the BuildsLogic.add method to create builds (27604c5)
by bkabrda@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit 27604c5dbf1d4a5be7d49defb33aeab35648c6a3
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Thu Jan 24 12:56:14 2013 +0100
Use the BuildsLogic.add method to create builds
>---------------------------------------------------------------
.../coprs/views/coprs_ns/coprs_builds.py | 10 +++-------
1 files changed, 3 insertions(+), 7 deletions(-)
diff --git a/coprs_frontend/coprs/views/coprs_ns/coprs_builds.py b/coprs_frontend/coprs/views/coprs_ns/coprs_builds.py
index 0154452..9180d95 100644
--- a/coprs_frontend/coprs/views/coprs_ns/coprs_builds.py
+++ b/coprs_frontend/coprs/views/coprs_ns/coprs_builds.py
@@ -51,17 +51,13 @@ def copr_new_build(username, coprname):
return page_not_found('Copr with name {0} does not exist.'.format(coprname))
if form.validate_on_submit() and flask.g.user.can_build_in(copr):
- build = models.Build(pkgs = form.pkgs.data.replace('\n', ' '),
- copr = copr,
- chroots = ' '.join(map(lambda x: x.chroot_name, copr.mock_chroots)),
- repos = copr.repos,
- user = flask.g.user,
- submitted_on = int(time.time()))
+ build = builds_logic.BuildsLogic.add(user=flask.g.user,
+ pkgs=form.pkgs.data.replace('\n', ' '),
+ copr=copr) # we're checking authorization above for now
if flask.g.user.proven:
build.memory_reqs = form.memory_reqs.data
build.timeout = form.timeout.data
- builds_logic.BuildsLogic.new(flask.g.user, build, copr, check_authorized = False) # we're checking authorization above for now
db.session.commit()
flask.flash("Build was added")
11 years, 3 months
[copr] master: Similarly rename add_build to add (3c2e42d)
by bkabrda@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit 3c2e42d2b97caac1eb08ad1e198e6ec8025c2ba7
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Thu Jan 24 12:49:36 2013 +0100
Similarly rename add_build to add
>---------------------------------------------------------------
coprs_frontend/coprs/logic/builds_logic.py | 2 +-
.../coprs/views/coprs_ns/coprs_general.py | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/coprs_frontend/coprs/logic/builds_logic.py b/coprs_frontend/coprs/logic/builds_logic.py
index 1fde575..b936a0c 100644
--- a/coprs_frontend/coprs/logic/builds_logic.py
+++ b/coprs_frontend/coprs/logic/builds_logic.py
@@ -55,7 +55,7 @@ class BuildsLogic(object):
return models.Build.query.filter(models.Build.id.in_(ids))
@classmethod
- def add_build(cls, user, pkgs, copr):
+ def add(cls, user, pkgs, copr):
build = models.Build(
pkgs=pkgs,
copr=copr,
diff --git a/coprs_frontend/coprs/views/coprs_ns/coprs_general.py b/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
index de39536..fb63e98 100644
--- a/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
+++ b/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
@@ -74,8 +74,8 @@ def copr_new():
flask.flash('New copr was successfully created.')
if form.initial_pkgs.data:
- builds_logic.BuildsLogic.add_build(flask.g.user,
- pkgs=form.initial_pkgs.data.replace('\n', ' '),
+ builds_logic.BuildsLogic.add(flask.g.user,
+ pkgs=form.initial_pkgs.data.replace('\n', ' '),
copr=copr)
db.session.commit()
flask.flash('Initial packages were successfully submitted '
11 years, 3 months
[copr] master: Rename add_copr to add - move it to more logical place in source file just to keep it nice :) (4294989)
by bkabrda@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit 42949891dcf831cd79145cfd57596ce754fa8f5c
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Thu Jan 24 12:47:11 2013 +0100
Rename add_copr to add
- move it to more logical place in source file just to keep it nice :)
>---------------------------------------------------------------
coprs_frontend/coprs/logic/coprs_logic.py | 28 ++++++++++----------
.../coprs/views/coprs_ns/coprs_general.py | 12 ++++----
2 files changed, 20 insertions(+), 20 deletions(-)
diff --git a/coprs_frontend/coprs/logic/coprs_logic.py b/coprs_frontend/coprs/logic/coprs_logic.py
index 615be26..1d44ea2 100644
--- a/coprs_frontend/coprs/logic/coprs_logic.py
+++ b/coprs_frontend/coprs/logic/coprs_logic.py
@@ -25,20 +25,6 @@ class CoprsLogic(object):
return query
@classmethod
- def add_copr(cls, user, name, repos, selected_chroots, description, instructions):
- copr = models.Copr(name=name,
- repos=repos,
- owner=user,
- description=description,
- instructions=instructions,
- created_on=int(time.time()))
- CoprsLogic.new(user, copr,
- check_for_duplicates=False) # form validation checks for duplicates
- CoprsChrootLogic.new_from_names(user, copr,
- selected_chroots)
- return copr
-
- @classmethod
def get_multiple(cls, user, **kwargs):
user_relation = kwargs.get('user_relation', None)
username = kwargs.get('username', None)
@@ -61,6 +47,20 @@ class CoprsLogic(object):
return query
@classmethod
+ def add(cls, user, name, repos, selected_chroots, description, instructions):
+ copr = models.Copr(name=name,
+ repos=repos,
+ owner=user,
+ description=description,
+ instructions=instructions,
+ created_on=int(time.time()))
+ CoprsLogic.new(user, copr,
+ check_for_duplicates=False) # form validation checks for duplicates
+ CoprsChrootLogic.new_from_names(user, copr,
+ selected_chroots)
+ return copr
+
+ @classmethod
def new(cls, user, copr, check_for_duplicates = True):
if check_for_duplicates and cls.exists_for_current_user(user, copr.name):
raise exceptions.DuplicateCoprNameException
diff --git a/coprs_frontend/coprs/views/coprs_ns/coprs_general.py b/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
index 15ac156..de39536 100644
--- a/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
+++ b/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
@@ -64,12 +64,12 @@ def copr_new():
"""
form = forms.CoprFormFactory.create_form_cls()()
if form.validate_on_submit():
- copr = coprs_logic.CoprsLogic.add_copr(flask.g.user,
- name=form.name.data,
- repos=form.repos.data.replace('\n', ' '),
- selected_chroots=form.selected_chroots,
- description=form.description.data,
- instructions=form.instructions.data)
+ copr = coprs_logic.CoprsLogic.add(flask.g.user,
+ name=form.name.data,
+ repos=form.repos.data.replace('\n', ' '),
+ selected_chroots=form.selected_chroots,
+ description=form.description.data,
+ instructions=form.instructions.data)
db.session.commit()
flask.flash('New copr was successfully created.')
11 years, 3 months
[copr] master: Handle removing mock_chroot from copr chroots appropriately (2b34a10)
by bkabrda@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit 2b34a10b744b3553257646618168ca3b860eb151
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Thu Jan 24 11:13:06 2013 +0100
Handle removing mock_chroot from copr chroots appropriately
>---------------------------------------------------------------
coprs_frontend/coprs/logic/coprs_logic.py | 9 +--------
coprs_frontend/coprs/models.py | 4 +++-
2 files changed, 4 insertions(+), 9 deletions(-)
diff --git a/coprs_frontend/coprs/logic/coprs_logic.py b/coprs_frontend/coprs/logic/coprs_logic.py
index c25bd72..615be26 100644
--- a/coprs_frontend/coprs/logic/coprs_logic.py
+++ b/coprs_frontend/coprs/logic/coprs_logic.py
@@ -156,11 +156,4 @@ class CoprsChrootLogic(object):
# delete no more present
for mock_chroot in current_chroots:
if mock_chroot not in new_chroots:
- models.CoprChroot.query.filter(models.CoprChroot.copr_id==copr.id).\
- filter(models.CoprChroot.mock_chroot_id==mock_chroot.id).\
- delete()
- # TODO: fails because of
- # http://docs.sqlalchemy.org/en/rel_0_7/orm/session.html#deleting-from-coll...
- # figure out how to overcome it nicely without having to commit the session
- # (deleting the copr_chroot object from copr.copr_chroots doesn't seem to help)
- db.session.commit()
+ copr.mock_chroots.remove(mock_chroot)
diff --git a/coprs_frontend/coprs/models.py b/coprs_frontend/coprs/models.py
index 8b99942..f75586f 100644
--- a/coprs_frontend/coprs/models.py
+++ b/coprs_frontend/coprs/models.py
@@ -203,4 +203,6 @@ class CoprChroot(db.Model, Serializer):
mock_chroot_id = db.Column(db.Integer, db.ForeignKey('mock_chroot.id'), primary_key = True)
mock_chroot = db.relationship('MockChroot', backref = db.backref('copr_chroots'))
copr_id = db.Column(db.Integer, db.ForeignKey('copr.id'), primary_key = True)
- copr = db.relationship('Copr', backref = db.backref('copr_chroots'))
+ copr = db.relationship('Copr', backref = db.backref('copr_chroots',
+ single_parent=True,
+ cascade='all,delete,delete-orphan'))
11 years, 3 months