Mercurial > kallithea
comparison rhodecode/lib/utils.py @ 1039:51b70569c330 beta
extended admin rescan to show what repositories was added and what removed
fixed found bugs, added expunge to cached getter since it introduce some more problems.
Added some relationship to properly clean related objects from database.
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sun, 13 Feb 2011 01:38:39 +0100 |
parents | 2e9f2bd28143 |
children | bc3dafd0e24c |
comparison
equal
deleted
inserted
replaced
1038:5554aa9c2480 | 1039:51b70569c330 |
---|---|
361 """ | 361 """ |
362 | 362 |
363 sa = meta.Session() | 363 sa = meta.Session() |
364 rm = RepoModel() | 364 rm = RepoModel() |
365 user = sa.query(User).filter(User.admin == True).first() | 365 user = sa.query(User).filter(User.admin == True).first() |
366 | 366 added = [] |
367 for name, repo in initial_repo_list.items(): | 367 for name, repo in initial_repo_list.items(): |
368 group = map_groups(name.split('/')) | 368 group = map_groups(name.split('/')) |
369 if not rm.get_by_repo_name(name, cache=False): | 369 if not rm.get_by_repo_name(name, cache=False): |
370 log.info('repository %s not found creating default', name) | 370 log.info('repository %s not found creating default', name) |
371 | 371 added.append(name) |
372 form_data = { | 372 form_data = { |
373 'repo_name':name, | 373 'repo_name':name, |
374 'repo_type':repo.alias, | 374 'repo_type':repo.alias, |
375 'description':repo.description \ | 375 'description':repo.description \ |
376 if repo.description != 'unknown' else \ | 376 if repo.description != 'unknown' else \ |
378 'private':False, | 378 'private':False, |
379 'group_id':getattr(group, 'group_id', None) | 379 'group_id':getattr(group, 'group_id', None) |
380 } | 380 } |
381 rm.create(form_data, user, just_db=True) | 381 rm.create(form_data, user, just_db=True) |
382 | 382 |
383 removed = [] | |
383 if remove_obsolete: | 384 if remove_obsolete: |
384 #remove from database those repositories that are not in the filesystem | 385 #remove from database those repositories that are not in the filesystem |
385 for repo in sa.query(Repository).all(): | 386 for repo in sa.query(Repository).all(): |
386 if repo.repo_name not in initial_repo_list.keys(): | 387 if repo.repo_name not in initial_repo_list.keys(): |
388 removed.append(repo.repo_name) | |
387 sa.delete(repo) | 389 sa.delete(repo) |
388 sa.commit() | 390 sa.commit() |
389 | 391 |
392 return added, removed | |
390 class OrderedDict(dict, DictMixin): | 393 class OrderedDict(dict, DictMixin): |
391 | 394 |
392 def __init__(self, *args, **kwds): | 395 def __init__(self, *args, **kwds): |
393 if len(args) > 1: | 396 if len(args) > 1: |
394 raise TypeError('expected at most 1 arguments, got %d' % len(args)) | 397 raise TypeError('expected at most 1 arguments, got %d' % len(args)) |